3. 動作の概要 (Summary of Operation)
ボーダーゲートウェイプロトコル (Border Gateway Protocol, BGP) は、自律システム (Autonomous System) 間のルーティングプロトコルです。これは、EGP ([RFC904] で定義) およびNSFNETバックボーンでのEGP使用 ([RFC1092] および [RFC1093] で説明) で得られた経験に基づいて構築されています。BGP関連の詳細情報については、[RFC1772]、[RFC1930]、[RFC1997]、および [RFC2858] を参照してください。
BGP対応システムの主要な機能は、他のBGPシステムとネットワーク到達可能性情報を交換することです。このネットワーク到達可能性情報には、到達可能性情報が通過する自律システム (AS) のリストに関する情報が含まれます。この情報は、AS接続グラフを構築するのに十分であり、そこからルーティングループを削除し、ASレベルで一部のポリシー決定を実施できます。
本文書のコンテキストでは、BGPスピーカーは自身が使用するルートのみをピアにアドバタイズすると想定します (このコンテキストでは、BGPスピーカーは、最も優先されるBGPルートであり、転送に使用される場合、BGPルートを「使用する」と言います)。その他のすべてのケースは、本文書の範囲外です。
本文書のコンテキストでは、「IPアドレス」という用語は、IPバージョン4アドレス [RFC791] を指します。
BGPを介して交換されるルーティング情報は、宛先ベースの転送パラダイムのみをサポートします。これは、ルーターがパケットのIPヘッダーに含まれる宛先アドレスのみに基づいてパケットを転送することを前提としています。これは、BGPを使用して実施できる (および実施できない) ポリシー決定のセットを反映しています。一部のポリシーは宛先ベースの転送パラダイムではサポートできず、したがってソースルーティング (明示的ルーティングとも呼ばれる) などの技術を実施する必要があることに注意してください。このようなポリシーは、BGPを使用しても実施できません。たとえば、BGPでは、あるASが隣接ASにトラフィックを送信して、その隣接ASを超えた (その隣接ASを介して到達可能だが) 宛先に転送させ、そのトラフィックが隣接ASで発信されたトラフィック (同じ宛先への) とは異なるルートを取るようにすることはできません。一方、BGPは、宛先ベースの転送パラダイムに準拠する任意のポリシーをサポートできます。
BGP-4は、クラスレスドメイン間ルーティング (Classless Inter-Domain Routing, CIDR) [RFC1518, RFC1519] をサポートするための新しいメカニズムセットを提供します。これらのメカニズムには、IPプレフィックスとして宛先のセットをアドバタイズするサポートと、BGP内のネットワーク「クラス」の概念の排除が含まれます。BGP-4はまた、ASパスの集約を含むルートの集約を可能にするメカニズムも導入しています。
本文書では、全体を通して「自律システム (Autonomous System)」(AS) という用語を使用します。自律システムの古典的な定義は、単一の技術管理下にあるルーターのセットであり、内部ゲートウェイプロトコル (IGP) と共通のメトリックを使用してAS内でパケットをルーティングする方法を決定し、AS間ルーティングプロトコルを使用して他のASへのパケットのルーティング方法を決定します。この古典的な定義が開発されて以来、単一のASが複数のIGPを使用し、場合によってはAS内で複数のメトリックセットを使用することが一般的になりました。自律システムという用語の使用は、複数のIGPとメトリックが使用される場合でも、ASの管理が他のASに対して単一の首尾一貫した内部ルーティング計画を持つように見え、それを通じて到達可能な宛先の一貫した状況を提示するという事実を強調しています。
BGPは、トランスポートプロトコルとしてTCP [RFC793] を使用します。これにより、明示的な更新の断片化、再送信、確認応答、およびシーケンス処理を実装する必要がなくなります。BGPはTCPポート179でリッスンします。BGPで使用されるエラー通知メカニズムは、TCPが「グレースフル」クローズ (つまり、接続が閉じられる前にすべての未処理データが配信される) をサポートすることを前提としています。
2つのシステム間でTCP接続が形成されます。これらは、接続パラメータを開いて確認するためにメッセージを交換します。
初期データフローは、エクスポートポリシーによって許可されるBGPルーティングテーブルの部分であり、Adj-Ribs-Outと呼ばれます (3.2を参照)。ルーティングテーブルが変更されると、増分更新が送信されます。BGPは、ルーティングテーブルの定期的なリフレッシュを必要としません。BGP接続をリセットせずにローカルポリシーの変更が正しい効果を持つようにするために、BGPスピーカーは、(a) 接続の期間中、すべてのピアによってアドバタイズされたルートの現在のバージョンを保持する (retain)、または (b) Route Refresh拡張 [RFC2918] を利用すべきです (SHOULD)。
KEEPALIVEメッセージは、接続が有効であることを確認するために定期的に送信される場合があります (MAY)。NOTIFICATIONメッセージは、エラーまたは特別な条件に応答して送信されます。接続がエラー状態に遭遇した場合、NOTIFICATIONメッセージが送信され、接続が閉じられます。
異なるAS内のピアは外部ピア (external peer) と呼ばれ、同じAS内のピアは内部ピア (internal peer) と呼ばれます。内部BGPと外部BGPは、一般的にIBGPとEBGPと略されます。
特定のASに複数のBGPスピーカーがあり、他のASにトランジットサービスを提供している場合、AS内のルーティングの一貫したビューを確保するように注意する必要があります。AS内部ルートの一貫したビューは、AS内で使用されるIGPによって提供されます。本文書の目的上、ASの外部へのルートの一貫したビューは、AS内のすべてのBGPスピーカーが相互にIBGPを維持することによって提供されると想定されます。
本文書は、BGPプロトコルの基本動作を指定します。この動作は、拡張仕様によって変更することができ、また変更されています。プロトコルが拡張される場合、新しい動作は拡張仕様で完全に文書化されます。
3.1. ルート: アドバタイズメントとストレージ (Routes: Advertisement and Storage)
このプロトコルの目的上、ルート (route) は、宛先のセットとそれらの宛先へのパスの属性をペアにする情報の単位として定義されます。宛先のセットは、UPDATEメッセージのネットワーク層到達可能性情報 (Network Layer Reachability Information, NLRI) フィールドに含まれる1つのIPアドレスプレフィックスに含まれるIPアドレスを持つシステムであり、パスは同じUPDATEメッセージのパス属性フィールドで報告される情報です。
ルートは、UPDATEメッセージでBGPスピーカー間でアドバタイズされます。同じパス属性を持つ複数のルートは、UPDATEメッセージのNLRIフィールドに複数のプレフィックスを含めることにより、単一のUPDATEメッセージでアドバタイズできます。
ルートは、ルーティング情報ベース (Routing Information Bases, RIB) に格納されます。具体的には、セクション3.2で説明されているように、Adj-RIBs-In、Loc-RIB、およびAdj-RIBs-Outです。
BGPスピーカーが以前に受信したルートをアドバタイズすることを選択した場合、ピアにアドバタイズする前に、ルートのパス属性を追加または変更してもよい (MAY) です。
BGPは、BGPスピーカーが以前にアドバタイズされたルートが使用できなくなったことをピアに通知できるメカニズムを提供します。特定のBGPスピーカーがルートがサービスから撤回されたことを示すことができる3つの方法があります:
a) 以前にアドバタイズされたルートの宛先を表すIPプレフィックスを、UPDATEメッセージのWITHDRAWN ROUTESフィールドでアドバタイズでき、これにより関連するルートが使用できなくなったことがマークされます、
b) 同じNLRIを持つ置換ルートをアドバタイズできます、または
c) BGPスピーカー接続を閉じることができ、これにより、スピーカーのペアが相互にアドバタイズしたすべてのルートがサービスから暗黙的に削除されます。
ルートの属性を変更するには、置換ルートをアドバタイズすることで実現されます。置換ルートは、新しい (変更された) 属性を持ち、元のルートと同じアドレスプレフィックスを持ちます。
3.2. ルーティング情報ベース (Routing Information Base)
BGPスピーカー内のルーティング情報ベース (Routing Information Base, RIB) は、3つの異なる部分で構成されます:
a) Adj-RIBs-In: Adj-RIBs-Inは、他のBGPスピーカーから受信したインバウンドUPDATEメッセージから学習したルーティング情報を格納します。その内容は、決定プロセス (Decision Process) への入力として利用可能なルートを表します。
b) Loc-RIB: Loc-RIBには、BGPスピーカーがAdj-RIBs-Inに含まれるルーティング情報にローカルポリシーを適用して選択したローカルルーティング情報が含まれます。これらは、ローカルBGPスピーカーが使用するルートです。これらの各ルートのネクストホップは、ローカルBGPスピーカーのルーティングテーブルを介して解決可能でなければなりません (MUST)。
c) Adj-RIBs-Out: Adj-RIBs-Outは、ローカルBGPスピーカーがピアへのアドバタイズメントのために選択した情報を格納します。Adj-RIBs-Outに格納されたルーティング情報は、ローカルBGPスピーカーのUPDATEメッセージで伝送され、ピアにアドバタイズされます。
要約すると、Adj-RIBs-Inには、ピアによってローカルBGPスピーカーにアドバタイズされた未処理のルーティング情報が含まれます。Loc-RIBには、ローカルBGPスピーカーの決定プロセスによって選択されたルートが含まれます。Adj-RIBs-Outは、特定のピアへのアドバタイズメントのためにルートを整理します (ローカルスピーカーのUPDATEメッセージによって)。
概念モデルはAdj-RIBs-In、Loc-RIB、およびAdj-RIBs-Outを区別しますが、これは実装がルーティング情報の3つの別々のコピーを維持しなければならないことを意味または要求するものではありません。実装の選択 (たとえば、情報の3つのコピー対ポインターを持つ1つのコピー) は、プロトコルによって制約されません。
BGPスピーカーがパケットを転送するために使用する (またはパケット転送に使用される転送テーブルを構築するために使用する) ルーティング情報は、ルーティングテーブル (Routing Table) に保持されます。ルーティングテーブルは、直接接続されたネットワークへのルート、スタティックルート、IGPプロトコルから学習したルート、およびBGPから学習したルートを蓄積します。特定のBGPルートをルーティングテーブルにインストールすべきかどうか、およびBGPルートが別のソースによってインストールされた同じ宛先へのルートをオーバーライドすべきかどうかは、ローカルポリシーの決定であり、本文書では指定されません。実際のパケット転送に加えて、ルーティングテーブルは、BGP更新で指定されたネクストホップアドレスの解決に使用されます (セクション5.1.3を参照)。