はじめに
こんにちは、ネットワーク課の末吉と申します。
とあるイベント時に「ピアリングのための BGP 設定を追加する際、shutdown を設定しておかないと、route-map が適用される前に BGP セッションが開始され、意図せずフルルートを広告してしまう恐れがある」と聞いたので、 shutdown を入れていない場合どうなるのか確認してみました。
私は昔とある事業者様にフルルートを広告したことがあったので…
検証
問題点は BGP 設定を追加する際に、shutdown を設定しない場合、意図していない経路を広告する可能性があるということだと思いますので、検証環境を作成して BGP 設定追加手順で確認をしてみました。
検証構成

検証機器
- R1/R3
- Cisco Catalyst4948E Cisco IOS 15.0(2)SG11
- R2
- Juniper MX204 Junos: 23.4R2-S3.9
設定内容
- R1/R2 は20経路があり、フィルタリングして R3 に19経路を広告する
- R3 は R1/R2 より19経路までしか受け取れないように制限し、20経路以降を受信すると BGP セッションを切断
検証手順
Cisco
- R1/R3 に設定追加
- R1 のR3向けBGP設定を削除
- R1 のR3向けBGP設定を追加
- R3 にて BGP セッション状態確認
- 2〜4を繰り返す
Juniper
- R2/R3 に設定追加
- R2 のR3向けBGP設定を削除
- R2 のR3向けBGP設定を追加
- R3 にて BGP セッション状態確認
- 2〜4を繰り返す
判断基準
Cisco
- R1 に R3 向けに BGP 設定を追加後、BGP セッションが確立されていれば問題なし
- R1 に R3 向けに BGP 設定を追加後、BGP セッションが切断されていれば問題あり
Juniper
- R2 に R3 向けに BGP 設定を追加後、BGP セッションが確立されていれば問題なし
- R2 に R3 向けに BGP 設定を追加後、BGP セッションが切断されていれば問題あり
検証結果
R1/R2 側で BGP 設定追加を試してみましたが、R3 側の BGP セッションが切れる状態は発⽣しませんでした。ただし、色々試してみたところ Cisco では設定追加の際は shutdown を追加しておいた方が良さそうです。
Cisco
以下は R1(Catalyst 4948E) に BGP 設定をした内容です。入力はコンソール経由でコピー&ペーストで一度に入れています。
router bgp 64496 neighbor R3-AS64498 peer-group neighbor R3-AS64498 remote-as 64498 neighbor R3-AS64498 description R3-AS64498 neighbor R3-AS64498 password passwordipv4 neighbor R3-AS64498 version 4 neighbor 192.168.1.3 peer-group R3-AS64498 ! address-family ipv4 neighbor R3-AS64498 soft-reconfiguration inbound neighbor R3-AS64498 route-map route-map-test in neighbor R3-AS64498 route-map route-map-test out neighbor R3-AS64498 maximum-prefix 20000 80 neighbor 192.168.1.3 activate
Cisco IOS/IOS-XE は設定追加入力時に即時反映されます。address-family 側で neighbor の activate が投入されると BGP セッションが確立されるようでした。activate は最後に投入しているので問題ないだろうと思っていましたが、色々試してみたところ activate は 「neighbor 192.168.1.3 peer-group R3-AS64498」を設定した時点で自動的に追加されているようでした。
router bgp 64496 neighbor R3-AS64498 peer-group neighbor R3-AS64498 remote-as 64498 neighbor R3-AS64498 description R3-AS64498 neighbor R3-AS64498 password passwordipv4 neighbor R3-AS64498 version 4 neighbor 192.168.1.3 peer-group R3-AS64498 <- ここまで追加すると ! address-family ipv4 neighbor 192.168.1.3 activate <- この行が自動的に追加される exit-address-family
今回は設定する config 内容が少ないため問題ないよう見えましたが、大量の config を追加する場合や追加手順次第では route-map 設定前に BGP セッションが開始され意図せず経路を広告する問題がありそうです。この問題は「neighbor 192.168.1.3 peer-group R3-AS64498 」を入力する前に、shutdown を入れておくことにより回避できそうです。
router bgp 64496 neighbor R3-AS64498 peer-group neighbor R3-AS64498 remote-as 64498 neighbor R3-AS64498 shutdown <- shutdownを追加しておく neighbor R3-AS64498 description R3-AS64498 neighbor R3-AS64498 password passwordipv4 neighbor R3-AS64498 version 4 neighbor 192.168.1.3 peer-group R3-AS64498 ! address-family ipv4 neighbor 192.168.1.3 activate <- route-map 設定前に activeteが設定されても BGP セッションが開始されない exit-address-family
Juniper
以下は R2(MX204) に BGP 設定をした内容です。入力はコンソール経由でコピー&ペーストで一度に入れています。
set routing-options autonomous-system 64497 set protocols bgp group R3-AS64498 type external set protocols bgp group R3-AS64498 description R3-AS64498 set protocols bgp group R3-AS64498 local-address 192.168.2.2 set protocols bgp group R3-AS64498 advertise-inactive set protocols bgp group R3-AS64498 family inet unicast prefix-limit maximum 1100000 set protocols bgp group R3-AS64498 family inet unicast prefix-limit teardown 90 set protocols bgp group R3-AS64498 family inet unicast prefix-limit teardown idle-timeout forever set protocols bgp group R3-AS64498 authentication-key "$9$L1IXds2gJDHmoJCu1hKvoJGUjq3nCAu1/CM8" set protocols bgp group R3-AS64498 export policy-test_OUT set protocols bgp group R3-AS64498 peer-as 64498 set protocols bgp group R3-AS64498 neighbor 192.168.2.2
Juniper は commit により設定がまとめて反映されるため、export ポリシー(Cisco の route-map に相当)が未適用のまま BGP セッションが確立される事態は発生しにくいと思いました。
まとめ
- Cisco では設定追加時に明示的に neighbor を shutdown するか投入順序に注意しないと route-map 適用前に BGP セッションが確立され意図せず経路を広告するリスクがある
- Juniper は commit により一括反映されるためそのリスクは小さいと思われる
コメント