| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
Speculative rollout. I believe this broke Linux Aura compile
<http://build.chromium.org/p/chromium.webkit/builders/Linux%20Aura/builds/20211>
TBR=rch@chromium.org
BUG=
Review URL: https://codereview.chromium.org/244563002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264960 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Minor change to QUIC's hybrid slow start to start the round at the first
closely spaced ack pair.
Merge internal change: 65018864
https://codereview.chromium.org/242663002/
Fixes bug where a revived packet's header was not being populated
correctly from the received FEC packet's header. Added tests to verify
that revived packet headers are correctly regenerated for varying
sequence number and connection id lengths. Moving closer towards FEC
correctness in code.
Bug fixes to FEC packet revival code, and additional tests for revived
packets.
Merge internal change: 65009931
https://codereview.chromium.org/242223003/
Remove mostly redundant FramerVisitorCapturingPublicReset from
net/quic/test_tools/quic_test_utils.h.
Use SimpleQuicFramer in QuicConnectionTest and remove
mostly redundant FramerVisitorCapturingFrames.
Merge internal change: 65008278, 65067000
https://codereview.chromium.org/241643004/
Changes found while sync'ing internal source code with chromium code.
- Minor comment change.
- Added using statement.
Merge internal change: 64933978
https://codereview.chromium.org/242643002/
Large fixes and simplifications to QUIC's HybridSlowStart to correctly
determine the start and end of rounds.
Previously the assumption was that the available window was 0 only at
the end of a sending burst, but in reality that's only accurate for the
first burst, so the resulting code did not work as intended and rounds
were likely cut very short.
Merge internal change: 64911496
https://codereview.chromium.org/242633002/
Add a bytes_spuriously_retransmitted, max_packet_size, and
congestion_window to QuicConnectionStats and populate the TcpStats with
cwnd and bytes_spuriously_retransmitted.
Merge internal change: 64890213
https://codereview.chromium.org/242533002/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/243813002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264954 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
has been idle for the half idle network timeout.
Review URL: https://codereview.chromium.org/243533003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264950 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Disable QuicFlowController for QUIC versions < QUIC_VERSION_17
Chrome Beta was happily advertising a flow control receive window of
length 0, under the assumption that because the version of QUIC being
spoken didn't support flow control, a zero length window advertisement
would have no adverse effects.
On the server end, the refactoring in internal change: 64733866 resulted
in the QUIC version not being checked when querying
QuicFlowController::IsBlocked. IsBlocked would look at the client's
advertised receive window, and conclude that no data could be sent. This
would never change as the flow control accounting is protected behind
version checks.
Ultimately this means that once a stream was marked as write blocked, it
would never resume writing:
https://codereview.chromium.org/242453002/diff/1/net/quic/quic_session.cc?context=&column_width=80
(line# 286) resulting in a connection timeout.
This CL explicitly disables the QuicFlowController when the negotiated
QUIC version is < QUIC_VERSION_17.
Merge internal change: 65137349
This internal change was LGTM'ed by rch. Wanted to port this change
to disable flow control.
https://codereview.chromium.org/242583002/
Downgrading rst stream codes which wouldn't be recognized by the peer.
chromium: fixed chromium's unit tests to use AdjustErrorForVersion.
Merge internal change: 64783797
https://codereview.chromium.org/242483002/
Added WriteResult::WriteResult method for internal use.
Merge internal change: 64780998
https://codereview.chromium.org/242293003/
QUIC: When sending a RST stream for flow control accounting purposes,
include a more descriptive error code.
Prompted by alyssar's comment in internal change: 61236803
Chromium specific code:
+ deleted unused ConstructRstPacket method from
QuicNetworkTransactionTest.
+ Changed ConstructRstPacket to use the new descriptive error code.
Merge internal change: 64774941
https://codereview.chromium.org/242093003/
Pull out flow control functionality from ReliableQuicStream into a new
class, QuicFlowController.
Without this refactoring, all the accounting of bytes
sent/buffered/consumed, comparisons of these with limits to decide if
blocked or not, will be duplicated in ReliableQuicStream and
QuicConnection. Putting all this in a new class means it's easier to
have more comprehensive testing, simplifies ReliableQuicStream, and will
make it much easier to add Connection level flow control (work in
progress internal change: 63944402).
Refactor of QUIC stream flow control. No behavior change, still
protected behind FLAGS_enable_quic_stream_flow_control. This flag is
currently disabled.
Merge internal change: 64733866
https://codereview.chromium.org/242453002/
Plumbs through delta_largest_observed from
QuicSentPackerManager::HandleAckForSentPacket, up to the
QuicAckNotifier. Eventually these values get to the
QuicFasterStatsGatherer which now performs a more accurate RT
calculation.
The important changes are in QuicSentPacketManager (pulling the delta
out of ReceivedInfo), and in QuicFasterStatsGatherer (doing the new
calculation of RT). The rest is plumbing and updating tests.
Improve accuracy of QUIC FasterStats RT calculation by using the
delta time included with delayed ACKs.
Merge internal change: 64721749
https://codereview.chromium.org/241783002/
Fixed a bug in QuicPacketCreator when FEC was used for unsupported
versions, and made packet_creator tests run across all supported
versions of QUIC.
Merge internal change: 64701677
https://codereview.chromium.org/241483004/
Fix to ensure hybrid slow start is reset when QUIC's retransmission
timer fires.
Merge internal change: 64698621
https://codereview.chromium.org/241563002/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/242593002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264889 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add reordering statistics and min_rtt to QuicConnectionStats.
Merge internal change: 64582035
https://codereview.chromium.org/231733008/
Add a slowstart packets lost stat to allow QUIC to track how many
packets are lost when exiting slowstart.
Merge internal change: 64548567
https://codereview.chromium.org/231833004/
Added hooks to QUIC time wait list manager so that internal server
specific code could be separated.
Merge internal change: 64500752
https://codereview.chromium.org/231863006/
Cleanup changes found while merging the privacy mode changes into
the internal source tree.
Merge internal change: 64377731
https://codereview.chromium.org/232433002/
Add test-only MakeAckFrame method to quic_test_utils, and remove the
test-only QuicAckFrame constructor which was not using the 2nd argument.
Used MakeAckFrame method in chrome specific code also.
Merge internal change: 64373111
https://codereview.chromium.org/231863005/
Set the send and receive buffers for the QuicClient and QuicServer to
the default receive window for QUIC's TCP Sender.
QUIC cleanup to create SetSendBufferSize and SetReceiveBufferSize in
QuicSocketUtils.
Merge internal change: 64358078, 64380825
https://codereview.chromium.org/232243003/
Added writer() helper method to QuicConnection.
Made CreateQuicConnection of QuicDispatcher a virtual method and added
helper methods for helper, writer and initial_flow_control_window_bytes.
Merge internal change: 64357422
https://codereview.chromium.org/232013005/
When multiple streams have pending writes in QUICSession, bundle them
into as few packets as possible rather.
Previously the header stream and the body stream were always written in
separate packets.
Fixed chrome specific unit tests to accept extra ack frame.
Merge internal change: 64304809
https://codereview.chromium.org/232013005/
QUIC refactor to use the congestion window directly when calculating the
packet sequence number length, instead of calculating the window
indirectly.
Merge internal change: 64295053
https://codereview.chromium.org/232003003/
Refactor to isolate the PRR logic from the rest of TCPCubicSender.
Merge internal change: 64210335
https://codereview.chromium.org/232173002/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/232463003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263995 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=354669
Review URL: https://codereview.chromium.org/227233009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262195 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a QUIC flag to enable time based loss detection as the default.
Merge internal change: 63942432
(this CL was merged in https://codereview.chromium.org/217133004/
added FLAGS_quic_use_time_loss_detection to quic_flags.cc
and made the change to quic_connection.cc also).
Now that we have a default send window, no need to send WINDOW_UPDATE to
ensure streams are not flow control blocked
Merge internal change: 63887815
https://codereview.chromium.org/217003005/
Changing the max stream delta to allow for all open streams in a given
direction. Previously, we allowed 100 streams (200 even/odd stream ids)
but an insufficient delta of 100.
Allowing a slightly larger stream delta for QUIC.
Merge internal change: 63880428
https://codereview.chromium.org/212063006/
UDP proxy session for QUIC. This is not production ready. Major issues
include the sharding issue and the time wait list.
Merge internal change: 63878878
https://codereview.chromium.org/216943004/
Don't try and close a QUIC connection twice while processing a single
incoming packet.
Merge internal change: 63878490
https://codereview.chromium.org/217053004/
Added missing OVERRIDE.
Add the ability to negotiate the QUIC loss detection algorithm in the
crypto handshake.
Added FLAGS_quic_congestion_control_inter_arrival and
FLAGS_quic_use_time_loss_detection. They default to false.
Merge internal change: 63874474
https://codereview.chromium.org/217133004/
Send BLOCKED frame directly from ReliableQuicStream.
Merge internal change: 63808643
https://codereview.chromium.org/216423006/
Simplified ReliableQuicStream::IsFlowControlBlocked.
Merge internal change: 63807857
https://codereview.chromium.org/217103003/
Track the sent_time for ack packets so the RTT is updated when ack
packets are acked as the largest observed.
Merge internal change: 63806273
https://codereview.chromium.org/216423005/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/217303003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260695 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove a LOG_IF(DFATAL) for retransmitting packets which were never
given a sent time.
This DCHECK was firing on Chrome when Windows buffered a packet and
before the callback for the packet being sent, Chrome received a server
reject and had to change crypto context and retransmit all unacked
packets.
Merge internal change: 63686840
https://codereview.chromium.org/214413009/
Rename of QUIC flow control member variables to be more explicit (prefix
flow_control) and more descriptive ("max" instead of "initial").
Merge internal change: 63599012
https://codereview.chromium.org/215423003/
Change comment in QuicSessionTest to be more accurate, and add another
expectation to ensure stream is not flow control blocked before sending
any data.
Merge internal change: 63604321
Fixed compilation warnings in quic_sent_packet_manager_test.cc.
https://codereview.chromium.org/214823010/
Added UseWriter changes to QuicTestClient while porting internal
code that handles the client side of unwinding UDP proxied QUIC changes.
Merge internal change: 63542972
https://codereview.chromium.org/214083003/
Change to QUIC's SendAlgorithmInterface to remove IsHandshake from
TimeUntilSend.
Changed QuicSentPacketManager to ensure it always retransmitted crypto
handshake packets before other retransmissions.
Merge internal change: 63540663
https://codereview.chromium.org/214923003/
Removing TransmissionType from QUIC's TimeUntilSend method.
The only real user was was TcpCubicSender for tail loss probe, and TLP
is better fully contained within the SentPacketManager.
Merge internal change: 63501475
https://codereview.chromium.org/214083002/
Removed unnecessary transmission_type from Quic's send algorithm
interface.
The few remaining uses were improper, so there is a minor change in
behavior.
Merge internal change: 63480011
https://codereview.chromium.org/211693004/
Introduce QUIC_VERSION_17: per-stream flow control. Default send window
is 16 KB, and the client/server can specify higher values in their
CHLO/SHLO messages. WINDOW_UPDATE frames are sent when the receiver has
consumed more than half of their receive window (behavior copied from
SPDY), and BLOCKED frames are sent if a write is attempted while flow
control blocked.
Protected behind FLAGS_enable_quic_stream_flow_control.
Merge internal change: 63474251
https://codereview.chromium.org/211743005/
Adding an accessor to quic dispatcher.
Merge internal change: 63470311
https://codereview.chromium.org/208273008/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/215663002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260637 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix QUIC's nack counting to only increase the nack count for packets
less than the largest newly observed packet.
Reduces spurious retransmissions in the case of re-ordering.
Merge internal change: 63410263
https://codereview.chromium.org/206023002/
Removing deprecated flag FLAGs_cancel_crypto_callbacks_on_close.
Merge internal change: 63402129
https://codereview.chromium.org/205923003/
Add separate categories for retransmissions due to timeouts during
handshake and loss detection.
Merge internal change: 63287115
https://codereview.chromium.org/206003002/
Include acks for response headers sent over QUIC in faster stats RT and
loss computations.
This CL includes internals server's quic changes to allow application
code to specify a QuicAckNotifier delegate when doing buffered writes
through QUIC connection, since that is the write mechanism used by
QuicFdWrapper to write to the headers stream.
Merge internal change: 63174706
https://codereview.chromium.org/205613003/
Inform QuicAckNotifierManager about the newest sequence number that
corresponds to an acked packet, so that QUIC FasterStats RT computations
are not affected by spurious TLP retransmits.
Fix QUIC FasterStats RT reporting by considering a packet acked if any
of its retransmissions are acked. Not flag protected.
Merge internal change: 63152079
https://codereview.chromium.org/204103004/
Merge various changes to QuicCryptoClientStream from Chrome.
Merge internal change: 63102660
https://codereview.chromium.org/199273003/
Deleting unused MarkConsumed method from QuicStreamSequencer.
Merge internal change: 63098466
https://codereview.chromium.org/200123003/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/205983003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@258386 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
and into QuicClientSession (which is Chrome-specific).
Review URL: https://codereview.chromium.org/197873011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257667 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add varz to track QUIC packets and bytes sent by transmission type.
Not flag protected.
Merge internal change: 63037893
+ Updated QuicConnectionLogger to log TransmissionType.
+ Used connection_id instead of GUID in the comments.
+ Moved QUIC_SESSION_PACKET_SENT and QUIC_SESSION_PACKET_RETRANSMITTED
to match the log messages description.
https://codereview.chromium.org/196053008/
Killing off QUIC v14, which was never actually used.
Merge internal change: 63025464
https://codereview.chromium.org/198523002/
Adds a varz variable to track the fraction of times we end up in cubic
mode during congestion control.
Merge internal change: 62977386
https://codereview.chromium.org/198303004/
Export QUIC response retransmit packet and byte counts via faster stats.
Computation is done on a stream basis and ignores retransmitted control
packets.
Merge internal change: 62911712
https://codereview.chromium.org/197473012/
Avoiding a double disconnect scenario, and DFATALs on server.
Merge internal change: 62767600
https://codereview.chromium.org/198263003/
Making GOAWAY advisory for SPDY-over-QUIC.
Sending GOAWAYs on new connections when the server enters lame duck.
Making sure we only send a GOAWAY once on a given connection.
Merge internal change: 62700562
https://codereview.chromium.org/196343008/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/198353003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@256932 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
headers within a stream.
Merge internal change: 62227108
R=rch@chromium.org
Review URL: https://codereview.chromium.org/185203003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@254563 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These LOG(INFO)s claimed 8-9% of time under a load test.
Reduce logspam in QuicUnackedPacketMap.
Merge internal change: 61895796
https://codereview.chromium.org/179773007/
QUIC WINDOW_UPDATE and BLOCKED frames instigate ACKs.
Merge internal change: 61894847
https://codereview.chromium.org/180013004/
Avoiding quic double-close bugs by detecting it at the connection.
Merge internal change: 61890466
https://codereview.chromium.org/180793003/
BLOCKED frames not being cleared. These are not yet used.
(minor) Clear last BLOCKED frames in QuicConnection
Merge internal change: 61875848
https://codereview.chromium.org/180793002/
QUIC - minor cleanup while merging internal change.
Merge internal change: 61850595
https://codereview.chromium.org/177073016/
Create QUIC_VERSION_16 which breaks the sent_info field out of the ACK
frame into a new STOP_WAITING frame. Does not change when this
information is sent. That will happen in a follow-up CL.
Send STOP_WAITING_FRAME for QUIC version 16 and above with Ack frame.
Added logging for WINDOW_UPDATE and BLOCKED frames.
Merge internal change: 61838258
https://codereview.chromium.org/180383004/
QUIC test refactor to move tests from the QuicSentPacketManagerTest to
the new TcpLossAlgorithmTest.
Merge internal change: 61837708
https://codereview.chromium.org/177203008/
Ctrl-F for "packet XY" in debug logs now matches sent packets "Sending
packet XY", and received packets "Got packet XY".
(minor) Improve QUIC packet sent debug log message
Merge internal change: 61836667
https://codereview.chromium.org/177003007/
Auotmated rollback of internal changelist 57996291.
*** Reason for rollback ***
Now that clients no longer suggests 100 by default, it would be nice to
experiment with allowing the client to suggest larger CWNDs.
*** Original change description ***
Temporarily change the maximum server initial congestion window to 10
from 100, because many existing Chrome clients are still negotiating
100, causing visible performance issues, particularly for YouTube
rebuffers.
***
Merge internal change: 61825277
https://codereview.chromium.org/178853003/
Refactor to create a new LossDetectionInterface used by the
QuicSentPacketManager.
Merge internal change: 61813052
https://codereview.chromium.org/178453005/
Preparation for only writing a fraction of the iov due to flow control
blocking in ReliableQuicStream::WritevData.
Add max_bytes argument to QuicSession::WritevData
Merge internal change: 61810929
https://codereview.chromium.org/177203006/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/180723003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253647 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
chromium CL into internal code.
https://codereview.chromium.org/171693003/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/168263005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@252358 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Refactor QuicSentPacketManager to move loss detection into a separate
static method in preparation for moving loss dection into a separate
interface.
Merge internal change: 61764458
https://codereview.chromium.org/164913008/
Refactor to move the packet_history_map_ from the QuicSentPacketManager
to the InterArrivalSender.
Merge internal change: 61747951
https://codereview.chromium.org/171233003/
Add const to methods in ReliableQuicStream
Merge internal change: 61745963
https://codereview.chromium.org/171743002/
Ensure that QUIC packets are always written in sequence number order by
not re-consulting the congestion manager after it allows the packet to
be written once.
Merge internal change: 61608609
https://codereview.chromium.org/171683003/
Remove return values from OnCanWrite methods in favor of explicit
HasPendingWrites() calls. The important difference is that
QuicDispatcher will no longer insert a writer into a blocked list simply
because the socket is not blocked. This fixes the bug.
Ran all tests in internal server tests a thousand times, looks stable.
I was trying to hammer this out in the internal streamer loadtest, but
the testing framework is having issues and I don't have an ETA on fixing
that.
Fix infinite loop in QuicDispatcher.
Merge internal change: 61601805
https://codereview.chromium.org/169223007/
This brings us closer to implementing flow control. Now WINDOW_UPDATEs
and RSTs are plumbed through to the appropriate streams, but no behavior
change yet.
(minor) Implement QuicConnectionVisitorInterface in various places, no
behavior change.
Merge internal change: 61597640
nit: Fixed couple of indentation with DVLOG(1) lines.
https://codereview.chromium.org/171653002/
Add bytes_sent and nack_count to UnackedPacketMap's TransmissionInfo,
allowing for the movement of the packet_history_map into the
InterArrivalSender.
Merge internal change: 61547066
https://codereview.chromium.org/171543002/
Two minor bug fixes in Reno congestion control that (i) caused sender to
have a congestion window of 1 packet more than it should at the end of
loss recovery, and (ii) required 1 more ack than necessary for
congestion window growth while in congestion avoidance.
Merge internal change: 61531359
https://codereview.chromium.org/170673004/
Fix a use after free bug caught by asan in QUIC's OnPacketSent method.
Bug was introduced in cr/61457571.
Merge internal change: 61525312
https://codereview.chromium.org/171513002/
Double checking the kernel docs, it looks like packets_dropped is a
uint32. Which really makes more sense anyway.
http://www.spinics.net/lists/netdev/msg268644.html
Fixing the type of a kernel-provided counter from int to uint
Merge internal change: 61517449
https://codereview.chromium.org/171493002/
Remove unused SetMaxPacketSize from QUIC's SentPacketManager and send
algorithms.
Merge internal change: 61467515
https://codereview.chromium.org/166273006/
Change QuicConnection to no longer send acks when the peer's least
unacked needs to be raised, and instead only bundle them with outgoing
data.
Merge internal change: 61459311
https://codereview.chromium.org/171363004/
Replace PendingPacket with QueuedPacket to simplify QuicConnection's
packet writing code.
Merge internal change: 61457571
https://codereview.chromium.org/171373003/
Break out the QUIC unacked packet map into a stand alone class.
Merge internal change: 61357541
https://codereview.chromium.org/171243002/
Fixing one case we could ostensibly end up with multiple session
timeouts and adding logging so we can debug better if we see it again.
Flag protected.
Fixing a potential session closing bug and adding better logging.
Merge internal change: 61334956
https://codereview.chromium.org/171033003/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/171693003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@252298 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QuicConnection never calls visitor_->OnConfigNegotiated.
OnConfigNegotiated is only called by QuicCryptoStream on QuicSession.
Merge internal CL: 61467714
Remove the unused server_config_id_ member from
QuicCryptoClientConfig::CachedState.
Merge internal CL: 61394953
R=rch@chromium.org,rtenneti@chromium.org
BUG=none
TEST=none
Review URL: https://codereview.chromium.org/162493003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251204 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix a bug where acks were not being bundled with data, and data was not
being bundled with data in QUIC.
Add a test to ensure an incoming ack to the server caused an ack packet
and a data packet to be sent bundled, not separately.
Merge internal change: 61238548
https://codereview.chromium.org/153593003/
Send a QUIC RST on stream termination if neither a RST nor a FIN have
yet been sent. This is to allow accurate flow control accounting which
requires a RST or FIN must be sent in response to a RST.
Merge internal change: 61236803
https://codereview.chromium.org/137493009/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/135163008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250072 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a LOG(DFATAL) if the sequence number length is too small to fit the
least_unacked delta in a QUIC ack frame.
Merge internal change: 61228351
https://codereview.chromium.org/156233004/
Change the types of the arguments to two methods in
QuicReceivedPacketManager to be more specific. No behavior changes.
Merge internal change: 61215502
https://codereview.chromium.org/157803006/
Add convenience version() method to QuicServerSessionTest.
Merge internal change: 61210235
https://codereview.chromium.org/158173002/
Add convenience version() method to QuicSessionTest.
Merge internal change: 61206589
https://codereview.chromium.org/158063003/
Fix bug in QuicSentPacketManager::ClearPreviousRetransmissions where
pending packets were abandoned instead of being kept unacked so they
could be detected to be lost.
Merge internal change: 61197933
https://codereview.chromium.org/158073007/
Add QUIC_VERSION_15 to add a revived_packets set to replace the
deprecated accumulated_number_of_lost_packets field.
FEC requires a way to communicate that the peer doesn't need a packet
retransmitted, without indicating it's been received to the send
algorithm.
Merge internal change: 61159374
https://codereview.chromium.org/157403006/
Rename previous_transmissions to all_transmission in the QUIC unacked
packet map. Change all_transmission to include all transmissions of a
packet, even if there is only one, instead of becoming null.
Merge internal change: 61144526
https://codereview.chromium.org/158153002/
Use an alternative fix for OneShotVisitor of CryptoFramer that doesn't
require a done() method.
Detect an old-style Public Reset packet by checking for a sequence
number length of 6 in public flags. This requires updating the
expected error details messages in PublicResetPacket unit tests.
Merge internal change: 61152017
https://codereview.chromium.org/153993015/
Refactor QuicSentPacketManager::MarkPacketHandled to simplify
implementation in preparation for breaking out the unacked packet map.
Also fixes a minor bug in which a packet which has been marked for
retransmission would still be retransmitted if a previous transmission
was acked.
Merge internal change: 61139074
https://codereview.chromium.org/137923007/
Doing early validation of quic config, to change a potential
crash-during-serving to a crash-on-startup.
Changing a serving crash to a start-up crash. Not flag protected
Merge internal change: 61136961
https://codereview.chromium.org/157383006/
Remove parity tracking in FEC groups as part of the migration to
QUIC_VERSION_15, which does not need it.
Merge internal change: 61136827
https://codereview.chromium.org/157913003/
Comment out flaky test expectation while the root cause is investigated.
Merge internal change: 61104556
https://codereview.chromium.org/135933005/
QUIC - clean up changes - fixed during merge with internal source code.
Merge internal change: 61045294
https://codereview.chromium.org/157403005/
Fix problems with absolute value function.
The standard library provides seven absolute value functions. Â From C,
there is abs, labs, llabs, fabs, fabsf, and fabsl for the types int,
long, long long, double, float and long double. Â Due to numeric
conversions, these functions can accept arguments of any numeric types,
silently converting between types. Â C++ libraries has std::abs, which
provides overloads for all these types, making it a better choice. Â The
following problems have been observed, along with their fixes:
1) The wrong sized absolute value was used. Â Using abs for a long long
would cause a cast to int first, resulting in unexpected values outside
of the range (INT_MIN, INT_MAX). Â Switch to using std::abs
2) Using the wrong type of absolute value function. Â Passing a floating
point number to an integer absolute value will cause rounding of
values, especially important for values close to zero. Â Switch to using
std::abs
3) Taking the absolute value of an unsigned value. Â This usually has no
effect, but may have some effects from casting. Â Fixed by removing the
absolute value function.
4) Attempting to find the absolute difference between two unsigned
values. Â These were transformed from abs(a - b) to
(a > b ? a - b : b - a). Â This ternary expression is usually stored in
another variable.
5) Accidentally capturing the conditional such as
abs(a - b < threshold). Â Moving the parentheses over to fix.
6) Some static_casts were used to, such as from uint32 -> int64, to get
a signed value in the absolute value.
7) A few types were changed from unsigned to signed.
Merge internal change: 61013787
https://codereview.chromium.org/136123012/
Pass the whole QuicRstStreamFrame to OnStreamReset. Preparation for
dealing with byte_offset updates that arrive in the RST frame.
(minor) QUIC OnStreamReset now takes QuicRstStreamFrame as argument.
Merge internal change: 60995908
https://codereview.chromium.org/142373006/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/157803007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249994 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove QUIC's accummulated_number_of_lost_packets from the TCP and
InterArrival congestion feedback frames.
This is part of the migration to version 15, and removes a field which
was intended to be used by FEC, but never set to a non-zero value
previously due to a bug in the code.
Merge internal change: 60948757
https://codereview.chromium.org/155723002/
Add stats for lost and spuriously retransmitted packets to
QuicConnectionStats.
Merge internal change: 60932905
https://codereview.chromium.org/149793004/
The MOCK_METHODx usages removed in this CL try to mock either a
non-virtual or not existing method and are thus never called.
Please look carefully at each deletion. Instead of deleting, the right
fix might be:
- Fix spelling or signature to actually overwrite a method in the base
class
- Make the method in the base class virtual
- This is a currently unused mock intended to mock a non-virtual method
via template injection and it should be left alone
Merge internal change: 60910454
https://codereview.chromium.org/153093006/
Cleanup: Remove inclusion of base/scoped_ptr.h in files which don't use
scoped_ptr. Testing ensures that these inclusions don't have transitive
dependencies.
Merge internal change: 60858913
https://codereview.chromium.org/155683002/
Change QUIC's GetRetransmissionDelay() to exponentially back off from
the minimum value, instead of using the minimum multiple times.
Merge internal change: 60782771
https://codereview.chromium.org/155673002/
QUIC_VERSION_14 introduced. Add byte_offset to RST_STREAM_FRAME, add
version checks for WINDOW_UPDATE and BLOCKED frames. None of these
additions used yet.
Merge internal change: 60780039
https://codereview.chromium.org/155623003/
(minor) QUIC: Initialize members in QUIC frame constructors.
Merge internal change: 60677390
https://codereview.chromium.org/150663004/
Add WINDOW_UPDATE and BLOCKED frames to QUIC. Not yet used.
Adds the frame types, and matching framer methods for reading/writing
them. The framer visitor methods to handle the new frames just return
true and ignore them for now.
Merge internal change: 60646513
https://codereview.chromium.org/130463004/
QUIC cleanup to remove the helper which provided
GetNextPacketSequenceNumber to QuicSentPacketManager and instead let the
connection use that information directly.
Merge internal change: 60587367
https://codereview.chromium.org/132503007/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/149113005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249228 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Eliminate separate boolean tracking socket writeability in
QuicConnection; query the writer instead. This CL tries to minimize
behavior changes, so no actual bugfixes. Connection will now check
writer's status instead of its local flag, so it will refuse to
write sooner.
Merge internal change: 59603011
https://codereview.chromium.org/138843003/
Change QUIC's SendAlgorithmInterface to have a separate UpdateRtt
method instead of passing it in with every acked packet.
This fixes a bug where the RTT was not being updated when
retransmitted packets were acked and one where a very large RTT could
be used when packets are acked before being sent.
Merge internal change: 59572874
https://codereview.chromium.org/138843003/
Break out of the loop in QuicSession::OnCanWrite if the QuicConnection
is congestion control blocked. This fixes a weird form of starvation
among same-priority streams caused by streams often ending up in the
same order in the WriteBlockedList before and after
QuicSession::OnCanWrite.
Stop iterating through QUIC write blocked streams if the connection is
congestion-control blocked to avoid starvation of same-priority
streams. Not flag protected.
Merge internal change: 59513911
https://codereview.chromium.org/139103002/
Fix a bug where the packet was put into unacked packets when it was
serialized and acked before being sent.
This was only ever seen on Chrome with very short RTTs.
Merge internal change: 59408566
https://codereview.chromium.org/133683010/
WriteBlockedList for QUIC that prioritizes Crypto and Headers streams
over data streams. Not flag protected.
Merge internal change: 59400238
https://codereview.chromium.org/137893008/
Create an interface for explicit notification of Dispatcher about
blocked writers; port TimeWaitListManager to the new interface.
Merge internal change: 59396227
https://codereview.chromium.org/138503006/
Remove WritePacket() from internal server's QuicDispatcher;
Integrating internal changes to clean up QuicDispatcher.
Merge internal change: 59346874
https://codereview.chromium.org/131743007/
Reset QUIC's retransmission counters whenever a new packet is acked
which updates the RTT estimate.
Previously the counters were only done when the left edge was acked,
which could cause excessive backoff when the connection was making
progress.
Merge internal change: 59292726
https://codereview.chromium.org/138273004/
Implement QuicPacketWriterWrapper. This lets us replace or embellish
the low-level writer without disturbing connections that keep a
pointer to the top level.
Merge internal change: 59287995
https://codereview.chromium.org/138273004/
Use basictypes.h consistenly in QUIC code instead of macros.h and/or
integral_types.h
Simply refactoring includes. Sync'ed with internal source code
for include of basictypes.h.
Merge internal change: 59287325
https://codereview.chromium.org/136853005/
Use the right priority when marking QUIC streams write blocked via
QuicFdWrapper::SetReady. Not flag protected.
Used NULL instead of nullptr.
Fixed QuicReliableClientStreamTests to pass. Activated the
QuicReliableClientStream in the QuicSession so that session's
MarkWriteBlocked knows about the stream.
Merge internal change: 59263642
https://codereview.chromium.org/136523005/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/131743009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245204 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add helper methods to QUIC test client and peers that allow access to
information needed to test 0-Rtt behavior when talking to cluster-wide
strike registers.
QUIC testing infrastructure.
Merge internal change: 58551796
https://codereview.chromium.org/124183003/
Release QuicCryptoServerConfig::strike_register_client_lock_ before
doing calls to VerifyNonceIsValidAndUnique in order to minimize the
amount of work that happens while strike_register_client_lock_ is
locked. This is important because VerifyNonceIsValidAndUnique may
invoke the done callback before returning, which may take arbitrary
time or create a lock cycle if invoked while the lock is held.
Relax strike_register_client_ locking requirements.
Merge internal change: 58551166
https://codereview.chromium.org/110753005/
Rename GetIncomingReliableStream to GetIncomingDataStream.
Merge internal change: 58538145
https://codereview.chromium.org/111283004/
Suppress noisy messages in QuicTimeWaitListManagerTest.
Merge internal change: 58422536
https://codereview.chromium.org/123623002/
Implement a TCP tail loss probe which will fire twice before the RTO
fires. The tail loss probe gets re-armed every time a packet is
sent.
Merge internal change: 58420170
https://codereview.chromium.org/123523004/
Move all the packet parsing logic into QuicDispatcher from the
QuicServer / QuicDispatcher / QuicTimeWaitListManager.
Merge internal change: 58413216
https://codereview.chromium.org/123303003/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/124003005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@242987 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
headers.
Changes the way headers are delivered in QUIC from being the first bytes
on a stream, to being delivered as SPDY SYN_STREAM/SYN_REPLY frames on
a dedicated headers stream. This also creates QUIC_VERSION_13. Since
the intra-stream serialization format changes, it is not possible for a
client to handle a version negotiation across this boundary.
Merge internal change: 58313427
R=rch@chromium.org
Review URL: https://codereview.chromium.org/116513003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@241682 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add convenience HighestPriority and LowestPriority methods to QuicUtils
Merge internal change: 58122394
https://codereview.chromium.org/112463003/
Change QUIC to only ack every other packet when there are no losses
within the last four received packets.
Merge internal change: 58111242
https://codereview.chromium.org/113123004/
Add a version() convenience method to ReliableQuicStream.
Merge internal change: 58110960
https://codereview.chromium.org/112273003/
Fix two tests that fail when FLAGS_enable_quic_pacing is enabled
Merge internal change: 58101756
https://codereview.chromium.org/115393003/
Remove deprecated flag FLAGS_pad_quic_handshake_packets.
Merge internal change: 58101024
https://codereview.chromium.org/114923007/
Remove the is_server argument from the QuicSession constructor.
In a previous CL, I removed this from TestSession, but I missed, that
it's an argument of the main QuicSession constructor.
Merge internal change: 58059515
https://codereview.chromium.org/102313005/
Fix QUIC's TCP style retransmission logic to only send a maximum of 2
packets per incoming ack instead of 10.
Merge internal change: 58059328
https://codereview.chromium.org/109993008/
Remove redundant |is_server| argument from TestSession and call the
connection's is_server() method instead.
Merge internal change: 58047118
https://codereview.chromium.org/110373004/
Minor cleanup of QUIC MockConnection and PacketSavingConnection
constructors.
Merge internal change: 58042657
https://codereview.chromium.org/114933003/
Cleanup in QUIC to merge the previous_transmissions_map in
QuicSentPacketManager with the unacked_packets map.
Merge internal change: 58011531
https://codereview.chromium.org/109323012/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/115463002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240972 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Temporarily change the maximum server initial congestion window to 10
from 100, because many existing Chrome clients are still
negotiating 100, causing visible performance issues, particularly for
YouTube rebuffers.
Merge internal change: 57996291
https://codereview.chromium.org/102373005/
Merge the QUIC unacked packet map with the unacked fec packet map and
merge the retransmission timer with the discard fec timer.
Merge internal change: 57978547
https://codereview.chromium.org/114683002/
Pool 64 bits of entropy instead of calling OpenSSL's RNG for one bit
when creating packets. Clean up the entropy bit while I'm at it.
Changes:
1. QuicPacketCreator buffers 64 bits of entropy and consumes them
one-at-a-time. This should resolve the performance issue. Covered
this with a unit test. Removed the RandBool call from QuicRandom.
2. The first packet gets a random entropy bit. We used to never set it
because we failed to test it properly. This was sad because the first
packet deserves the most protection.
3. The entropy hash computation had a TODO to make it stronger, but I'm
convinced the current algorithm is in fact sound. Removed the TODO
and tightened up the implementation to avoid an unpredictable branch
(no behavior change!) Also covered by the test.
4. Fixed the bugs in QuicConnectionTest that prevented setting the bit
in the first packet. Switched tests to properly use MockRandom.
Merge internal change: 57908681
https://codereview.chromium.org/109323006/
Minor change of QUIC's RTO behavior to not change the congestion window
when the RTO fires, but there are no retransmittable packets.
Merge internal change: 57907460
https://codereview.chromium.org/99583006/
QuicSentPacketManager cleanup to simplify OnAbandonFECTimeout() and
remove unused DefaultRetransmissionTime().
Merge internal change: 57897409
https://codereview.chromium.org/110383006/
Minor cleanup of QuicSpdyServerStream and QuicSpdyClientStream.
Merge internal change: 57834426
https://codereview.chromium.org/105103007/
Break out the basic reliable QUIC stream functionality from the
headers-capable QUIC stream functionality. The crypto stream does not
do have header processing, and and the soon-to-be-written headers stream
will not have header processing in the way that data streams do.
No functionality change. Refactor ReliableQuicStream class.
Merge internal change: 57796557
https://codereview.chromium.org/100173005/
Merge ReliableQuicStream::WriteData with
ReliableQuicStream::WriteOrBuffer, and make this method non-virtual.
It turns out the only cases where it was overridden could easily be
worked around.
Remove ReliableQuicStream::WriteDataInternal and use a MakeIovec helper
to work around it. Rename ReliableQuicStream::WritevDataInternal to
ReliableQuicStream::WritevData.
Rename QuicStream::WritevData to QuicStream::Writev.
Cleanup of the various Write methods in ReliableQuicStream.
Merge internal change: 57753091
https://codereview.chromium.org/112343002/
Cleanup of QUIC stream classes.
Remove abstract QuicReliableClientStream class and fold it into the
derived QuicSpdyClientStream class.
Remove abstract QuicReliableServerStream class and fold it into the
derived QuicSpdyServerStream class.
Merge internal change: 57751931
https://codereview.chromium.org/111073003/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/103973007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240569 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Made available server_address to QuicDispatcher::CreateQuicSession from
QuicDispatcher::ProcessPacket.
Merge internal change: 57703936
https://codereview.chromium.org/109803003
No functional change. More QuicSentPacketManager and related QUIC
cleanup.
Merge internal change: 57665121
https://codereview.chromium.org/100893003
Move QUIC kMaxPacketSize from 1472 -> 1452 to reflect IPv6 overhead.
Merge internal change: 57626965
https://codereview.chromium.org/109843002
QUIC refactor to simplify retransmission logic.
Merge internal change: 57617695
https://codereview.chromium.org/100863005
Remove unused SetCongestionWindow methods
Merge internal change: 57601594
https://codereview.chromium.org/109833002
QUIC refactor to move more of the AckFrame handling into
QuicSentPacketManager.
Merge internal change: 57561176
https://codereview.chromium.org/100733003
No new functionality. QUIC Refactor to move the functionality of
OnAbandonFecTimeout() OnRetransmissionTimeout() into the
QuicSentPacketManager.
Merge internal change: 57550388
https://codereview.chromium.org/106973007
R=rch@chromium.org
Review URL: https://codereview.chromium.org/100863006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@239668 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QUIC Refactor to move the call to OnPacketAbandoned() for
retransmissions into QuicCongestionManager.
Merge internal change: 57233749
https://codereview.chromium.org/85463010/
Rename two methods in SendAlgorithmInterface
* OnIncomingAck -> OnPacketAcked
* OnIncomingLoss -> OnPacketLost
Merge internal change: 57120421
https://codereview.chromium.org/85663006/
Implement Early Retransmit(RFC5827) in QUIC's TCP congestion control.
Merge internal change: 57097940
https://codereview.chromium.org/85663005/
De-flake internal end_to_end_tests when pacing is used.
Adds a new HasQueuedData method, and removes NumWriteBlockedStreams
method to QuicSession, which is only called from tests.
Merge internal change: 57090300
https://codereview.chromium.org/84723005/
Send the server's supported QUIC versions in the SHLO. Send the client's
supported QUIC version in the CHLO. Detect downgrade attacks.
Add QUIC versions to the QUIC handshake messages.
Merge internal change: 57057343
https://codereview.chromium.org/85773006/
Change QUIC's nack counting to be based on the gap between the missing
packet and the largest observed, instead of the number of ack frames
processed.
Merge internal change: 57031841
https://codereview.chromium.org/85383010/
QUIC - sync'ing chromium and internal source. Minor clean up of the code.
Merge internal change: 57264741
https://codereview.chromium.org/86483007/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/87013002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237410 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=258671
Review URL: https://codereview.chromium.org/83123006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236843 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make QuicTestClient report response_complete() when the response is
actually complete.
Merge internal change: 56678980
Remove retransmission_count from RetransmissionInfo, because it was
unused.
Merge internal change: 56678610
Deprecating FLAGS_bundle_ack_with_outgoing_packet.
Removes a QUIC-specific flag that has been set to true for a while.
Merge internal change: 56673783
Remove unnecessary tests from QuicEpollConnectionHelperTests since
much of the logic that used to be in the helper has moved directly
into the connection.
Merge internal change: 56613436
Ensure that delta_time_largest_observed values are non-negative, since
they are written to the wire as uints.
Provide a better estimate of rtt in QUIC.
Merge internal change: 56612513
Change QUIC's max CWND from a flag to a constant.
Merge internal change: 56607206
Make SimpleClient report whether headers have been completely received.
Testing only.
This brings simpleclient to feature parity for ustreamer load testing.
Merge internal change: 56543369
QUIC - Sync'ing changes while merging chromium/internal changes.
Merge internal change: 56537661
Remove deprecated flag FLAGS_track_retransmission_history.
Merge internal change: 56530712
Change PacketDroppingTestWriter::WritePacket to release any packets
that should have already been released.
Merge internal change: 56496423
Add the QUIC detailed error to the ConnectionClose packet for framing
errors.
Merge internal change: 56478281
Resurrect QUIC fast-RTO tail drop behavior.
More quickly RTO packets if there are only a few packets outstanding.
Merge internal change: 56476598
Remove EndToEndTest.NoEarlyHeadersFailureFromClient. This test races a
retransmission with a RST_STREAM in a way that is not guaranteed to
win. Further, it purports to send a valid request, but when the reset
loses the race, it's clear that actually the request is actually not
valid.
Instead, I've replaced this test with a unit test of QuicSession
and in the process tightened up the code to detect
QUIC_STREAM_RST_BEFORE_HEADERS_DECOMPRESSED.
Improved the ability of QuicSession to detect unrecoverable compression
context state.
Merge internal change: 56472103
Cleanup WriteBlockedList.
* Sanity check the values of priorities passed in to various methods.
* Cleanup of the argument types used.
* Change GetHighestPriorityWriteBlockedList to not return -1, which is
confusing since the priority value is (usually) unsigned.
Merge internal change: 56467687
Changes to support internal QuicFasterStatsGatherer class which
inherits from QuicAckNotifier::DelegateInterface and
FasterStatsGatherer.
Each QuicStream owns one of these Gatherers. Whenever the Stream writes
data to the wire, it registers the Gatherer to be notified on receipt of
ACKs for the write.
When the Gatherer has seen ACKs for the full response, it calculates
Response Time (RT), and ships off the stats to FasterStats.
If the QuicStream is destroyed before the full response has been ACKed,
then it transfers ownership of the Gatherer to the QuicSession. The
FasterStatsIdleList will check in periodically on these stored
Gatherers, and when the full response has been ACKed, the Gatherer will
ship off FasterStats and be deleted.
Calculate FasterStats RT for QUIC.
Merge internal change: 56407485
Add a method to QUIC end-to-end-test's TestParams struct so that when a
test fails, the summary includes a human readable description of the
configuration.
Merge internal change: 56382748
Replace QUIC EndToEndTest.InvalidPriority with a unit tests.
The existing end-to-end test is very fragile, and depending the behavior
of the sender, may actually crash.
Minor change to QUIC priority parsing error detection.
Merge internal change: 56375355
R=rch@chromium.org
Review URL: https://codereview.chromium.org/76723002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236173 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixing a QUIC bug where public reset packets would only be sent for
null encrypted packets.
Merge internal change: 56125340
Implement TcpCubicSender::BandwidthEstimate to return CWND/SRTT, which
will be used as the basis for pacing.
Implements a currently unused method in the QUIC TCP implementation.
Merge internal change: 56109841
Add bandwidth limits and maximum packet queue size to the
PacketDroppingTestWriter for QUIC.
Merge internal change: 56104313
Change QUIC's TCP implementation to not reduce the congestion window
when multiple losses occur in a window.
Merge internal change: 56097813
Add flexibility to SimpleClient by exposing epoll_server(), fd() and
buffer_body() at the interface level. Affects tests only.
I need this for ustreamer load testing. The requirements there (like
slowing down the transfer) are divergent from internal server and it's
easier to implement them by talking to epoll directly.
Merge internal change: 56097002
Removing QUIC_VERSION_10 which had a longer NullEncryption hash length
of 16 bytes vs the new 12 bytes.
Merge internal change: 56033303
Change QUIC's minimum congestion window for TCP to 2*MSS, matching
RFC2582.
Merge internal change: 55999043
Request from avd@ in review of cl/55013562
Merge QuicConnection SendStreamData methods.
Merge internal change: 55985552
Replacing StringPiece with IOVector in QUIC's read and write paths.
QuicConnection on below, QUIC now trafficks in only IOVectors.
QuicStreamFrame now holds frame data in an IOVector instead of a
StringPiece.
Merge internal change: 55838620
Change order of operations in
QuicCryptoServerConfig::EvaluateClientHello so that:
- Local, syncrhonous operations can happen first.
- Validating the client nonce against the strike register only
happens when uniqueness must be established using the client
nonce.
- Server nonce is always used if it is present.
- A repeated server nonce triggers a replay protection failure even
if the client nonce is unique.
Resulting behavior is more correct: we used to allow handshakes that
had both a server nonce and client nonce to be repeated twice.
Merge internal change: 55930987
QUIC - Minor cleanup of the code to match the internal code.
Merge internal change: 55929037
Increase the minimum CHLO size from 512 bytes to 1024 bytes. Pad an
inchoate CHLO to fill up a packet.
On the server side, enforce the old minimum CHLO size of 512 bytes so
we can support old clients.
Merge internal change: 55881305
R=rch@chromium.org
Review URL: https://codereview.chromium.org/71143003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@235006 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix a bug in the QuicFramer where the entropy genererator was not
being consulted when truncated acks were sent, causing an incorrect
entropy to be sent for truncated acks.
Merge internal change: 55879563
Add an optional initial RTT to the negotiation parameters to allow the
QUIC client to suggest an expected RTT to the server.
Merge internal change: 55792505
Changing DCHECKs to LOG(DFATAL) so we'll notice if they're occurring in
the running server/client.
Merge internal change: 55790448
Added a blank line per the change in the following CL which deleted
default-true flags.
Merge internal change: 55738366
Allow a REJ message to be twice as large as a CHLO message that doesn't
contain a valid source-address token.
message that doesn't contain a valid source-address token could be
twice as large as before.
Merge internal change: 55736193
Log OpenSSL errors when QUIC encryption fails.
Merge internal change: 55718465
Second version with improved tests and keeping the client and server
packet sizes identical to ensure the truncated ack detection works
correctly.
Merge internal change: 55651642
Hidden bug that uses ack_frame instead of stream_frame.
Merge internal change: 55648483
Move QuicCryptoServerConfig from crypto_server_config.{h,cc} to
quic_crypto_server_config.{h,cc} and move QuicCryptoClientConfig from
crypt_handshake.{h,cc} to quic_crypto_client_config.{h,cc} to be
consistent.
Merge internal change: 55644306
Ported IOVector unit tests (as part of porting the following CL).
Makes GFE's IOVector class copy-able. I am working on using IOVector
through QUIC's read and write paths, and it would be tremendously
helpful to have value-semantics for an IOVector object. Making it
copy-able was noted in joechan@'s TODO in the original IOVector code.
Merge internal change: 55509822
Cancel all pending alarms when the QUIC connection is closed.
Merge internal change: 55640997
Removed version 10 from supported versions.
Adding QUIC_VERSION_12 to optimize the Quic ack framing format to
reduce the size and better handle ranges of nacks, which should make
truncated acks virtually impossible. Also adding an explicit flag for
truncated acks and moving the ack outside of the connection close frame.
Merge internal change: 55594574
R=rch@chromium.org
Review URL: https://codereview.chromium.org/51313002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232035 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enables the padding of QUIC handshake packets to the max packet
size. Does not pad packets which do not leave enough space to fit a
padding frame after expanding the final stream frame. An alternative
would be to add a new type of padding frame which could show up
earlier in the packet, but this is good enough for now.
flag to enable the padding of QUIC handshake packets to full size
Merge internal change: 55118010
Add a set_seed method to the PacketDroppingTestWriter to facilitate
reproducing test behavior.
Merge internal change: 55107501
Consistently pass the IsHandshake flag to the congestion control
algorithm in QUIC.
Merge internal change: 55046282
The goal is parity between HTTP and QUIC testing.
Merge internal change: 55000555
Fixed comments - found while back porting changes to server.
Merge internal change: 54999641
Fix bug in QuicPacketCreator's packet size calculation when a stream
frame is close to the maximum possible.
Merge internal change: 54933729
Remove unused random_reorder field from QuicPacketCreator::Options
Merge internal change: 54885136
Using GFE's IOVector to replace uses of struct iovec on the QUIC's
Write path.
Merge internal change: 54805402
R=rch@chromium.org
Review URL: https://codereview.chromium.org/46903002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231278 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rename ambiquious ConnectionClose method to OnConnectionClosed.
Merge internal change: 54774694
Change TCP cubic's max packet size used to calculate the initial and
subsequent congestion window in bytes to the default of 1460 from QUIC's
artificially low 1200.
Merge internal change: 54772582
QUIC: make the SCID a hash of the rest of the server config.
We need to ensure that the SCID changes whenever the rest of the server
config does. For example, cl/54004815 changed the server config, but not
the SCID. This could lead to bad 0-RTT handshakes where the server
believes the handshake is good, but will derive different keys than the
client.
The easiest change to ensure that the SCID is changed is to make it a
hash of the rest of the message.
Merge internal change: 54659325
EndToEndTest to fix TSAN.
Merge internal change: 54090381
Don't add a zero-length public key to kPUBS if P-256 support is
disabled. kKEXS and kPUBS should have the same number of elements.
Merge internal change: 54004815
Make the QuicConnectionHelper no longer owned by the QuicConnection.
Instead a single helper is owned by the Dispatcher or Client, and shared
among each Connection.
Merge internal change: 53974968
R=rch@chromium.org
Review URL: https://codereview.chromium.org/45733002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231244 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added a DCHECK that ProcessRawData will not be called with zero data length.
Merge internal change: 52068687
Removed reinterpret_cast<QuicFecBuilderInterface*>. Minor comment fix.
Merge internal change: 52051673
Replace QuicConnectionVisitorInterface::OnPacket with OnStreamFrames
Merge internal change: 52049491
Remove unused OnAck method from QuicConnectionVisitorInterface.
This is a bit of an abstraction violation, since nothing above
the Connection knows about packets. The AckNotifier interface
provides the "right" abstraction.
Merge internal change: 52027657
Add state to session to indicate that a crypto stream is blocked, so
that we can properly set the IS_HANDSHAKE argument when asking the
congestion manager if we CanWrite().
Merge internal change: 51983405
Break out the tracking of sent packet from QuicConnection to a new
QuicSentPacketManager class.
Merge internal change: 51969314
Delay the RTO every time an ack is received, per TCP RTO spec.
Merge internal change: 51954312
Sending ConnectionClose frames via the PacketGenerator so they get
properly queued if they cannot be sent immediately. Prevents multiple
different connection close packets from being sent, a potential
infinite loop, and from dropping connection close packets which can't
be sent due to a write block from being dropped entirely.
Merge internal change: 51890780
Increse the default max_tcp_congestion_window to 100 from 50, now that
the RTO has been increased to the TCP standard of 60 seconds.
Merge internal change: 51854728
Added large (1 Mb) POST tests.
Verified that without the fix from cl/51829697 these tests timeout due
to receiver cwnd dropping to zero after sending ACKs.
Merge internal change: 51854636
Refactored and replaced SendStreamAndNotifyWhenAck() to work with
SendvStreamData().
Merge internal change: 51848330
Remove unused client2 scoped_ptrs from end_to_end_tests
Merge internal change: 51835589
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23691073
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@223996 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Pass HasRetransmittableData to the congestion manager and the send
algorithm. This allows tcp_cubic_sender to not count ACK-only packets
against the congestion window.
Merge internal change: 51829697
If a previously zombie'd QUIC stream is closed and the headers have been
decompressed, remove that entry from the zombie stream map.
Merge internal change: 51697989
Change the value used to set the sequence number with to both correctly
calculate the widest packet spread currently outstanding and fix a
DCHECK failure in EndToEnd's Uber test when packets were transmitted
sufficiently out of order that the packet being sent was less than the
last packet the peer was awaiting.
Merge internal change: 51644967
Fix a bug where frames are queued and not enough room for the next
stream frame is available, but we attempt to create a STREAM frame
anyway in ConsumeData.
Merge internal change: 51604946
Changed Delayed Ack Timer to go off before the sender's retransmission
timer goes off.
Merge internal change: 51594956
Using the priorities sent by the client, including bounds checking,
and bumping the priority of initial writes to avoid the HOL header
blocking issue.
Merge internal change: 51586426
Fix memory leak uncovered by https://codereview.chromium.org/23587004
Merge internal change: 51569066
Added logging of QUIC version negotiated.
Export number of QUIC sessions and streams for each QUIC version.
Merge internal change: 51540178
A refactor of QuicFdWrapper's writev to pass the iovec all the way to
QuicConnection, allowing better packet packing.
Merge internal change: 51530908
Enabled priorities in chrome quic streams.
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23597045
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@223880 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the first part of the code to allow faster stats/future
compression stuff to register for a notification when a block of data
has been fully ACKed by the peer.
The idea is as follows:
Someone who wants to be notified when their data is ACKed calls
SendStreamDataAndNotifyWhenAcked instead of SendStreamData, and provides
a Closure.
The QuicConnection stores the Closure in a QuicAckNotifier, and
maintains a vector of these.
On every ACK frame received, the OnAck(acked_seqnums) method of each
QuicAckNotifier is called. The QuicAckNotifier keeps track of the
sequence numbers it is waiting to see, and after being notified of all
of them it calls the Closure's Run() method.
Merge internal change: 51476134
Changed SourceAddressToken's code not to include port number while
performing crypto handshake (found in EndToEnd unit tests).
Use IPAddressToPackedString for source address token comparison.
Add CryptoServerConfig::set_strike_register_no_startup_period() to allow
a QuicServer to start accepting 0-RTT handshakes without waiting
a startup period.
Add an end-to-end test for a successful 0-RTT handshake.
Merge internal change: 51419595
Copying the overly-lenient SPDY workarounds to handling priority blocked
streams for idle timeout logic.
Merge internal change: 51406984
For this CL, the only chromium side change is to add
QuicConnectionPeer::SetPeerAddress.
Log packet retransmissions to DLOG(INFO). Use the standard format for
the log messages for crypto handshake messages on the client side.
Merge internal change: 51336227
New frame ID scheme to eliminate conflict between STREAM and PADDING
frames. PADDING frames are now stream type 0. Description of the new
scheme is in quic_framer.cc.
Merge internal change: 51271708
Fixing a bug in implicitly created streams which results in early packet
loss causing all streams to hang.
Merge internal change: 51248632
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23464033
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221419 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
decompressed, remove that entry from the zombie stream map.
Review URL: https://chromiumcodereview.appspot.com/23475010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220758 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
client, the user may cancel the request before the response is received
from the server) then we need to make sure that we keep the stream
alive long enough to process any response or RST_STREAM that the
server sends.
This should dramatically reduce (possibly eliminate) the instances of
STREAM_RST_BEFORE_HEADERS_DECOMPRESSED errors from Chrome. (This is
currently the second most common cause of QUIC sessions closure, behind
the expected TIMED_OUT)
Merge internal change: 51442891
BUG=
Review URL: https://chromiumcodereview.appspot.com/23587004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220153 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Moving QUIC over to the new QUIC/SPDY write blocked list template.
Fixing all QUIC streams to a single priority for now.
Merge internal change: 50911466
Factoring out the spdy write blocked logic into a utility Spdy and Quic
can share.
Merge internal change: 50897578
Moving the quic dispatcher from using the WriteBlockedList to using a
generic linked hash map, in preperation to adding priorities to the
WriteBlockedList.
Merge internal change: 50728003
QUIC dead code removal.
Merge internal change: 50710912
Clarify batch mode in packet generator.
Merge internal change: 50587122
Minor spacing/wording fixes to DLOG messages in quic_connection.
Merge internal change: 50574131
Define kDefaultRetransmissionTime once in QuicConnectionTest.
Merge internal change: 50571883
Deleted FramePackingAckResponse from chromium and will do the same on
server side in another CL.
Improve frame packing of acks and other frames when acks are received.
Merge internal change: 50521649
Fix TODO in quic_connection.cc
Merge internal change: 50515632
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22801008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218500 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=
Review URL: https://chromiumcodereview.appspot.com/23108004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217617 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Minor logging improvement to FEC revived packets.
Merge internal change: 50495854
Fixed existent typo: existant becomes existent.
Merge internal change: 50439145
Fix a bug in quic_connection where an Ack could be sent in response to
an ack before the packet was registered as having been received in
OnPacketComplete(), causing an entropy to be generated which was
incorrect.
Merge internal change: 50396820
Added a TODO to support "Rate limiting a warning log."
Merge internal change: 50395138
Fixing two bug where we could kill off a session twice, one of which
could "easily" happen, and one of which should only ever happen with
horrible configuration.
The first, is processing packets via MaybeProcessUndecryptablePackets or
MaybeProcessRevivedPacket after the connection had disconnected. The
likliest way for this to happen would be to lose the CHLO and have two
'bad' packets buffered such that we'd loop on both, both would cause a
connection close which would get passed to the session and the
dispatcher, causing unhappiness.
The second is kind of silly and caught by the DCHECK I added to detect
double-disconnect: when we register idle alarms we check for timeouts.
In the case of our timeouts test we set the timeout so small the
session is basically timed out before it's created. In this case when
we create the session we'd close it when registering the first timeout
and close again registering the second. This should only ever be hit
if you have a horrible config or a 10 second machine hiccup.
Merge internal change: 50393796
Actually waiting for server SHLO before upping packet loss.
Merge internal change: 50384306
Fixing a crashing bug in quic_session: if a pointer is NULL maybe we
shouldn't dereference it...
Merge internal change: 50378549
Remove mostly unused set_max_open_streams method from QuicSession.
Merge internal change: 50275870
Reducing/removing test flakeiness due to SHLO being particularly
important.
Merge internal change: 50272102
Small formatting fix.
Merge internal change: 50262875
Fixing a bug in protocol negotiation where the verion flag would always
be sent.
Basically if we immediately transition to NEGOTIATED_VERSION, we never
enter the if block in OnPacketHeader and call StopSendingVersion
Merge internal change: 50182524
Added max_tcp_congestion_window_ to TcpCubicSender for testing.
Decrease the maximum congestion window to 50 from 10000 until the RTO
logic is improved. The intent is to handle cases when the RTT is
larger than the RTO specially and not retransmit agressively then.
Merge internal change: 50080104
Change kMaxRetransmissionTimeMs to 60 seconds (from 10 seconds) to
match TCP.
Merge internal change: 50073957
Add comments to point out it is OK to specify both kX509 and kX59R, and
to document the new ecdsa_ok parameter of ProofSource::GetProof.
Merge internal change: 50071950
Do not send acks in response to acks.
Merge internal change: 50064954
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22661002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@216555 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Minor style change for initialization of hdr.msg_flags.
Merge internal change: 49828095
Enabled MaxNumStreams in quic/tools area.
Renamed MaxNumConnections to MaxNumStreams. Initialize
set_max_streams_per_connection only in MaxNumStreams, not for all tests.
Merge internal change: 49728455
QUIC - Adding a bit more information to a logged DFATAL.
Merge internal change: 49724887
Always expecting certificates for secure quic (test) clients. Changing
the end_to_end test to be insecure as it doesn't configure certs.
Merge internal change: 49723287
QUIC - Adding back a comment change that was deleted in the following CL.
https://chromiumcodereview.appspot.com/22020002/diff/1/net/quic/quic_connection.cc
Merge internal change: 49713074
Fail to process a header when the fec group offset is larger than the
packet sequence number.
Merge internal change: 49677837
Added a test to ensure that if the QuicPacketCreator has room for the
stream frame it can be added.
Merge internal change: 49620569
Adding support to QUIC for QUIC_VERSION_7, enabling lower overhead stream frames.
Merge internal change: 49540337
Rearrange code to match spdy_protocol.h SpdyFrameType declaration
order: mostly method declarations and definitions and case statements.
Merge internal change: 49503521
Refactor QuicReceivedEntropyManager and the other received packet code
into Quic ReceivedPacketManager to allow the entropy state and the ack's
received info to stay in sync.
Merge internal change: 49440136
Made a copy of QuicReceivedEntropyManager*.* code into QuicReceivedPacketManager*.*
Doing a better job of detecting unrecoverable compression state.
This is really tricky to get right.
We don't want to unilaterally close the connection if a stream closes before
headers are decompressed. If, for example, a server gets a protocol-layer
error while processing a request it could kill of a stream with something
like QUIC_MULTIPLE_TERMINATION_OFFSETS without sending the http/spdy
response. In this case, the client could continue processing on that
connection.
We basically want to kill off the connection if we get any packets for a
stream we've closed without processing complete headers. Which means
tracking state for every stream which closes without processing complete
headers which is a very unlikely OOM attack vector. I'm capping it at 20
somewhat arbitrarily, and calling it a day.
Merge internal change: 49373258
Removing logspam from quic connection.
Merge internal change: 49370853
Altering the server to not process headers until full headers have been read.
This fixes a problem where if we parsed partial headers, found an error, and
rejected the stream before getting full headers it would be possible to doom
the entire connection.
Merge internal change: 49239328
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22122002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@215661 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- CertVerifyResult is saved in QuicCryptoClientConfig::CachedState after Proof is verified.
- Because CertVerifyResult is not RefCounted, the data is copied into CachedState.
- QuicCryptoClientStream uses CertVerifyResult from CachedState after handshake is completed.
- QuicCryptoClientStream::GetSSLInfo fills SSLInfo data from
CertVerifyResult.
- UI uses SSLInfo to display connection status.
- Hardcoded cipher_suite as TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 in SSLInfo.
R=jar@chromium.org, agl@@chromium.org
Review URL: https://chromiumcodereview.appspot.com/19037002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211439 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added code to enable proof verifier and integrated CertVerifier.
TODO:
- Make ProofVerifier work with multiple verifications at the same time.
- Use the correct NPN for NextProto instead of kProtoSPDY3.
- Write unit tests for QUIC over HTTPS.
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/18084015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210732 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
Implemented comments from wtc in CL https://chromiumcodereview.appspot.com/17385010/#ps170001 (Patch Set 12).
R=wtc@chromium.org
Review URL: https://chromiumcodereview.appspot.com/18033005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210095 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
Changes to make ProofVerifier asynchronous. Each QuicSession's ProofVerifier is used to verify the signature and cert chain.
Implemented generation counter in QuicCryptoClientConfig's CachedState in case certs change when we are verifying the Proof.
Review URL: https://chromiumcodereview.appspot.com/17385010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209946 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Merge internal change: 47341065
Fix to ensure the version matches before declaring that the public header
flags exceed the max value. b/9190456
Merge internal change: 47324563
Fixing another backup bug (exposed by the last fix) that if we failed to
write a standalone fin the stream would not be marked as write blocked.
Merge internal change: 47272116
Don't add QuicStreams to ActiveSessionList; Instead call DumpSession on
alive streams via QuicSession.
Merge internal change: 47226512
Making the packet sequence number variable length to minimize bytes on the wire.
Merge internal change: 47220850
Fixing a bug in quic stream where we'd send rst stream packets for
successful streams. The fin bit should be sufficient for both good
request/response pairs and early response pairs.
Merge internal change: 47086343
Don't let FEC packets consume congestion window forever. If a FEC packet
is not acked after a certain time, it is cleared from the congestion
window. This timeout is higher than normal RTO.
Merge internal change: 47056082
Add QuicSession to ActiveSessionList.
Merge internal change: 47048300
Fixing a backup/resumption bug in QUIC.
It's possible to have a full congestion window worth of packets on the wire.
If we are in this state and a session tries to SendStreamData, the
QuicPacketGenerator short-circuits without queuing packets because it checks
to see if the connection CanWrite.
When we get an ack, we check to see if we have locally queued packets, but
never call OnCanWrite on the session to clear any streams which write blocked
without queueing packets.
Merge internal change: 47000173
QUIC: wire up the server-nonce parameters to the server config.
Merge internal change: 46985067
R=rch@chromium.org
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=204046
Review URL: https://codereview.chromium.org/16256017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204289 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
> Land Recent QUIC changes.
>
> Merge internal change: 47341065
>
> Fix to ensure the version matches before declaring that the public header
> flags exceed the max value. b/9190456
>
> Merge internal change: 47324563
>
> Fixing another backup bug (exposed by the last fix) that if we failed to
> write a standalone fin the stream would not be marked as write blocked.
>
> Merge internal change: 47272116
>
> Don't add QuicStreams to ActiveSessionList; Instead call DumpSession on
> alive streams via QuicSession.
>
> Merge internal change: 47226512
>
> Making the packet sequence number variable length to minimize bytes on the wire.
>
> Merge internal change: 47220850
>
> Fixing a bug in quic stream where we'd send rst stream packets for
> successful streams. The fin bit should be sufficient for both good
> request/response pairs and early response pairs.
>
> Merge internal change: 47086343
>
> Don't let FEC packets consume congestion window forever. If a FEC packet
> is not acked after a certain time, it is cleared from the congestion
> window. This timeout is higher than normal RTO.
>
> Merge internal change: 47056082
>
> Add QuicSession to ActiveSessionList.
>
> Merge internal change: 47048300
>
> Fixing a backup/resumption bug in QUIC.
>
> It's possible to have a full congestion window worth of packets on the wire.
>
> If we are in this state and a session tries to SendStreamData, the
> QuicPacketGenerator short-circuits without queuing packets because it checks
> to see if the connection CanWrite.
>
> When we get an ack, we check to see if we have locally queued packets, but
> never call OnCanWrite on the session to clear any streams which write blocked
> without queueing packets.
>
> Merge internal change: 47000173
>
> QUIC: wire up the server-nonce parameters to the server config.
>
> Merge internal change: 46985067
>
> R=rch@chromium.org
>
> Review URL: https://codereview.chromium.org/16256017
TBR=rtenneti@chromium.org
Review URL: https://codereview.chromium.org/16374004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204062 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Merge internal change: 47341065
Fix to ensure the version matches before declaring that the public header
flags exceed the max value. b/9190456
Merge internal change: 47324563
Fixing another backup bug (exposed by the last fix) that if we failed to
write a standalone fin the stream would not be marked as write blocked.
Merge internal change: 47272116
Don't add QuicStreams to ActiveSessionList; Instead call DumpSession on
alive streams via QuicSession.
Merge internal change: 47226512
Making the packet sequence number variable length to minimize bytes on the wire.
Merge internal change: 47220850
Fixing a bug in quic stream where we'd send rst stream packets for
successful streams. The fin bit should be sufficient for both good
request/response pairs and early response pairs.
Merge internal change: 47086343
Don't let FEC packets consume congestion window forever. If a FEC packet
is not acked after a certain time, it is cleared from the congestion
window. This timeout is higher than normal RTO.
Merge internal change: 47056082
Add QuicSession to ActiveSessionList.
Merge internal change: 47048300
Fixing a backup/resumption bug in QUIC.
It's possible to have a full congestion window worth of packets on the wire.
If we are in this state and a session tries to SendStreamData, the
QuicPacketGenerator short-circuits without queuing packets because it checks
to see if the connection CanWrite.
When we get an ack, we check to see if we have locally queued packets, but
never call OnCanWrite on the session to clear any streams which write blocked
without queueing packets.
Merge internal change: 47000173
QUIC: wire up the server-nonce parameters to the server config.
Merge internal change: 46985067
R=rch@chromium.org
Review URL: https://codereview.chromium.org/16256017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204046 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make the FEC group optional by adding a flag to the private headers.
Merge internal change: 46979143
Merging changes from chromium CL - 15385004
Merge internal change: 46949614
Removing debug logging from RecordPacketReceived. Seems redundant to
log both when we actually receive and when we record it.
Merge internal change: 46934210
Logging crypto handshake as a DVLOG rather than DLOG as it hasn't
recently been needed to debug test failures.
Merge internal change: 46932247
Changing the quic test client to simply not return a stream if not connected.
This will hopefully turn server test check-failures into server test
failures.
Merge internal change: 46932163
QUIC: redo server nonces.
Previously, in order to cope with strike-register failures and client
clock-sync issues, the server could issue a server nonce to a client. This
meant that the server had to remember rejected handshakes so that the server
nonce could be matched up. With this change, QUIC servers no longer need to
keep track of rejected handshakes.
Instead of issuing and remembering nonces, a server will now encrypt them and
forget about them. When a server nonce is used to establish freshness for a
connection, it will be stored in a per-GFE strike-register. (This
strike-register is separate from the one used to process client nonces.)
Merge internal change: 46889484
Remove FEC_ENTROPY_FLAG from private flags. Now, FEC packet's entropy
flag contain the xor of entropies of the protected packets.
Merge internal change: 46889094
Limit the number of times we'll fast-retransmit a given packet using taildrop.
Merge internal change: 46754530
Added CommonCertSetsQUIC to anonymous namespace.
QUIC: cleanups round two.
* Make CommonCertSetsQUIC a Singleton to save on every Config having its own
copy.
* Rework server config expiry: previously it caused an error at client hello
send time. Now it will cause an error at REJ processing time but, if the
config expired after we cached it, we will act as if we didn't have a cached
server config.
* Invalidate the server config cache in the event of a client hello sending
failure. This will prevent a bad server config from being cached and poisoning
connection attempts for the lifetime of the cache.
* Fix a bug in the test code which failed to parse hex chunks in debugging
messages correctly. (Thanks to wtc for noticing.)
Merge internal change: 46742937
Merging changes from chromium - CL 15074007
Merge internal change: 46710932
Fix a bug in QuicSession's header compression behavior which could lead
to infinite loops.
Merge internal change: 46694681
Getting 5% our CPU usage back by not calculating SentBandwidth for the
tcp congestion control algorithm.
Added a TODO to improve that function since it's pretty abysmal: the
ToLargerUnits and Subtract overhead alone accounted for 4.5% of the cpu
in initial loadtest runs.
Merge internal change: 46608880
Adding support for truncated guids in QuicFramer.
Merge internal change: 46575819
using our latched write_blocked status to spare us useless system calls.
Merge internal change: 46573462
Fixing some crashing issues in the QUIC loadtest, where if a client ever
disconnects it never recovers, either crashing trying to create a stream
or crashing waiting for a response on a non-existant stream.
I'm not sure if we have the same problem for the http/https simple clients
but we definitely do for QUIC.
Merge internal change: 46562890
Merging changes from chromium - CL 14614006
Merge internal change: 46460427
Merging cleanup changes from chromium CL - 14651009
Merge internal change: 46457093
Fixing a test framework bug for quic: we were munging headers to do
https:// for insecure quic resulting in a 404 in the http-only service
map. Then disalbing the test since we don't advertise secure SPDY on
insecure QUIC.
Merge internal change: 46408400
Move QuicConfig from ssl_global_data to quic_dispatcher.cc. Initialize
using values from QuicConfigProto and use the max_time_before_crypto_handshake
to set the overall connection timeout before crypto handshake finishes.
Merge internal change: 46400649
QUIC: implement ChannelIDs.
We'll need this for HTTPS.
Merge internal change: 46396357
Deleted usage of scoped_ptr_openssl. Added TODO comments for porting
ChannelIDSigner and Verifier.
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15937012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203220 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Blacklisting PCI domains for quic such that we won't even complete the
crypto handshake for those domains on port 443.
Merge internal change: 46392850
Dont retransmit packets which are NULL encrypted when encryption level
is FORWARD_SECURE.
This solves a bug when the client kept retrying to send a retransmitted
CHLO which the server kept dropping.
Merge internal change: 46380016
QUIC: various cleanups.
* The AES code no longer does key expansion for every packet.
* The CryptoFramer now actually calls Visitor::OnError.
Merge internal change: 46227160
QUIC: add a CryptSecretBoxer object for server-internal needs
Quic[En|De]crypter isn't actually thread-safe. I thought that it was because we
were doing the key schedule every time, but it subtly isn't because the nonce
is stored in the object, not on the stack.
With cl/46095856 (not yet landed) I changed the AES-GCM encrypter/decrypter to
really be non-thread-safe, which seemed fine because it wasn't previously
either, but then I recalled that the server code was assuming otherwise.
Initially I tried adding a thread-safe wrapper that could use thread-local
storage on the server side and just locks in Chrome. That's done in cl/46136485
which is alternative to this CL. However, after writing it, it seemed that it
might be easier just to have a thread-safe boxer, since this is internal to the
server, and be done with it. At the same time we can also solve the short-nonce
worry with the existing, AES-GCM based boxer.
Merge internal change: 46226208
For chromimum: Used sha256 to compute the hash of nonce and plaintext
and stored it at the end of Box message. In Unbox, verified the sha256
hash stored in the ciphertext, matches the sha256 hash of nonce and
plaintext in the ciphertext.
TODO: Use Aes128Gcm12[En|De]crypter instead of sha256.
QUIC - updated the comment in NormalizeHostname to say "stopping at the first trailing dot."
QUIC - moved destructor to out of line.
Merging cleanup changes from chromium - CL 14718011
Merge internal change: 46099778
Adding infrastructure to blacklist domains for QUIC
Merge internal change: 46093221
Changing to be aware of variable length guids, but not yet support reading,
writing, or negotiating non-8 byte guids.
Merge internal change: 46050640
QUIC: invalidate validity when server config changes.
When writing cl/44509151 I started by altering SetServerConfig but changed my
mind and split SetProof from SetServerConfig. I used git to revert the changes
to SetProof to avoid diff noise, but failed to add back the important change:
the validity flag needs to be cleared when the proof is set.
I will be wearing a brown paper bag for the rest of the day.
Merge internal change: 46050043
R=rch@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15910002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201925 0039d316-1c4b-4281-b951-d872f2087c98
|