メインコンテンツまでスキップ

5. Path Attributes (パス属性)

  1. Path Attributes (パス属性)

    本セクションでは、UPDATEメッセージのパス属性について説明します。

    パス属性は、4つの異なるカテゴリに分類されます:

    1. Well-known mandatory (既知の必須属性)
    2. Well-known discretionary (既知の任意属性)
    3. Optional transitive (オプションの推移的属性)
    4. Optional non-transitive (オプションの非推移的属性)

    BGP実装は、すべての既知の属性を認識しなければなりません (MUST)。これらの属性の一部は必須であり、NLRIを含むすべてのUPDATEメッセージに含まれなければなりません (MUST)。その他は任意であり、特定のUPDATEメッセージで送信されてもされなくてもかまいません (MAY)。

    BGPピアが既知の属性を更新した場合、それが送信する更新において、これらの属性をピアに渡さなければなりません (MUST)。

    既知の属性に加えて、各パスには1つ以上のオプション属性が含まれる場合があります (MAY)。すべてのBGP実装がすべてのオプション属性をサポートすることは要求されておらず、期待もされていません。認識されないオプション属性の処理は、属性フラグオクテットのTransitiveビットの設定によって決定されます。認識されない推移的オプション属性を持つパスは受け入れるべきです (SHOULD)。認識されない推移的オプション属性を持つパスが受け入れられ、他のBGPピアに渡される場合、そのパスの認識されない推移的オプション属性は、Attribute FlagsオクテットのPartialビットを1に設定して、パスと共に他のBGPピアに渡さなければなりません (MUST)。認識された推移的オプション属性を持つパスが受け入れられ、他のBGPピアに渡され、Attribute FlagsオクテットのPartialビットが以前のASによって1に設定されている場合、現在のASによって0に戻してはなりません (MUST NOT)。認識されない非推移的オプション属性は、静かに無視され、他のBGPピアに渡してはなりません (MUST)。

    新しい推移的オプション属性は、発信者またはパス内の他のBGPスピーカーによってパスに付加される場合があります (MAY)。発信者によって付加されない場合、Attribute FlagsオクテットのPartialビットは1に設定されます。新しい非推移的オプション属性を付加するためのルールは、特定の属性の性質に依存します。各新しい非推移的オプション属性のドキュメントには、そのようなルールが含まれることが期待されます(MULTI_EXIT_DISC属性の説明が例を示しています)。すべてのオプション属性(推移的および非推移的の両方)は、パス内のBGPスピーカーによって(適切な場合)更新される場合があります (MAY)。

    UPDATEメッセージの送信者は、UPDATEメッセージ内のパス属性を属性タイプの昇順で並べるべきです (SHOULD)。UPDATEメッセージの受信者は、順序が正しくないUPDATEメッセージ内のパス属性を処理できるように準備しなければなりません (MUST)。

    同じ属性(同じタイプの属性)は、特定のUPDATEメッセージのPath Attributesフィールド内に複数回出現することはできません。

    必須カテゴリは、UPDATEメッセージにNLRIが含まれている場合、IBGPとEBGPの両方の交換に存在しなければならない (MUST) 属性を指します。プロトコル拡張メカニズムの目的でオプションとして分類される属性は、特定のコンテキストにおいて純粋に任意、任意、必須、または禁止される場合があります。

    attribute EBGP IBGP ORIGIN mandatory mandatory AS_PATH mandatory mandatory NEXT_HOP mandatory mandatory MULTI_EXIT_DISC discretionary discretionary LOCAL_PREF see Section 5.1.5 required ATOMIC_AGGREGATE see Section 5.1.6 and 9.1.4 AGGREGATOR discretionary discretionary

5.1. Path Attribute Usage (パス属性の使用)

各BGPパス属性の使用方法については、以下の条項で説明します。

5.1.1. ORIGIN

ORIGINは既知の必須属性です。ORIGIN属性は、関連するルーティング情報を発信するスピーカーによって生成されます。その値は、他のスピーカーによって変更されるべきではありません (SHOULD NOT)。

5.1.2. AS_PATH

