目次
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ステート | 概要 |
Init | BGPネイバーの初期状態 |
Active | TCPコネクションを確立しようとしている状態 |
Connect | TCPコネクションの確立を待っている状態 |
OpenSent | Openメッセージを送信した状態 |
OpenConfirm | ネイバーからのKEEPALIVEを待っている状態 |
Established | 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ネイバーが切断されます。
BGPの動作の基本的な流れ
ここまで解説したBGPルータが保持するデータベースとBGPのメッセージを利用して、BGPルータは次のようにルート情報を交換します。
- BGPルータは、TCPコネクション(ポート179)を確立し、OPENメッセージを交換してBGPネイバーを確立します。
- BGPネイバー間でUPDATEメッセージをやり取りして、受信したUPDATEメッセージをBGPテーブルに格納します。
- BGPテーブルの中からベストパスを選択して、ルーティングテーブルに載せます。また、BGPテーブル上のベストパスを他のBGPネイバーに送信します。
- 定期的にKEEPALIVEメッセージを交換することによって、BGPネイバーを維持します。
この様子を図に示したものが、下記の図です。
BGPの仕組み
- BGPの概要 ~AS間でルート情報を交換~
- BGPの動作
- BGPの基本設定と確認コマンド
- BGPピアグループ(Peer Group) ~ネイバーの設定をまとめよう~
- BGPネイバーの状態
- BGPコンフェデレーションの設定
- BGPコンフェデレーションの設定例
- BGPネイバー認証
- BGP Well Known Mandatory アトリビュート -ORIGIN/AS_PATH/NEXT_HOP-
- 図解!BGPベストパス選択アルゴリズム
- BGP 基本的な設定についての演習[Cisco]
- BGPの基本的な設定についての演習 ~トラブルシュート~
- BGP KEEPALIVEタイマ/ホールドタイムの設定
- BGPルート 最小送信間隔の設定
- BGPルートダンプニング
- マルチホーム – インターネット接続の冗長化 –
- マルチホームAS BGPルートフィルタのポイント
- マルチホームAS ベストパス選択のポイント
- マルチホームAS IGPとBGPの連携のポイント
- マルチホームAS BGPの設定例
- IP-VPNでのBGPの利用 設定例
- BGPルートフィルタの種類
- BGPルートフィルタ -ディストリビュートリスト-
- BGPルートフィルタ -ディストリビュートリスト設定例-
- BGPルートフィルタ -プレフィクスリスト-
- BGPルートフィルタ -プレフィクスリスト設定例-
- BGPルートフィルタ -フィルタリスト(AS_PATH ACL)-
- BGPルートフィルタ -フィルタリスト(AS_PATH ACL)設定例-
- BGPルートフィルタ -ルートマップ(route-map)-
- BGPルートフィルタ -ルートマップ(route-map)設定例-
- BGP neighbor allowas-inコマンド
- BGP neighbor as-overrideコマンド
- BGPルート RIB Failure
- BGPルート アドミニストレイティブディスタンスの制御
- BGPルートの負荷分散
- BGPルート 条件付き生成
- BGPルート 条件付きアドバタイズ
- BGP ルート集約 自動集約
- BGPルート集約 networkコマンドによる集約
- BGPルート集約 networkコマンドによる集約 設定例
- BGP ルート集約 aggregate-addressコマンドによる集約
- aggregate-addressコマンドのオプション summary-only
- aggregate-addressコマンドのオプション attribute-map
- aggregate-addressコマンドのオプション as-set
- aggregate-addressコマンドのオプション advertise-map
- aggregate-addressコマンド as-set/attribute-map/advertise-map 設定例
- BGP選択型集約の概要
- BGP選択型集約 suppress-map
- BGP選択型集約 unsuppress-map
- BGP 選択型集約 suppress-map/unsuppress-map 設定例
- BGP local-as ~ネイバーに他のASのように見せる~
- BGP neighbor remove-private-ASコマンド
- bgp fast external-fallover
- BGP プレフィクス数の制限
- BGP COMMUNITYアトリビュートの使い方
- BGP Well-known COMMUNITYのルートフィルタ設定例
- BGP プライベートCOMMUNITYによるルート制御の設定例
- [演習]BGP応用 Part1:BGP基本設定
- [演習]BGP応用 Part2:ルート集約
- [演習]BGP応用 Part3:ポリシーベースルーティング
- [演習]BGP応用 Part4:トラブルシューティング
- BGP 設定ミスの切り分けと修正 Part1
- BGP 設定ミスの切り分けと修正 Part2
- BGP 設定ミスの切り分けと修正 Part3
- BGP 設定ミスの切り分けと修正 Part4
- BGP 設定ミスの切り分けと修正 Part5
- BGP 設定ミスの切り分けと修正 Part6
- BGP 設定ミスの切り分けと修正 Part7
- IPv6 BGPの設定例 Part1
- IPv6 BGPの設定例 Part2
- 2021年10月4日 Facebookに何が起こったか?
- IPv4 BGPネイバーでのIPv6プレフィックスの交換