【BGP入門】BGP広報経路のPrefix-ListとRoute-map制御

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

今回は、BGPで広報している経路をPrefix-ListとRoute-mapを使った制御についてまとめていきます。

Prefix-ListとRoute-mapを使った経路制御

概要

BGPでフィルターをかけない場合、Cisco IOSでは全ての経路を広報することがデフォルトの動作となっています。

必要な経路のみを広報する場合が多くあるため、今回まとめる設定を使う必要があります。

AS100
AS100
AS200
AS200
AS300
AS300
AS400
AS400
Lo0: 10.0.4.1
Lo0: 10.0.4.1
AS500
AS500
Lo0: 36.10.1.1
Lo0: 36.10.1.1
Lo0: 36.10.1.2
Lo0: 36.10.1.2
Lo0: 36.1.1.1
Lo0: 36.1.1.1
ip prefix-list Short 36.0.0.0/8

route-map Shorter permit 10
  match ip address prefix-list Short
ip prefix-list Short 36.0.0.0/8…
36.0.0.0/8 AS100 500 200
36.0.0.0/8 AS100 500 200
ip prefix-list Long 36.1.1.0/24
ip prefix-list Long 36.10.1.0/24

route-map Longer permit 10
  match ip address prefix-list Long
ip prefix-list Long 36.1.1.0/24…
36.1.1.0/24 AS100 500 300
36.10.1.0/24 AS100 500 300
36.1.1.0/24 AS100 500 300…
Text is not SVG – cannot display
マルチクラウドネットワークの教科書 耐障害性と冗長性を実現するデザインパターン
〜この1冊でマルチクラウドジャーニーを突き進め!〜

設定方法(Cisco IOS)

作成したPrefix-ListをRoute-mapに適用することが一般的ですが、Cisco IOSではPrefix-Listそのもので適用することができます。

Prefix-Listによる経路制御

Prefix-Listによる経路制御は以下のコマンドで実施します。

設定方法(Cisco IOS)
(config)# ip prefix-list <List名> seq <シーケンス番号> [permit | deny] <prefix> ge <length> le <length>
(config)#router bgp <AS番号>
(config-router)#neighbor <neighborアドレス> prefix-list [in|out]
項目詳細
List名Prefix-Listのリスト名
シーケンス番号複数あるルールの中で参照するSequence番号
[permit | deny]permit:経路を広報、deny:経路を停止
prefix対象とするPrefix
ge <length><prefix>に対するprefix長以上となる
le <length><prefix>に対するprefix長未満となる

Route-mapによる経路制御

Prefix-ListとRoute-mapの2つを使った方法を以下に記載します。(Prefix-Listは割愛)

設定方法(Cisco IOS)
(config)#route-map <route-map名> [permit|deny] <seq番号>
(config-route-map)#match ip address prefix-list <prefix-list名>
(config)#router bgp <AS番号>
(config-router)# neighbor <neighborアドレス> route-map <route-map名> [in|out]

Prefix-listによる動作確認(Cisco IOS)

今回も同じように「prefix-listによる制御」「route-mapによる制御」の2パターンの動作確認します。

検証構成

今回も同様の検証構成で確認していきます。

AS100
AS100
AS200
AS200
ルータ1
ルータ1
ルータ2
ルータ2
ルータ3
ルータ3
ルータ4
ルータ4
ルータ5
ルータ5
ルータ6
ルータ6
ルータ7
ルータ7
192.168.1.0/30
192.168…
192.168.2.0/30
192.168…
10.1.0.0/30
10.1.0….
10.2.0.0/30
10.2.0….
10.2.1.0/30
10.2.1….
10.2.2.0/30
10.2.2….
10.1.1.0/30
10.1.1….
10.1.2.0/30
10.1.2….
10.1.3.0/30
10.1.3….
Lo0:10.10.X.1/32
Lo0:10….
Lo0:10.20.X.1/32
Lo0:10….
AS300
AS300
ルータ8
ルータ8
192.168.3.0/30
192.168…
192.168.4.0/30
192.168…
AS400
AS400
192.168.5.0/30
192.168…
192.168.6.0/30
192.168…
Lo0:10.30.X.1/32
Lo0:10.30.X.1/32
Lo0:10.40.X.1/32
Lo0:10….
ルータ9
ルータ9
Text is not SVG – cannot display

