diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 9ac12db6aa..405527b728 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -1106,7 +1106,7 @@ OnAckReceived(ack, pn_space): // Process ECN information if present. if (ACK frame contains ECN information): - ProcessECN(ack) + ProcessECN(ack, pn_space) for acked_packet in newly_acked_packets: OnPacketAcked(acked_packet.packet_number, pn_space) @@ -1338,10 +1338,10 @@ kPersistentCongestionThreshold: Variables required to implement the congestion control mechanisms are described in this section. -ecn_ce_counter: -: The highest value reported for the ECN-CE counter by the peer in an ACK - frame. This variable is used to detect increases in the reported ECN-CE - counter. +ecn_ce_counters\[kPacketNumberSpace]: +: The highest value reported for the ECN-CE counter in the packet number space + by the peer in an ACK frame. This value is used to detect increases in the + reported ECN-CE counter. bytes_in_flight: : The sum of the size in bytes of all sent packets that contain at least one @@ -1375,7 +1375,8 @@ variables as follows: bytes_in_flight = 0 congestion_recovery_start_time = 0 ssthresh = infinite - ecn_ce_counter = 0 + for pn_space in [ Initial, Handshake, ApplicationData ]: + ecn_ce_counters[pn_space] = 0 ~~~ @@ -1442,11 +1443,11 @@ window. Invoked when an ACK frame with an ECN section is received from the peer. ~~~ - ProcessECN(ack): + ProcessECN(ack, pn_space): // If the ECN-CE counter reported by the peer has increased, // this could be a new congestion event. - if (ack.ce_counter > ecn_ce_counter): - ecn_ce_counter = ack.ce_counter + if (ack.ce_counter > ecn_ce_counters[pn_space]): + ecn_ce_counters[pn_space] = ack.ce_counter CongestionEvent(sent_packets[ack.largest_acked].time_sent) ~~~ diff --git a/draft-ietf-quic-transport.md b/draft-ietf-quic-transport.md index 4dfe929edd..8087ac4f3a 100644 --- a/draft-ietf-quic-transport.md +++ b/draft-ietf-quic-transport.md @@ -4586,15 +4586,15 @@ The three ECN Counts are: ECT(0) Count: : A variable-length integer representing the total number of packets received - with the ECT(0) codepoint. + with the ECT(0) codepoint in the packet number space of the ACK frame. ECT(1) Count: : A variable-length integer representing the total number of packets received - with the ECT(1) codepoint. + with the ECT(1) codepoint in the packet number space of the ACK frame. CE Count: : A variable-length integer representing the total number of packets received - with the CE codepoint. + with the CE codepoint in the packet number space of the ACK frame. ECN counts are maintained separately for each packet number space.