Land Recent QUIC Changes.
Add is_secure_ field to QuicSession.
This is preparation for setting different CWND, server side, for secure
vs insecure.
Merge internal change: 79338358
https://codereview.chromium.org/706043003/
Change the BBRTcpSender and TCPCubicSender to return QuicBandwidth::Zero
when there are no rtt samples.
Also changes HasReliableBandwidthEstimate to ensure the relevant rtt
measurements are initialized.
Merge internal change: 79284883
https://codereview.chromium.org/708833002/
Remove unused constructor in QuicTestClient
Merge internal change: 79279394
https://codereview.chromium.org/697053007/
Remove QUIC's RttStats SmoothedRtt in favor of smoothed_rtt() and
checking for zero in cases when a non-zero value is required.
Merge internal change: 79219848
https://codereview.chromium.org/706953002/
Fix QUIC end_to_end_test flakiness introduced by "Merge internal change:
78946498"
Should affect tests only.
"Merge internal change: 789464989 introduced some new tests for the
"Small Red Button", a flag that, when enabled, forces QUIC to disconnect
all active sessions and start rejecting traffic.
Problem:
The new change made the end_to_end tests extremely flaky.
Many tests for the new flag would check conditions on the client after
the flag had been enabled. When the flag change itself took time on
the server, the client would check the conditions too prematurely, and
the test would fail.
In addition, one test checked that a connection ID on the time-wait
list remained so after some actions had taken place. The time-wait
list timeout is configured to 5 seconds, by default. Sometimes the
connection ID would still be on the list, and sometimes not, depending
on the timing of the test.
Solution:
- Made the timeout on the time-wait list configurable via flag, so
that it can be controlled by the tests.
- One internal test now configures the time-wait list timeout to be
essentially infinite.
Merge internal change: 79217544
https://codereview.chromium.org/708443004/
Remove setting of initial CWND in quic_server. The comment is wrong -
this isn't setting flow control stuff at all, and we don't need to send
an initial CWND as the client will use the default.
Merge internal change: 79189335
https://codereview.chromium.org/697053006/
Remove redundant initial congestion window constant in QUIC.
Merge internal change: 79186360
https://codereview.chromium.org/704133004/
Rename QUIC RST code QUIC_RST_FLOW_CONTROL_ACCOUNTING to
QUIC_RST_ACKNOWLEDGEMENT. No behavior change.
Merge internal change: 79177755
https://codereview.chromium.org/709503002/
Restore QUIC's RttStats min_rtt() and remove MinRtt.
Merge internal change: 79173178
https://codereview.chromium.org/703223002/
Remove deprecated flag FLAGS_quic_timeouts_only_from_alarms.
Merge internal change: 79110291
https://codereview.chromium.org/704303003/
Simplify the mechanism for converting the QUIC congestion window from
bytes to number of packets or to "number of TCP MSSs".
Adds GetCongestionWindowInTcpMss() and EstimateMaxPacketsInFlight()
methods to QuicSentPacketManager. Removes congestion_window and
slowstart_threshold fields from QuicConnectionStats.
Merge internal change: 79090805
https://codereview.chromium.org/706933003/
[email protected]
Review URL: https://codereview.chromium.org/703263003
Cr-Commit-Position: refs/heads/master@{#303134}
diff --git a/net/quic/quic_sent_packet_manager.h b/net/quic/quic_sent_packet_manager.h
index cccacaba..f82e34b 100644
--- a/net/quic/quic_sent_packet_manager.h
+++ b/net/quic/quic_sent_packet_manager.h
@@ -182,15 +182,22 @@
const QuicSustainedBandwidthRecorder& SustainedBandwidthRecorder() const;
- // Returns the size of the current congestion window in bytes. Note, this is
- // not the *available* window. Some send algorithms may not use a congestion
- // window and will return 0.
- QuicByteCount GetCongestionWindow() const;
+ // Returns the size of the current congestion window in number of
+ // kDefaultTCPMSS-sized segments. Note, this is not the *available* window.
+ // Some send algorithms may not use a congestion window and will return 0.
+ QuicPacketCount GetCongestionWindowInTcpMss() const;
- // Returns the size of the slow start congestion window in bytes,
- // aka ssthresh. Some send algorithms do not define a slow start
- // threshold and will return 0.
- QuicByteCount GetSlowStartThreshold() const;
+ // Returns the number of packets of length |max_packet_length| which fit in
+ // the current congestion window. More packets may end up in flight if the
+ // congestion window has been recently reduced, of if non-full packets are
+ // sent.
+ QuicPacketCount EstimateMaxPacketsInFlight(
+ QuicByteCount max_packet_length) const;
+
+ // Returns the size of the slow start congestion window in nume of 1460 byte
+ // TCP segments, aka ssthresh. Some send algorithms do not define a slow
+ // start threshold and will return 0.
+ QuicPacketCount GetSlowStartThresholdInTcpMss() const;
// Enables pacing if it has not already been enabled.
void EnablePacing();