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

BGPでのルーティングを行うためにBGPルータは、次の3つのデータベースを保持します。

  • ネイバーテーブル
  • BGPテーブル
  • ルーティングテーブル

ネイバーテーブル

ネイバーテーブルは、BGPでルート情報を交換するBGPルータの情報を保持しているテーブルです。ネイバーには、自ルータが所属するASとネイバールータが所属するASにより、3種類のネイバーの関係があります。

  • EBGPネイバー
  • IBGPネイバー
  • iEBGPネイバー

自ルータのAS番号とネイバールータのAS番号が異なれば、EBGPネイバーです。自ルータのAS番号とネイバールータのAS番号が同じであればIBGPネイバーです。iEBGPネイバーはコンフェデレーション機能を利用する場合のネイバーです。

AS間でのルート情報の交換というBGPの本来の目的では、EBGPネイバーを構成します。そして、トランジットASの場合、EBGPネイバーに加えて同じAS内のネイバーであるIBGPネイバーを構成します。

BGPネイバーには、下記のステータスがあります。

BGPステート概要
InitBGPネイバーの初期状態
ActiveTCPコネクションを確立しようとしている状態
ConnectTCPコネクションの確立を待っている状態
OpenSentOpenメッセージを送信した状態
OpenConfirmネイバーからのKEEPALIVEを待っている状態
EstablishedBGPネイバーを確立した状態
表 BGPネイバーのステータス

BGPネイバーのステータスについて、以下の記事で詳しく解説しています。


BGPネイバーの代わりにBGPピアと呼ばれることもあります。BGPネイバーとBGPピアは基本的に同じ意味です。

BGPテーブル

BGPテーブルは、BGPで送受信するルート情報を保持するためのデータベースです。BGPでルート情報をネイバーへ送信するためには、BGPテーブルに登録します。また、BGPネイバーから受信したルート情報はBGPテーブルに格納されます。

同じネットワークプレフィクスに対する複数のルート情報が存在する場合、パスアトリビュートによってベストパスをただ1つ決定します。

BGPネイバーにアドバタイズするルート情報は、BGPテーブル上のベストパスのルート情報のみです。そして、ベストパスとなったルート情報がBGPのルートとしてルーティングテーブルに登録されます。

ルーティングテーブル

IPパケットをルーティングするためのルート情報が格納されているデータベースがルーティングテーブルです。BGPテーブルでベストパスとなったルート情報が、BGPルートとしてルーティングテーブルに登録されるようになります。しかし、同じネットワークアドレスを他のルーティングプロトコルで学習している場合、BGPルートとしてルーティングテーブルに登録されるとは限りません。

BGPのメッセージ

BGPでは、主に4つのメッセージを利用します。各メッセージの概要は次の通りです。

  • OPEN
  • UPDATE
  • KEEPALIVE
  • NOTIFICATION

OPEN

TCPコネクションを確立して、BGPネイバーのセッションを開始するために最初にやり取りされるメッセージです。OPENメッセージには、バージョン番号、AS番号、BGPルータIDなどの情報が含まれています。

また、OPENメッセージの確認応答として、KEEPALIVEメッセージを利用します。

UPDATE

UPDATEメッセージは、BGPネイバーで交換するルート情報が含まれています。UPDATEに含まれるルート情報はネットワークアドレス、サブネットマスクとそれに付加されるパスアトリビュートです。1つのUPDATEメッセージで、1つのBGPルートを表しています。ネットワークがダウンした場合に、ルート情報が利用不可能になることもUPDATEメッセージでアドバタイズします。また、UPDATEメッセージは、何らかの変更があったときのみアドバタイズされます。

KEEPALIVE

BGPネイバーが正常であるかどうかを確認するために、KEEPALIVEメッセージを利用します。BGPネイバーから定期的にKEEPALIVEメッセージを受け取ることができれば、BGPネイバーが正常に維持できているということになります。もしも、ホールドダウン時間内にBGPネイバーからKEEPALIVEを受け取ることができなければ、BGPネイバーはダウンしたとみなされます。

NOTIFICATION

NOTIFICATIONメッセージは、BGPネイバーの間で何らかのエラーが発生したときに、そのエラーを通知するために使われます。NOTIFICATIONメッセージを受け取ると、直ちにBGPネイバーが切断されます。

ルートリフレッシュ機能をサポートしている場合、REFRESHメッセージも使われます。

BGPの動作の基本的な流れ

ここまで解説したBGPルータが保持するデータベースとBGPのメッセージを利用して、BGPルータは次のようにルート情報を交換します。

  1. BGPルータは、TCPコネクション(ポート179)を確立し、OPENメッセージを交換してBGPネイバーを確立します。
  2. BGPネイバー間でUPDATEメッセージをやり取りして、受信したUPDATEメッセージをBGPテーブルに格納します。
  3. BGPテーブルの中からベストパスを選択して、ルーティングテーブルに載せます。また、BGPテーブル上のベストパスを他のBGPネイバーに送信します。
  4. 定期的にKEEPALIVEメッセージを交換することによって、BGPネイバーを維持します。

この様子を図に示したものが、下記の図です。

図  BGPの基本動作
図 BGPの基本動作

正確には、BGPネイバーを確立するときにOPENメッセージに加えてKEEPALIVEメッセージも利用します。

BGPの仕組み