4.3. 損失回復メカニズム
高速再送信と高速回復を拡張する多くの損失回復アルゴリズムがTCPの研究者によって提案され、RFCシリーズで規定されています。これらのアルゴリズムの一部は、[FF96]、[MM96a]、[MM96b]、[RFC3517] のように、TCPの選択的確認応答 (SACK) オプション [RFC2018] に基づいていますが、[Hoe96]、[FF96]、[RFC3782] のようにSACKを必要としないものもあります。非SACKアルゴリズムは、「部分確認応答」(以前に未確認応答のデータを対象とするが、損失が検出されたときに未処理だったすべてのデータは対象としないACK) を使用して再送をトリガーします。本文書は、高速再送信/高速回復を改善し得る特定のアルゴリズムを標準化するものではありませんが、これらの拡張アルゴリズムは、上述の4つの基本アルゴリズムの一般原則に従う限り、暗黙的に許可されます。
すなわち、データウィンドウにおける最初の損失が検出されたとき、ssthreshを式(4)で与えられる値以下に設定しなければならない (MUST)。第二に、問題となっているデータウィンドウにおけるすべての損失が修復されるまで、各RTTで送信されるセグメントの数は、損失が検出されたときの未処理セグメントの数の半分以下でなければならない (MUST)。最後に、問題となっているセグメントウィンドウにおけるすべての損失が正常に再送された後、cwndをssthresh以下に設定しなければならず (MUST)、cwndをさらに増加させるために輻輳回避を使用しなければならない (MUST)。連続する2つのデータウィンドウでの損失、または再送の損失は、2つの輻輳の指標と見なされるべきであり、したがって、この場合にはcwnd (およびssthresh) を2回引き下げなければならない (MUST)。
TCP実装者は、データウィンドウにおける複数の損失に対処できる何らかの形態の高度な損失回復を採用することを推奨します (RECOMMEND)。[RFC3782] および [RFC3517] で詳述されているアルゴリズムは、上述の一般原則に適合しています。これらは上記の一般原則に適合する唯一の2つのアルゴリズムではありませんが、これら2つのアルゴリズムはコミュニティによって検証されており、現在Standards Track上にあることに注意します。