1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-09 10:00:57 +03:00
Commit Graph

88 Commits

Author SHA1 Message Date
Yang Chi
a0a4ba3c9b Add a pure getter function to retrieve most recent Pacer write batch size
Summary:
When apps interested in such info retrieve it, it would be bad if we
update the value and mess up the timer drift. So this diff adds a pure getter
function.

Reviewed By: mjoras

Differential Revision: D16918673

fbshipit-source-id: c4954b2f7e3a1d53ec0e6491ef1a25e8f53f1744
2019-08-30 19:30:44 -07:00
Yang Chi
c0a659a30a Replace pacing related callsites with new Pacer interface
Summary:
Use the new Pacer interface in the transport where we currently
directly use CongestinoController interrace for paciner related APIs.

Reviewed By: mjoras

Differential Revision: D16918672

fbshipit-source-id: 410f72d567e71bdd3279e344f6e9abf5e132518e
2019-08-30 19:30:44 -07:00
Yang Chi
a4878434b6 Remove minimal pacing interval tracking in Quic congestion controllers
Summary:
Second try of this diff. This time after the fix of uninitizlied
default constructed std::chrono::duration values in BBR and Copa.

Currently each conegstion controller maintains this value while
TransportSettings also has this value. But currently there is no way they are
in sync. The timer uses the value in TransportSettings. So the value maintained
by each congestion controller isn't used except for tracing, but that also make
tracing wrong.

Reviewed By: oesh

Differential Revision: D16985568

fbshipit-source-id: 5fbd9fee4deec5177b92c733a159e0ba9bfd2289
2019-08-29 13:46:41 -07:00
Andrew Krieger
ea1a33b903 Misc fixes for building on Windows
Summary:
Mostly need a bunch of folly::assume_unreachable() (sometimes
replacing __builtin_unreachable()). One place using designated initializers
that had to get commented out. Some headers replaced with folly portability ones.

Reviewed By: mzlee, phoad

Differential Revision: D16970520

fbshipit-source-id: 1b8a36ecb1975e2dc0869b66c4ea5439baf7575d
2019-08-26 22:56:55 -07:00
Bonnie Xu
851c374518 Small fixes
Summary: Small fixes to qlog.

Reviewed By: sharma95

Differential Revision: D16966786

fbshipit-source-id: 7b85a85c218e3a827794c53352acd33cdf96af92
2019-08-22 17:52:20 -07:00
Yang Chi
a4b15010dc Back out "Remove minimal pacing interval tracking in Quic congestion controllers"
Summary: Original commit changeset: 71800e5dc1f9

Reviewed By: lnicco

Differential Revision: D16951701

fbshipit-source-id: 9f6b339bbcc7f1236a62ec842acfc6c8676a751d
2019-08-22 09:06:47 -07:00
Yang Chi
a9305ebbe1 Remove minimal pacing interval tracking in Quic congestion controllers
Summary:
Currently each conegstion controller maintains this value while
TransportSettings also has this value. But currently there is no way they are
in sync. The timer uses the value in TransportSettings. So the value maintained
by each congestion controller isn't used except for tracing, but that also make
tracing wrong.

Reviewed By: mjoras

Differential Revision: D16772744

fbshipit-source-id: 71800e5dc1f9fce8df4b1f72ce5aa5cfd15fbc89
2019-08-19 09:14:08 -07:00
Bonnie Xu
db349541f2 Update qlog format to be more complete
Summary: Update qlog format to be more complete. Adding the summary section (with extra fields like title, description, etc). This diff is just to make the format more on par with Robin's schema.

Reviewed By: mjoras

Differential Revision: D16499808

fbshipit-source-id: 56cfbb95404f7e3c6638bffda18b53f7d83048a1
2019-07-30 12:48:57 -07:00
Bonnie Xu
0929100b18 Add transportStateUpdate event
Summary: Add transportStateUpdate event so it can be part of qlog.

Reviewed By: mjoras

Differential Revision: D16342467

fbshipit-source-id: 109189275d44996850b82646bab4a733a3a4c7a1
2019-07-25 11:52:19 -07:00
Junqi Wang
228b80b1a8 Make AppTokenValidator::validate const
Summary: prevent application from changing state

Reviewed By: knekritz

Differential Revision: D16448292

fbshipit-source-id: f1c065eec8556a5dd6ef75b2466b761beee82a40
2019-07-25 11:52:18 -07:00
Junqi Wang
e92672d7ee Stateless API for APP to validate/write 0-RTT params
Summary:
Previously we tried to put this API in connectionCallback, but that has
some lifecycle problem. So we decided to make this API independent of mvfst's
state. Application (e.g. HTTP/3, QPACK) will have to either make the 2 functions
stateless or maintain the lifecycle of any captured objects.

Reviewed By: afrind, lnicco

Differential Revision: D16074471

