BGPのメッセージと状態遷移


BGPは4種類のメッセージをやり取りし、ネイバーを確立し、3つのテーブル(データーベース)を最新に保つ。

4種類のメッセージ

BGPの4つのメッセージ種類(BGP Message Types)

メッセージ名主な目的タイミング
OPENピア関係(セッション)を確立する最初に送信される
UPDATE経路情報(広告・撤回)をやり取りする通常運用時
KEEPALIVE接続が生きていることを確認する定期的に送信
NOTIFICATIONエラー発生を通知し、セッションを終了する異常時

BGPルーターが保持するデータベース

BGPルータはルーティングする為に、以下のデーターベースを保持しています。

BGPのデーターベース説明コマンド
①BGPネイバーテーブルBGPネイバーの情報show ip bgp summary
②BGPテーブルすべてのBGPルート情報show ip bgp
③ルーティングテーブル↑上記のルートのうちのBGPベストパスを含む
全ての経路(staticなども)。
show ip route
①BGPネイバーテーブル

BGPネイバーの状態を保持しているテーブルを、BGPネイバーテーブルと言います。
show ip bgp summaryで確認できます。

BGPネイバーの関係には3つ種類があります。

ネイバー状態の種類説明
EBGPネイバールータ同士のAS番号が異なる
IBGPネイバールータ同士のAS番号が同一
IEBGPネイバーコンフェデレーション機能を利用するネイバー

②BGPテーブル

BGPで受信・生成したルート情報を保持するテーブル。
各BGPピアから受信した経路情報が含まれ、BGPのルート選択アルゴリズムによって最適な経路が決定されます。
BGPのパスアトリビュート(AS-PATH、Local Preference、MEDなど)を基に最適なルートが選ばれます。

③ルーティングテーブル

ルータが実際に使用する経路情報を保持するテーブル
BGP以外にも、OSPF、EIGRP、スタティックルートなどのさまざまなプロトコルから選ばれた最適なルートが格納されます。
BGPテーブルにあるすべてのルートがルーティングテーブルに入るわけではなく、BGPのベストパスアルゴリズムで選ばれた最適なルートのみがインストールされます。

BGPの状態遷移

Ciscoでの確認コマンド例

show ip bgp summary

出力例:

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.0.2.2       4 65002    1024    1030        3    0    0 00:30:12 Established
198.51.100.2    4 65003       0       0        0    0    0 00:00:09 Active

ここで「State/PfxRcd」列が Established ならピア確立成功です。
ActiveやIdleなら、接続に問題があります。

BGPの状態遷移(6ステージ)

状態名意味主な動作
Idle初期状態TCP接続を待機。接続を開始する準備。
ConnectTCP接続中相手へのTCP接続を試行。成功で次へ。
Active再試行状態接続失敗時に再度トライ。
OpenSentOPEN送信済み自分のOPENメッセージを送信し、相手からのOPENを待つ。
OpenConfirmOPEN確認中双方のOPENを交換済み。KEEPALIVE応答待ち。
Established確立状態セッション確立!UPDATEで経路交換が可能。

Idle(アイドル)「まだ相手に話しかけてない状態。」

  • 初期状態。ピアとの接続をまだ開始していない。
  • TCPポート179での接続を待機。
  • 障害時などにここに戻ることもある。

Connect(コネクト)「相手に電話をかけている最中。」

  • TCPセッションを開始している段階。
  • 相手のIPに対して接続を試みる。
  • 成功すれば OpenSent へ進む。
  • 失敗した場合は Active へ。

Active(アクティブ)「相手が出なかったので、もう一回電話をかけ直している。」

  • TCP接続を再試行している状態。
  • Connectで失敗したのでリトライ中。
  • 成功すればOpenSentへ進む。失敗するとまたConnectへ。

OpenSent(オープン送信)「自分の名前を言ったので、相手の名前を待っている。」

  • 自分のOPENメッセージを送信済み。
  • 相手からのOPENメッセージを受信待ち。
  • 受信に成功するとOpenConfirmへ。

OpenConfirm(オープン確認)「お互い自己紹介を済ませた状態。」

  • 双方がOPENメッセージを交換済み。
  • KEEPALIVEメッセージの受信待ち状態。
  • KEEPALIVEを受信したら、セッション確立(Established)。

Established(エスタブリッシュド)「会話(経路交換)が始まった状態。」

  • BGPセッション確立!
  • UPDATEメッセージで経路情報の交換が可能。
  • KEEPALIVEを定期送信し、セッション維持。

状態遷移がうまくいかない原因例

状態よくある原因対策
Idleピア設定ミス、ACLでブロックIP・AS設定確認、TCP/179開放
Active相手側設定ミス、ルーティング不達相互設定を確認(neighbor設定など)
OpenSentBGPバージョンやAS番号不一致neighbor remote-as 設定確認
OpenConfirmKeepalive未受信、タイマー不一致hold-time・keepalive設定を確認
Established後の切断認証エラー、ネットワーク断TCPセッションログ確認