gfe-relnote: In QUIC, add anti-amplification limit. Protected by version T099. Anti-amplification limit kicks in before address validation. Now, server can only validate address by processing HANDSHAKE encrypted packet since address validation via token is not implemented. In T099, deprecate HANDSHAKE_MODE and PTO is armed when 1) handshake is not confirmed 2) or there is packets in flight. Such that when PTO fires, at least 1 packet is sent to avoid handshake deadlock due to anti-amplification limit in case of packet losses. PiperOrigin-RevId: 264960590 Change-Id: Ib2d9749b773af9328f96c176a49b2505be006b00
diff --git a/quic/test_tools/crypto_test_utils.cc b/quic/test_tools/crypto_test_utils.cc index e3e649e..27e47b2 100644 --- a/quic/test_tools/crypto_test_utils.cc +++ b/quic/test_tools/crypto_test_utils.cc
@@ -692,6 +692,8 @@ // them into |framer|, perform the decryption with them, and then swap ther // back. QuicConnectionPeer::SwapCrypters(dest_conn, framer.framer()); + QuicConnectionPeer::AddBytesReceived( + dest_conn, source_conn->encrypted_packets_[index]->length()); if (!framer.ProcessPacket(*source_conn->encrypted_packets_[index])) { // The framer will be unable to decrypt forward-secure packets sent after // the handshake is complete. Don't treat them as handshake packets.
diff --git a/quic/test_tools/quic_connection_peer.cc b/quic/test_tools/quic_connection_peer.cc index 66d1a51..ef2ffb3 100644 --- a/quic/test_tools/quic_connection_peer.cc +++ b/quic/test_tools/quic_connection_peer.cc
@@ -332,5 +332,18 @@ connection->last_header_.form = format; } +// static +void QuicConnectionPeer::AddBytesReceived(QuicConnection* connection, + size_t length) { + if (connection->EnforceAntiAmplificationLimit()) { + connection->bytes_received_before_address_validation_ += length; + } +} + +// static +void QuicConnectionPeer::SetAddressValidated(QuicConnection* connection) { + connection->address_validated_ = true; +} + } // namespace test } // namespace quic
diff --git a/quic/test_tools/quic_connection_peer.h b/quic/test_tools/quic_connection_peer.h index d0797f5..f329a1c 100644 --- a/quic/test_tools/quic_connection_peer.h +++ b/quic/test_tools/quic_connection_peer.h
@@ -133,6 +133,8 @@ QuicConnection* connection); static void SetLastHeaderFormat(QuicConnection* connection, PacketHeaderFormat format); + static void AddBytesReceived(QuicConnection* connection, size_t length); + static void SetAddressValidated(QuicConnection* connection); }; } // namespace test