BGP 設定追加時における shutdown の有無について – シナプス技術者ブログ

はじめに

こんにちは、ネットワーク課の末吉と申します。

とあるイベント時に「ピアリングのための 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

  1. R1/R3 に設定追加
  2. R1 のR3向けBGP設定を削除
  3. R1 のR3向けBGP設定を追加
  4. R3 にて BGP セッション状態確認
  5. 2〜4を繰り返す

Juniper

  1. R2/R3 に設定追加
  2. R2 のR3向けBGP設定を削除
  3. R2 のR3向けBGP設定を追加
  4. R3 にて BGP セッション状態確認
  5. 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 により一括反映されるためそのリスクは小さいと思われる




Source link

関連記事

コメント

この記事へのコメントはありません。