AS_PATHは既知の必須属性です。この属性は、このUPDATEメッセージで運ばれるルーティング情報が通過した自律システムを識別します。このリストのコンポーネントは、AS_SETまたはAS_SEQUENCEです。

BGPスピーカーが別のBGPスピーカーのUPDATEメッセージから学習したルートを伝播する場合、ルートが送信されるBGPスピーカーの場所に基づいて、ルートのAS_PATH属性を変更します:

a) 特定のBGPスピーカーが内部ピアにルートをアドバタイズする場合、アドバタイズするスピーカーは、ルートに関連付けられたAS_PATH属性を変更してはなりません (SHALL NOT)。

b) 特定のBGPスピーカーが外部ピアにルートをアドバタイズする場合、アドバタイズするスピーカーは、次のようにAS_PATH属性を更新します:

  1. AS_PATHの最初のパスセグメントがAS_SEQUENCEタイプの場合、ローカルシステムは、シーケンスの最後の要素として自身のAS番号を前置します(プロトコルメッセージ内のオクテットの位置に関して最も左の位置に配置します)。前置の動作がAS_PATHセグメントでオーバーフローを引き起こす場合(つまり、255を超えるAS)、AS_SEQUENCEタイプの新しいセグメントを前置し、この新しいセグメントに自身のAS番号を前置すべきです (SHOULD)。

  2. AS_PATHの最初のパスセグメントがAS_SETタイプの場合、ローカルシステムは、AS_SEQUENCEタイプの新しいパスセグメントをAS_PATHに前置し、そのセグメントに自身のAS番号を含めます。

  3. AS_PATHが空の場合、ローカルシステムは、AS_SEQUENCEタイプのパスセグメントを作成し、そのセグメントに自身のASを配置し、そのセグメントをAS_PATHに配置します。

BGPスピーカーがルートを発信する場合:

a) 発信スピーカーは、外部ピアに送信されるすべてのUPDATEメッセージのAS_PATH属性に、AS_SEQUENCEタイプのパスセグメントに自身のAS番号を含めます。この場合、発信スピーカーの自律システムのAS番号がパスセグメントの唯一のエントリとなり、このパスセグメントがAS_PATH属性の唯一のセグメントとなります。

b) 発信スピーカーは、内部ピアに送信されるすべてのUPDATEメッセージに空のAS_PATH属性を含めます。(空のAS_PATH属性は、長さフィールドに値0が含まれているものです)。

AS_PATH属性の変更がローカルシステムのAS番号を含めるか前置することを要求する場合、ローカルシステムは、AS_PATH属性に自身のAS番号の複数のインスタンスを含める/前置してもかまいません (MAY)。これはローカル設定によって制御されます。

5.1.3. NEXT_HOP

