Border Gateway Protocol

Border Gateway Protocolは自律システム間で経路情報を交換するために設計されたルーティングプロトコルである。広義のExterior Gateway Protocolであり、インターネットではインターネット・サービス・プロバイダや巨大なネットワークの相互接続で標準的なルーティングプロトコルとして利用されている。

1. 概要
-----

自律システム間のルーティングを行うExterior Gateway Protocolの通信プロトコルである。

BGPはIPネットワークか自律システム間の到達性を示すプレフィックスのルーティングテーブルを維持することでルーティングを行う。BGPはパスベクトル型ルーティングプロトコルに分類され、技術的なメトリックは使用しないが、ネットワークの細かい規則や方針に従ってルーティングを行う。BGPはクラスレスドメイン間ルーティングをサポートし、経路集約を行うことでルーティングテーブルのサイズを削減することができる。

BGPを利用するルーター間はIGPセッションを張る。ルーターの数が多いネットワークでBGPを利用する場合、IGPセッションの数が多くなり、スケーラビリティの問題が発生する。この問題を解決するために利用している技術をルートリフレクションと言う。

AS間の経路が変化した場合、変化した差分の情報をやり取りする。

BGPはNSFNETインターネットバックボーンを廃して、複数のバックボーンネットワークを繋ぐ完全分散ルーティングに移行するため、EGPに代わるルーティングプロトコルとして生まれた。こうして生まれたBGPはインターネットを本当の分散システムへと変えた。

BGPの2015年現在のバージョンであるバージョン4は1994年に提案され、2006年1月には従来の1771}}から4271}}に更新された。その際に以前のバージョンは廃止された。

非常に大きなプライベートIPを利用したネットワークでもBGPを使用することができる。例えばいくつかの巨大なOSPFの橋渡しするのに使えるし、BGPのマルチホーミング機能を利用してネットワークの冗長性を改善することができる。

大部分のインターネットユーザにはBGPは無縁な存在であるが、大部分のインターネット・サービス・プロバイダは他のインターネット・サービス・プロバイダとのルーティングにBGPを利用している。その重要度はインターネット・サービス・プロバイダを電話回線業者に例えると公衆交換電話網上における共通線信号No.7に匹敵する。

2. BGPの動作
---------

BGPでのルータ間のネイバーやピアはTCPのポート179番を通じて手動による設定で確立される。BGPを利用するルータは接続を維持するために19バイトのキープアライブを定期的に送信する。トランスポートプロトコルにTCPを使うのは、ルーティングプロトコルの中ではBGPだけである。

BGPが自律システム内で動くとき、そのBGPを内部BGPという。AS間で動くBGPを外部BGPという。BGPを動作させているルータの中でiBGPのトラフィックにかかわるルータをトランジットルータという。またASの境界に位置し、eBGPを使って他のASと情報をやり取りするルータをボーダルータもしくはエッジルータという。

同一のAS内に存在し、なおかつBGPのルーティングに参加している全てのルータは原則としてフルメッシュで構成されなくてはならない。つまり各々のルータは自分以外の全てのルータとピアを結ばなくてはならない。このネットワーク構築方法であると、ネットワーク内のルータが増えるとコネクションの数は二次関数的に増加し、いずれはスケールの問題に直面することになる。これを回避するには、2つの方法がBGPには組み込まれている。ひとつは2796}}で定められたルートリフレクタ、もうひとつは3065}}で定められたコンフェデレーションである。

ルートリフレクタはAS内で1つのルータをルートリフレクタにすることで、他のルータはこのルータとだけピアを結べばいいことになり、AS内で必要なピア接続の数を減らすことができる。

コンフェデレーションはかなり大きなネットワークで使う方法で、いくつかの対処可能なある程度小さなASを大きなASで包み込むような方法である。コンフェデレーションはルートリフレクタと一緒に使うことができる。

2.1. 有限状態機械
-----------

BGPのピアは他のBGPのピアとの動作の決定にシンプルな有限オートマトンを使用する。FSMにはIdle、Connect、Active、OpenSent、OpenConfirm、Establishedの6つの状態がある。BGPのピアはTCP接続がされ次第、ピアのセッションが確立・維持される方向で状態遷移する。

2.2. 経路選択
---------

BGPは経路の選択に上から下の順に以下の基準を用いる。

ネクストホップルータへの明示的なルートがルーティングテーブルに存在する。
より高いWeight属性を持つ経路を選択
より高いローカル設定属性を持つ経路を選択
このルータを起源とするBGPを選択
ASパスのルートが最も短いものを選択
オリジン属性の値がより低いルートを選択
MED属性の値が一番低い経路を選択
内部経路より外部経路を選択
ネクストホップへの経路で最もIGPメトリック値が最も低いものを選択
もし全ての経路が外部からのものであれば、一番古いものを選択
最も低いBGP IDを持つネクストホップルータを選択

