トラブルシューティング

BGP トラブルシューティティング

BGP セッション確立プロセスとフラップに関するトラブルシューティング
BGPの状態が変更されたときにマルチエージェントモードで発生するさまざまなイベントについて説明します。

次のBGPトポロジーについてのイベントについて説明します。

隣接関係変更時のBGPのイベントタイプを以下に記載します。

Event RecvHardReset

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event RecvHardReset new state Idle

SW2のBGPシャットダウンされるとSW1では以下のメッセージを受信します。

%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) 6/2 (Cease/administrative shutdown <Hard Reset>) reason

SW2のBGP設定からSW1の情報削除されると、SW1では以下のメッセージを受信します。

%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) 6/3 (Cease/peer de-configured <Hard Reset>) 0 bytes

SW1とSW2のルーターID同じに設定されている場合、SW1はピアから以下のメッセージを受信します。

%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes
RFC6286に従う場合、BGPのルーターID同一である場合はより大きなAS番号を持つBGPスピーカーによって接続開始されます。
これはeBGPにのみ適用されます、iBGPの場合はAS番号が同じであるためセッションは確立されません。
BGPでeBGPのセッションが確立されている場合でSW2でルーターID変更されると、セッションフラップが一度表示され、ピアリングが再起動します。
同じことを以下のコマンドで確認することもできます。
show ip bgp neighbors 10.0.0.1 | grep -i peering
  Peering failure hint: Cease/other configuration change

BGPでiBGPセッションが確立されている場合でSW2でルーターID変更されると、セッションダウンすることが分かります。

SW2はピアに以下のメッセージをルーターID変更されたことを通知します。

%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 2/3 (Open Message Error/bad BGP ID) 0 bytes
同じことを以下のコマンドで確認することもできます。

show ip bgp neighbors 10.0.0.1 | grep -i peering
  Peering failure hint: Open Message Error/bad BGP ID

BGPタイマーはピアリング確立された後でSW2に変更されると、SW1は以下のメッセージを受信します。

%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes

同じことを以下のコマンドで確認することもできます。
show ip bgp neighbors 10.0.0.1 | grep -i peering
  Peering failure hint: Cease/other configuration change
BGPのオープンメッセージでパラメータミスマッチの場合、隣接関係は変更されます。

BGPの実際のAS番号と設定のAS番号ミスマッチの場合、SW1上で以下のメッセージを受信します。
%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes
%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) 2/2 (Open Message Error/bad AS number) 0 bytes
同じことを以下のコマンドで確認することもできます。
show ip bgp neighbors 10.0.0.1 | grep -i peering
  Peering failure hint: Open Message Error/bad AS number
BGPバージョンミスマッチの場合、SW2は以下のメッセージを送信します。
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 2/1 (Open Message Error/unsupported version) 2 bytes

SW2でmaximum routeの制限に達したとき、SW1はSW2から以下のメッセージを受信します。
%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) 6/1 (Cease/maximum number of prefixes reached <Hard Reset>) 0 bytes
BFD有効のときで、SW2でBFDセッションダウンされたとき、SW2はネイバーダウンとして以下のメッセージを受信します。
%BFD-5-STATE_CHANGE: peer (vrf:default, ip:10.0.0.0, intf:Ethernet1, type:normal) changed state from Up to Down diag NeighDown
%BGP-3-NOTIFICATION: received from neighbor 10.0.0.0 (VRF default AS 10) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes
clear ip bgp 10.0.0.1コマンドでSW1のBGPテーブルクリアされると、SW2は以下のメッセージを受信します。
BGP-3-NOTIFICATION: received from neighbor 10.0.0.0 (VRF default AS 10) 6/4 (Cease/administrative reset <Hard Reset>) reason:

Event Deconfigured

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event Deconfigured new state Idle

SW2から手動でネイバーを削除すると、SW2からSW1に以下のメッセージ送信されます。

%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 6/3 (Cease/peer de-configured <Hard Reset>) 0 bytes

Event OtherConfigurationChange

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event OtherConfigurationChange new state Idle

BGPピアリング確立されている場合で、SW1とSW2のルーターIDを同じにするためにSW2上でその変更が行われると、SW2からSW1に以下のメッセージが送信されます。
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes

SW2のAS番号ミス設定の場合、SW2はSW1に以下のメッセージを送信します。

%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 20) 2/2 (Open Message Error/bad AS number) 0 bytes

BGPタイマーミスマッチのため、SW2でBGPタイマーを変更したとき、SW2はSW1に以下のメッセージを送信します。

%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes

Event AdminShutDown

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event AdminShutdown new state Idle

SW2上でBGPシャットダウンされると、SW2からSW1に以下のメッセージ送信されます。
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 6/2 (Cease/administrative shutdown <Hard Reset>) reason

Event AdminReset

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event AdminReset new state Idle

SW1のBGPルーティングテーブルが手動でクリアされると、隣接関係はリセットされて、SW1はピアに以下のメッセージを送信する。
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.1 (VRF default AS 20) 6/4 (Cease/administrative reset <Hard Reset>) reason:

