4.3. UPDATE Message Format (UPDATE メッセージフォーマット)
4.3. UPDATE Message Format (UPDATE メッセージフォーマット)
UPDATE メッセージは、BGP ピア間でルーティング情報を転送するために使用されます。UPDATE メッセージ内の情報は、さまざまな自律システムの関係を記述するグラフを構築するために使用できます。後述するルールを適用することで、ルーティング情報のループやその他のいくつかの異常を検出し、AS 間ルーティングから削除することができます。
UPDATE メッセージは、共通のパス属性を共有する実行可能なルートをピアにアドバタイズするため、または複数の実行不可能なルートをサービスから撤回するために使用されます (3.1 を参照)。UPDATE メッセージは、実行可能なルートのアドバタイズと複数の実行不可能なルートのサービスからの撤回を同時に行うことができます (MAY)。UPDATE メッセージには常に固定サイズの BGP ヘッダーが含まれ、以下に示すように他のフィールドも含まれます (注:示されているフィールドの一部は、すべての UPDATE メッセージに存在するとは限りません)。
+-----------------------------------------------------+
| Withdrawn Routes Length (2 octets) |
+-----------------------------------------------------+
| Withdrawn Routes (variable) |
+-----------------------------------------------------+
| Total Path Attribute Length (2 octets) |
+-----------------------------------------------------+
| Path Attributes (variable) |
+-----------------------------------------------------+
| Network Layer Reachability Information (variable) |
+-----------------------------------------------------+
Withdrawn Routes Length (撤回ルート長):
この 2 オクテットの符号なし整数は、Withdrawn Routes (撤回ルート) フィールドの全長をオクテット単位で示します。その値により、以下に指定するように、ネットワーク層到達可能性情報 (Network Layer Reachability Information) フィールドの長さを決定できます。
値 0 は、サービスから撤回されるルートがなく、この UPDATE メッセージに WITHDRAWN ROUTES フィールドが存在しないことを示します。
Withdrawn Routes (撤回ルート):
これは可変長フィールドであり、サービスから撤回されるルートの IP アドレスプレフィックスのリストが含まれています。各 IP アドレスプレフィックスは、<長さ, プレフィックス> の形式の 2 タプルとしてエンコードされます。そのフィールドについては以下で説明します。
+---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+
これらのフィールドの使用法と意味は次のとおりです。
a) Length (長さ):
Length フィールドは、IP アドレスプレフィックスの長さをビット単位で示します。長さゼロは、すべての IP アドレスに一致するプレフィックスを示します (プレフィックス自体は 0 オクテットです)。
b) Prefix (プレフィックス):
Prefix フィールドには、IP アドレスプレフィックスが含まれ、その後にフィールドの終わりがオクテット境界に来るようにするために必要な最小数の末尾ビットが続きます。末尾ビットの値は無関係であることに注意してください。
Total Path Attribute Length (合計パス属性長):
この 2 オクテットの符号なし整数は、Path Attributes (パス属性) フィールドの全長をオクテット単位で示します。その値により、以下に指定するように、ネットワーク層到達可能性 (Network Layer Reachability) フィールドの長さを決定できます。
値 0 は、この UPDATE メッセージにネットワーク層到達可能性情報フィールドもパス属性フィールドも存在しないことを示します。
Path Attributes (パス属性):
撤回されたルートのみを運ぶ UPDATE メッセージを除き、すべての UPDATE メッセージには可変長のパス属性シーケンスが存在します。各パス属性は、可変長のトリプル <属性タイプ, 属性長, 属性値> です。
Attribute Type (属性タイプ) は 2 オクテットのフィールドで、Attribute Flags (属性フラグ) オクテットとそれに続く Attribute Type Code (属性タイプコード) オクテットで構成されます。
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attr. Flags |Attr. Type Code|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
属性フラグオクテットの上位ビット (ビット 0) は、オプションビット (Optional bit) です。これは、属性がオプション (1 に設定されている場合) か、既知 (well-known) (0 に設定されている場合) かを定義します。
属性フラグオクテットの 2 番目の上位ビット (ビット 1) は、推移的ビット (Transitive bit) です。これは、オプション属性が推移的 (1 に設定されている場合) か、非推移的 (0 に設定されている場合) かを定義します。
既知の属性の場合、推移的ビットは 1 に設定されなければなりません (MUST)。(推移的属性の説明については、セクション 5 を参照してください。)
属性フラグオクテットの 3 番目の上位ビット (ビット 2) は、部分的ビット (Partial bit) です。これは、オプションの推移的属性に含まれる情報が部分的 (1 に設定されている場合) か、完全 (0 に設定されている場合) かを定義します。既知の属性およびオプションの非推移的属性の場合、部分的ビットは 0 に設定されなければなりません (MUST)。
属性フラグオクテットの 4 番目の上位ビット (ビット 3) は、拡張長ビット (Extended Length bit) です。これは、属性長が 1 オクテット (0 に設定されている場合) か、2 オクテット (1 に設定されている場合) かを定義します。
属性フラグオクテットの下位 4 ビットは使用されません。これらは送信時にゼロでなければならず (MUST)、受信時には無視されなければなりません (MUST)。
Attribute Type Code (属性タイプコード) オクテットには、属性タイプコードが含まれています。現在定義されている属性タイプコードについては、セクション 5 で説明します。
属性フラグオクテットの拡張長ビットが 0 に設定されている場合、パス属性の 3 番目のオクテットには、属性データの長さがオクテット単位で含まれます。
属性フラグオクテットの拡張長ビットが 1 に設定されている場合、パス属性の 3 番目と 4 番目のオクテットには、属性データの長さがオクテット単位で含まれます。
パス属性の残りのオクテットは属性値を表し、属性フラグと属性タイプコードに従って解釈されます。サポートされている属性タイプコード、およびそれらの属性値と使用法は次のとおりです。
a) ORIGIN (タイプコード 1):
ORIGIN は、パス情報の起源を定義する既知の必須 (mandatory) 属性です。データオクテットは、次の値をとることができます。
- 値 0 (IGP) - ネットワーク層到達可能性情報は、発信 AS の内部にあります
- 値 1 (EGP) - EGP プロトコル [RFC904] を介して学習されたネットワーク層到達可能性情報
- 値 2 (INCOMPLETE) - 他の何らかの手段で学習されたネットワーク層到達可能性情報
この属性の使用法は 5.1.1 で定義されています。
b) AS_PATH (タイプコード 2):
AS_PATH は、AS パスセグメントのシーケンスで構成される既知の必須属性です。各 AS パスセグメントは、トリプル <パスセグメントタイプ, パスセグメント長, パスセグメント値> で表されます。
パスセグメントタイプは、次の値が定義されている 1 オクテットの長さフィールドです。
- 値 1 (AS_SET): UPDATE メッセージ内のルートが通過した AS の順序なしセット
- 値 2 (AS_SEQUENCE): UPDATE メッセージ内のルートが通過した AS の順序付きセット
パスセグメント長は 1 オクテットの長さフィールドで、パスセグメント値フィールド内の AS の数 (オクテット数ではない) が含まれます。
パスセグメント値フィールドには、1 つ以上の AS 番号が含まれ、それぞれが 2 オクテットの長さフィールドとしてエンコードされます。
この属性の使用法は 5.1.2 で定義されています。
c) NEXT_HOP (タイプコード 3):
これは、UPDATE メッセージのネットワーク層到達可能性情報フィールドにリストされている宛先へのネクストホップとして使用されるべき (SHOULD) ルーターの (ユニキャスト) IP アドレスを定義する既知の必須属性です。
この属性の使用法は 5.1.3 で定義されています。
d) MULTI_EXIT_DISC (タイプコード 4):
これは、4 オクテットの符号なし整数であるオプションの非推移的属性です。この属性の値は、BGP スピーカーの決定プロセスによって、隣接する自律システムへの複数のエントリポイントを区別するために使用される場合があります (MAY)。
この属性の使用法は 5.1.4 で定義されています。
e) LOCAL_PREF (タイプコード 5):
LOCAL_PREF は、4 オクテットの符号なし整数である既知の属性です。BGP スピーカーはこれを使用して、アドバタイズされたルートに対するアドバタイズスピーカーの優先度を他の内部ピアに通知します。
この属性の使用法は 5.1.5 で定義されています。
f) ATOMIC_AGGREGATE (タイプコード 6):
ATOMIC_AGGREGATE は、長さ 0 の既知の任意 (discretionary) 属性です。
この属性の使用法は 5.1.6 で定義されています。
g) AGGREGATOR (タイプコード 7):
AGGREGATOR は、長さ 6 のオプションの推移的属性です。この属性には、集約ルートを形成した最後の AS 番号 (2 オクテットとしてエンコード) と、それに続く集約ルートを形成した BGP スピーカーの IP アドレス (4 オクテットとしてエンコード) が含まれます。これは、スピーカーの BGP 識別子に使用されているアドレスと同じである必要があります (SHOULD)。
この属性の使用法は 5.1.7 で定義されています。
Network Layer Reachability Information (ネットワーク層到達可能性情報):
この可変長フィールドには、IP アドレスプレフィックスのリストが含まれています。ネットワーク層到達可能性情報の長さ (オクテット単位) は明示的にエンコードされていませんが、次のように計算できます。
UPDATE メッセージ長 - 23 - 合計パス属性長 - 撤回ルート長
ここで、UPDATE メッセージ長は固定サイズの BGP ヘッダーでエンコードされた値、合計パス属性長と撤回ルート長は UPDATE メッセージの可変部分でエンコードされた値、23 は固定サイズの BGP ヘッダー、合計パス属性長フィールド、および撤回ルート長フィールドの合計長です。
到達可能性情報は、以下のフィールドで記述される <長さ, プレフィックス> という形式の 1 つ以上の 2 タプルとしてエンコードされます。
+---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+
これらのフィールドの使用法と意味は次のとおりです。
a) Length (長さ):
Length フィールドは、IP アドレスプレフィックスの長さをビット単位で示します。長さゼロは、すべての IP アドレスに一致するプレフィックスを示します (プレフィックス自体は 0 オクテットです)。
b) Prefix (プレフィックス):
Prefix フィールドには IP アドレスプレフィックスが含まれ、その後にフィールドの終わりがオクテット境界に来るように十分な末尾ビットが続きます。末尾ビットの値は無関係であることに注意してください。
UPDATE メッセージの最小の長さは 23 オクテットです。固定ヘッダーの 19 オクテット + 撤回ルート長の 2 オクテット + 合計パス属性長の 2 オクテット (撤回ルート長の値は 0、合計パス属性長の値は 0) です。
UPDATE メッセージは、宛先がこれらの属性を共有している場合、最大 1 セットのパス属性をアドバタイズできますが、複数の宛先をアドバタイズできます。特定の UPDATE メッセージに含まれるすべてのパス属性は、UPDATE メッセージの NLRI フィールドで運ばれるすべての宛先に適用されます。
UPDATE メッセージには、サービスから撤回される複数のルートをリストできます。そのような各ルートは、宛先 (IP プレフィックスとして表現) によって識別されます。これは、以前にアドバタイズされた BGP スピーカー - BGP スピーカー接続のコンテキストでルートを一意に識別します。
UPDATE メッセージは、サービスから撤回されるルートのみをアドバタイズする場合があり、その場合、メッセージにはパス属性やネットワーク層到達可能性情報は含まれません。逆に、実行可能なルートのみをアドバタイズする場合があり、その場合、WITHDRAWN ROUTES フィールドは存在する必要はありません。
UPDATE メッセージには、WITHDRAWN ROUTES フィールドとネットワーク層到達可能性情報フィールドに同じアドレスプレフィックスを含めるべきではありません (SHOULD NOT)。ただし、BGP スピーカーはこの形式の UPDATE メッセージを処理できなければなりません (MUST)。BGP スピーカーは、この形式の UPDATE メッセージを、WITHDRAWN ROUTES にアドレスプレフィックスが含まれていないかのように扱う必要があります (SHOULD)。