fbshipit-source-id: b0a3baa6870bee56372797754972ab5c2c1f2232
2019-07-19 08:54:37 -07:00
Yang Chi
2a97d4533c Quic busy write loop detector
Summary:
This diff adds a DebugState in the QuicConnectionState to track the
reason we schedule transport WriteLooper to run, the reason we end up not
writing and the number of times such write happens consecutively. And when it
reaches a predefined limit, we trigger a callback on a loop detector interface.

Reviewed By: kvtsoy

Differential Revision: D15433881

fbshipit-source-id: d903342c00bc4dccf8d7320726368d23295bec66
2019-07-17 15:18:57 -07:00
Bonnie Xu
e63322df0a Add TransportSummary event to Quic
Summary: Add TransportSummary event to Quic, so it can be logged as part of qlog.

Reviewed By: mjoras

Differential Revision: D16116127

fbshipit-source-id: ddfecac5b5452fe9b2e3df87b152561eab903188
2019-07-12 09:43:46 -07:00
Bonnie Xu
ff1c36c25a Added ConnectionClose event to Quic
Summary: Added ConnectionClose event to Quic.

Reviewed By: sharma95

Differential Revision: D16097522

fbshipit-source-id: c46d63ac75246ad93a3c617383f1b9a26d0e0b4f
2019-07-12 07:05:40 -07:00
Bonnie Xu
0e6d95e910 Outputting QLogs to a file for HQClient.
Summary: Send stored QLogger logs to a file [for the client].

Reviewed By: sharma95

Differential Revision: D15837102

fbshipit-source-id: e61dac2b17bd488ac35202764d8ec64353330f26
2019-06-26 08:46:14 -07:00
Nitin Garg (MPK, Infra)
92a68aa968 Add pacing information to QUIC TransportInfo
Summary: This is useful information for the application to know about

Reviewed By: yangchi

Differential Revision: D15599964

