Skip to content
This repository has been archived by the owner on Aug 28, 2023. It is now read-only.

Rephrase text around algorithmic alternatives. #111

Merged
merged 12 commits into from
Oct 18, 2021
45 changes: 26 additions & 19 deletions draft-ietf-tcpm-rfc8312bis.md
Original file line number Diff line number Diff line change
Expand Up @@ -763,12 +763,12 @@ prior\_W\_{est} = W_{est} \\
{: artwork-align="center" }

CUBIC MAY implement an algorithm to detect spurious retransmissions,
such as DSACK {{?RFC3708}}, Forward RTO-Recovery {{?RFC5682}} or Eifel
{{?RFC3522}}. Once a spurious congestion event is detected, CUBIC
SHOULD restore the original values of above-mentioned variables as
follows if the current *cwnd* is lower than *prior_cwnd*. Restoring
the original values ensures that CUBIC's performance is similar to
what it would be without spurious losses.
such as Forward RTO-Recovery {{!RFC5682}}. Experimental alternatives
include DSACK {{?RFC3708}} and Eifel {{?RFC3522}}. Once a spurious
congestion event is detected, CUBIC SHOULD restore the original values
of above-mentioned variables as follows if the current *cwnd* is lower
than *prior_cwnd*. Restoring the original values ensures that CUBIC's
performance is similar to what it would be without spurious losses.

~~~ math
\left.
Expand All @@ -793,19 +793,22 @@ these variables.
## Slow Start

CUBIC MUST employ a slow-start algorithm, when *cwnd* is no more than
*ssthresh*. Among the slow-start algorithms, CUBIC MAY choose the Reno
TCP slow start {{!RFC5681}} in general networks, or the limited slow
start {{?RFC3742}} or hybrid slow start {{HR08}} for fast and
long-distance networks.

When CUBIC uses hybrid slow start {{HR08}}, it may exit the first slow
start without incurring any packet loss and thus *W<sub>max</sub>* is
undefined. In this special case, CUBIC switches to congestion
avoidance and increases its congestion window size using {{eq1}},
where *t* is the elapsed time since the beginning of the current
congestion avoidance, *K* is set to 0, and *W<sub>max</sub>* is set to
the congestion window size at the beginning of the current congestion
avoidance stage.
*ssthresh*. In general, CUBIC SHOULD use the HyStart++ slow start
algorithm {{!I-D.ietf-tcpm-hystartplusplus}}, or MAY use the Reno TCP
slow start algorithm {{!RFC5681}} in the rare cases when
HyStart++ is not suitable. Experimental alternatives include
hybrid slow start {{HR08}}, a predecessor to HyStart++ that some CUBIC
implementations have used as the default for the last decade, and
limited slow start {{?RFC3742}}.

When CUBIC uses HyStart++ {{!I-D.ietf-tcpm-hystartplusplus}}, it may
exit the first slow start without incurring any packet loss and
thus *W<sub>max</sub>* is undefined. In this special case, CUBIC
switches to congestion avoidance and increases its congestion window
size using {{eq1}}, where *t* is the elapsed time since the beginning
of the current congestion avoidance, *K* is set to 0,
and *W<sub>max</sub>* is set to the congestion window size at the
beginning of the current congestion avoidance stage.

# Discussion {#discussion}

Expand Down Expand Up @@ -1059,6 +1062,10 @@ These individuals suggested improvements to this document:
([#106](https://github.com/NTAP/rfc8312bis/issues/106))
- Update RFC5681
([#99](https://github.com/NTAP/rfc8312bis/issues/99))
- Rephrase text around algorithmic alternatives, add HyStart++
([#85](https://github.com/NTAP/rfc8312bis/issues/85),
larseggert marked this conversation as resolved.
Show resolved Hide resolved
[#86](https://github.com/NTAP/rfc8312bis/issues/86),
[#90](https://github.com/NTAP/rfc8312bis/issues/90))
larseggert marked this conversation as resolved.
Show resolved Hide resolved
- Clarify what we mean by "new ACK" and use it in the text in more places.
larseggert marked this conversation as resolved.
Show resolved Hide resolved
([#101](https://github.com/NTAP/rfc8312bis/issues/101))
- Rewrite the Responses to Sudden or Transient Events section
Expand Down