ボーダーゲートウェイプロトコル(BGP)は、インターネット上の自律システム(AS)間でルーティングと到達可能性情報を交換するために設計された標準化された外部ゲートウェイプロトコルです。[ 2 ] BGPはパスベクタールーティングプロトコルに分類され、[ 3 ]ネットワーク管理者が設定したパス、ネットワークポリシー、またはルールセットに基づいてルーティング決定を行います。
自律システム内でのルーティングに使用されるBGPは、内部境界ゲートウェイプロトコル(iBGP)と呼ばれます。一方、インターネットで使用されるBGPは、外部境界ゲートウェイプロトコル(EBGP)と呼ばれます。
1989 年 1 月、テキサス州オースティンで開催された第 12 回 IETF 会議で、ヤコフ・レクター、レン・ボサック、カーク・ラウヒードがテーブルに着席し、最終的に Border Gateway Protocol (BGP) となるものを設計しました。最初の BGP 設計は 2 枚のナプキンに記録されたため、「2 枚ナプキン プロトコル」と呼ばれることがよくあります。[ 4 ]ナプキンに書かれた設計は、手書きの 3 枚の紙に拡張され、そこから最初の相互運用可能な BGP 実装が迅速に開発されました。これらの 3 枚の紙のコピーが、現在カリフォルニア州ミルピタスのCisco Systemsのルーティング プロトコル開発エリアの壁に掛けられています。同年、RFC 1105 [ 5 ]が公開され、BGP プロトコル (さまざまな形式) は 1994 年以来インターネットで使用されています。[ 6 ]
最初の公開から半年後の1990年に、RFC 1136 [ 7 ]の公開によりプロトコルの定義が変更されました。1991年10月には、 RFC 1267 [ 8 ]でBGPバージョン3が定義され、それ以前の2つのバージョンは廃止されました。1994年には、現在のバージョン(BGP4)がRFC 1654 [ 9 ]として公開されました。その定義は1995年3月にRFC 1771 [ 10 ]に置き換えられました。2006年1月にはRFC 4271 [ 11 ]が公開され、これは現在BGP4の最新の定義となっています(ただし、他の多くのRFCによって更新されています)。
RFC 4271 では、エラーが修正され、曖昧さが明確化され、仕様が一般的な業界慣行に合わせて更新されました。BGP4 の主な機能強化は、クラスレス ドメイン間ルーティング(CIDR) のサポートと、ルーティング テーブルのサイズを縮小するためのルート集約の使用でした。ネイティブ形式では、BGP4 プロトコルは IPv4 アドレスでのみ動作します。1998 年にRFC 2283 [ 12 ]が公開されて以来、広範囲の「アドレス ファミリー」( IPv4、IPv6、IPXなど) に関するルーティング情報を伝送できるようになりました。「マルチプロトコル拡張機能」は、2000 年にRFC 2858 [ 13 ]で更新され、最終的に 2007 年にRFC 4760 [ 14 ]で更新されました。これらの拡張機能により、このプロトコルはマルチプロトコル BGP (MP-BGP)とも呼ばれます。
BGP ネイバー (ピアと呼ばれる) は、ルーター間で手動設定により確立され、ポート179でTCPセッションを作成します。BGP スピーカーは、接続を維持するために 30 秒ごとに 19 バイトのキープ アライブ メッセージを送信します (プロトコルのデフォルト値、調整可能)。[ 15 ]ルーティング プロトコルの中で、BGP はトランスポート プロトコルとして TCP を使用するという点で独特です。
BGP が同じ自律システム(AS) 内の 2 つのピア間で実行される場合、それは内部 BGP ( iBGPまたはInterior Border Gateway Protocol )と呼ばれます。異なる自律システム間で実行される場合は、外部 BGP ( eBGPまたはExterior Border Gateway Protocol )と呼ばれます。ある AS の境界にあるルーターが別の AS と情報を交換する場合、それらのルーターは境界ルーター、エッジルーター、または単にeBGP ピアと呼ばれ、通常は直接接続されます。一方、iBGP ピアは他の中間ルーターを介して相互接続できます。VPNトンネル内でeBGPピアリングを実行するなど、他の展開トポロジも可能です。これにより、2 つのリモートサイトが安全かつ隔離された方法でルーティング情報を交換できます。
iBGPとeBGPのピアリングの主な違いは、あるピアから受信したルートが、通常、他のピアにデフォルトでどのように伝播されるかという点にあります。
これらの経路伝播ルールは、AS内のすべてのiBGPピアがiBGPセッションでフルメッシュ接続されていることを実質的に要求するものです。
ルートの伝播方法は、ルートマップ機構によって詳細に制御できます。この機構は一連のルールで構成されています。各ルールは、特定の条件に一致するルートに対してどのようなアクションを実行するかを記述します。アクションとしては、ルートを削除すること、またはルーティングテーブルに挿入する前にルートの属性を変更することなどが考えられます。
ピアリングハンドシェイク中にOPENメッセージが交換されると、BGPスピーカーはセッションのオプション機能[ 16 ]をネゴシエートできます。これにはマルチプロトコル拡張[ 17 ]やさまざまなリカバリモードが含まれます。BGPへのマルチプロトコル拡張が作成時にネゴシエートされた場合、BGPスピーカーは、アドバタイズするネットワーク層到達可能性情報(NLRI)にアドレスファミリプレフィックスを付加できます。これらのファミリには、IPv4(デフォルト)、IPv6、IPv4/IPv6仮想プライベートネットワーク、マルチキャストBGPが含まれます。BGPは、VPNなど、グローバルインターネットの一部ではない可能性のあるルートに関する情報を伝送するための汎用シグナリングプロトコルとしてますます使用されています。[ 18 ]
BGPピアは、ピアとの操作において意思決定を行うために、アイドル、接続、アクティブ、OpenSent、OpenConfirm、確立の6つの状態からなる単純な有限状態機械(FSM)を使用します。各ピアツーピアセッションについて、BGP実装は、セッションがこれらの6つの状態のうちどれにあるかを追跡する状態変数を保持します。BGPは、セッションをある状態から別の状態に変更するために、各ピアが交換すべきメッセージを定義します。
最初の状態はアイドル状態です。アイドル状態では、BGP はすべてのリソースを初期化し、すべての受信 BGP 接続試行を拒否し、ピアへの TCP 接続を開始します。2 番目の状態は接続です。接続状態では、ルータは TCP 接続が完了するまで待機し、成功した場合は OpenSent 状態に移行します。失敗した場合は、ConnectRetry タイマーを開始し、期限切れになると Active 状態に移行します。Active 状態では、ルータは ConnectRetry タイマーをゼロにリセットし、接続状態に戻ります。OpenSent 状態では、ルータは Open メッセージを送信し、OpenConfirm 状態に移行するために返信を待ちます。Keepalive メッセージが交換され、正常に受信されると、ルータは確立状態になります。確立状態では、ルータはピアとの間で Keepalive、Update、Notification メッセージを送受信できます。
最も単純な構成では、単一のAS内にありBGPルーティングに参加するすべてのルータはフルメッシュで構成する必要があります。つまり、各ルータは他のすべてのルータとピアとして構成する必要があります。これは、必要な接続数が関係するルータの数の2乗に比例して増加するため、スケーリングの問題を引き起こします。この問題を軽減するために、BGPはルートリフレクタ(RFC 4456)とBGPコンフェデレーション(RFC 5065)という2つのオプションを実装しています。以下の基本的なアップデート処理の説明では、フルiBGPメッシュを前提としています。
特定のBGPルータは、複数のネイバーからネットワーク層到達可能性情報(NLRI)アップデートを受け入れ、同じネイバー、または異なるネイバー群にNLRIをアドバタイズすることができます。BGPプロセスは、いくつかのルーティング情報ベースを維持します。
RIB: ルーターのメインルーティング情報ベーステーブル。Loc-RIB: ローカルルーティング情報ベース BGP は、ルーターのメインルーティングテーブルとは別に独自のマスタールーティングテーブルを維持します。Adj-RIB-In: 各ネイバーに対して、BGP プロセスは、ネイバーから受信した NLRI を含む概念的な隣接ルーティング情報ベース (incoming)を維持します。Adj-RIB-Out: 各ネイバーに対して、BGP プロセスは、ネイバーに送信される NLRI を含む概念的な隣接ルーティング情報ベース outgoing を維持します。これらの概念テーブルの物理的な格納方法と構造は、BGP コードの実装者によって決定されます。これらの構造は他の BGP ルータからは見えませんが、通常はローカルルータの管理コマンドで照会できます。たとえば、Adj-RIB-In、Adj-RIB-Outおよび をLoc-RIB同じデータ構造に格納し、RIB エントリに追加情報を付加することはよくあります。追加情報は、個々のエントリがAdj-RIBs特定のネイバーの に属するかどうか、ピアネイバーのルート選択プロセスによって受信したポリシーが の対象になったかどうか、エントリがローカルルータのルーティング テーブル管理プロセスに送信される資格があるLoc-RIBかどうかなど、Loc-RIBBGP プロセスに情報を提供します。
BGPは、最適と判断したルートをメインルーティングテーブルプロセスに送信します。このプロセスの実装によっては、BGPルートが必ずしも選択されるとは限りません。例えば、ルーター自身のハードウェアから学習した直接接続プレフィックスが通常最も優先されます。その直接接続ルートのインターフェースがアクティブである限り、宛先へのBGPルートはルーティングテーブルに追加されません。インターフェースがダウンし、優先ルートがなくなると、Loc-RIBルートがメインルーティングテーブルに追加されます。
BGPは、BGP対応ルーター内部のルールがポリシー決定を行うために必要な情報を伝達します。ポリシー決定に明示的に使用されることを意図した伝達情報には、以下のようなものがあります。
BGP標準では、Loc-RIBに格納するNLRIを選択するための決定要因が多数規定されており、これは他の一般的なルーティングプロセスで使用されるものよりも多い。NLRIを評価する最初の決定ポイントは、そのネクストホップ属性が到達可能(または解決可能)であることだ。ネクストホップが到達可能であることを別の言い方で表現すると、ネクストホップアドレスが到達可能なプレフィックスへのアクティブなルートが、ルータのメインルーティングテーブルに既に存在している必要があるということである。
次に、BGPプロセスは各ネイバーに対して、さまざまな標準および実装依存の基準を適用して、概念的にどのルートをAdj-RIB-Inに含めるべきかを決定します。ネイバーは宛先に対して複数のルートを送信できますが、優先順位の第一段階はネイバーレベルで決定されます。概念的なAdj-RIB-Inには、各宛先に対して1つのルートのみがインストールされます。このプロセスでは、ネイバーによって撤回されたルートもAdj-RIB-Inから削除されます。
概念的な Adj-RIB-In が変更されるたびに、メイン BGP プロセスは、ネイバーの新しいルートが Loc-RIB に既に存在するルートよりも優先されるかどうかを判断します。優先される場合は、それらのルートを置き換えます。ネイバーによって特定のルートが撤回され、その宛先への他のルートがない場合、そのルートは Loc-RIB から削除され、BGP によってメイン ルーティング テーブルマネージャに送信されなくなります。ルータが BGP 以外のソースからその宛先へのルートを持っていない場合、撤回されたルートはメイン ルーティング テーブルから削除されます。
同点の場合は、ルート選択プロセスは次のステップに進みます。
ローカルの優先度、重み、その他の基準は、ローカル設定とソフトウェア機能によって操作できます。このような操作は一般的に使用されていますが、標準の範囲外です。たとえば、コミュニティ属性(下記参照)は、BGP選択プロセスで直接使用されません。BGPネイバープロセスは、ローカル優先度を設定するルール、またはコミュニティ値が何らかのパターンマッチング基準に一致する場合に属性を設定する手動でプログラムされたルールに基づく別の要素を持つことができます。ルートが外部ピアから学習された場合、ネイバーごとのBGPプロセスは、ローカルポリシールールからローカル優先度値を計算し、ネイバーからのすべてのルートのローカル優先度を比較します。
BGPコミュニティは、共通の目的を達成するために受信または送信プレフィックスに適用できる属性タグです。[ 21 ] BGPを使用すると、管理者がISPによるプレフィックスの処理方法に関するポリシーを設定できると言われることが多いですが、厳密に言えば、これは一般的には不可能です。たとえば、BGPには、あるASが別のASにプレフィックスの広告を北米のピアリング顧客のみに制限するように指示できる概念がネイティブにはありません。代わりに、ISPは通常、各コミュニティの説明とともに、よく知られているコミュニティまたは独自のコミュニティのリストを公開し、それが実質的にプレフィックスの処理方法に関する合意となります。
一般的なコミュニティの例としては、以下のようなものがあります。
ISPは、顧客から受信したルートについて、以下のような例を挙げて説明する場合があります。
顧客は各ルートに適切なコミュニティを含めるように設定を調整するだけでよく、ISP はプレフィックスを誰に通知するかを制御する責任を負います。エンド ユーザーはISP が正しいアクションを実行するように強制する技術的な能力はありませんが、この分野の問題は一般的にまれで偶発的なものです。[ 23 ] [ 24 ]
エンドユーザーがMEDを使用する代わりにBGPコミュニティ(通常はASN:70,80,90,100)を使用して、ISPがアドバタイズするルートに割り当てるローカル優先度を制御するのは一般的な戦術です(効果は似ています)。コミュニティ属性は推移的ですが、顧客によって適用されたコミュニティがネクストホップASの外に伝播することは非常にまれです。すべてのISPがコミュニティを一般に公開しているわけではありません。[ 25 ]
BGP拡張コミュニティ属性は、このような属性の範囲を拡張し、タイプフィールドによってコミュニティ属性の構造化を提供するために、 2006年に[ 26 ]追加されました。拡張フォーマットは、タイプフィールドの1つまたは2つのオクテットと、それに続くそれぞれのコミュニティ属性コンテンツのための7つまたは6つのオクテットで構成されます。IANAは、 BGP拡張コミュニティタイプのレジストリを管理しています。[ 27 ]
拡張コミュニティ属性自体は、推移的なオプションの BGP 属性です。属性内のタイプフィールドのビットによって、エンコードされた拡張コミュニティが推移的か非推移的かが決まります。そのため、IANA レジストリは属性タイプごとに異なる番号範囲を提供しています。属性の範囲が広いため、その使用方法は多岐にわたります。RFC 4360 では、例として「2 オクテット AS 固有拡張コミュニティ」、「IPv4 アドレス固有拡張コミュニティ」、「不透明拡張コミュニティ」、「ルートターゲットコミュニティ」、「ルートオリジンコミュニティ」が定義されています。多くの BGP QoS ドラフトでも、ドメイン間 QoS シグナリングにこの拡張コミュニティ属性構造が使用されています。[ 28 ]
32 ビット AS 番号の導入に伴い、16 ビット ASN フィールドのみを定義するコミュニティ属性にいくつかの問題がすぐに明らかになりました。これは、このフィールドと実際の ASN 値との一致を妨げます。2014 年以降、拡張コミュニティは 32 ビット ASN と互換性があります。[ 29 ] BGP コミュニティで 32 ビット AS 番号に対応するために、12 バイトのラージ コミュニティ属性が定義され、[ 30 ] [ 31 ]それぞれ 4 バイトの 3 つのフィールド (AS:function:parameter) に分割されています。[ 32 ]
主要なBGP標準で定義されているMEDは、元々は、受信トラフィックに対して複数のリンクのうちどれを優先するかという、アドバタイズするASの優先順位を他の隣接ASに示すことを目的としていました。MEDのもう一つの用途は、IXPに存在する複数のASが、特定の宛先にトラフィックを送信する際に課す値(通常は遅延に基づく)をアドバタイズすることです。
Juniperなどの一部のルーターは、OSPFからのメトリックを使用してMEDを設定します。
Juniper SRXでBGPにエクスポートされる際にBGPで使用されるMEDの例
# show ospf routeを実行トポロジ default ルート テーブル:プレフィックス パス ルート NH メトリック ネクストホップ ネクストホップ タイプ タイプ タイプ インターフェイス アドレス/LSP 10.32.37.0/24 インターネットワーク ディスカード IP 16777215 10.32.37.0/26 イントラネットワーク IP 101 ge-0/0/1.0 10.32.37.241 10.32.37.64/26 イントラネットワーク IP 102 ge-0/0/1.0 10.32.37.241 10.32.37.128/26 イントラネットワーク IP 101 ge-0/0/1.0 10.32.37.241# show route advertising-protocol bgp 10 .32.94.169 Prefix Nexthop MED Lclpref AS path * 10.32.37.0/24 Self 16777215 I * 10.32.37.0/26 Self 101 I * 10.32.37.64/26 Self 102 I * 10.32.37.128/26 Self 101 IすべてのBGPメッセージは、以下のヘッダーレイアウトを共有します。
Openパケットによって、BGPセッションが開始される可能性があります。
オープンメッセージの例
タイプ: オープンメッセージ (1) バージョン: 4 私のAS番号:64496 保持時間:90 BGP識別子: 192.0.2.254 オプションパラメータの長さ: 16 オプションパラメータ: 機能:マルチプロトコル拡張機能(1) 機能:ルート更新機能(2) 機能:ルート更新機能の強化(70)変更点のみが送信されます。最初のやり取りの後は、相違点(追加/変更/削除)のみが送信されます。
更新メッセージの例
タイプ: 更新メッセージ (2) 撤回されたルートの長さ: 0 パス属性の合計長: 25 パス属性 原産国: IGP AS_PATH: 64500 ネクストホップ: 192.0.2.254 マルチ出口ディスク: 0 ネットワーク層到達可能性情報(NLRI) 192.0.2.0/27 192.0.2.32/27 192.0.2.64/27
エラーが発生した場合、OPEN または UPDATE メッセージのいずれかのフィールドがピア間で一致しないことが原因です。たとえば、BGP バージョンの不一致、またはピアリング ルータが異なる「My AS」を期待している場合などです。ルータは、エラーが発生した理由を示す通知メッセージをピアに送信します。通信エラーは通常、BGP セッションの切断につながります。機能が制限されたルータを使用した複雑なシナリオでは、単一のエラーによってセッションが連鎖的に終了する可能性があるため、これを避けるために、問題を分離してほとんどのセッションを継続するための特別な努力が払われます。[ 34 ]
通知メッセージの例
タイプ:通知メッセージ(3) 重大なエラーコード:OPENメッセージエラー(2) 軽微なエラーコード(オープンメッセージ):不正なピアAS(2) 不良ピアAS: 65200
KeepAlive メッセージは、リモート ピアがまだアクティブであることを確認するために、セッションの両方のピアによって定期的に送信されます。これらは、セッションの 3 分の 1 の間隔で送信する必要がありますholdtime。
キープアライブパケットにはデータコンテンツは含まれません。
Adj-RIB-in初期の BGP メッセージ タイプに追加されたのが route-refresh で、接続をリセットせずにルートをソフトに更新できます。 [ 35 ]
この機能を使用する前に、「Open」メッセージで「ルート更新機能(2)」を指定する必要があります。「拡張ルート更新機能(70)」も指定すると、より詳細なルーティング更新を取得できます。
ROUTE-REFRESHメッセージの例
タイプ: ルート更新メッセージ (5) アドレスファミリ識別子(AFI):IPv4(1) サブタイプ:通常のルート更新リクエスト(0) 後続アドレスファミリ識別子 (SAFI):ユニキャスト(1)
BGPは「すべてのルーティングプロトコルの中で最も拡張性が高い」[ 37 ]。
内部BGP(iBGP)を備えた自律システムでは、すべてのiBGPピアがフルメッシュ(すべてのルーターが直接通信する)で相互に接続する必要があります。このフルメッシュ構成では、各ルーターが他のすべてのルーターとセッションを維持する必要があります。大規模ネットワークでは、メモリ不足またはCPU処理負荷の高さにより、このセッション数がルーターのパフォーマンスを低下させる可能性があります。
ルートリフレクタ(RR)は、AS で必要な接続数を削減します。単一のルータ(冗長性のために 2 つ)を RR にすることができます。AS 内の他のルータは、RR に対してピアとして構成するだけで済みます。RR は、iBGP の論理的なフルメッシュ要件の代替手段を提供します。RR の目的は集中です。複数の BGP ルータは、フルメッシュ内の他のすべてのルータとピアする代わりに、RR サーバとして機能する中央ポイントであるRRとピアすることができます。他のすべての iBGP ルータは RR クライアントになります。[ 38 ]
OSPFのDR/BDR機能と同様に、このアプローチは大規模ネットワークにiBGPのスケーラビリティを向上させます。10台のルーターで構成されるフルメッシュ型のiBGPネットワークでは、各ピアのリモートASを定義するためだけに、トポロジー内のすべてのルーターに分散された90個のCLIステートメントが必要になります。これはすぐに管理上の大きな負担となります。RRトポロジーでは、これらの90個のステートメントを18個に削減できるため、ISPが管理する大規模ネットワークにとって実行可能なソリューションとなります。
RRは単一障害点であるため、冗長性を確保するために少なくとも2台目のRRを設定する必要があります。これは他の10台のルータにとって追加のピアとなるため、CLIステートメントの数がほぼ2倍になり、この場合は11 × 2 − 2 = 20個のステートメントを追加で入力する必要があります。BGPマルチパス環境では、RRが専用のRRサーバの役割ではなく従来のルータとして動作する場合、追加のRRによってローカルルーティングのスループットが向上し、ネットワークにメリットをもたらすこともあります。
RRとコンフェデレーションはどちらも、各ルータへのiBGPピア数を削減し、処理オーバーヘッドを低減します。RRは純粋にパフォーマンス向上を目的とした手法ですが、コンフェデレーションはよりきめ細かなポリシーを実装するためにも使用できます。

