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

6.1.3 The TCP Receiver (TCP 受信者)

6.1.3 The TCP Receiver (TCP 受信者)

TCP が宛先エンドシステムで CE パケットを受信すると、TCP データ受信者は後続の ACK パケットの TCP ヘッダーに ECN-Echo フラグを設定します。現在の「遅延 ACK」TCP 実装のように ACK の保留 (withholding) が実装されている場合、つまり TCP 受信者が到着した 2 つのパケットに対して 1 つの ACK を送信できる場合、確認されているパケットのいずれかに CE コードポイントが設定されていれば、ACK パケットの ECN-Echo フラグは '1' に設定されます。つまり、受信したパケットのいずれかが CE パケットである場合、返される ACK は ECN-Echo フラグを設定します。

ECN-Echo フラグを運ぶ ACK パケットが破棄される可能性に対する堅牢性を提供するために、TCP 受信者は後続の一連の ACK パケットで ECN-Echo フラグを設定します。TCP 受信者は、TCP 送信者から受信した CWR フラグを使用して、ECN-Echo フラグの設定をいつ停止するかを決定します。

TCP 受信者が ECN-Echo ビットが設定された ACK パケットを送信した後、その TCP 受信者は、CWR パケット (CWR フラグが設定されたパケット) を受信するまで、送信するすべての ACK パケット (CE パケットまたは非 CE パケットを確認するかどうかに関わらず) で ECN-Echo フラグを設定し続けます。CWR パケットを受信した後、後続の非 CE パケットに対する確認応答は ECN-Echo フラグを設定しません。データ受信者が別の CE パケットを受信した場合、受信者は再び ECN-Echo フラグが設定された ACK パケットを送信します。CWR パケットの受信は、データ送信者が ECN-Echo メッセージを受信したことを保証するものではありませんが、データ送信者が CE コードポイントが設定されたパケットを送信したのある時点で輻輳ウィンドウを削減したことを示しています。

私たちは、TCP 送信者が各データウィンドウで輻輳ウィンドウを複数回削減する必要がないことを規定しました。TCP 送信者がデータウィンドウに失われたパケットと (マークされた) CE パケットの両方が含まれる場合に不必要に輻輳ウィンドウを削減することを避けるためには、ある程度の注意が必要です。これについては [Floyd98] で説明されています。