target = "https://www.rfc-editor.org/rfc/rfc9002#section-6.2.2.1" # 6.2.2.1. Before Address Validation # # Until the server has validated the client's address on the path, the # amount of data it can send is limited to three times the amount of # data received, as specified in Section 8.1 of [QUIC-TRANSPORT]. If # no additional data can be sent, the server's PTO timer MUST NOT be # armed until datagrams have been received from the client because # packets sent on PTO count against the anti-amplification limit. # # When the server receives a datagram from the client, the # amplification limit is increased and the server resets the PTO timer. # If the PTO timer is then set to a time in the past, it is executed # immediately. Doing so avoids sending new 1-RTT packets prior to # packets critical to the completion of the handshake. In particular, # this can happen when 0-RTT is accepted but the server fails to # validate the client's address. # # Since the server could be blocked until more datagrams are received # from the client, it is the client's responsibility to send packets to # unblock the server until it is certain that the server has finished # its address validation (see Section 8 of [QUIC-TRANSPORT]). That is, # the client MUST set the PTO timer if the client has not received an # acknowledgment for any of its Handshake packets and the handshake is # not confirmed (see Section 4.1.2 of [QUIC-TLS]), even if there are no # packets in flight. When the PTO fires, the client MUST send a # Handshake packet if it has Handshake keys, otherwise it MUST send an # Initial packet in a UDP datagram with a payload of at least 1200 # bytes. [[spec]] level = "MUST" quote = ''' If no additional data can be sent, the server's PTO timer MUST NOT be armed until datagrams have been received from the client because packets sent on PTO count against the anti-amplification limit. ''' [[spec]] level = "MUST" quote = ''' That is, the client MUST set the PTO timer if the client has not received an acknowledgment for any of its Handshake packets and the handshake is not confirmed (see Section 4.1.2 of [QUIC-TLS]), even if there are no packets in flight. ''' [[spec]] level = "MUST" quote = ''' When the PTO fires, the client MUST send a Handshake packet if it has Handshake keys, otherwise it MUST send an Initial packet in a UDP datagram with a payload of at least 1200 bytes. ''' [[spec]] level = "MUST" quote = ''' When the PTO fires, the client MUST send a Handshake packet if it has Handshake keys, otherwise it MUST send an Initial packet in a UDP datagram with a payload of at least 1200 bytes. '''