NEXT_HOPは既知の必須属性であり、UPDATEメッセージにリストされている宛先への次のホップとして使用されるべき (SHOULD) ルーターのIPアドレスを定義します。NEXT_HOP属性は次のように計算されます:

  1. 内部ピアにメッセージを送信する場合、ルートがローカルで発信されていない場合、BGPスピーカーは、NEXT_HOPとして自身のIPアドレスをアナウンスするように明示的に設定されていない限り、NEXT_HOP属性を変更すべきではありません (SHOULD NOT)。ローカルで発信されたルートを内部ピアにアナウンスする場合、BGPスピーカーは、アナウンスされたネットワークがスピーカーにとって到達可能なルーターのインターフェイスアドレスをNEXT_HOPとして使用すべきです (SHOULD)。ルートがスピーカーに直接接続されている場合、またはアナウンスされたネットワークがスピーカーにとって到達可能なルーターのインターフェイスアドレスが内部ピアのアドレスである場合、BGPスピーカーは、NEXT_HOP属性に自身のIPアドレス(ピアに到達するために使用されるインターフェイスのアドレス)を使用すべきです (SHOULD)。

  2. 外部ピアXにメッセージを送信し、ピアがスピーカーから1 IPホップ離れている場合:

    • アナウンスされるルートが内部ピアから学習されたか、ローカルで発信された場合、BGPスピーカーは、ピアXがこのアドレスと共通のサブネットを共有している場合、アナウンスされたネットワークがスピーカーにとって到達可能な内部ピアルーター(または内部ルーター)のインターフェイスアドレスをNEXT_HOP属性に使用できます。これは「サードパーティ」NEXT_HOP属性の一形態です。

    • それ以外の場合、アナウンスされるルートが外部ピアから学習された場合、スピーカーは、ピアXがこのアドレスと共通のサブネットを共有している場合、スピーカー自身がローカルルート計算に使用する隣接ルーターのIPアドレス(受信したNEXT_HOP属性から知られる)をNEXT_HOP属性に使用できます。これは「サードパーティ」NEXT_HOP属性の2番目の形態です。

    • それ以外の場合、ルートがアドバタイズされる外部ピアが、アナウンスするBGPスピーカーのインターフェイスの1つと共通のサブネットを共有している場合、スピーカーは、そのようなインターフェイスに関連付けられたIPアドレスをNEXT_HOP属性に使用してもかまいません (MAY)。これは「ファーストパーティ」NEXT_HOP属性として知られています。

    • デフォルトでは(上記の条件のいずれも適用されない場合)、BGPスピーカーは、ピアXとのBGP接続を確立するためにスピーカーが使用するインターフェイスのIPアドレスをNEXT_HOP属性に使用すべきです (SHOULD)。

  3. 外部ピアXにメッセージを送信し、ピアがスピーカーから複数のIPホップ離れている場合(「マルチホップEBGP」とも呼ばれます):

    • スピーカーは、NEXT_HOP属性を伝播するように設定される場合があります (MAY)。この場合、スピーカーがそのピアの1つから学習したルートをアドバタイズする際、アドバタイズされたルートのNEXT_HOP属性は、学習したルートのNEXT_HOP属性とまったく同じです(スピーカーはNEXT_HOP属性を変更しません)。

    • デフォルトでは、BGPスピーカーは、ピアXとのBGP接続を確立するためにスピーカーが使用するインターフェイスのIPアドレスをNEXT_HOP属性に使用すべきです (SHOULD)。

通常、NEXT_HOP属性は、利用可能な最短パスが取られるように選択されます。BGPスピーカーは、不完全にブリッジされたメディアを処理するために、サードパーティNEXT_HOP属性のアドバタイズを無効にすることをサポートできなければなりません (MUST)。

BGPスピーカーによって発信されたルートは、そのピアのアドレスをNEXT_HOPとして使用してピアにアドバタイズしてはなりません (SHALL NOT)。BGPスピーカーは、自身を次のホップとするルートをインストールしてはなりません (SHALL NOT)。

NEXT_HOP属性は、BGPスピーカーが、関連する宛先にトランジットパケットを転送するために使用されるべき (SHOULD) 実際の送信インターフェイスと即座の次のホップアドレスを決定するために使用されます。

即座の次のホップアドレスは、ルーティングテーブルの内容を使用して、NEXT_HOP属性のIPアドレスに対して再帰的なルートルックアップ操作を実行することによって決定され、等しいコストの複数のエントリが存在する場合は1つのエントリを選択します。NEXT_HOP属性のIPアドレスを解決するルーティングテーブルエントリは、常に送信インターフェイスを指定します。エントリが接続されたサブネットを指定しているが、次のホップアドレスを指定していない場合、NEXT_HOP属性のアドレスを即座の次のホップアドレスとして使用すべきです (SHOULD)。エントリが次のホップアドレスも指定している場合、このアドレスをパケット転送の即座の次のホップアドレスとして使用すべきです (SHOULD)。

5.1.4. MULTI_EXIT_DISC

MULTI_EXIT_DISCは、同じ隣接ASへの複数の出口または入口ポイントを区別するために外部(AS間)リンクで使用されることを意図したオプションの非推移的属性です。MULTI_EXIT_DISC属性の値は、メトリックと呼ばれる4オクテットの符号なし数値です。他のすべての要因が等しい場合、メトリックが低い出口ポイントが優先されるべきです (SHOULD)。EBGPを介して受信された場合、MULTI_EXIT_DISC属性は、同じAS内の他のBGPスピーカーにIBGPを介して伝播される場合があります (MAY)(9.1.2.2も参照)。隣接ASから受信したMULTI_EXIT_DISC属性は、他の隣接ASに伝播してはなりません (MUST NOT)。

