BGP-4 仕様


1. BGP-4について

1.1. BGPの位置づけ

現在のインターネットでは、さまざまな経路制御プロトコルが用いられています。 経路制御プロトコルにはそれぞれに固有の特徴がありますが、扱うネットワークの 規模に着目すると、IGPEGPというグループに 分類することができます。

IGPは、Interior Gateway Protocolの略で、主に組織内のネットワークを 制御するために用いられます。 よく知られているIGPには、RIP、OSPF、IS-ISがあります。

EGPは、Exterior Gateway Protocolの略であり、IGPで運用される組織の間を 取り持ちます。 EGPは、IGPで管理されるネットワークを結びつけ、 インターネット全体の接続性を提供します。 よく知られているEGPとしてはBGPがあります。

従来は、BGPといえば一般のユーザではなくISPが使用するものでしたが、 最近では、IP-VPNサービスに代表されるように、一般のユーザがBGPを 使用するケースが増えています。

1.2. BGPの特徴

BGPでは、インターネットがAS(Autonomous System)という 部分から構成されているものと考えます。 ASは、特定の管理主体が統一的に管理するネットワークの範囲です。

ASには、AS番号という16bitの識別子が一意に割りあてられます。 ただし、64512から65535の範囲の番号は、プライベートな利用を想定しており、 重複して割りあてられる可能性があります。

BGPにはいくつかのバージョンがありますが、現在のインターネットでは、 バージョン4がよく使われており、これをBGP-4とよびます。 BGP-4に関する基本的な仕様はRFC1771として提案されています。

BGP-4は、BGP-3(BGP version 3)の拡張で、 CIDR(Classless Inter-Domain Routing)をサポートしていることが大きな特徴です。 他の経路制御プロトコルと比べると、次のような特徴があります。

1.3. IBGPとEBGP

以下の例では、100番のASと200番のASがルータで接続されています。 RFC1771では、BGPに関係するルータなどをBGPスピーカ(speaker)とよんでいますが、 この文書ではBGPルータとよびます。

なお、実際のネットワーク構成では、ASの外へ接続するルータが3つ以上あったり、 1つのBGPルータが2つ以上のASと接続することもあります。

         +----------------+                +----------------+
         | AS 100         |                | AS 200         |
         |                |                |                |
         |                |                |                |
      +-----+          +-----+          +-----+          +-----+
   ==>|  R1 |<========>|  R2 |<========>|  R3 |<========>|  R4 |<===
      +-----+   IBGP   +-----+   EBGP   +-----+   IBGP   +-----+
         |                |                |                |
         |                |                |                |
         |                |                |                |
         +----------------+                +----------------+

      R1〜R4: BGPルータ

この図の中の矢印は、BGPルータ間のTCPコネクションを示しています。このうち、 同じASに属するBGPルータの間のTCPコネクションを IBGP (Internal BGP)といいます。 一方、異なるASに属するBGPルータの間のTCPコネクションを EBGP (External BGP)といいます。

BGP-4では、他のBGPルータから教わった経路を、他のBGPルータに伝えようとしますが、 IBGPから教わった経路を他のIBGPへ伝えることはありません。 したがって、ASの中に複数のIBGPがあるときには、 それらをフルメッシュで接続する必要があります。

IBGPでは、ルータが直接につながっている必要はなく、 一般的には、複数のルータを経由してつながっています。 したがって、IBGP間の通信に必要な経路は、 OSPFなどのIGPによって用意されることになります。

一方、EBGPについては、間にルータをはさむことはなく、直接につながります。 実装によっては、直接につながらない場合を扱うものがありますが、 この文書では言及しません。

1.4. パス属性

BGPの経路情報には、パス(Path)の情報が含まれています。パスとは、 宛先に至るまでに通過するASを列挙したものです。 BGPでは、経路を表現する情報の要素をパス属性(Path Attribute)とよんでいます。 主要なパス属性をいくつか説明します。

1.5. BGP-4のメッセージ

BGPルータはTCPの179番ポートに対してコネクションを接続します。 自分側のポート番号については、179番以外の空いている番号を使います。 2つのBGPルータが同時に接続を要求したときには、そのうちの1つを残し、 もう1つを終了します。

BGPルータは、 OPENUPDATEKEEPALIVENOTIFICATIONという4種類のメッセージを交換します。

