rfc9768v3.txt   rfc9768.txt 
Internet Engineering Task Force (IETF) B. Briscoe Internet Engineering Task Force (IETF) B. Briscoe
Request for Comments: 9768 Independent Request for Comments: 9768 Independent
Updates: 3168 M. Kühlewind Updates: 3168 M. Kühlewind
Category: Standards Track Ericsson Category: Standards Track Ericsson
ISSN: 2070-1721 R. Scheffenegger ISSN: 2070-1721 R. Scheffenegger
NetApp NetApp
August 2025 September 2025
More Accurate Explicit Congestion Notification (AccECN) Feedback in TCP More Accurate Explicit Congestion Notification (AccECN) Feedback in TCP
Abstract Abstract
Explicit Congestion Notification (ECN) is a mechanism by which Explicit Congestion Notification (ECN) is a mechanism by which
network nodes can mark IP packets instead of dropping them to network nodes can mark IP packets instead of dropping them to
indicate incipient congestion to the endpoints. Receivers with an indicate incipient congestion to the endpoints. Receivers with an
ECN-capable transport protocol feed back this information to the ECN-capable transport protocol feed back this information to the
sender. ECN was originally specified for TCP in such a way that only sender. ECN was originally specified for TCP in such a way that only
skipping to change at line 431 skipping to change at line 431
options. options.
The essential feedback part overloads the previous definition of the The essential feedback part overloads the previous definition of the
three flags in the TCP header that had been assigned for use by three flags in the TCP header that had been assigned for use by
Classic ECN. This design choice deliberately allows AccECN peers to Classic ECN. This design choice deliberately allows AccECN peers to
replace the Classic ECN feedback protocol, rather than leaving replace the Classic ECN feedback protocol, rather than leaving
Classic ECN feedback intact and adding more accurate feedback Classic ECN feedback intact and adding more accurate feedback
separately because: separately because:
* this efficiently reuses scarce TCP header space, given TCP Option * this efficiently reuses scarce TCP header space, given TCP Option
space is approaching saturation. space is approaching saturation;
* a single upgrade path for the TCP protocol is preferable to a fork * a single upgrade path for the TCP protocol is preferable to a fork
in the design that modifies the TCP header to convey all ECN in the design that modifies the TCP header to convey all ECN
feedback. feedback;
* otherwise, Classic and Accurate ECN feedback could give * otherwise, Classic and Accurate ECN feedback could give
conflicting feedback about the same segment, which could open up conflicting feedback about the same segment, which could open up
new security concerns and make implementations unnecessarily new security concerns and make implementations unnecessarily
complex. complex;
* middleboxes are more likely to faithfully forward the TCP ECN * middleboxes are more likely to faithfully forward the TCP ECN
flags than newly defined areas of the TCP header. flags than newly defined areas of the TCP header.
AccECN is designed to work even if the supplementary feedback part is AccECN is designed to work even if the supplementary feedback part is
removed or zeroed out, as long as the essential feedback part gets removed or zeroed out, as long as the essential feedback part gets
through. through.
2.1. Capability Negotiation 2.1. Capability Negotiation
skipping to change at line 494 skipping to change at line 494
some or all of the byte counters can be optionally carried in an some or all of the byte counters can be optionally carried in an
AccECN Option. For efficient use of limited option space, two AccECN Option. For efficient use of limited option space, two
alternative forms of the AccECN Option are specified with the fields alternative forms of the AccECN Option are specified with the fields
in the opposite order to each other. in the opposite order to each other.
2.3. Delayed ACKs and Resilience Against ACK Loss 2.3. Delayed ACKs and Resilience Against ACK Loss
With both the ACE and the AccECN Option mechanisms, the Data Receiver With both the ACE and the AccECN Option mechanisms, the Data Receiver
continually repeats the current LSBs of each of its respective continually repeats the current LSBs of each of its respective
counters. There is no need to acknowledge these continually repeated counters. There is no need to acknowledge these continually repeated
counters, so the Congestion Window Reduced (CWR) mechanism of counters, so the CWR mechanism of [RFC3168] is no longer used. Even
[RFC3168] is no longer used. Even if some ACKs are lost, the Data if some ACKs are lost, the Data Sender ought to be able to infer how
Sender ought to be able to infer how much to increment its own much to increment its own counters, even if the protocol field has
counters, even if the protocol field has wrapped. wrapped.
The 3-bit ACE field can wrap fairly frequently. Therefore, even if The 3-bit ACE field can wrap fairly frequently. Therefore, even if
it appears to have incremented by one (say), the field might have it appears to have incremented by one (say), the field might have
actually cycled completely and then incremented by one. The Data actually cycled completely and then incremented by one. The Data
Receiver is not allowed to delay sending an ACK to such an extent Receiver is not allowed to delay sending an ACK to such an extent
that the ACE field would cycle. However, ACKs received at the Data that the ACE field would cycle. However, ACKs received at the Data
Sender could still cycle because a whole sequence of ACKs carrying Sender could still cycle because a whole sequence of ACKs carrying
intervening values of the field might all be lost or delayed in intervening values of the field might all be lost or delayed in
transit. transit.
skipping to change at line 661 skipping to change at line 661
The procedures for retransmission of SYNs or SYN/ACKs are given in The procedures for retransmission of SYNs or SYN/ACKs are given in
Section 3.1.4. Section 3.1.4.
It is RECOMMENDED that the AccECN protocol be implemented alongside It is RECOMMENDED that the AccECN protocol be implemented alongside
Selective Acknowledgement (SACK) [RFC2018]. If SACK is implemented Selective Acknowledgement (SACK) [RFC2018]. If SACK is implemented
with AccECN, Duplicate Selective Acknowledgement (D-SACK) [RFC2883] with AccECN, Duplicate Selective Acknowledgement (D-SACK) [RFC2883]
MUST also be implemented. MUST also be implemented.
3.1.2. Backward Compatibility 3.1.2. Backward Compatibility
The three flags are set to 1 to indicate AccECN support on the SYN The three flags set to 1 indicate AccECN support on the SYN have been
have been carefully chosen to enable natural fall-back to prior carefully chosen to enable natural fall-back to prior stages in the
stages in the evolution of ECN. Table 2 tabulates all the evolution of ECN. Table 2 tabulates all the negotiation
negotiation possibilities for ECN-related capabilities that involve possibilities for ECN-related capabilities that involve at least one
at least one AccECN-capable host. The entries in the first two AccECN-capable host. The entries in the first two columns have been
columns have been abbreviated, as follows: abbreviated, as follows:
AccECN: Supports more Accurate ECN feedback (the present AccECN: Supports more Accurate ECN feedback (the present
specification). specification).
Nonce: Supports ECN-nonce feedback [RFC3540]. Nonce: Supports ECN-nonce feedback [RFC3540].
ECN: Supports 'Classic' ECN feedback [RFC3168]. ECN: Supports 'Classic' ECN feedback [RFC3168].
No ECN: Not ECN-capable. Implicit congestion notification using No ECN: Not ECN-capable. Implicit congestion notification using
packet drop. packet drop.
skipping to change at line 950 skipping to change at line 950
as the SYN that first caused the Server to open the connection. as the SYN that first caused the Server to open the connection.
An 'Acceptable' packet is defined in Section 1.3. An 'Acceptable' packet is defined in Section 1.3.
Handling SYNs or SYN/ACKs of multiple types (e.g., fall-back): Handling SYNs or SYN/ACKs of multiple types (e.g., fall-back):
* Any implementation that supports AccECN: * Any implementation that supports AccECN:
- MUST NOT switch into a different feedback mode than the one it - MUST NOT switch into a different feedback mode than the one it
first entered according to Table 2, no matter whether it first entered according to Table 2, no matter whether it
subsequently receives valid SYNs or Acceptable SYN/ACKs of subsequently receives valid SYNs or Acceptable SYN/ACKs of
different types. different types;
- SHOULD ignore the TCP-ECN flags in SYNs or SYN/ACKs that are - SHOULD ignore the TCP-ECN flags in SYNs or SYN/ACKs that are
received after the implementation reaches the ESTABLISHED received after the implementation reaches the ESTABLISHED
state, in line with the general TCP approach [RFC9293]. state, in line with the general TCP approach [RFC9293];
Reason: Reaching ESTABLISHED state implies that at least one Reason: Reaching ESTABLISHED state implies that at least one
SYN and one SYN/ACK have successfully been delivered. And all SYN and one SYN/ACK have successfully been delivered. And all
the rules for handshake fall-back are designed to work based on the rules for handshake fall-back are designed to work based on
those packets that successfully traverse the path, whatever those packets that successfully traverse the path, whatever
other handshake packets are lost or delayed. other handshake packets are lost or delayed.
- MUST NOT send a 'Classic' ECN-setup SYN [RFC3168] with - MUST NOT send a 'Classic' ECN-setup SYN [RFC3168] with
(AE,CWR,ECE) = (0,1,1) and a SYN with (AE,CWR,ECE) = (1,1,1) (AE,CWR,ECE) = (0,1,1) and a SYN with (AE,CWR,ECE) = (1,1,1)
requesting AccECN feedback within the same connection; requesting AccECN feedback within the same connection;
skipping to change at line 977 skipping to change at line 977
(AE,CWR,ECE) = (0,0,1) and a SYN/ACK agreeing to use AccECN (AE,CWR,ECE) = (0,0,1) and a SYN/ACK agreeing to use AccECN
feedback within the same connection; feedback within the same connection;
- MUST reset the connection with a RST packet, if it receives a - MUST reset the connection with a RST packet, if it receives a
'Classic' ECN-setup SYN with (AE,CWR,ECE) = (0,1,1) and a SYN 'Classic' ECN-setup SYN with (AE,CWR,ECE) = (0,1,1) and a SYN
requesting AccECN feedback during the same handshake; requesting AccECN feedback during the same handshake;
- MUST reset the connection with a RST packet, if it receives - MUST reset the connection with a RST packet, if it receives
'Classic' ECN-setup SYN/ACK with (AE,CWR,ECE) = (0,0,1) and a 'Classic' ECN-setup SYN/ACK with (AE,CWR,ECE) = (0,0,1) and a
SYN/ACK agreeing to use AccECN feedback during the same SYN/ACK agreeing to use AccECN feedback during the same
handshake; handshake.
The last four rules are necessary because, if one peer were to The last four rules are necessary because, if one peer were to
negotiate the feedback mode in two different types of handshake, negotiate the feedback mode in two different types of handshake,
it would not be possible for the other peer to know for certain it would not be possible for the other peer to know for certain
which handshake packet(s) the other end had eventually received or which handshake packet(s) the other end had eventually received or
in which order it received them. So, in the absence of these in which order it received them. So, in the absence of these
rules, the two peers could end up using different ECN feedback rules, the two peers could end up using different ECN feedback
modes without knowing it. modes without knowing it.
* A host in AccECN mode that is feeding back the IP ECN field on a * A host in AccECN mode that is feeding back the IP ECN field on a
SYN or SYN/ACK: SYN or SYN/ACK:
- MUST feed back the IP ECN field on the latest valid SYN or - MUST feed back the IP ECN field on the latest valid SYN or
acceptable SYN/ACK to arrive. acceptable SYN/ACK to arrive.
* A TCP Server already in AccECN mode: * A TCP Server already in AccECN mode:
- SHOULD acknowledge a valid SYN arriving with (AE,CWR,ECE) = - SHOULD acknowledge a valid SYN arriving with (AE,CWR,ECE) =
(0,0,0) by emitting an AccECN SYN/ACK (with the appropriate (0,0,0) by emitting an AccECN SYN/ACK (with the appropriate
combination of TCP-ECN flags to feed back the IP ECN field of combination of TCP-ECN flags to feed back the IP ECN field of
this latest SYN). this latest SYN);
- MAY acknowledge a valid SYN arriving with (AE,CWR,ECE) = - MAY acknowledge a valid SYN arriving with (AE,CWR,ECE) =
(0,0,0) by sending a SYN/ACK with (AE,CWR,ECE) = (0,0,0). (0,0,0) by sending a SYN/ACK with (AE,CWR,ECE) = (0,0,0).
Rationale: When a SYN arrives with (AE,CWR,ECE) = (0,0,0) at a TCP Rationale: When a SYN arrives with (AE,CWR,ECE) = (0,0,0) at a TCP
Server that is already in AccECN mode, it implies that the TCP Server that is already in AccECN mode, it implies that the TCP
Client had probably not received the previous AccECN SYN/ACK Client had probably not received the previous AccECN SYN/ACK
emitted by the TCP Server. Therefore, the first bullet recommends emitted by the TCP Server. Therefore, the first bullet recommends
attempting at least one more AccECN SYN/ACK. Nonetheless, the attempting at least one more AccECN SYN/ACK. Nonetheless, the
second bullet recognizes that the Server might eventually need to second bullet recognizes that the Server might eventually need to
skipping to change at line 1038 skipping to change at line 1038
Sending ECT: Sending ECT:
* Any implementation that supports AccECN: * Any implementation that supports AccECN:
- MUST NOT set ECT if it is in Not ECN feedback mode. - MUST NOT set ECT if it is in Not ECN feedback mode.
A Data Sender in AccECN mode: A Data Sender in AccECN mode:
- SHOULD set an ECT codepoint in the IP header of packets to - SHOULD set an ECT codepoint in the IP header of packets to
indicate to the network that the transport is capable and indicate to the network that the transport is capable and
willing to participate in ECN for this packet. willing to participate in ECN for this packet;
- MAY not set ECT on any packet (for instance if it has reason to - MAY not set ECT on any packet (for instance if it has reason to
believe such a packet would be blocked). believe such a packet would be blocked).
A TCP Server in AccECN mode: A TCP Server in AccECN mode:
- MUST NOT set ECT on any packet for the rest of the connection, - MUST NOT set ECT on any packet for the rest of the connection,
if it has received or sent at least one valid SYN or Acceptable if it has received or sent at least one valid SYN or Acceptable
SYN/ACK with (AE,CWR,ECE) = (0,0,0) during the handshake. SYN/ACK with (AE,CWR,ECE) = (0,0,0) during the handshake.
skipping to change at line 1062 skipping to change at line 1062
mode, it can be certain that the Server is already in AccECN mode, it can be certain that the Server is already in AccECN
feedback mode. feedback mode.
Congestion response: Congestion response:
* A host in AccECN mode: * A host in AccECN mode:
- is obliged to respond appropriately to AccECN feedback that - is obliged to respond appropriately to AccECN feedback that
indicates there were ECN marks on packets it had previously indicates there were ECN marks on packets it had previously
sent, where 'appropriately' is defined in Section 6.1 of sent, where 'appropriately' is defined in Section 6.1 of
[RFC3168] and updated by Sections 2.1 and 4.1 of [RFC8311]. [RFC3168] and updated by Sections 2.1 and 4.1 of [RFC8311];
- is still obliged to respond appropriately to congestion - is still obliged to respond appropriately to congestion
feedback, even when it is solely sending non-ECN-capable feedback, even when it is solely sending non-ECN-capable
packets (for rationale, some examples and some exceptions see packets (for rationale, some examples and some exceptions see
Sections 3.2.2.3 and 3.2.2.4). Sections 3.2.2.3 and 3.2.2.4);
- is still obliged to respond appropriately to congestion - is still obliged to respond appropriately to congestion
feedback, even if it has sent or received a SYN or SYN/ACK feedback, even if it has sent or received a SYN or SYN/ACK
packet with (AE,CWR,ECE) = (0,0,0) during the handshake. packet with (AE,CWR,ECE) = (0,0,0) during the handshake;
- MUST NOT set CWR to indicate that it has received and responded - MUST NOT set CWR to indicate that it has received and responded
to indications of congestion. to indications of congestion.
For the avoidance of doubt, this is unlike an RFC 3168 data For the avoidance of doubt, this is unlike an RFC 3168 data
sender and this does not preclude the Data Sender from setting sender and this does not preclude the Data Sender from setting
the bits of the ACE counter field, which includes an overloaded the bits of the ACE counter field, which includes an overloaded
use of the same bit. use of the same bit.
Receiving ECT: Receiving ECT:
skipping to change at line 1147 skipping to change at line 1147
report the most recent value, no matter whether it is in a pure ACK, report the most recent value, no matter whether it is in a pure ACK,
or an ACK piggybacked on a packet used by the other half-connection, or an ACK piggybacked on a packet used by the other half-connection,
whether a new payload data or a retransmission. Therefore, the whether a new payload data or a retransmission. Therefore, the
feedback piggybacked on a retransmitted packet is unlikely to be the feedback piggybacked on a retransmitted packet is unlikely to be the
same as the feedback on the original packet. same as the feedback on the original packet.
3.2.1. Initialization of Feedback Counters 3.2.1. Initialization of Feedback Counters
When a host first enters AccECN mode, in its role as a Data Receiver, When a host first enters AccECN mode, in its role as a Data Receiver,
it initializes its counters to r.cep = 5, r.e0b = r.e1b = 1, and it initializes its counters to r.cep = 5, r.e0b = r.e1b = 1, and
r.ceb = 0, r.ceb = 0.
Non-zero initial values are used to support a stateless handshake Non-zero initial values are used to support a stateless handshake
(see Section 5.1) and to be distinct from cases where the fields are (see Section 5.1) and to be distinct from cases where the fields are
incorrectly zeroed (e.g., by middleboxes -- see Section 3.2.3.2.4). incorrectly zeroed (e.g., by middleboxes -- see Section 3.2.3.2.4).
When a host enters AccECN mode, in its role as a Data Sender, it When a host enters AccECN mode, in its role as a Data Sender, it
initializes its counters to s.cep = 5, s.e0b = s.e1b = 1, and s.ceb = initializes its counters to s.cep = 5, s.e0b = s.e1b = 1, and s.ceb =
0. 0.
3.2.2. The ACE Field 3.2.2. The ACE Field
skipping to change at line 1223 skipping to change at line 1223
data to include on the ACK), it SHOULD first send a pure ACK that data to include on the ACK), it SHOULD first send a pure ACK that
does satisfy these conditions (see Section 5.2), so that it can feed does satisfy these conditions (see Section 5.2), so that it can feed
back which of the four values of the IP ECN field arrived on the SYN/ back which of the four values of the IP ECN field arrived on the SYN/
ACK. A valid exception to this "SHOULD" would be where the ACK. A valid exception to this "SHOULD" would be where the
implementation will only be used in an environment where mangling of implementation will only be used in an environment where mangling of
the ECN field is unlikely. the ECN field is unlikely.
The TCP Client MUST also use the handshake encoding for the pure ACK The TCP Client MUST also use the handshake encoding for the pure ACK
of any retransmitted SYN/ACK that confirms that the TCP Server of any retransmitted SYN/ACK that confirms that the TCP Server
supports AccECN. If the final ACK of the handshake does not arrive supports AccECN. If the final ACK of the handshake does not arrive
before its retransmission timer expires, the TCP Server is follow the before its retransmission timer expires, the procedure that the TCP
procedure given in Section 3.1.4.2. Server will follow is given in Section 3.1.4.2.
+==================+================+=====================+ +==================+================+=====================+
| IP ECN Codepoint | ACE on Pure | r.cep of TCP Client | | IP ECN Codepoint | ACE on Pure | r.cep of TCP Client |
| on SYN/ACK | ACK of SYN/ACK | in AccECN Mode | | on SYN/ACK | ACK of SYN/ACK | in AccECN Mode |
+==================+================+=====================+ +==================+================+=====================+
| Not-ECT | 0b010 | 5 | | Not-ECT | 0b010 | 5 |
+------------------+----------------+---------------------+ +------------------+----------------+---------------------+
| ECT(1) | 0b011 | 5 | | ECT(1) | 0b011 | 5 |
+------------------+----------------+---------------------+ +------------------+----------------+---------------------+
| ECT(0) | 0b100 | 5 | | ECT(0) | 0b100 | 5 |
skipping to change at line 1498 skipping to change at line 1498
mangling of the IP ECN field is asymmetric, which is currently common mangling of the IP ECN field is asymmetric, which is currently common
over some mobile networks [Mandalari18]. In this case, one end might over some mobile networks [Mandalari18]. In this case, one end might
see no unsafe transition and continue sending ECN-capable packets, see no unsafe transition and continue sending ECN-capable packets,
while the other end sees an unsafe transition and stops sending ECN- while the other end sees an unsafe transition and stops sending ECN-
capable packets. capable packets.
Invalid transitions of the IP ECN field are defined in Section 18 of Invalid transitions of the IP ECN field are defined in Section 18 of
the Classic ECN specification [RFC3168] and repeated here for the Classic ECN specification [RFC3168] and repeated here for
convenience: convenience:
* the Not-ECT codepoint changes. * the Not-ECT codepoint changes;
* either ECT codepoint transitions to Not-ECT. * either ECT codepoint transitions to Not-ECT;
* the CE codepoint changes. * the CE codepoint changes.
RFC 3168 says that a router that changes ECT to Not-ECT is invalid RFC 3168 says that a router that changes ECT to Not-ECT is invalid
but safe. However, from a host's viewpoint, this transition is but safe. However, from a host's viewpoint, this transition is
unsafe because it could be the result of two transitions at different unsafe because it could be the result of two transitions at different
routers on the path: ECT to CE (safe) then CE to Not-ECT (unsafe). routers on the path: ECT to CE (safe) then CE to Not-ECT (unsafe).
This scenario could well happen where an ECN-enabled home router This scenario could well happen where an ECN-enabled home router
congests its upstream mobile broadband bottleneck link, then the congests its upstream mobile broadband bottleneck link, then the
ingress to the mobile network clears the ECN field [Mandalari18]. ingress to the mobile network clears the ECN field [Mandalari18].
skipping to change at line 1532 skipping to change at line 1532
If AccECN has been successfully negotiated, the Data Sender MAY check If AccECN has been successfully negotiated, the Data Sender MAY check
the value of the ACE counter in the first feedback packet (with or the value of the ACE counter in the first feedback packet (with or
without data) that arrives after the three-way handshake. If the without data) that arrives after the three-way handshake. If the
value of this ACE field is found to be zero (0b000), for the value of this ACE field is found to be zero (0b000), for the
remainder of the half-connection the Data Sender ought to send non- remainder of the half-connection the Data Sender ought to send non-
ECN-capable packets and it is advised not to respond to any feedback ECN-capable packets and it is advised not to respond to any feedback
of CE markings. of CE markings.
Reason: the symptoms imply any or all of the following: Reason: the symptoms imply any or all of the following:
* the remote peer has somehow entered Not ECN feedback mode. * the remote peer has somehow entered Not ECN feedback mode;
* a broken remote TCP implementation. * a broken remote TCP implementation;
* potential mangling of the ECN fields in the TCP headers (although * potential mangling of the ECN fields in the TCP headers (although
unlikely given they clearly survived during the handshake). unlikely given they clearly survived during the handshake).
This advice is not stated normatively (in capitals), because the best This advice is not stated normatively (in capitals), because the best
strategy might depend on the likelihood to experience these strategy might depend on the likelihood to experience these
scenarios, which can only be known at the time of deployment. scenarios, which can only be known at the time of deployment.
Note that a host in AccECN mode MUST continue to provide Accurate ECN Note that a host in AccECN mode MUST continue to provide Accurate ECN
feedback to its peer, even if it is no longer sending ECT itself over feedback to its peer, even if it is no longer sending ECT itself over
skipping to change at line 1586 skipping to change at line 1586
The following rules define when the receiver of a packet in AccECN The following rules define when the receiver of a packet in AccECN
mode emits an ACK: mode emits an ACK:
Change-Triggered ACKs: An AccECN Data Receiver SHOULD emit an ACK Change-Triggered ACKs: An AccECN Data Receiver SHOULD emit an ACK
whenever a data packet marked CE arrives after the previous packet whenever a data packet marked CE arrives after the previous packet
was not CE. was not CE.
Even though this rule is stated as a "SHOULD", it is important for Even though this rule is stated as a "SHOULD", it is important for
a transition to trigger an ACK if at all possible. The only valid a transition to trigger an ACK if at all possible. The only valid
exception to this rule is due to large receive offload (LRO) or exception to this rule is due to Large Receive Offload (LRO) or
generic receive offload (GRO) as further described below. Generic Receive Offload (GRO) as further described below.
For the avoidance of doubt, this rule is deliberately worded to For the avoidance of doubt, this rule is deliberately worded to
apply solely when _data_ packets arrive, but the comparison with apply solely when _data_ packets arrive, but the comparison with
the previous packet includes any packet, not just data packets. the previous packet includes any packet, not just data packets.
Increment-Triggered ACKs: An AccECN receiver of a packet MUST emit Increment-Triggered ACKs: An AccECN receiver of a packet MUST emit
an ACK if 'n' CE marks have arrived since the previous ACK. If an ACK if 'n' CE marks have arrived since the previous ACK. If
there is unacknowledged data at the receiver, 'n' SHOULD be 2. If there is unacknowledged data at the receiver, 'n' SHOULD be 2. If
there is no unacknowledged data at the receiver, 'n' SHOULD be 3 there is no unacknowledged data at the receiver, 'n' SHOULD be 3
and MUST be no less than 3. In either case, 'n' MUST be no and MUST be no less than 3. In either case, 'n' MUST be no
skipping to change at line 2074 skipping to change at line 2074
For the avoidance of doubt, this rule does not concern the arrival For the avoidance of doubt, this rule does not concern the arrival
of control packets with no payload, because they cannot alter any of control packets with no payload, because they cannot alter any
byte counters. byte counters.
Continual Repetition: Otherwise, if arriving packets continue to Continual Repetition: Otherwise, if arriving packets continue to
increment the same byte counter: increment the same byte counter:
* the Data Receiver SHOULD include a counter that has continued * the Data Receiver SHOULD include a counter that has continued
to increment on the next scheduled ACK following a change- to increment on the next scheduled ACK following a change-
triggered AccECN TCP Option. triggered AccECN TCP Option;
* while the same counter continues to increment, it SHOULD * while the same counter continues to increment, it SHOULD
include the counter every n ACKs as consistently as possible, include the counter every n ACKs as consistently as possible,
where n can be chosen by the implementer. where n can be chosen by the implementer;
* It SHOULD always include an AccECN Option if the r.ceb counter * it SHOULD always include an AccECN Option if the r.ceb counter
is incrementing and it MAY include an AccECN Option if r.ec0b is incrementing and it MAY include an AccECN Option if r.ec0b
or r.ec1b is incrementing. or r.ec1b is incrementing;
* It SHOULD include each counter at least once for every 2^22 * it SHOULD include each counter at least once for every 2^22
bytes incremented to prevent overflow during continual bytes incremented to prevent overflow during continual
repetition. repetition.
The above rules complement those in Section 3.2.2.5, which determine The above rules complement those in Section 3.2.2.5, which determine
when to generate an ACK irrespective of whether an AccECN TCP Option when to generate an ACK irrespective of whether an AccECN TCP Option
is to be included. is to be included.
The recommended scheme is intended as a simple way to ensure that all The recommended scheme is intended as a simple way to ensure that all
the relevant byte counters will be carried on any ACK that reaches the relevant byte counters will be carried on any ACK that reaches
the Data Sender, no matter how many pure ACKs are filtered or the Data Sender, no matter how many pure ACKs are filtered or
 End of changes. 26 change blocks. 
36 lines changed or deleted 36 lines changed or added

This html diff was produced by rfcdiff 1.48.