18. トランスポートパラメータエンコーディング
18. トランスポートパラメータエンコーディング
[QUIC-TLS] で定義されたquic_transport_parameters拡張のextension_dataフィールドには、QUICトランスポートパラメータが含まれています。これらは、図20に示すように、トランスポートパラメータのシーケンスとしてエンコードされます:
Transport Parameters {
Transport Parameter (..),
...
}
図20: トランスポートパラメータのシーケンス
各トランスポートパラメータは、図21に示すように、(識別子、長さ、値)のタプルとしてエンコードされます:
Transport Parameter {
Transport Parameter ID (i),
Transport Parameter Length (i),
Transport Parameter Value (..),
}
図21: トランスポートパラメータのエンコーディング
Transport Parameter Lengthフィールドには、Transport Parameter Valueフィールドの長さがバイト単位で含まれます。
QUICは、トランスポートパラメータをバイトシーケンスにエンコードし、それを暗号化ハンドシェイクに含めます。
18.1 予約トランスポートパラメータ
整数値Nに対して 31 * N + 27 の形式の識別子を持つトランスポートパラメータは、未知のトランスポートパラメータが無視されるという要件を検証するために予約されています。これらのトランスポートパラメータには意味がなく、任意の値を運ぶことができます。
18.2 トランスポートパラメータの定義
このセクションでは、このドキュメントで定義されているトランスポートパラメータの詳細を説明します。
original_destination_connection_id (0x00): このパラメータは、クライアントによって送信された最初のInitialパケットのDestination Connection IDフィールドの値です。
max_idle_timeout (0x01): 最大アイドルタイムアウトは、整数としてエンコードされるミリ秒単位の値です。この値が存在しないかゼロの場合、アイドルタイムアウトは無効です。
stateless_reset_token (0x02): ステートレスリセットトークンは、ステートレスリセットの検証に使用されます; セクション 10.3 を参照してください。
max_udp_payload_size (0x03): 最大UDPペイロードサイズパラメータは、エンドポイントが受信する意思があるUDPペイロードのサイズを制限する整数値です。
initial_max_data (0x04): 初期最大データパラメータは、接続上で送信できるデータの最大量の初期値を含む整数値です。
initial_max_stream_data_bidi_local (0x05): このパラメータは、ローカルで開始された双方向ストリームの初期フロー制御制限を指定する整数値です。
initial_max_stream_data_bidi_remote (0x06): このパラメータは、ピアによって開始された双方向ストリームの初期フロー制御制限を指定する整数値です。
initial_max_stream_data_uni (0x07): このパラメータは、単方向ストリームの初期フロー制御制限を指定する整数値です。
initial_max_streams_bidi (0x08): 初期最大双方向ストリームパラメータは、このトランスポートパラメータを受信するエンドポイントが開始することを許可される双方向ストリームの初期最大数を含む整数値です。
initial_max_streams_uni (0x09): 初期最大単方向ストリームパラメータは、このトランスポートパラメータを受信するエンドポイントが開始することを許可される単方向ストリームの初期最大数を含む整数値です。
ack_delay_exponent (0x0a): 確認応答遅延指数は、ACKフレーム (セクション 19.3) のACK Delayフィールドをデコードするために使用される指数を示す整数値です。この値が存在しない場合、デフォルト値の3が想定されます。
max_ack_delay (0x0b): 最大確認応答遅延は、エンドポイントが確認応答の送信を遅延させるミリ秒単位の最大時間を示す整数値です。この値が存在しない場合、デフォルトの25ミリ秒が想定されます。
disable_active_migration (0x0c): disable_active_migrationトランスポートパラメータは、ハンドシェイク中に使用されているアドレスでエンドポイントがアクティブな接続移行 (セクション 9) をサポートしない場合に含まれます。
preferred_address (0x0d): サーバーの優先アドレスは、セクション 9.6 で説明されているように、ハンドシェイクの終わりにサーバーアドレスの変更を実現するために使用されます。
active_connection_id_limit (0x0e): アクティブ接続ID制限は、エンドポイントが保存する意思があるピアからの接続IDの最大数を指定する整数値です。
initial_source_connection_id (0x0f): これは、エンドポイントが接続のために送信する最初のInitialパケットのSource Connection IDフィールドに含めた値です。
retry_source_connection_id (0x10): これは、サーバーがRetryパケットのSource Connection IDフィールドに含めた値です。