KEEPALIVEメッセージを送信する間隔は、 HoldTimeというパラメータで決まります。 RTシリーズの実装では、HoldTimeパラメータのデフォルト値を180秒としています。 BGPルータは、 HoldTimeパラメータの1/3程度の間隔(つまり60秒のデフォルト値) でKEEPALIVEメッセージを送信します。 そして、 HoldTimeパラメータの時間だけ待ってもKEEPALIVEメッセージを受信できなかったら、 コネクションがダウンしたものと判断します。

UPDATEには、パス属性、 NLRI(Network Layer Reachability Information)Withdrawn Routesの3つが含まれます。 パス属性は、前述のとおり、 経路の通り道となるパスの情報です。そして、NLRIは到達可能な宛先を、 Withdrawn Routesは到達不可能な宛先を示します。

1.6 経路選択の優先順位

BGPで同じ宛先となる経路を複数受信した場合に、1つの経路を選択するための優先順位を示します。 優先順位は上位のものほど高くなります。

  1. コマンドで設定した優先度による比較

    EBGPで受信した経路に対してbgp export filterコマンドとbgp exportコマンドで設定したpreference値の大きい経路を優先します。 この比較はEBGPで異なるASから受信した経路に対してにのみ働きますが、bgp export route selection ruleコマンドの存在する機種では設定によりIBGPで受信した経路も比較対象に含めることが可能です。

  2. Local Preference属性による比較

    受信した経路のパス属性"Local Preference"の値の大きい経路を優先します。 この比較はIBGPで受信した経路同士の場合にのみ働きます。

  3. 経路種別による比較

    経路種別によって優先する経路を選択します。経路種別は以下の3つに大別しており、優先順位は上位のものほど高くなります。

    1. 外部プロトコルで受信した経路
    2. EBGPで受信した経路
    3. IBGPで受信した経路

  4. MED属性による比較

    受信した経路のパス属性"MED"の値の小さい経路を優先します。 この比較はEBGPで同一のASから受信した経路同士の場合にのみ働きます。

  5. Origin属性による比較

    受信した経路のパス属性"Origin"によって優先する経路を選択します。Origin属性は以下の3つが存在し、優先順位は上位のものほど高くなります。

    1. IGP
    2. EGP
    3. Incomplete

  6. AS Path属性による比較

    受信した経路のパス属性"AS Path"の短い経路を優先します。

  7. BGPルーターのIPアドレスによる比較

    経路の受信元であるBGPルーターのIPアドレスが小さい経路を優先します。


2. RTシリーズの実装

2.1. 機能の概要

RTシリーズは、RFC1771で規定される基本的な処理に対応します。 ただし、RFC1771に記述される機能の一部には対応していないものがあります。 また、RFC1771よりも新しいRFCで規定される機能 (ConfederationやRoute Refrectorなど)には対応していません。

機能や属性の対応状況は以下のようになっています。

RTシリーズが対応しているもの


RTシリーズが対応しないもの

2.2. IBGPの対応機種とファームウェアリビジョン

RTシリーズでは、以下の機種およびファームウェアで、IBGPをサポートしています。

機種 ファームウェア
vRX VMware ESXi版 すべてのリビジョン
vRX Amazon EC2版
RTX3510
RTX1300
RTX1220
RTX830
NVR700W
RTX1210
RTX5000
RTX3500
FWX120
RTX810 Rev.11.01.09以降
RTX1200 Rev.10.01.42以降
RTX3000 Rev.9.00.56以降

2.3. TCP MD5認証の対応機種とファームウェアリビジョン

RTシリーズでは、以下の機種およびファームウェアで、TCP MD5認証をサポートしています。

機種 ファームウェア
RTX3510 すべてのリビジョン
RTX1300
RTX1220
RTX830
NVR700W
RTX1210 Rev.14.01.11以降
RTX5000 Rev.14.00.18以降
RTX3500
FWX120 Rev.11.03.22以降
RTX810 Rev.11.01.28以降

制限事項

vRX シリーズでは加えて、以下の制限事項が存在します。

bgp neighborコマンドでlocal-addressパラメータを設定しない場合の制限事項

vRX VMware ESXi版の近隣ルーターおよび経路情報の更新契機に関する制限事項


3. 関連ドキュメント

以下のドキュメントを用意しています。