4. 動作
BGP コンフェデレーションのメンバーは、そのコンフェデレーションのメンバーではないピアとのすべてのトランザクションにおいて、AS コンフェデレーション識別子を使用しなければならない(MUST)。この AS コンフェデレーション識別子は「外部から見える」AS 番号であり、OPEN メッセージで使用され、AS_PATH 属性でアドバタイズされる。
BGP コンフェデレーションのメンバーは、ローカル BGP スピーカーと同じコンフェデレーションのメンバーであるピアとのすべてのトランザクションにおいて、そのメンバー AS 番号を使用しなければならない(MUST)。
自身の AS コンフェデレーション識別子と一致する自律システムを含む AS_PATH 属性を受信した BGP スピーカーは、自身の AS 番号を含むパスを受信した場合と同じ方法でそのパスを扱うものとする(SHALL)。
自身のメンバー AS 番号を含む AS_CONFED_SEQUENCE または AS_CONFED_SET を含む AS_PATH 属性を受信した BGP スピーカーは、自身の AS 番号を含むパスを受信した場合と同じ方法でそのパスを扱うものとする(SHALL)。
4.1. AS_PATH 変更規則
BGP コンフェデレーションを実装する場合、[BGP-4] のセクション 5.1.2 は以下のテキストで置き換えられる:
AS_PATH は well-known mandatory(既知必須)属性である。この属性は、この UPDATE メッセージで運ばれるルーティング情報が通過した自律システムを識別する。このリストのコンポーネントは、AS_SET、AS_SEQUENCE、AS_CONFED_SET、または AS_CONFED_SEQUENCE となり得る。
BGP スピーカーが別の BGP スピーカーの UPDATE メッセージから学習したルートを伝播する場合、ルートが送信される BGP スピーカーの位置に基づいて、ルートの AS_PATH 属性を変更する:
a) 与えられた BGP スピーカーが自身のメンバー AS 内に位置する別の BGP スピーカーにルートをアドバタイズする場合、アドバタイズするスピーカーは、ルートに関連付けられた AS_PATH 属性を変更してはならない(SHALL NOT)。
b) 与えられた BGP スピーカーがローカル・コンフェデレーションのメンバーである隣接自律システムに位置する BGP スピーカーにルートをアドバタイズする場合、アドバタイズするスピーカーは、以下のように AS_PATH 属性を更新する:
-
AS_PATH の最初のパス・セグメントが AS_CONFED_SEQUENCE タイプの場合、ローカル・システムは自身のメンバー AS 番号をシーケンスの最後の要素として前置する(プロトコル・メッセージ内のオクテットの位置に関して最も左側の位置に置く)。前置する行為が AS_PATH セグメントのオーバーフローを引き起こす場合(つまり、255 を超える AS)、AS_CONFED_SEQUENCE タイプの新しいセグメントを前置し、この新しいセグメントに自身の AS 番号を前置すべきである(SHOULD)。
-
AS_PATH の最初のパス・セグメントが AS_CONFED_SEQUENCE タイプでない場合、ローカル・システムは AS_CONFED_SEQUENCE タイプの新しいパス・セグメントを AS_PATH に前置し、そのセグメントに自身のメンバー AS 番号を含める。
-
AS_PATH が空の場合、ローカル・システムは AS_CONFED_SEQUENCE タイプのパス・セグメントを作成し、自身のメンバー AS 番号をそのセグメントに配置し、そのセグメントを AS_PATH に配置する。
c) 与えられた BGP スピーカーがローカル・コンフェデレーションのメンバーではない隣接自律システムに位置する BGP スピーカーにルートをアドバタイズする場合、アドバタイズするスピーカーは、以下のように AS_PATH 属性を更新するものとする(SHALL):
-
AS_PATH のいずれかのパス・セグメントが AS_CONFED_SEQUENCE または AS_CONFED_SET タイプの場合、それらのセグメントは AS_PATH 属性から削除されなければならず(MUST)、サニタイズされた AS_PATH 属性がステップ 2、3、または 4 で操作される。
-
残りの AS_PATH の最初のパス・セグメントが AS_SEQUENCE タイプの場合、ローカル・システムは自身の AS コンフェデレーション識別子をシーケンスの最後の要素として前置する(プロトコル・メッセージ内のオクテットの位置に関して最も左側の位置に置く)。前置する行為が AS_PATH セグメントのオーバーフローを引き起こす場合(つまり、255 を超える AS)、AS_SEQUENCE タイプの新しいセグメントを前置し、この新しいセグメントに自身の AS 番号を前置すべきである(SHOULD)。
-
残りの AS_PATH の最初のパス・セグメントが AS_SET タイプの場合、ローカル・システムは AS_SEQUENCE タイプの新しいパス・セグメントを AS_PATH に前置し、そのセグメントに自身の AS コンフェデレーション識別子を含める。
-
残りの AS_PATH が空の場合、ローカル・システムは AS_SEQUENCE タイプのパス・セグメントを作成し、自身の AS コンフェデレーション識別子をそのセグメントに配置し、そのセグメントを AS_PATH に配置する。
BGP スピーカーがルートを発信する場合:
a) 発信スピーカーは、ローカル・コンフェデレーションのメンバーではない隣接自律システムに位置する BGP スピーカーに送信するすべての UPDATE メッセージの AS_PATH 属性に、自身の AS コンフェデレーション識別子を含む AS_SEQUENCE タイプのパス・セグメントを含める。この場合、発信スピーカーの自律システムの AS コンフェデレーション識別子がパス・セグメントの唯一のエントリとなり、このパス・セグメントが AS_PATH 属性の唯一のセグメントとなる。
b) 発信スピーカーは、ローカル・コンフェデレーションのメンバーである隣接メンバー自律システムに位置する BGP スピーカーに送信するすべての UPDATE メッセージの AS_PATH 属性に、自身のメンバー AS 番号を含む AS_CONFED_SEQUENCE タイプのパス・セグメントを含める。この場合、発信スピーカーの自律システムのメンバー AS 番号がパス・セグメントの唯一のエントリとなり、このパス・セグメントが AS_PATH 属性の唯一のセグメントとなる。
c) 発信スピーカーは、同じメンバー AS 内に存在する BGP スピーカーに送信するすべての UPDATE メッセージに空の AS_PATH 属性を含める。(空の AS_PATH 属性とは、長さフィールドに値 0 を含む属性である)。
AS_PATH 属性の変更がローカル・システムの AS コンフェデレーション識別子またはメンバー AS 番号を含めるまたは前置することを要求する場合は常に、ローカル・システムは AS_PATH 属性にその値の複数のインスタンスを含める/前置してもよい(MAY)。これはローカル構成によって制御される。