Summary:
This introduces a rate limit to new connections created by a worker.
Right now it will simply send a VN, but eventually this will only issue a RETRY for unverified initials.
Reviewed By: udippant
Differential Revision: D21614905
fbshipit-source-id: 1832fbdad525c53fb1cb810aa9d7bae868c267d6
Summary:
This iterates the mvfst version to be semantically equivalent to draft-27, and leaves support for the old mvfst version.
The client will not yet be moved to draft-27 by default.
Reviewed By: lnicco
Differential Revision: D20182452
fbshipit-source-id: 1e11ad7296a6cd8d15ca5ed359d9ed82af79bb17
Summary:
This eliminatees some tech debt by completely removing the notion of version from the core transport parameters structure and the app token for zero rtt.
Note that for the draft-27 changes we will need to temporarily re-introduce it, but to a different layer (the extension encoding itself).
Reviewed By: JunqiWang
Differential Revision: D20073578
fbshipit-source-id: 2b55af621566bf1c20e21dd17251116de1788fa0
Summary: generic API for setting socket Options on both client and server
Reviewed By: yangchi
Differential Revision: D19763928
fbshipit-source-id: 7078eb8738aebc192bbace2498aaf9489526efff
Summary:
This is a bug where each worker can potentially bind to different address if no
address is supplied
Reviewed By: mjoras
Differential Revision: D19533888
fbshipit-source-id: 6f1258f09564d44ebb9843789d441c1fdecbdacc
Summary:
The async nature of the set up results in flakiness in unit tests.
For example, in QuicServerTest::TakeoverTest, clients send packets to server
right after setup, such as start / stop packetForwarding or pauseReads()
On the other hand, making them synchronous should be fine, since these are
called only during startup
Reviewed By: yangchi
Differential Revision: D19343423
fbshipit-source-id: 43cc169983d7f764b74c87f2188a9f8372007d84
Summary: We've seen good results with F14, and while these don't show up much in profiles, there's not much reason to keep them as the STL variants.
Reviewed By: yangchi
Differential Revision: D18702489
fbshipit-source-id: 829f7e17107a8962cd7b4dad9b3b5e3df01318e6
Summary:
This adds checks for forwarded data on all the possible branches that lead to
forwarding of packets to another process
Reviewed By: mjoras
Differential Revision: D18416971
fbshipit-source-id: 22dc3fd63de615904a411f90164a138bf0ef56e0
Summary:
Draft-22 onwards uses two one byte length fields to encode connection ID length instead of one one byte length field.
To support this without disrupting existing clients we need to make our parsing version dependent. This diff accomplishes it by special casing the existing Facebook client QUIC version (0xfaceb000), and changing the default Facebook client version going forward to 0xfaceb001.
Note that this diff also changes the behavior of the ticket transport parameters. When we changed from draft-18 to draft-19 transport parameters I apparently forgot to update the ticket transport parameters to the new format.
Reviewed By: yangchi
Differential Revision: D16205090
fbshipit-source-id: e74a92fa959d308f4bb43bad76e58d4b58d07322
Summary: Enable/disable partial reliability in transport settings of a QUIC server run-time.
Reviewed By: yangchi
Differential Revision: D16135672
fbshipit-source-id: 93c1175263ec03dc707764520ee73c1c2fd449c9
Summary:
I've added in some plumbing to enable us to override transport settings based on a specific `(datacenter, vip, server port, client prefix)` tuple.
+-------------------------------------+
| HTTPRevProxyService |
+-------------------------------------+
| Get the vip name, the datacenter,
| and the server port. Create a lambda that
| takes in the client IP address and applies
V overrides to the transport settings.
+-------------------------------------+
| ProxygenHQServer |
+-------------------------------------+
|
| Pass on the lambda
|
V
+-------------------------------------+
| QuicServer |
+-------------------------------------+
|
| Pass on the lambda
|
V
+-------------------------------------+
| QuicServerWorker |
+-------------------------------------+
| Call the lambda (passing in the
| client IP address) when we create
| a QuicSocket, and set the transport
V settings apprpriately
+-------------------------------------+
| QuicServerTransport |
+-------------------------------------+
Reviewed By: udippant
Differential Revision: D15227915
fbshipit-source-id: 23c94aa558b381eae13f98ae06c6a97125c1a071