3. BGPにおける問題と緩和策
----------------

3.1. ルートフラッピング
--------------

ルートフラップダンピングは、ルートフラッピングによる影響を軽減させるために組み込まれている。ルータでのフラッピングはWAN/WLANのリンクやインターフェースが故障したり自己修復されたりすること、誤設定されること、誤管理されることで発生する。もしルートフラップダンピングがなかった場合、フラッピングを起こしたルートはただちにルーティングテーブルから削除されるが、その際にルータに高負荷がかかる恐れがあり、それがルーティングの安定性に重大な影響を及ぼす可能性がある。

ダンピングがあることで、ルートのフラッピングは指数減少する。どういう原因かを問わず、ルートが利用ができなくなったが、すぐさま復活するという事象が起きた場合、初回はBGPの通常のフェイルオーバーする時間を維持するためにダンピングは何も行わない。2回目に同じことが起きた場合、BGPはこのプリフィックスを通ることを一定時間避ける。以降、同じことが起きるたびに指数関数的にタイムアウトの時間が減る。異常な状況が去り、一定時間がたつとプリフィックスは何事もなかったかのように復活する。ダンピングはDoS攻撃を軽減することも可能である。またダンピングのタイミングはカスタマイズ可能である。

バックボーンのリンクとルータのプロセッサの速度が速くなりネットワークに変化があった場合、ルータのルーティングテーブルに非常に速く反映できるようになってからは、一部のネットワーク構築にかかわる人からルートフラップダンピングはそれほど重要ではないのではないか、むしろ状況を悪化させてるのではないかという意見が出ている。この意見については今後、研究と議論が必要である。

3.2. ルーティングテーブルの増大
------------------

BGPとインターネットインフラが直面している最大級の問題のひとつにインターネットルーティングテーブルの増大が挙げられる。もしインターネットルーティングテーブルが適切な範囲を超えて増大した場合、ルータのルーティングテーブルを維持するためのメモリ要求やCPUの負荷はその能力を超え、インターネットのゲートウェイとしての役割を果たせなくなるだろう。それに加えてルーティングテーブルが巨大化したことによりネットワーク構成に大きな変化があった場合、ネットワークの安定化に相当長い時間かかり、その間ネットワークサービスは全く信頼のできない状態になるか、最悪の場合、全く利用できなくなるだろう。

2001年の後半までグローバルルーティングテーブルは指数関数的に成長しており、それはインターネットへの接続性の維持への脅威となっていた。それに対してグローバルルーティングテーブルをCIDRやルート集約を用いて、なるべく小さく維持するという各ISPによる協調努力があった。その努力の甲斐あってその後数年は線形的成長にとどまった。

しかし、2014年8月にはBGPテーブルのエントリ数が512Kを突破し、ルータの処理能力が不足しつつあったため、CISCO等の機器メーカーは、対応可能な上位機種にルータを変更したり、設定を変更したりすることを勧告した。

2014年8月12日から北米においてフルルートを扱うBGPルータのルーティングテーブルが溢れたことによるISP間の通信障害が発生した。自律システムの1つであるVerizonの経路集約の設定が失敗し、大量の経路情報が外部に流出したことが原因であった。

4. 関連項目
-------

EGP - 1984年にRFCとして提案された、BGPの前身となったプロトコルである。

5. 外部リンク
--------

BGPに関する重要なRFC
4271}} - A Border Gateway Protocol 4 }}
4272}} - BGPのセキュリティー・脆弱性についての分析
4273}} - BGP-4のための管理オブジェクトの定義
4274}} - BGP-4プロトコルの分析
4275}} -
4276}} - BGP-4導入レポート
4277}} - BGP-4プロトコルを使った実験
4278}} -
3392}} - BGP-4のアドバタイズ能力
3065}} - BGPにおける自律システムのコンフェデレーション
2918}} - BGP-4のルートリフレッシュ能力
2796}} - BGPルートリフレクション - IBGPのフルメッシュとの選択
1772}} -
廃止となったBGPに関するRFC
1965}} - 廃止 - BGPにおける自律システムのコンフェデレーション
1771}} - 廃止 -
1657}} - 廃止 - BGP-4のための管理オブジェクトの定義
1655}} - 廃止 - インターネットにおけるBGPアプリケーション
1654}} - 廃止 -
1105}} - 廃止 -
BGPの導入に関するもの
[1] OpenBSDチームによって開発されたBSDライセンスのソフト
[2] GNU Zebraから分岐したGPLのルーティングソフトウェア
[3] the eXtensible Open Router Platform}}。BSDライセンスのルーティングソフトウェア
[4] BGP4をサポートしたGPLのルーティングソフトウェア
[5] Unix-likeなプラットホームのためのGPLのルーティングパッケージ
BGPの通信障害に関する情報
[6] 2014年8月12日に米国で発生したISP間の通信障害に関する最初の報告