Skip to main content

3. Definitions

The following terms, parameters, and state variables are used as defined in earlier documents:

Basic TCP Terminology

SND.UNA: The oldest unacknowledged sequence number. This is defined in Section 3.4 of [RFC9293].

SND.NXT: The next sequence number to be sent. This is defined in Section 3.4 of [RFC9293].

duplicate ACK: An acknowledgment is considered a "duplicate acknowledgment" or "dupack" when (a) the receiver of the ACK has outstanding data, (b) the incoming acknowledgment carries no data, (c) the SYN and FIN bits are both off, (d) the acknowledgment number is equal to SND.UNA, and (e) the advertised window in the incoming acknowledgment equals the advertised window in the last incoming acknowledgment. This is defined in Section 2 of [RFC5681].

FlightSize: The amount of data that has been sent but not yet cumulatively acknowledged. This is defined in Section 2 of [RFC5681].

Receiver Maximum Segment Size (RMSS): The RMSS is the size of the largest segment the receiver is willing to accept. This is the value specified in the MSS option sent by the receiver during connection startup (see Section 3.7.1 of [RFC9293]). Or, if the MSS option is not used, a default of 536 bytes for IPv4 or 1220 bytes for IPv6 (see Section 3.7.1 of [RFC9293]). This size does not include the TCP/IP headers and options. RMSS is defined in Section 2 of [RFC5681] and Section 3.8.6.3 of [RFC9293].

Sender Maximum Segment Size (SMSS): The SMSS is the size of the largest segment that the sender can transmit. This value can be based on the maximum transmission unit (MTU) of the network, the path MTU discovery [RFC1191] [RFC8201] [RFC4821] algorithm, RMSS, or other factors. This size does not include the TCP/IP headers and options. This is defined in Section 2 of [RFC5681].

Receiver Window (rwnd): The most recently advertised receiver window, in bytes. At any given time, the connection MUST NOT send data with a sequence number higher than the sum of SND.UNA and rwnd. This is defined in Section 2 of [RFC5681].

Congestion Window (cwnd): A state variable that limits the amount of data a connection can send. At any given time, a connection MUST NOT send data if inflight (see below) matches or exceeds cwnd. This is defined in Section 2 of [RFC5681].

Slow Start Threshold (ssthresh): The slow start threshold (ssthresh) state variable is used to determine whether the slow start or congestion avoidance algorithm is used to control data transmission. During fast recovery, ssthresh is the target window size for the fast recovery phase, as determined by the congestion control algorithm. This is defined in Section 3.1 of [RFC5681].

PRR-Specific Terminology

PRR defines additional variables and terms:

Delivered Data (DeliveredData): The data sender's best estimate of the total bytes the current ACK indicates have been delivered to the receiver since the last received ACK.

In-Flight Data (inflight): The data sender's best estimate of the number of unacknowledged bytes in flight in the network, i.e., bytes sent but neither lost nor received by the data receiver.

Recovery Flight Size (RecoverFS): The sender's estimate of the number of bytes that may be delivered during the current PRR phase.

SafeACK: A local Boolean variable indicating that the current ACK suggests recovery is making good progress, and the sender can send more aggressively if appropriate, increasing inflight.

SndCnt: A local variable that indicates how many bytes should be sent in response to each ACK.

Voluntary window reductions: Choosing to not send data in response to some ACK, for the purpose of reducing the sending window size and data rate.