本記事はAIを利用して作成した技術解説・実装例です。掲載するコードや手順は一次情報を基に構成していますが、筆者による実機での動作確認は行っていません。環境やバージョンによって動作が異なる場合があります。 、RFC 10052で定義されている「Simple Two-Way Active Measurement Protocol (STAMP)」の拡張仕様を取り上げ、非対称トラフィック(Asymmetrical Traffic)における通信シーケンス、メッセージ構造、および関連する制御機構を安全かつ実用的に理解することを目的とします。あらかじめ仕様の全体像や制約を把握することで、ネットワーク性能測定におけるプローブ設計の指針を得られます。
目的
本書の目的は、RFC 10052で導入された非対称トラフィック測定拡張(Reflected Test Packet Control TLV)の構造や、マルチキャスト環境におけるアドレスグループ制御の仕組みを公式情報に基づいて整理することです。実装におけるメッセージのやり取りや、パケット長・送信数の制御ルールを明らかにします。
前提・注意点
本記事は【実機確認前】の調査に基づく解説であり、実際のネットワーク機器やスクリプトを用いたパケット送受信結果は記載していません。
STAMPの拡張仕様に関する標準文書(RFC 10052)の内容を解釈・整理したものです。
実際の環境でプロトコルを検証する際は、関連するベース仕様(RFC 8762、RFC 8972など)およびネットワークの帯域・MTU制約に十分配慮してください。
RFC 10052の概要と背景
標準的なSTAMPの交換処理では、Session-SenderとSession-Reflectorの間で送受信されるパケットの数や長さが対称(Symmetrical)です。しかし、アプリケーションのトラフィック条件をより正確に近似させるため、あるいはレート測定などのシナリオにおいては、Session-Reflectorが異なる長さのパケットや、複数の応答パケットを非対称に返す機能が求められます。
RFC 10052では、この非対称な測定を実現するためのオプション拡張として「Reflected Test Packet Control TLV」が定義されています。また、マルチキャストネットワークにおけるアクティブ測定特有の課題を分析し、過度なプローブの増殖を防ぎながら効率的な測定を行うための手順が示されています。
sequenceDiagram
participant Sender as Session-Sender
participant Reflector as Session-Reflector
Sender->>Reflector: STAMP-Test Packet (with Reflected Test Packet Control TLV)
Reflector-->>Sender: Reflected Test Packet 1 (Asymmetrical size/count)
Reflector-->>Sender: Reflected Test Packet 2 (Optional, based on interval)
上の図は、Session-SenderがコントロールTLVを含むテストパケットを送信し、Session-Reflectorが非対称な設定に基づいて複数の応答パケットを返す基本的な通信の流れを示しています。
Reflected Test Packet Control TLVの構造
Reflected Test Packet Control TLVは、STAMP拡張(RFC 8972)の仕組みを利用して定義されています。このTLVを用いることで、送信側から反射側に対して応答パケットの長さを指定したり、返送するパケットの数や間隔を指示したりすることが可能です。
一次情報に記載されている主なフィールド構成は以下の通りです。
STAMP TLV Flags: 1オクテットのフィールド。
Type: 1オクテットのフィールド。Reflected Test Packet Control TLVを識別し、値は
12に設定されます。Length: 2オクテットのフィールド。値は可変であり、12オクテット未満であってはなりません(MUST NOT)。
Length of the Reflected Packet: 2オクテットのunsigned整数。要求する反射テストパケットの長さをオクテット単位で指定します。
Number of the Reflected Packets: 2オクテットのunsigned整数。受信したテストパケットに対してSession-Reflectorが返送すべき反射パケットの数を指定します。
Interval Between the Reflected Packets: 4オクテットのunsigned整数。連続する反射テストパケット間の送信間隔をナノ秒単位で指定します。
Sub-TLVs: Session-Senderが追加の情報を伝達するためのオプショナルなフィールド。
また、IANAの「STAMP TLV Flags」レジストリには、新しく「Conformant Reflected Packet」を示す1ビットの C フラグ(3)が割り当てられています。
Session-Reflectorの処理規則と制約
Session-ReflectorがReflected Test Packet Control TLVを含むSTAMP-Testパケットを受信した場合、規定されたルールに従って反射パケットのシーケンスを送信する必要があります。
反射パケット長の決定: 反射パケットの長さは、受信したパケットのモードにおけるベースパケット長(Extra Padding TLVを除く)と、TLV内で要求された長さ(4オクテット境界にアライメント)のうち大きい方の値になります。
MTUおよびレート制限とCフラグ: 計算された長さが egress インターフェイスのMTUを超える場合、またはSession-Reflectorで設定されたデータレートやデータボリュームの制限を超える場合、Session-Reflectorは
Cフラグを1に設定し、制限に応じた単一のパケットを送信します。それ以外の場合はCフラグを0に設定します。パケット数と送信間隔: 指定されたパケット数が複数である場合、指定されたナノ秒単位の間隔で送信されます。パケット数が
0に設定されている場合、反射パケットは送信されず、原則として受信パケットは破棄されます(SHOULD discard)。
アドレスグループ Sub-TLVによるセレクション
マルチキャストネットワークなどでインサービス(In-Service)のレート推定を行う場合、プローブの複製がネットワーク全体に増幅するため、トラフィックを制御するメカニズムが不可欠です。RFC 10052では、Session-Senderが応答対象のSession-Reflectorを選択するために使用する、オプショナルなアドレスグループ Sub-TLVを定義しています。
Layer 2 Address Group Sub-TLV
Sub-TLV Type: 値
10が割り当てられています。Sub-TLV Length: 4、12、16のいずれかの値を取り、これ以外は不正なサブTLVとして扱われます。
Valueフィールド: Layer 2 Address Group MaskとLayer 2 Address Groupで構成され、EUI-48、EUI-64、および16ビットの短縮アドレスなどをサポートします。Session-Reflectorは自身のMACアドレスとマスクのビット単位AND演算を行い、一致した場合に処理を継続します。
Layer 3 Address Group Sub-TLV
- IPプレフィックスおよびIPプレフィックス長フィールドを含み、レイヤー3の観点から対象となるSession-Reflectorを選択するための仕組みを提供します。
限界
本記事で解説した内容はRFC 10052の仕様に基づく記述であり、実際のハードウェアやソフトウェア実装における性能影響、スケーラビリティ、具体的なベンダーごとの挙動の違いまでは網羅していません。
実機でのパケットキャプチャやトラフィック生成試験を行っていないため、実際の運用環境において発生し得る細かい挙動の差異については別途検証が必要です。
まとめ
本記事では、RFC 10052に基づく非対称トラフィック測定の仕組みについて、以下のポイントを整理しました。
標準的な対称型STAMPに対し、応答パケットのサイズや数を非対称に変更する「Reflected Test Packet Control TLV」の存在とフィールド構造。
反射パケット長、送信数、間隔の決定ルール、およびMTUやレート制限超過時に
Cフラグが使われる仕組み。マルチキャスト環境における過度なプローブの増幅を防ぎ、対象のSession-Reflectorを選択するためのLayer 2 / Layer 3アドレスグループ Sub-TLVの役割。
実行前に確認すべき点と制約事項:
対象機器やネットワークトポロジがRFC 10052の拡張仕様をサポートしているか確認すること。
マルチキャスト環境や高負荷な測定において、データレートやボリュームの制限値が適切に設定されているか確認すること。
実機環境での動作やパケット構造の確認は、安全な検証ネットワーク上で十分な事前検証を行ってから実施すること。