fbshipit-source-id: da451f46238f68fe701d6f433701c569cfe2f47d
2019-06-07 22:02:58 -07:00
Akshay Narayan
7d58058b8f QuicTransportBase: Allow notifyPendingWriteOnStream (#18)
Summary:
When a write callback x is already defined for a stream
and notifyPendingWriteOnStream is called with the same callback x,
it is safe to not return an error.

Building on master is currently broken due to 2040a13e40 (diff-ddd35d436da215e41b89fd5afe4acebbR11), but this commit builds when rebased before that.

udippant
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/18

Reviewed By: yangchi

Differential Revision: D15562893

Pulled By: afrind

fbshipit-source-id: 44e62bb9bb0002508257acdc419f20bcb973ca64
2019-06-05 16:55:25 -07:00
Nitin Garg (MPK, Infra)
559103f399 Add bytesAcked to QUIC
Summary: bytesAcked is a very useful stat for apps to know. Bytes written only tells me that data was written to socket but it may not have been acked.

Differential Revision: D15507105

fbshipit-source-id: 656ee45418a78c7e05d8e7979afa2c9a41976e85
2019-05-25 11:55:17 -07:00
Yang Chi
1dbe39fd76 Separate app-limited and app-idle
Summary:
Current app-limited is defined as the connection doesn't have a no
non-control stream. I'm changing this to be app-idle. And app-limited will be
changed to a state in connection where app isn't sending bytes fast enough to
keep congestion controller probing higher bandwidth.

Reviewed By: mjoras

Differential Revision: D15456199

fbshipit-source-id: e084bc133284ae37ee6da8ebb3c12f505011521e
2019-05-24 12:16:09 -07:00
Omer Shapira
3099d621af fix to peek API
Reviewed By: lnicco

Differential Revision: D15415966

fbshipit-source-id: 50363c4d6289d27e772cab5000bb387926c96db0
2019-05-22 20:02:09 -07:00
Bonnie Xu
f4ae0a1efd Updated files to change syntax.
Summary: Changed existing chrono syntax to chrono_literals syntax.

Reviewed By: mjoras, sharma95

Differential Revision: D15374649

fbshipit-source-id: 40033e90cca226266ef85e4fec629f290bc5dae6
2019-05-20 12:10:46 -07:00
Yang Chi
ca31b43564 rename timeoutBasedRetxCount to timeoutBasedRtxCount
Summary: Just to make it consistent with other var names in quic

Reviewed By: siyengar

Differential Revision: D15415528

fbshipit-source-id: 917159d6ccf86cf34612386d128d6b6d5bf62de6
2019-05-20 11:22:24 -07:00
Junqi Wang
48b3490455 Move path validation canceled VLOG inside if block
Summary: better logging

Reviewed By: udippant

Differential Revision: D15412201

fbshipit-source-id: 8ef8d5f18b9dccd1d3180772f4599f37e332344d
2019-05-20 03:34:26 -07:00
Luca Niccolini
03d1efac7d Revert D14757064: [quic] Fix peek callback
Differential Revision:
D14757064

Original commit changeset: bb1e43762f54

fbshipit-source-id: 9855ea175179b9652e0ec9e0a649769a60268600
2019-05-16 18:36:52 -07:00
Konstantin Tsoy
ea0fb07be1 Fix peek callback
Summary:
Peek callback wasn't raised on data arrival. The fix is to:
* always update peek looper before read looper
* always update `peekableList` together with `readableList`

Differential Revision: D14757064

fbshipit-source-id: bb1e43762f54d024050eced425351f03a0cffd9f
2019-05-16 12:22:14 -07:00
Subodh Iyengar
408a2b8a09 Gate QuicLogger to server only
Summary:
Using FOLLY_MOBILE macro to be able to exclude
quic trace generation on mobile

Reviewed By: mjoras

Differential Revision: D14609755

fbshipit-source-id: 2d5d624703a5b58c28cb533e3c2cc20d3a5c3d45
2019-05-10 15:59:11 -07:00
Matt Joras
b2e1eedfd3 Mostly remove version negotiation
Summary:
Draft-19 onwards effectively punted version negotiation to QUICv2. Now receiving version negotiation on clients is treated as an immediate termination of the connection.

The transport parameter format has also changed to no longer include any reference to the QUIC version. To avoid us (Facebook) having to turn off QUIC traffic in production, our server needs to be able to parse these transport parameters from our older clients. To achieve this when parsing the transport parameters we will, as a temporary measure, check for the Facebook QUIC version to determine which transport parameter format we are parsing. Luckily for us the version we chose maps nicely to an implausible length for the transport parameters (0xface).

Note that this diff still has the client send the old transport parameter format, so that the rollout can be staged.

Reviewed By: yangchi

Differential Revision: D15203481

fbshipit-source-id: dfaaddc3acc76434461b04430b82a0902138c060
2019-05-10 12:55:28 -07:00
Subodh Iyengar
0509b068b4 Use find instead of count for readable streams
Summary:
Use find instead of count. We just need to know whether one exists, count will go through
all the elements instead which is a waste

Reviewed By: sharma95

Differential Revision: D15270589

fbshipit-source-id: f85780f524f6534b0b240162b60b7c7d72c0df85
2019-05-08 19:16:40 -07:00
Yang Chi
c35e3d6e84 Rename RTO to PTO
Summary: To conform to the current specs.

Reviewed By: mjoras

Differential Revision: D15215018

fbshipit-source-id: 4dcc495aea1cd7cebf2bc84f7367cb2e4a55df19
2019-05-06 18:50:35 -07:00
Subodh Iyengar
1d9e4034c9 Fix app limited to account for peer created streams
Summary:
Previously updateAppLimited was not accounting for peer created streams.
This moves app limited accounting into the stream manager

This also makes a subtle change to the applimited callback. We assume that
we start off as not app limited now, so if we create a stream we will not call
the congestion controller app limited callback.

Reviewed By: mjoras

Differential Revision: D15166114

fbshipit-source-id: 1a8d573533861f53bb1bd9fdc605dfefe68902dc
2019-05-06 15:58:49 -07:00
Alan Frindell
a122063d22 Add helper to send a reset from a readError
Summary: The previous diff removed automatically sending a rst stream when receiving a reset stream.  This adds a helper to do that from the application layer.

Reviewed By: mjoras, pkir

Differential Revision: D15208997

fbshipit-source-id: b8d3898e85537e97df61cc66854299698a48c825
2019-05-06 14:05:32 -07:00
Alan Frindell
90e5e1b3f1 Split stream state machine into send and receive state machines
Summary: This is step 1 for removing reset on reset, since the send side may need to transition to waiting for a reset ack while the read side is an any state.

Reviewed By: lnicco

Differential Revision: D15075849

fbshipit-source-id: 1e094942a8a1ca9a01d4161cd6309b4136a9cfbf
2019-05-06 14:05:31 -07:00
Aman Sharma
85fc503506 TRIP logging QUIC fields
Reviewed By: udippant

Differential Revision: D14627382

fbshipit-source-id: 573582a2936ffce31b12648c4ecea09ed59befbf
2019-05-06 12:15:38 -07:00
Konstantin Tsoy
6b49f4e42a Cancel delivery callbacks on skip
Summary:
For the sender, upon egress or ingress skip we must check registered
delivery callbacks and invoke `onCancel()` for each offset below the skipped
offset.

Reviewed By: mjoras

Differential Revision: D15113113

fbshipit-source-id: 221badce8e92abde48e8ab2c8f3c1da9e506f54e
2019-05-06 10:29:42 -07:00
Matt Joras
41fbfa84c5 Change idle_timeout transport parameter to milliseconds
Summary: This changed in to be in milliseconds d19 forward.

Reviewed By: yangchi

Differential Revision: D15183837

fbshipit-source-id: 561218321dcb51ec41093cafbdb967db2d4b3660
2019-05-02 15:50:27 -07:00
udippant
79032c7b9b fbshipit-source-id: f498ac5e677b2931d937ba78edd4373ba04dca2a 2019-04-25 21:33:43 -07:00
udippant
163ce02a6f Sync changes to rename onNewStream and CongestionController factory 2019-04-24 17:44:31 -07:00
udippant
50d4939e9e Initial commit of mvfst 2019-04-22 23:42:46 -07:00