RRサーバーは、以下のルールに基づいてAS内部でルートを伝播します。
RRとそのクライアントはクラスタを形成します。クラスタIDは、RRがクライアントまたは非クライアントピアにアドバタイズするすべてのルートに付加されます。クラスタIDは累積的で非推移的なBGP属性であり、ルーティングループを回避するために、すべてのRRはローカルクラスタIDをクラスタリストの先頭に追加する必要があります。
コンフェデレーションは自律システムの集合です。一般的な運用では、[ 40 ]コンフェデレーションのAS番号のうち1つだけがインターネット全体から認識されます。コンフェデレーションは、大規模なASが、より小さく管理しやすい内部ASを包含するように構成できる非常に大規模なネットワークで使用されます。
連合ASは複数のASで構成されます。各連合ASは単独でiBGPフルメッシュ接続を持ち、連合内の他のASと接続しています。これらのASは連合内のASとeBGPピア接続を持っていますが、ルーティング情報はiBGPを使用しているかのように交換されます。このようにして、連合はネクストホップ、メトリック、およびローカルプリファレンス情報を保持します。外部からは、連合は単一のASのように見えます。このソリューションにより、iBGPがすべてのBGPルータ間でフルメッシュ接続を必要とするために発生する、多数のTCPセッションとルーティングトラフィックの不要な重複といったiBGPトランジットASの問題を解決できます。
コンフェデレーションはルートリフレクタと組み合わせて使用できます。コンフェデレーションとルートリフレクタの両方は、BGPと内部ルーティングプロトコルの両方に影響を与える特定の設計ルールに従わない限り、継続的な振動の影響を受ける可能性があります。[ 41 ]
これらの代替案には、以下のような独自の問題が生じる可能性がある。
さらに、ルートリフレクタとBGPコンフェデレーションは、BGPルータの設定を容易にするために設計されたものではありません。しかしながら、これらは経験豊富なBGPネットワークアーキテクトにとって一般的なツールです。これらのツールは、例えばルートリフレクタの階層構造として組み合わせることができます。
BGP実装によって管理されるルーティングテーブルは、リンクやルータのダウンと復旧など、ネットワークの実際の変化を反映するために継続的に調整されます。ネットワーク全体では、これらの変化はほぼ継続的に発生するのが普通ですが、個々のルータやリンクでは、変化は比較的まれであると想定されます。ルータの設定ミスや管理ミスがあると、ダウン状態とアップ状態が急速に繰り返されることがあります。ルートフラッピングと呼ばれるこの繰り返しの撤回と再アナウンスのパターンは、同じルートがルーティングテーブルに継続的に挿入および撤回されるため、この循環エンティティを認識している他のすべてのルータで過剰なアクティビティを引き起こす可能性があります。BGPの設計上、ルートの更新中はトラフィックの配信が機能しない場合があります。インターネットでは、BGPルーティングの変更により、数分間サービスが停止する可能性があります。
ルートフラップダンピングと呼ばれる機能は、ルートフラップの影響を軽減するために多くの BGP 実装に組み込まれています[ 43 ] 。ダンピングがない場合、過剰なアクティビティはルータに大きな処理負荷をかけ、その結果、他のルートの更新が遅延し、ルーティングの安定性全体に影響を与える可能性があります。ダンピングを使用すると、ルートのフラップは指数関数的に減衰します。ルートが利用できなくなり、すぐに再出現する最初のインスタンスでは、BGP の通常のフェイルオーバー時間を維持するために、ダンピングは効果を発揮しません。2 回目の発生では、BGP はそのプレフィックスを一定期間回避します。それ以降の発生は、指数関数的に長い期間無視されます。異常が解消され、問題のあるルートに対して適切な時間が経過すると、プレフィックスはクリーンな状態で復元できます。ダンピングは、サービス拒否攻撃を軽減することもできます。
また、ルートフラップ抑制は、外部境界ゲートウェイプロトコルセッション(eBGPセッション、または単に外部ピアと呼ばれる)に実装する方が望ましい機能であり、内部境界ゲートウェイプロトコルセッション(iBGPセッション、または単に内部ピアと呼ばれる)には実装しない方が良いと示唆されている。[ 43 ]: §4このアプローチでは、自律システム内でルートがフラップしても、外部ASには伝播されない。eBGPへのルートのフラップは、バックボーン全体でその特定のルートのフラップの連鎖を引き起こす。この方法は、iBGPセッションのルートフラップ抑制のオーバーヘッドもうまく回避する。
その後の研究により、フラップダンピングは場合によっては収束時間を実際に長くし、リンクがフラップしていない場合でも接続の中断を引き起こす可能性があることが示されています。[ 44 ] [ 45 ]さらに、バックボーンリンクとルータプロセッサが高速化するにつれて、ルーティングテーブルの変更はルータによってはるかに高速に処理できるため、フラップダンピングは以前ほど重要ではないかもしれないと示唆するネットワークアーキテクトもいます。[ 43 ]このため、RIPEルーティングワーキンググループは、「現在のBGPフラップダンピングの実装では、ISPネットワークでのフラップダンピングの適用は推奨されません。...フラップダンピングを実装すると、そのネットワークを運用するISPは、顧客とその顧客のコンテンツおよびサービスのインターネットユーザーに副作用を引き起こします。...これらの副作用は、フラップダンピングをまったく実行しない場合の影響よりもはるかに悪い可能性が高いです。」と述べています。[ 46 ]


