BGPのLocal Preferenceをoutとinに同時につけたらどうなるか(Rib-in,soft-reconfiguration)

BGPのパス属性の一つとしてLocal Preferenceがある。これはあるルータから別のルータに経路を広報する際にも付加できるし(outbound)、あるルータで他のルータから経路をもらう際にも付加することができる(inbound)。

では同じ経路に対してinとoutで両方Local Preferenceをつけたらどうなるのか。結論から言えばinboundで定義したLocal Preferenceのみが残る結果となる。これはBGPで広報された経路がどのようにルーティングテーブルに乗るか理解できていればわかる。例えば以下のサイトだとこのような図がある。

スクリーンショット 2021-08-13 22.56.10

ピアから受けた経路情報はざっくり以下の順番で処理される。
1. ピアごとにRIB-Inという領域に保存される
2. RIB-Inの経路に対してInboundで付加したポリシーを適用する
3. Local-RIBというBGPデータベース(show ip bgpで見えるもの)に保存される
4. outboundで指定したポリシーが付加されて、ピアにアドバタイズされる

結論

ある経路に広報側でout、受信側でinで同時にLocal Preferenceつけると、まずout側のポリシーが適用された経路情報が受信側のRIB-inに保存される。これはshow ip bgp neighbor A.B.C.D received-routeで確認できる。その後、inboundで指定したポリシーが適用されるのでBGPテーブルとしてはその経路情報で保存される。

補足

デフォルトの状態だとRib-Inの情報は保存されていないので、show ip bgp neighbor A.B.C.D received-route では何も表示されない。Rib-Inへの保存を有効にするためにはneighbor A.B.C.D soft-reconfiguration inboundというコマンドを実行する必要がある。

これは意味的にはBGPのsoft resetを可能とするようなコマンドのようだが、そのためにRib-Inが有効になるようだ。最近のAristaのコマンドだと、neighbor rib-in pre-policy retainというコマンドになっていてより直接的な意味に見える。



この記事が気に入ったらサポートをしてみませんか?