Border Gateway Protocol

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
TCP/IP群
アプリケーション層

BGP / DHCP / DNS / FTP / HTTP / IMAP / IRC / LDAP / MGCP / NNTP / NTP / POP / RIP / RPC / RTP / SIP / SMTP / SNMP / SSH / Telnet / TFTP / TLS/SSL / XMPP

カテゴリ
トランスポート層

TCP / UDP / DCCP / SCTP / RSVP / ECN

カテゴリ
ネットワーク層

IP (IPv4, IPv6) / ICMP / ICMPv6 / IGMP / IPsec

カテゴリ
リンク層

ARP/InARP / NDP / OSPF / トンネリング (L2TP) / PPP / MAC (イーサネット, IEEE 802.11, DSL, ISDN, FDDI)

カテゴリ

Border Gateway Protocol(ボーダ・ゲートウェイ・プロトコル、略称 : BGP)はインターネットの中核をなすルーティングプロトコルである。BGPはIPネットワークか自律システム (AS) 間の到達性を示すプレフィックス (prefix) のルーティングテーブルを維持することでルーティングを行う。BGPはパス・ベクタ・プロトコルに分類され、技術的なメトリックは使用しないが、ネットワークの細かい規則や方針に従ってルーティングを行う。BGPはクラスレスドメイン間ルーティング (CIDR) をサポートし、ルート集約を行うことでルーティングテーブルのサイズを削減することができる。

BGPはNSFNETインターネットバックボーンを廃して完全分散ルーティングに移行するため、EGPに代わるルーティングプロトコルとして生まれた。こうして生まれたBGPはインターネットを本当に分散したシステムへと変えた。BGPの現在のバージョンであるバージョン4であるが1994年に採用され、2006年1月に今までのRFC 1771を廃止し、RFC 4271で再体系化された。それ以前のバージョンは現在廃止されている。

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

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

BGPの動作[編集]

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

BGPが自律システム (AS) 内で動くとき、そのBGPを内部BGP(interior Border Gateway Protocol、以下iBGPと略す)という。iBGPで広報される経路にはアドミニストレイティブディスタンス値200をとる。AS間で動くBGPを外部BGP(exterior Border Gateway Protocol、以下eBGPと略す)といい、アドミニストレイティブディスタンス値20をとる。BGPを使用しているルータの中でiBGPのトラフィックにかかわるルータをトランジットルータ (transit router) という。またASの境界に位置し、eBGPを使って他のASと情報をやり取りするルータをボーダルータ (border router) もしくはエッジルータ (edge router) という。

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

ルートリフレクタはAS内で1つ(もしくは冗長性をとって2つ)のルータをルートリフレクタにすることで、他のルータはこのルータとだけピアを結べばいいことになり、AS内で必要なピア接続の数を減らすことができる。

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

有限状態機械[編集]

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

経路選択[編集]

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

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

BGPにおける問題と緩和策[編集]

ルートフラッピング[編集]

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

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

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

ルーティングテーブルの増大[編集]

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

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


外部リンク[編集]

  • BGPに関する重要なRFC
    • RFC 4271, A Border Gateway Protocol 4 (BGP-4)(廃止: RFC 1771
    • RFC 4272, BGPのセキュリティー・脆弱性についての分析
    • RFC 4273, BGP-4のための管理オブジェクトの定義
    • RFC 4274, BGP-4プロトコルの分析
    • RFC 4275, BGP-4 MIB Implementation Survey
    • RFC 4276, BGP-4導入レポート
    • RFC 4277, BGP-4プロトコルを使った実験
    • RFC 4278, Standards Maturity Variance Regarding the TCP MD5 Signature Option (RFC 2385) and the BGP-4 Specification
    • RFC 3392, BGP-4のアドバタイズ能力
    • RFC 3065, BGPにおける自律システム (AS) のコンフェデレーション
    • RFC 2918, BGP-4のルートリフレッシュ能力
    • RFC 2796, BGPルートリフレクション - IBGPのフルメッシュとの選択
    • RFC 1772, Application of the Border Gateway Protocol in the Internet Protocol (BGP-4) using SMIv2
  • 廃止となったBGPに関するRFC
    • RFC 1965, 廃止 - BGPにおける自律システム(AS)のコンフェデレーション
    • RFC 1771, 廃止 - A Border Gateway Protocol 4 (BGP-4)
    • RFC 1657, 廃止 - BGP-4のための管理オブジェクトの定義
    • RFC 1655, 廃止 - インターネットにおけるBGPアプリケーション
    • RFC 1654, 廃止 - A Border Gateway Protocol 4 (BGP-4)
    • RFC 1105, 廃止 - Border Gateway Protocol (BGP)
  • BGPの導入に関するもの
    • OpenBGPD OpenBSDチームによって開発されたBSDライセンスのソフト
    • Quagga GNU Zebraから分岐したUnix-likeなGPLのルーティングソフトウェア
    • Xorp the eXtensible Open Router Platform, BSDライセンスのルーティングソフトウェア
    • GNU Zebra BGP4をサポートしたGPLのルーティングソフトウェア
    • BIRD Unix-likeなプラットホームのためのGPLのルーティングパッケージ
  • BGP Interactions at Router Startup Described as a Sequence Diagram (PDF)