BGPスピーカーは、MULTI_EXIT_DISC属性をルートから削除できるメカニズム(ローカル設定に基づく)を実装しなければなりません (MUST)。BGPスピーカーがルートからMULTI_EXIT_DISC属性を削除するように設定されている場合、この削除は、ルートの優先度を決定する前、およびルート選択を実行する前(決定プロセスのフェーズ1および2)に行われなければなりません (MUST)。

実装は、(ローカル設定に基づいて)EBGPを介して受信したMULTI_EXIT_DISC属性の値を変更してもかまいません (MAY)。BGPスピーカーがEBGPを介して受信したMULTI_EXIT_DISC属性の値を変更するように設定されている場合、値の変更は、ルートの優先度を決定する前、およびルート選択を実行する前(決定プロセスのフェーズ1および2)に行われなければなりません (MUST)。これに関する必要な制限については、セクション9.1.2.2を参照してください。

5.1.5. LOCAL_PREF

LOCAL_PREFは、特定のBGPスピーカーが他の内部ピアに送信するすべてのUPDATEメッセージに含まれなければならない (SHALL) 既知の属性です。BGPスピーカーは、ローカルに設定されたポリシーに基づいて各外部ルートの優先度を計算し、ルートを内部ピアにアドバタイズする際に優先度を含めなければなりません (SHALL)。より高い優先度が優先されなければなりません (MUST)。BGPスピーカーは、決定プロセス(セクション9.1.1を参照)でLOCAL_PREFを介して学習した優先度を使用します。

BGPスピーカーは、BGP Confederations [RFC3065]の場合を除き、外部ピアに送信するUPDATEメッセージにこの属性を含めてはなりません (MUST NOT)。外部ピアから受信したUPDATEメッセージに含まれている場合、BGP Confederations [RFC3065]の場合を除き、この属性は受信スピーカーによって無視されなければなりません (MUST)。

5.1.6. ATOMIC_AGGREGATE

ATOMIC_AGGREGATEは既知の任意属性です。

BGPスピーカーが特定のピアへのアドバタイズのために複数のルートを集約する場合、集約されたルートのAS_PATHには、通常、集約が形成されたASのセットから形成されたAS_SETが含まれます。多くの場合、ネットワーク管理者は、AS_SETなしで、およびルートループを形成せずに、集約を安全にアドバタイズできるかどうかを判断できます。

集約が、AS_SETをドロップした結果として集約されたルートのAS_PATHに存在する少なくとも一部のAS番号を除外する場合、ピアにアドバタイズされる集約されたルートには、ATOMIC_AGGREGATE属性を含めるべきです (SHOULD)。

ATOMIC_AGGREGATE属性を持つルートを受信したBGPスピーカーは、ルートを他のスピーカーに伝播する際に属性を削除すべきではありません (SHOULD NOT)。

ATOMIC_AGGREGATE属性を持つルートを受信したBGPスピーカーは、このルートを他のBGPスピーカーにアドバタイズする際に、そのルートのNLRIをより具体的(9.1.4で定義)にしてはなりません (MUST NOT)。

ATOMIC_AGGREGATE属性を持つルートを受信したBGPスピーカーは、ルートのNLRIで指定された宛先への実際のパスが、ループフリー特性を持っている一方で、ルートのAS_PATH属性で指定されたパスではない可能性があるという事実を認識する必要があります。

5.1.7. AGGREGATOR

AGGREGATORは、集約によって形成される更新に含まれる場合がある (MAY) オプションの推移的属性です(セクション9.2.2.2を参照)。ルート集約を実行するBGPスピーカーは、AGGREGATOR属性を追加してもかまいません (MAY)。これには、自身のAS番号とIPアドレスが含まれなければなりません (SHALL)。IPアドレスは、スピーカーのBGP識別子と同じであるべきです (SHOULD)。