要約
- RFC 6298では、ACKが新しいデータを確認した場合にだけ再送タイマーを再開する。
- データ送信時にタイマーを開始し、未確認データがなくなれば停止し、満了時には最も古い未確認セグメントを再送する。
ACKの数ではなく境界の前進
タイマーが守るのは、まだ確認されていないデータである。データを含むパケットを送った時点でタイマーが動いていなければ、現在のRTOで開始する。その後に追加のデータを送っても、既存の期限を自動的に延ばすことはない。
ルール5.3が再開を認めるのは、ACKが新しいデータを確認したときだけだ。受信側が確認したシーケンスの境界が進み、最初に残る未確認セグメントも変わり得るため、そこから新しいRTO区間を数える。
以前の境界を繰り返すACKはこの条件を満たさない。したがって、重複ACKが未解決データの期限を何度も押し出せない、という推論が成り立つ。ただし、TCP全体で重複ACKが無意味だという主張ではない。
すべてのデータが確認されればタイマーを止める。満了した場合は、最も早い未確認セグメントを再送する。
規範上の境界
RFC 6298が必須としているのは、セグメントを直前の送信から1 RTO未満で再送してはならないという不変条件である。開始・停止・再開の流れは、そのタイマー管理の推奨アルゴリズムとして示される。必須条件と推奨手順は同じではない。
このRFCから現在の全実装の動作を判断することはできない。また、この規則が扱うのはタイマーの再開条件であり、遅延ACK、RTT測定、高速再送、SACK、輻輳制御、タイムアウト後の指数的バックオフではない。
出典
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
