Draft: draft-iyengar-quic-delayed-ack

Commentary: Also rename ACK - FREQUENCY to ACK_FREQUENCY to 
 Use instead of following naming convention in the transport draft .
A variable-length integer representing the sequence number
assigned to the ACK-FREQUENCY frame by the sender to allow
receivers to ignore obsolete frames, see multiple-frames.
A variable-length integer representing the sequence number
assigned to the ACK_FREQUENCY frame by the sender to allow
receivers to ignore obsolete frames, see multiple-frames.
Receipt of invalid values in an ACK-FREQUENCY frame MUST be treated
as a connection error of type FRAME_ENCODING_ERROR.
ACK-FREQUENCY frames are ack-eliciting.  However, their loss does not
require retransmission.
An endpoint MAY send ACK-FREQUENCY frames multiple times during a
connection and with different values.
An endpoint will have committed a "max_ack_delay" value to the peer,
which specifies the maximum amount of time by which the endpoint will
delay sending acknowledgments.  When the endpoint receives an ACK-
FREQUENCY frame, it MUST update this maximum time to the value
proposed by the peer in the Update Max Ack Delay field.
An endpoint can send multiple ACK-FREQUENCY frames, and each one of
them can have different values.  An endpoint MUST use a sequence
number of 0 for the first ACK-FREQUENCY frame it constructs and
sends, and a strictly increasing value thereafter.
An endpoint MUST allow reordered ACK-FREQUENCY frames to be received
and processed, see Section 13.3 of QUIC-TRANSPORT.
On the first received ACK-FREQUENCY frame in a connection, an
endpoint MUST immediately record all values from the frame.  The
sequence number of the frame is recorded as the largest seen sequence
number.  The new Packet Tolerance and Update Max Ack Delay values
MUST be immediately used for delaying acknowledgements; see sending.
Receipt of invalid values in an ACK_FREQUENCY frame MUST be treated
as a connection error of type FRAME_ENCODING_ERROR.
ACK_FREQUENCY frames are ack-eliciting.  However, their loss does not
require retransmission.
An endpoint MAY send ACK_FREQUENCY frames multiple times during a
connection and with different values.
An endpoint will have committed a "max_ack_delay" value to the peer,
which specifies the maximum amount of time by which the endpoint will
delay sending acknowledgments.  When the endpoint receives an
ACK_FREQUENCY frame, it MUST update this maximum time to the value
proposed by the peer in the Update Max Ack Delay field.
An endpoint can send multiple ACK_FREQUENCY frames, and each one of
them can have different values.  An endpoint MUST use a sequence
number of 0 for the first ACK_FREQUENCY frame it constructs and
sends, and a strictly increasing value thereafter.
An endpoint MUST allow reordered ACK_FREQUENCY frames to be received
and processed, see Section 13.3 of QUIC-TRANSPORT.
On the first received ACK_FREQUENCY frame in a connection, an
endpoint MUST immediately record all values from the frame.  The
sequence number of the frame is recorded as the largest seen sequence
number.  The new Packet Tolerance and Update Max Ack Delay values
MUST be immediately used for delaying acknowledgements; see sending.
Prior to receiving an ACK-FREQUENCY frame, endpoints send
acknowledgements as specified in Section 13.2.1 of QUIC-TRANSPORT.
Prior to receiving an ACK_FREQUENCY frame, endpoints send
acknowledgements as specified in Section 13.2.1 of QUIC-TRANSPORT.
On sending an update to the peer's "max_ack_delay", an endpoint can
use this new value in later computations of its Probe Timeout (PTO)
period; see Section 5.2.1 of QUIC-RECOVERY.  The endpoint MUST
however wait until the ACK-FREQUENCY frame that carries this new
value is acknowledged by the peer.
On sending an update to the peer's "max_ack_delay", an endpoint can
use this new value in later computations of its Probe Timeout (PTO)
period; see Section 5.2.1 of QUIC-RECOVERY.  The endpoint MUST
however wait until the ACK_FREQUENCY frame that carries this new
value is acknowledged by the peer.
While it is expected that endpoints will have only one ACK-FREQUENCY
frame in flight at any given time, this extension does not prohibit
having more than one in flight.  Generally, when using
"max_ack_delay" for PTO computations, endpoints MUST use the maximum
of the current value and all those in flight.
While it is expected that endpoints will have only one ACK_FREQUENCY
frame in flight at any given time, this extension does not prohibit
having more than one in flight.  Generally, when using
"max_ack_delay" for PTO computations, endpoints MUST use the maximum
of the current value and all those in flight.