事前確認

今回はAS100に属するルータのLoopbackのうち、ルータ4とルータ3のみをAS200に広報してみたいと思います。

事前確認(ルータ6)
Router6#show ip bgp
BGP table version is 13, local router ID is 10.20.6.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
              t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *    10.10.1.1/32     192.168.4.2                            0 300 100 i
 *>                    192.168.2.1                            0 100 i
 * i                   10.20.5.1                0    100      0 100 i
 * i  10.10.2.1/32     10.20.5.1                0    100      0 100 i
 *                     192.168.4.2                            0 300 100 i
 *>                    192.168.2.1              0             0 100 i
 * i  10.10.3.1/32     10.20.5.1                0    100      0 100 i
 *                     192.168.4.2                            0 300 100 i
 *>                    192.168.2.1                            0 100 i
 *    10.10.4.1/32     192.168.4.2                            0 300 100 i
 *>                    192.168.2.1                            0 100 i
 * i                   10.20.5.1                0    100      0 100 i
 * i  10.20.0.0/16     10.20.5.1                0    100      0 100 i
 *                     192.168.4.2                            0 300 100 i
 *>                    192.168.2.1              0             0 100 i
 r>i  10.20.5.1/32     10.20.5.1                0    100      0 i
 *>   10.20.6.1/32     0.0.0.0                  0         32768 i
 r>i  10.20.7.1/32     10.20.7.1                0    100      0 i
 *    10.30.8.1/32     192.168.2.1                            0 100 300 i
 *>                    192.168.4.2              0             0 300 i
 *    10.40.9.1/32     192.168.4.2                            0 300 100 400 i
 *>                    192.168.2.1                            0 100 400 i
 * i                   10.20.5.1                0    100      0 400 400 i
 *    10.40.19.1/32    192.168.4.2                            0 300 100 400 i
 *>                    192.168.2.1                            0 100 400 i
 * i                   10.20.5.1                0    100      0 400 400 i

設定方法(Prefix-List)

まずはPrefix-list形式での経路制御を行っていきたいと思います

設定コマンド(ルータ2)
Router2#conf  t
Enter configuration commands, one per line.  End with CNTL/Z.
Router2(config)#ip prefix-list Loopback seq 10 permit 10.10.3.1/32
Router2(config)#ip prefix-list Loopback seq 20 permit 10.10.4.1/32
Router2(config)#router bgp 100
Router2(config-router)#neighbor 192.168.2.2 prefix-list Loopback out
Router2(config-router)#end

事後確認

ルータ6のBGPテーブルを確認すると「10.10.1.1/32」と「10.10.2.1/32」のNext-Hop 192.168.2.1の経路がなくなっていることがわかると思います。

事後確認(ルータ6)
Router6#show ip bgp
BGP table version is 18, local router ID is 10.20.6.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
              t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *    10.10.1.1/32     192.168.4.2                            0 300 100 i
 *>i                   10.20.5.1                0    100      0 100 i
 *>i  10.10.2.1/32     10.20.5.1                0    100      0 100 i
 *                     192.168.4.2                            0 300 100 i
 * i  10.10.3.1/32     10.20.5.1                0    100      0 100 i
 *                     192.168.4.2                            0 300 100 i
 *>                    192.168.2.1                            0 100 i
 *    10.10.4.1/32     192.168.4.2                            0 300 100 i
 *>                    192.168.2.1                            0 100 i
 * i                   10.20.5.1                0    100      0 100 i
 *>i  10.20.0.0/16     10.20.5.1                0    100      0 100 i
 *                     192.168.4.2                            0 300 100 i
 r>i  10.20.5.1/32     10.20.5.1                0    100      0 i
 *>   10.20.6.1/32     0.0.0.0                  0         32768 i
 r>i  10.20.7.1/32     10.20.7.1                0    100      0 i
 *>   10.30.8.1/32     192.168.4.2              0             0 300 i
 *    10.40.9.1/32     192.168.4.2                            0 300 100 400 i
 *>i                   10.20.5.1                0    100      0 400 400 i
 *    10.40.19.1/32    192.168.4.2                            0 300 100 400 i
 *>i                   10.20.5.1                0    100      0 400 400 i

