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

14 Commits

Author SHA1 Message Date
Matt Joras
30bff94e85 Introduce new connection rate limits.
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
2020-05-18 16:40:43 -07:00
Matt Joras
d1a3652a4c Iterate QuicVersion::MVFST
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
2020-03-04 22:08:34 -08:00
Matt Joras
2b3b76cc4d Remove support for MVFST_OLD.
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
2020-02-28 09:52:34 -08:00
Luca Niccolini
39db4700c0 allow custom socket options
Summary: generic API for setting socket Options on both client and server

Reviewed By: yangchi

Differential Revision: D19763928

fbshipit-source-id: 7078eb8738aebc192bbace2498aaf9489526efff
2020-02-21 22:11:40 -08:00
Udip Pant
5478be7a65 make sure all workers bind to the same address when using
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
2020-01-28 13:37:01 -08:00
Udip Pant
887e3b467b synchronously run operations on QuicServer to start / stop packet forwarding
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
2020-01-10 12:12:16 -08:00
Matt Joras
592558ccb4 Use F14 for remaining unordered containers.
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
2019-12-02 11:39:30 -08:00
Udip Pant
80b3a9f393 add more checks for internally forwarded data
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
2019-11-18 11:05:36 -08:00
Udip Pant
024bbbba29 retry few times if there's a conflict in takeover handler address
Reviewed By: sharma95

Differential Revision: D17403844

fbshipit-source-id: 3084335be30e2376a6888ba24e21aa63bb040e3e
2019-11-18 11:05:36 -08:00
Konstantin Tsoy
f5c9737766 Add a transport settings getter to QUIC server
Summary: Add a transport settings getter to QUIC server.

Reviewed By: udippant

Differential Revision: D16786324

fbshipit-source-id: 8dabed4a3ff13dac0bafc4850c546657a9c2fd6f
2019-08-13 17:37:20 -07:00
Matt Joras
2f528e68c0 Draft-22 invariants change
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
2019-07-16 17:59:58 -07:00
Konstantin Tsoy
41d4c6afbe Add run-time partial reliability setting override
Summary: Enable/disable partial reliability in transport settings of a QUIC server run-time.

Reviewed By: yangchi

Differential Revision: D16135672

fbshipit-source-id: 93c1175263ec03dc707764520ee73c1c2fd449c9
2019-07-08 22:12:33 -07:00
Aman Sharma
a38d9157fd Plumbing to override transport parameters
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
2019-06-24 14:31:23 -07:00
udippant
50d4939e9e Initial commit of mvfst 2019-04-22 23:42:46 -07:00