BGPピアリングでのupdate-sourceとebgp-multihopの設定・動作解説(Ciscoルータ)

BGPピアリングはトランスポート層でTCP(ポート179)を使用します。このため、OSPFなどのマルチキャストベースのプロトコルと異なり、BGPネイバーは直接接続されている必要がありません。

BGPの可用性と冗長性を高めるため、一般的にループバックインタフェース間でピアリングを行う設計が推奨されています。この際、送信元IPアドレスを指定するために、update-source コマンドが使われます。

スポンサーリンク

eBGPでの送信元インタフェース変更

最初に、外部BGP(eBGP)ピアリングでループバックアドレスを使用する場合の設定を見ていきます。

R1(config)#router bgp 1
R1(config-router)#neighbor 2.2.2.2 remote-as 23
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R2(config)#router bgp 23
R2(config-router)#neighbor 1.1.1.1 remote-as 1
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0

上記の設定は、R1とR2のループバックインタフェースを送信元にして、ピアリングを確立するためのものです。しかし、このままではネイバーがアップしません。これは、各ルータが相手のループバックアドレスへの到達性を持っていないためです

R1#sh ip bgp summary 
BGP router identifier 1.1.1.1, local AS number 1
BGP table version is 3, main routing table version 3


Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
2.2.2.2         4           23       0       0        1    0    0 never    Idle

トラブルシューティング:ループバックへのスタティックルートの追加
それぞれのルータに対して、スタティックルートを設定してみましょう。

R1(config)#ip route 2.2.2.2 255.255.255.255 192.168.12.2
R2(config)#ip route 1.1.1.1 255.255.255.255 192.168.12.1

これで到達性が確保されたはずですが、依然としてネイバーはアップしません。

この原因は、eBGPがデフォルトでTTL (Time To Live) = 1 を使用し、直接接続されたネイバーのみとピアリングを試みるためです。ループバックアドレスのように直接接続されていないアドレスに対しては、ebgp-multihop コマンドを使用してTTLを増やす必要があります。

R1(config)#router bgp 1
R1(config-router)#neighbor 2.2.2.2 ebgp-multihop

R1にこの設定を加えると、R1からTCP 179番ポートを使用してセッションの試みが始まります。しかし、R2側でebgp-multihopが設定されていないため、TCP RST(リセット)が送信され、セッションは確立しません。

R2にも同様に設定を行います。

R2(config)#router bgp 23
R2(config-router)#neighbor 1.1.1.1 ebgp-multihop

これで、BGPセッションが確立され、ネイバーがアップします。

R1#
*Apr 26 06:35:00.613: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Up

Wiresharkなどのパケットキャプチャツールで確認すると、TTLがデフォルトの1から255に変更されていることが分かります。

スポンサーリンク

iBGPでの送信元インタフェース変更

次に、内部BGP(iBGP)でループバックアドレスを送信元とする設定例を確認します。iBGPでは、デフォルトでTTLが255であるため、ebgp-multihop のようなマルチホップ設定は不要です。

R2(config)#router bgp 23 
R2(config-router)#neighbor 3.3.3.3 remote-as 23
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0
R3(config)#router bgp 23 
R3(config-router)#neighbor 2.2.2.2 remote-as 23
R3(config-router)#neighbor 2.2.2.2 update-source loopback 0

iBGPの場合、TTLが255であるため、マルチホップ設定は不要ですが、各ルータのループバックアドレスへの到達性を確保するためにスタティックルートを追加します。

R2(config)#ip route 3.3.3.3 255.255.255.255 192.168.23.3
R3(config)#ip route 2.2.2.2 255.255.255.255 192.168.23.2

数秒後、ネイバーがアップします。

R2#
*Apr 26 06:49:50.618: %BGP-5-ADJCHANGE: neighbor 3.3.3.3 Up
スポンサーリンク

まとめ

BGPピアリングでループバックインタフェースを使用する場合、eBGPではebgp-multihopコマンドが必要であること、iBGPではTTLのデフォルトが255であり追加設定が不要であることが重要なポイントです。

また、ループバック間でのピアリングを行うことで、物理インタフェース障害時にもピアリングの維持が可能になり、ネットワーク全体の可用性が向上します。

その他 BGP関連記事は   >>  ルーティングプロトコル(BGP)まとめ << より参照できます。

コメント