Route-mapによる動作確認(Cisco IOS)

Prefix-Listによる経路制御を確認した後は、一般的に使われることが多いRoute-mapによる制御を確認していきましょう。

事前確認

次はルータ1とルータ5で確認してみましょう。

想定では、Next-Hop 192.168.1.1の経路が削除されます。

事前確認(ルータ5)
Router5#show ip bgp
BGP table version is 15, local router ID is 10.20.5.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
              t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *    10.10.1.1/32     192.168.6.2                            0 400 400 100 i
 *>                    192.168.1.1              0             0 100 i
 *    10.10.2.1/32     192.168.6.2                            0 400 400 100 i
 *>                    192.168.1.1                            0 100 i
 *    10.10.3.1/32     192.168.6.2                            0 400 400 100 i
 *>                    192.168.1.1                            0 100 i
 * i                   10.20.6.1                0    100      0 100 i
 *    10.10.4.1/32     192.168.6.2                            0 400 400 100 i
 * i                   10.20.6.1                0    100      0 100 i
 *>                    192.168.1.1                            0 100 i
 *    10.20.0.0/16     192.168.6.2                            0 400 400 100 i
 *>                    192.168.1.1                            0 100 i
 *>   10.20.5.1/32     0.0.0.0                  0         32768 i
 r>i  10.20.6.1/32     10.20.6.1                0    100      0 i
 r>i  10.20.7.1/32     10.20.7.1                0    100      0 i
 *    10.30.8.1/32     192.168.1.1                            0 100 300 i
 *>i                   10.20.6.1                0    100      0 300 i
 *    10.40.9.1/32     192.168.1.1                            0 100 400 i
 *>                    192.168.6.2              0             0 400 400 i
 *    10.40.19.1/32    192.168.1.1                            0 100 400 i
 *>                    192.168.6.2              0             0 400 400 i

設定方法(Route-map)

以下のコマンドで設定していきます。

設定方法(ルータ1)
Router1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router1(config)#ip prefix-list Loopback seq 10 permit 10.10.3.1/32
Router1(config)#ip prefix-list Loopback seq 20 permit 10.10.4.1/32
Router1(config)#
Router1(config)#route-map Loopback_Out permit 10
Router1(config-route-map)#match ip address prefix-list Loopback
Router1(config-route-map)#exit
Router1(config)#router bgp 100
Router1(config-router)#neighbor 192.168.1.2 route-map Loopback_Out out
Router1(config-router)#end

事後確認

以下の状態を見るとしっかり消えていることがわかります。

事後確認(ルータ5)
outer5#show ip bgp
BGP table version is 34, local router ID is 10.20.5.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
              t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>i  10.10.1.1/32     10.20.6.1                0    100      0 300 100 i
 *                     192.168.6.2                            0 400 400 100 i
 *>i  10.10.2.1/32     10.20.6.1                0    100      0 300 100 i
 *                     192.168.6.2                            0 400 400 100 i
 *>   10.10.3.1/32     192.168.1.1                            0 100 i
 *                     192.168.6.2                            0 400 400 100 i
 * i                   10.20.6.1                0    100      0 100 i
 *>   10.10.4.1/32     192.168.1.1                            0 100 i
 *                     192.168.6.2                            0 400 400 100 i
 * i                   10.20.6.1                0    100      0 100 i
 *>i  10.20.0.0/16     10.20.6.1                0    100      0 300 100 i
 *                     192.168.6.2                            0 400 400 100 i
 *>   10.20.5.1/32     0.0.0.0                  0         32768 i
 r>i  10.20.6.1/32     10.20.6.1                0    100      0 i
 r>i  10.20.7.1/32     10.20.7.1                0    100      0 i
 *>i  10.30.8.1/32     10.20.6.1                0    100      0 300 i
 *>   10.40.9.1/32     192.168.6.2              0             0 400 400 i
 *>   10.40.19.1/32    192.168.6.2              0             0 400 400 i

最後に

今回もBGPのシリーズとして、経路制御の方法についてまとめてみました。

この記事もみなさんの参考になれば幸いです。

関連記事

  • URLをコピーしました!
目次