diff options
author | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-03 07:47:41 +0000 |
---|---|---|
committer | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-03 07:47:41 +0000 |
commit | fee17f78c16789e740b050327e67abe76b500884 (patch) | |
tree | e6697c04381916b358fbc6759043ab28b9be56c5 /net/quic/congestion_control/tcp_cubic_sender.h | |
parent | 7016f66d683e581d805c25cbde4db1fea933b255 (diff) | |
download | chromium_src-fee17f78c16789e740b050327e67abe76b500884.zip chromium_src-fee17f78c16789e740b050327e67abe76b500884.tar.gz chromium_src-fee17f78c16789e740b050327e67abe76b500884.tar.bz2 |
Land recent QUIC changes.
Count the number of retransmissions for a packet due to RTO and explicit nacks and implement exponential backoff based on number of retransmissions.
Merge internal change: 41823946
QuicConnection now packetizes acks and congestion control frames even more lazily and packs control frames with up to 1 stream frame.
Merge internal change: 41805161
Remove nitty-gritties of QuicFramer from QuicTimeWaitListManager and remove some static methods from QuicFramer.
Merge internal change: 41795314
Store socket addresses in QuicConnection.h instead of pushing it down to QuicFramer.h and getting it back from there.
Merge internal change: 41768211
Retransmit largest_observed_ packet if its missing.
Merge internal change: 41743584
Split framer packet creation into size determination and packet creation methods in order to ensure the maximum number of frames are fit into a single packet.
Merge internal change: 41702016
Handle packet reordering for queued packets.
Merge internal change: 41701179
Bug fix for retransmission order.
Merge internal change: 41638847
Adding basic dispatcher stats for QUIC
Merge internal change: 41630921
Minor fixes in quic_connection.cc
Merge internal change: 41610652
Use priority queue to maintain the list of sequence numbers to be retransmitted. This will enable us to do an exponential backoff for lost packets.
Merge internal change: 41582526
Adding DISALLOW_COPY_AND_ASSIGN to all congestion control classes that were missing it. And a few nits.
Merge internal change: 41580553
Break circular dependency between quic_protocol.h and quic_bandwidth.h
Merge internal change: 41578776
Fix uninitialized memory access in quic_framer_test.
Merge internal change: 41558816
Cleanup, consolidated quic_send_scheduler with quic_congestion_manager
Merge internal change: 41549823
Set the retransmit alarm only when we successfully write the packet to the socket instead of setting it when we attempt to write.
Merge internal change: 41547192
Introduced QuicByteCount and moved TCP receive_bytes packing to QuicFramer where it belongs.
Merge internal change: 41546840
Fix a bug with how FEC groups were being created in QUIC. Now opening multiple and always closing the group.
Merge internal change: 41538221
Removing QUIC logspam
Merge internal change: 41537896
Exposing ReadPublicHeader and ReadPublicResetPacket static methods which don't take a dependency on reader_(unlike Process..() methods).
Merge internal change: 41535886
Use "test" not "testing" for test namespaces to be consistent with other QUIC code.
Merge internal change: 41534488
Fix a number of minor issues that came up in landing recent chrome changes.
Merge internal change: 41531793
Removed the QuicReceiptMetricsCollector and started using the ReceiveAlgorithmInterface directly in the CongestionManager. The QuicReceiptMetricsCollector did not provide any functionality.
Merge internal change: 41486246
Integrating new quic bandwidth class
Merge internal change: 41473682
R=jar@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/12145002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180299 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/congestion_control/tcp_cubic_sender.h')
-rw-r--r-- | net/quic/congestion_control/tcp_cubic_sender.h | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/net/quic/congestion_control/tcp_cubic_sender.h b/net/quic/congestion_control/tcp_cubic_sender.h index 54efedd..c91642c 100644 --- a/net/quic/congestion_control/tcp_cubic_sender.h +++ b/net/quic/congestion_control/tcp_cubic_sender.h @@ -14,11 +14,17 @@ #include "net/quic/congestion_control/cubic.h" #include "net/quic/congestion_control/hybrid_slow_start.h" #include "net/quic/congestion_control/send_algorithm_interface.h" +#include "net/quic/quic_bandwidth.h" #include "net/quic/quic_clock.h" +#include "net/quic/quic_protocol.h" #include "net/quic/quic_time.h" namespace net { +namespace test { +class TcpCubicSenderPeer; +} // namespace test + class NET_EXPORT_PRIVATE TcpCubicSender : public SendAlgorithmInterface { public: // Reno option provided for testing. @@ -29,21 +35,21 @@ class NET_EXPORT_PRIVATE TcpCubicSender : public SendAlgorithmInterface { const QuicCongestionFeedbackFrame& feedback, const SentPacketsMap& sent_packets) OVERRIDE; virtual void OnIncomingAck(QuicPacketSequenceNumber acked_sequence_number, - size_t acked_bytes, + QuicByteCount acked_bytes, QuicTime::Delta rtt) OVERRIDE; virtual void OnIncomingLoss(int number_of_lost_packets) OVERRIDE; virtual void SentPacket(QuicPacketSequenceNumber sequence_number, - size_t bytes, + QuicByteCount bytes, bool is_retransmission) OVERRIDE; virtual QuicTime::Delta TimeUntilSend(bool is_retransmission) OVERRIDE; - virtual size_t AvailableCongestionWindow() OVERRIDE; - virtual int BandwidthEstimate() OVERRIDE; + virtual QuicBandwidth BandwidthEstimate() OVERRIDE; // End implementation of SendAlgorithmInterface. - // Visible for testing. - size_t CongestionWindow(); - private: + friend class test::TcpCubicSenderPeer; + + QuicByteCount AvailableCongestionWindow(); + QuicByteCount CongestionWindow(); void Reset(); void AckAccounting(QuicTime::Delta rtt); void CongestionAvoidance(QuicPacketSequenceNumber ack); @@ -57,16 +63,16 @@ class NET_EXPORT_PRIVATE TcpCubicSender : public SendAlgorithmInterface { const bool reno_; // ACK counter for the Reno implementation. - size_t congestion_window_count_; + int64 congestion_window_count_; // Receiver side advertised window. - int receiver_congestion_window_in_bytes_; + QuicByteCount receiver_congestion_window_; // Receiver side advertised packet loss. int last_received_accumulated_number_of_lost_packets_; // Bytes in flight, aka bytes on the wire. - size_t bytes_in_flight_; + QuicByteCount bytes_in_flight_; // We need to keep track of the end sequence number of each RTT "burst". bool update_end_sequence_number_; @@ -80,6 +86,8 @@ class NET_EXPORT_PRIVATE TcpCubicSender : public SendAlgorithmInterface { // Min RTT during this session. QuicTime::Delta delay_min_; + + DISALLOW_COPY_AND_ASSIGN(TcpCubicSender); }; } // namespace net |