Event Stop

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event Stop new state Idle

SW1とSW2でリンクフラップ発生すると、remote fault 送られます。

BFD有効のときで、リンクフラップによってBFDセッションダウンすると、ピアはダウンして、SW1は以下のメッセージを送信します。
%BFD-5-STATE_CHANGE: peer (vrf:default, ip:10.0.0.1, intf:Ethernet1, type:normal) changed state from Up to Down diag PathDown
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.1 (VRF default AS 20) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes
BFD有効のときで、コントロールタイムアウトによってBFDセッションダウンすると、ピアはダウンして、SW2は以下のメッセージを送信します。
%BFD-5-STATE_CHANGE: peer (vrf:default, ip:10.0.0.0, intf:Ethernet1, type:normal) changed state from Up to Down diag CtrlTimeout 
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 6/6 (Cease/other configuration change <Hard Reset>) 0 bytes

SW2でSW1からのkeepaliveを受信しなかった場合、SW2によって以下のメッセージ送信されます。

%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 4/0 (Hold Timer Expired Error/None) 0 bytes

同じことを以下のコマンドでも確認することもできます。
show ip bgp neighbors 10.0.0.0 | grep -i peering
  Peering failure hint: Hold Timer Expired Error/None

Event RecvNotify

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event RecvNotify new state Idle 

BGP malformed アップデートメッセージを受信すると、SW1はSW2から以下のメッセージを受信します。
%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) Notification data field error

Hold time expireによって、SW1からのkeepalive メッセージを受信しなかった場合、SW1はピアから以下のメッセージを受信します。

%BGP-3-NOTIFICATION: received from neighbor 10.0.0.1 (VRF default AS 20) 4/0 (Hold Timer Expired Error/None) 0 bytes

同じようなことを以下のコマンドで確認することもできます。

show ip bgp neighbors 10.0.0.1 | grep -i peering
  Peering failure hint: Hold Timer Expired Error/Non

Event MaxPath

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event MaxPath new state Idle
SW2上でmaximum routeに達したとき、以下のコマンドで設定することができます。
neighbor 10.0.0.0 maximum-routes x

X = 0-4294967294 0 = unlimited

SW2でmaximum routeを変更したとき、SW2上で以下のメッセージ出力されます。

%BGP-5-IF_MAXROUTESLIMIT: Peer 10.0.0.0 (VRF default AS 10) has exceeded its configured maximum total number of routes (x); Put into idle state forever
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 6/1 (Cease/maximum number of prefixes reached <Hard Reset>) 0 bytes

上記の問題はピアからのルーティングスケールが既知であり、適切な制限が設定されている場合に回避できます。

defaultの値は以下のコマンドで確認することができます。

show ip bgp neighbors <A.B.C.D> | grep -i "Configured maximum total number of routes"
  Configured maximum total number of routes is 256000, warning limit is 204800

以下のコマンドでBGPセッションをクリアすることができます。

clear ip bgp <A.B.C.D>

Event TransportError

SW2 は SW1 から TCP RST を受信し、SW2 は SW1 の BGP ソケットへの書き込みを試みます。SW1 は BGP セッションを破棄、SW2 はキープアライブやアップデートなどの BGP パケットを SW2 に送信します。

BGP プロセスが SW1 で強制終了されると、トランスポート エラーが原因で SW2 ネイバーシップがフラップします。

同じ IP ペア間の 2 つの TCP 接続が同時に確立され、BGP セッションの 1 つが切断され、もう 1 つが確立済み状態になると、SW2 は SW1 に次の通知を送信します。

%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 6/7 (Cease/connection collision resolution) 0 bytes

Event RecvUpdate

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event RecvUpdate new state Idle

SW1でincomplete parameter等のmalformed BGP アップデートメッセージ受信されたとき、SW1はSW2に以下のメッセージを送信します。
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 3/10 (Update Message Error/bad address/prefix field) 0 bytes

SW1でwell known/mandatory parameter等のmalformed BGP アップデートメッセージ受信されたとき、SW1はSW2に以下のメッセージを送信します。
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 3/4 (Update Message Error/attribute flags error) 4 bytes

Event RecvHeaderError

%BGP-5-ADJCHANGE: peer <IP> (VRF default AS <n>) old state Established event RecvHeaderError new state Idle

BGP アップデートメッセージのmalformed headerをピアに送信したとき、SW1はSW2に以下のメッセージを送信します。
%BGP-3-NOTIFICATION: sent to neighbor 10.0.0.0 (VRF default AS 10) 1/1 (Message Header Error/lost connection synchronization) 0 bytes

BGPのセッション確立プロセスとフラップについて、トラブルシューティングの参考になれば幸いです。

参考)
RFC 4271
RFC 4486
RFC 6286

本内容は、Arista社のドキュメント等より情報を抜粋し東京エレクトロンデバイスにて記事としてまとめたものとなります。