Landing Recent QUIC changes until 06/21/2015
commit69e64aa8c765079c96c985a7511b2f3e86361c29
authorrtenneti <rtenneti@chromium.org>
Fri, 26 Jun 2015 04:25:30 +0000 (25 21:25 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 26 Jun 2015 04:26:06 +0000 (26 04:26 +0000)
tree9414b8332ad4c39ba4fad6a58bdba5c0f9fc1068
parent2db980897d29baa03804751d3b610ad816157e06
Landing Recent QUIC changes until 06/21/2015

relnote: Implement sending path MTU discovery probe packets in QUIC.
This code is not currently invoked, so no feature flags are included.

This change introduces a new kind of packet, MTU_DISCOVERY_PACKET, which
is serialized on wire as a ping packet, but unlike ping packets, MTU
discovery packets are not retransmittable.

The key method introduced here is SendMtuPacket.  It sets the specified
MTU value, sends a padded MTU_DISCOVERY_PACKET packet (which is
represented as PING_FRAME followed by PADDING_FRAME on wire), and then
resets the method back.

There is no wire format change, hence no version change is required.

Merge internal change: 96424827
https://codereview.chromium.org/1211873005/

QUIC - Added missing override.

relnote: Minor change to keep the code similar to chromium.

Merge internal change: 96413770
https://codereview.chromium.org/1208353002/

relnote: Adding ...QuicClientSession (including refactors to existing code).

The new session class is not used in production.  the refactors to
production code should be no-ops but you never know...

Merge internal change: 96399929
https://codereview.chromium.org/1215523003/

relnote:  Don't count draining QUIC streams against the maximum stream
count for a connection.

FIXED=21781355

Merge internal change: 96339912
https://codereview.chromium.org/1212183002/

relnote:  Check that the write side is not already closed in
ReliableQuicStream::WriteOrBufferData.  No behavior change expected.

Add further check to ReliableQuicStream::WriteOrBufferData.
Expand and clarify comments for ReliableQuicStream.

Merge internal change: 96333968
https://codereview.chromium.org/1209183002/

relnote: Remove the max CWND constant.  One removal is flag protected by
FLAGS_quic_use_is_useless_packet.

Instead bases the maximum number of outstanding QUIC packets on the
client's receive window size instead of a fixed value of 1000.

Merge internal change: 96330128
https://codereview.chromium.org/1208163004/

relnote: Bring back QuicStreamSequencer::MarkConsumed

This is effectively a rollback of cr/63098466 which landed 15 months ago.

Merge internal change: 96317855ap
https://codereview.chromium.org/1210183004/

relnote: Introduce support for non-retransmittable packets into AckNotifier
interface.  No functional change.

Previously, only retransmittable packets could be handled using
AckNotifier interface.  This changelist introduces support for
non-retransmittable packets, which mostly involves removing the packets
from the listener map in case they are lost (which is not an issue for
retransmittable packets, which are retransmitted until acknowledged or
until the connection is terminated).

The intended consumer of this feature is path MTU discovery code,
which would use it to increase the packet size when larger path MTU is
discovered.

This change also introduces unit tests for AckNotifierManager, primarily
to verify that the class behaves as expected with respect to packet
retransmission and abandonment logic.

Merge internal change: 96267352
https://codereview.chromium.org/1214483004/

R=rch@chromium.org

Review URL: https://codereview.chromium.org/1213443004

Cr-Commit-Position: refs/heads/master@{#336335}
43 files changed:
net/quic/congestion_control/tcp_cubic_bytes_sender.cc
net/quic/congestion_control/tcp_cubic_bytes_sender_test.cc
net/quic/congestion_control/tcp_cubic_sender.cc
net/quic/congestion_control/tcp_cubic_sender_test.cc
net/quic/congestion_control/tcp_loss_algorithm_test.cc
net/quic/congestion_control/time_loss_algorithm_test.cc
net/quic/quic_ack_notifier_manager.cc
net/quic/quic_ack_notifier_manager.h
net/quic/quic_ack_notifier_manager_test.cc
net/quic/quic_connection.cc
net/quic/quic_connection.h
net/quic/quic_connection_test.cc
net/quic/quic_flags.cc
net/quic/quic_flags.h
net/quic/quic_framer.cc
net/quic/quic_framer_test.cc
net/quic/quic_packet_creator.cc
net/quic/quic_packet_generator.cc
net/quic/quic_packet_generator.h
net/quic/quic_packet_generator_test.cc
net/quic/quic_protocol.cc
net/quic/quic_protocol.h
net/quic/quic_reliable_client_stream_test.cc
net/quic/quic_sent_packet_manager.cc
net/quic/quic_session.cc
net/quic/quic_session.h
net/quic/quic_session_test.cc
net/quic/quic_stream_sequencer.cc
net/quic/quic_stream_sequencer.h
net/quic/quic_stream_sequencer_test.cc
net/quic/quic_unacked_packet_map.cc
net/quic/quic_unacked_packet_map.h
net/quic/quic_unacked_packet_map_test.cc
net/quic/reliable_quic_stream.cc
net/quic/reliable_quic_stream.h
net/quic/reliable_quic_stream_test.cc
net/quic/test_tools/quic_session_peer.cc
net/quic/test_tools/quic_session_peer.h
net/quic/test_tools/quic_test_utils.h
net/tools/quic/end_to_end_test.cc
net/tools/quic/quic_client.h
net/tools/quic/quic_client_session.cc
net/tools/quic/quic_client_session.h