BGP、ひいてはインターネットインフラ全体が直面する最大の課題の一つは、インターネットルーティングテーブルの肥大化です。グローバルルーティングテーブルが肥大化し、古いルーターや性能の低いルーターが、テーブルの維持に必要なメモリ容量やCPU負荷に対応できなくなると、これらのルーターは接続先のインターネット間のゲートウェイとしての機能を果たせなくなります。さらに、おそらくより重要な点として、ルーティングテーブルが大きくなると、大規模な接続変更後に安定するまでに時間がかかり、その間、ネットワークサービスが不安定になったり、場合によっては利用できなくなったりする可能性があります。
2001年後半まで、グローバルルーティングテーブルは指数関数的に増加し、最終的には広範囲にわたる接続障害を引き起こす恐れがありました。これを防ぐため、ISPはクラスレスドメイン間ルーティング(CIDR)とルート集約を使用してグローバルルーティングテーブルをできるだけ小さく保つよう協力しました。これにより、ルーティングテーブルの増加は数年間線形プロセスに減速しましたが、エンドユーザーネットワークによるマルチホーミングの需要拡大に伴い、2004年半ばには再び超線形的な増加となりました。
2014年には、適切にアップデートされなかったモデルにおいて、Y2K問題に似たデータオーバーフローが発生した。
2014年8月時点の完全なIPv4 BGPテーブルでは(512k 日) [ 47 ] [ 48 ]は 512,000 プレフィックスを超えており、[ 49 ]多くの古いルーターには 512k (512,000–524,288) [ 50 ] [ 51 ]ルーティング テーブル エントリの制限がありました。2014 年 8 月 12 日、テーブルがいっぱいになったことが原因で、eBay、LastPass、Microsoft Azureなどが障害に見舞われました。[ 52 ]一般的に使用されている Cisco ルーターの多くは、BGP アドバタイズされたルートを保存するための、高速コンテンツ アドレス指定可能メモリの一種であるTCAM を備えていました。影響を受けたルーターでは、TCAM はデフォルトで 512k IPv4 ルートと 256k IPv6 ルートとして割り当てられていました。報告された IPv6 アドバタイズド ルートの数は約 20k に過ぎなかったが、アドバタイズされた IPv4 ルートの数はデフォルトの制限に達し、ルーターが (TCAM を介した高速なハードウェア ルーティングではなく) 低速なソフトウェア ルーティングを使用してこの問題を補償しようとしたため、スピルオーバー効果が発生した。この問題に対処する主な方法は、オペレーターが TCAM 割り当てを変更して、IPv6 ルート用に予約されている TCAM の一部を再割り当てすることで、より多くの IPv4 エントリを許可することであり、ほとんどのルーターで再起動が必要となる。512k の問題は、多くの IT プロフェッショナルによって予測されていた。[ 53 ] [ 54 ] [ 55 ]
実際にルート数を 512k 以上に押し上げた割り当ては、UTC 7:48 から始まった約 15,000 の新しいルートの発表でした。これらのルートのほぼすべては、より大きなブロックのデアグリゲーションの結果として作成されたVerizon Autonomous Systems 701 と 705 宛てで、数千の新しい/ 24ルートが導入され、ルーティング テーブルが 515,000 エントリに達しました。新しいルートは 5 分以内に再集約されたようですが、インターネット全体で不安定な状態が数時間続いたようです。[ 56 ] Verizon が短時間の急増でルーティング テーブルを 512k エントリ以上にしなかったとしても、自然な成長によってすぐにそうなったでしょう。
ルート集約は、BGP グローバルルーティングテーブルの集約を改善し、AS のルーターに必要なテーブルサイズを削減するためによく使用されます。AS1 に172.16.0.0 / 16という大きなアドレス空間が割り当てられているとします。これはテーブル内で 1 つのルートとしてカウントされますが、顧客の要件またはトラフィックエンジニアリングの目的で、AS1 は172.16.0.0 / 18、172.16.64.0 / 18、および172.16.128.0 / 18というより小さく具体的なルートをアナウンスしたいと考えています。プレフィックス172.16.192.0 / 18にはホストがないため、AS1 は特定のルート172.16.192.0 / 18をアナウンスしません。これらすべては、 AS1 が 4 つのルートをアナウンスしていることになります。
AS2 は AS1 からの 4 つのルート ( 172.16.0.0 / 16、172.16.0.0 / 18、172.16.64.0 / 18、および172.16.128.0 / 18 ) を認識し、4 つのルートのコピーを取得するか、または172.16.0.0 / 16が他のすべての特定のルートと重複するため、要約である 172.16.0.0 / 16 を保存するかは、AS2のルーティング ポリシーによって決定されます。
AS2がプレフィックス172.16.192.0/18宛てにデータを送信しようとする場合、データは経路172.16.0.0/16を経由してAS1のルーターに送信されます。AS1では、AS1のルーターの設定に応じて、データが破棄されるか、宛先到達不能ICMPメッセージが返送されます。
AS1 が後でルート172.16.0.0 / 16を削除し、172.16.0.0 / 18、172.16.64.0 / 18、および172.16.128.0 / 18を残すと、AS1 がアナウンスするルートの数は 3 つに減ります。AS2 のルーティング ポリシーによっては、3 つのルートのコピーを保存するか、172.16.0.0 / 18と172.16.64.0 / 18を172.16.0.0 / 17に集約し、AS2 が保存するルートの数を 2 つ ( 172.16.0.0 / 17と172.16.128.0 / 18 ) に減らします。
AS2 がプレフィックス172.16.192.0 / 18にデータを送信しようとすると、 172.16.192.0 / 18がルーティング テーブルに存在しないため、データは破棄されるか、宛先到達不能 ICMP メッセージが AS2 のルーター (以前のように AS1 ではなく) に返送されます。
1995年、最初のBGP-4仕様では、64,510個のパブリックAS番号を16ビットで符号化しました[ 10 ] 。 [ a ] 2011年には、利用可能なAS番号はわずか15,000個しか残っておらず、予測[ 57 ]では、2013年9月には利用可能なAS番号が完全に枯渇すると見込まれていました。
2007年には既にASコーディングが16ビットから32ビットに拡張され[ 58 ] 、 16ビットAS範囲(0~65535)とその予約済みAS番号は維持されました。これにより、最大40億個のAS番号が使用可能になりました。追加のプライベートAS範囲も定義されています[ 59 ] [ b ]これらの新しいASNを管理できないルータグループのトラバーサルを可能にするために、新しい属性AS4_PATH(オプションの推移的)と特別な16ビットASN AS_TRANS(AS23456)が使用されます[ 61 ] 32ビットASNの割り当ては2007年に開始されました。
ルーティングテーブルの増加に寄与するもう1つの要因は、マルチホームネットワークの負荷分散の必要性です。BGPルート選択プロセスの制限により、マルチホームネットワークへの受信トラフィックを複数の受信パスに分散させることは容易ではありません。マルチホームネットワークがすべてのBGPピアに同じネットワークブロックを通知すると、外部ネットワークがすべてその混雑したパスのセットを最適として選択するため、受信リンクの1つまたは複数が混雑し、他のリンクは十分に利用されないままになる可能性があります。他のほとんどのルーティングプロトコルと同様に、BGPは混雑を検出しません。
この問題を回避するために、マルチホームネットワークのBGP管理者は、大きな連続IPアドレスブロックをより小さなブロックに分割し、ルートアナウンスを調整して、異なるブロックが異なるパス上で最適に見えるようにすることで、外部ネットワークがそのマルチホームネットワークの異なるブロックに到達するために異なるパスを選択するようにすることができます。このような場合、グローバルBGPテーブルに表示されるルートの数が増加します。
負荷分散に伴うルーティングテーブルの問題を解決する一つの方法は、インターネットエクスチェンジポイント内にBGP/LISP(Locator/Identifier Separation Protocol )ゲートウェイを配置し、複数のリンク間で受信トラフィックのエンジニアリングを可能にすることです。この手法では、グローバルBGPテーブルに表示されるルート数は増加しません。
設計上、BGP を実行するルーターは、デフォルトで他の BGP ルーターから通知されたルートを受け入れます。これにより、インターネット全体でトラフィックの自動的かつ分散的なルーティングが可能になりますが、同時に、BGP ハイジャックとして知られる偶発的または悪意のある妨害に対してインターネットが脆弱になる可能性もあります。BGP がインターネットの中核システムに組み込まれている範囲と、インターネットを構成する多くの異なる組織によって運用されているネットワークの数を考えると、この脆弱性を修正すること (例えば、暗号鍵を使用して BGP ルーターの ID を検証するなど) は、技術的にも経済的にも困難な問題です。[ 62 ]
マルチプロトコル BGP (MBGP) は、マルチプロトコル BGP またはマルチキャスト BGP とも呼ばれ、RFC 4760で定義されています。これは、異なるタイプのアドレス (アドレス ファミリとして知られています) を並行して配信できるようにする BGP の拡張機能です。標準 BGP は IPv4 ユニキャスト アドレスのみをサポートしますが、マルチプロトコル BGP は IPv4 と IPv6 アドレスをサポートし、それぞれユニキャストとマルチキャストの両方のバリアントをサポートします。マルチプロトコル BGP では、IP マルチキャスト対応ルータのトポロジに関する情報を、通常の IPv4 ユニキャスト ルータのトポロジとは別に交換できます。そのため、ユニキャスト ルーティング トポロジとは異なるマルチキャスト ルーティング トポロジを実現できます。MBGP はドメイン間のマルチキャスト ルーティング情報の交換を可能にしますが、ツリーの構築やマルチキャスト トラフィックの転送には、プロトコル独立マルチキャスト ファミリなどの他のプロトコルが必要です。マルチプロトコルBGPは、 MPLS L3 VPNの場合にも広く採用されており、MPLSネットワークを介して顧客サイトからのルートに対して学習したVPNラベルを交換することで、他の顧客サイトからのトラフィックがルーティングのためにプロバイダエッジルータに到達した際に、異なる顧客サイトを区別するために使用されます。
BGPのもう一つの拡張機能はマルチパスルーティングです。通常、これはMED、重み、発信元、ASパスが同一であることを要求しますが、一部の実装ではASパスのチェックを緩和し、パス内の実際のAS番号が一致することではなく、パスの長さが等しいことのみを期待する機能を提供しています。さらに、Ciscoのdmzlink-bwのような機能でこれを拡張できます。dmzlink-bwは、個々のリンクに設定された帯域幅の値に基づいてトラフィックの共有比率を可能にします。
デフォルトでは、BGP は Update メッセージを通じて、ローカルで選択された単一の最適パスのみをネイバーにアドバタイズすることをサポートしています。RFC 7911では、 ADD-PATH拡張機能が定義されており、これにより BGP スピーカーは同じ宛先に対して複数のパスをピアにアドバタイズできます。この機能の応用例の 1 つは、ルート リフレクタ(RR) を使用する場合です。RR は、ローカルの決定プロセスに基づいて選択した単一のルート (すべてのクライアントにとって最適パスではない可能性が高い) だけを送信するのではなく、既知のすべてのルート パスをクライアントにアドバタイズできるからです。
BGP4はインターネットルーティングの標準規格であり、ほとんどのインターネットサービスプロバイダ(ISP)が相互にルーティングを確立するために必須となっています。非常に大規模なプライベートIPネットワークでは、内部的にBGPが使用されています。例えば、 OSPF単独では必要な規模に拡張できない場合に、複数の大規模なOSPFネットワークを統合するケースが挙げられます。BGPを使用するもう一つの理由は、ネットワークをマルチホーミングして冗長性を向上させることです。これは、単一のISPへの複数のアクセスポイント、または複数のISPへのマルチホーミングによって実現されます。
ルーター、特にSOHO(小規模オフィス/ホームオフィス)向けの小型ルーターには、BGP機能が搭載されていない場合があります。その他の商用ルーターでは、BGPをサポートする特定のソフトウェア実行イメージ、またはBGPを有効にするライセンスが必要になる場合があります。レイヤー3スイッチとして販売されているデバイスは、ルーターとして販売されているデバイスよりもBGPをサポートする可能性は低いですが、多くのハイエンドのレイヤー3スイッチはBGPを実行できます。
スイッチとして販売されている製品には、BGPテーブルのサイズ制限があり、インターネット全体のテーブルと内部ルートの合計よりもはるかに小さい場合があります。これらのデバイスは、ネットワークのより小さな部分のBGPルーティングに使用する場合には、非常に合理的で有用です。例えば、複数の小規模企業がBGPバックボーンで接続されたコンフェデレーションASや、ISPにルートを通知するものの、デフォルトルートと少数の集約ルートのみを受け入れる小規模企業などが挙げられます。
インターネットへの単一のエントリポイントを持つネットワークのみで使用される BGP ルータは、マルチホーム ネットワークに比べてルーティング テーブル サイズ (したがって RAM と CPU の要件) がはるかに小さくなる可能性があります。単純なマルチホーミングでも、ルーティング テーブル サイズはそれほど大きくならない場合があります。BGP ルータで実際に必要なメモリ量は、他の BGP スピーカーと交換される BGP 情報の量と、特定のルータが BGP 情報を保存する方法によって異なります。ルータは、特定の隣接 AS へのルートのアドバタイズと受け入れに関する異なるポリシーを管理できるように、ルートのコピーを複数保持する必要がある場合があります。実行中のルータ上のこれらの異なるポリシー関係を表すのに、「ビュー」という用語がよく使用されます。
あるルーター実装が別の実装よりもルートあたりに多くのメモリを必要とする場合、これは処理速度とメモリ使用量のトレードオフとして、正当な設計上の選択である可能性があります。2025年9月時点の完全なIPv4 BGPテーブル100万を超えるプレフィックスです。[ 63 ] [ 49 ]大規模なISPは、内部ルートと顧客ルート用にさらに50%を追加する場合があります。実装によっては、異なるピアASの各ビューごとに個別のテーブルが保持される場合があります。
BGPの注目すべき無料かつオープンソースの実装には、以下のようなものがある。
BGPの適合性、負荷、またはストレス性能をテストするためのシステムは、次のようなベンダーから提供されています。
現在の減衰設計では、ルートのフラッピングが継続している場合にのみ意図した動作が実現されることを示します。フラップの数が少ない場合、グローバルルーティングのダイナミクスは、収束遅延が長くなり、期待される動作から大きく逸脱します。