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
Amaury Séchet
7a1b58e5e8 Move early app data params getter and validator to QuicConnectionStateBase (#117)
Summary:
This ensures they are available to the whole stack rather than the transport only. The validator needs it in the server case, and will soon need it in the client case, so that seems appropriate to make it available.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/117

Reviewed By: yangchi

Differential Revision: D20536366

Pulled By: mjoras

fbshipit-source-id: a76d369c0a82b9be1f985aed1f33f7a6b338a2ae
2020-03-23 10:55:01 -07:00
Amaury Séchet
bfadaf4985 Use the PskCache from the context rather than the transport (#111)
Summary:
The cache is obviously dependent on the crypto that is used. It's management needs to be moved down to part of the code that are specific to the crypto used. As a first step, we remove the cache from the transport, and use the one from the fizz context - if available - through the handshake.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/111

Reviewed By: mjoras

Differential Revision: D20463307

Pulled By: yangchi

fbshipit-source-id: c14908a10c80a977096f1ec145359f60899f8777
2020-03-18 02:58:49 -07:00
Yedidya Feldblum
ace2cc78a6 Unqualify uses of folly::AsyncUDPSocket::ReadCallback::OnDataAvailableParams
Summary: Unqualify nearly all uses of `folly::AsyncUDPSocket::ReadCallback::OnDataAvailableParams` since nearly all uses already have `OnDataAvailableParams` in scope.

Differential Revision: D20450063

fbshipit-source-id: c0fd49a7eace44a6edc8086762c44753224788dd
2020-03-16 02:57:30 -07:00
Amaury Séchet
9f91bb4b95 Move the caching of server parameters to ClientStateMachine (#109)
Summary:
All the state already moved there anyways, and this is closely related to the Psk cache management, which is also moving away from QuicClientTransport.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/109

Reviewed By: mjoras

Differential Revision: D20463300

Pulled By: yangchi

fbshipit-source-id: e9f0dc6285ccc6fd8cdc98d0e3579e6af8b00306
2020-03-15 23:57:24 -07:00
Amaury Séchet
050a584a14 Move 1RTT write cipher to the handshake. (#102)
Summary:
This is a continuation of https://github.com/facebookincubator/mvfst/issues/101
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/102

Test Plan:
Imported from GitHub, without a `Test Plan:` line.

 ---
## Proxygen Canary
Traffic Canary: https://our.intern.facebook.com/intern/traffic/canary?fbid=3593373427403977
* elb.prod.bom1c01 - binary - 2020-03-14 13:18 - https://fburl.com/dyndash/yv327msu
* flb.prod.flhe3c01 - binary - 2020-03-14 13:18 - https://fburl.com/dyndash/h8l2uq4z
* slb.prod_regional.rash0c00 - binary - 2020-03-14 13:18 - https://fburl.com/dyndash/s44dmkr4
 ---

Differential Revision: D20398160

Pulled By: mjoras

fbshipit-source-id: d9e07fce83ba14c56f2dae217dea1b8f67bffa1f
2020-03-14 16:40:17 -07:00
Dan Melnic
ba5ef797a5 Add UDP GRO support
Summary: Add UDP GRO support

Reviewed By: mjoras

Differential Revision: D20347326

fbshipit-source-id: be3c31f070c4f2c1ef84f9e2df60f49a5fcabd93
2020-03-13 10:12:22 -07:00
Amaury Séchet
3c5a3a2420 Populate QuicReadCodec's cipher from the client's handshake directly (#101)
Summary:
This is a continuation of https://github.com/facebookincubator/mvfst/issues/98 and depends on it.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/101

Test Plan:
Imported from GitHub, without a `Test Plan:` line.

 ---
## Proxygen Canary
Traffic Canary: https://our.intern.facebook.com/intern/traffic/canary?fbid=1081862622194120
* elb.prod.eze1c01 - binary - 2020-03-12 08:37 - https://fburl.com/dyndash/7zk4wokz
* flb.prod.fgdl5c03 - binary - 2020-03-12 08:37 - https://fburl.com/dyndash/cp8fkdkc
* slb.prod_regional.rprn0c00 - binary - 2020-03-12 08:37 - https://fburl.com/dyndash/j1cfe45e
 ---

Differential Revision: D20398127

Pulled By: mjoras

fbshipit-source-id: 16a7f5fab193edb25c7d241ce34fa6e710cc014f
2020-03-12 16:05:35 -07:00
Amaury Séchet
6654b307d9 Move peer advertised transport parameter to QuicClientConnectionState (#104)
Summary:
Some of these parameters are already there. The other need to be move so that the can be accessed when caching new public keys.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/104

Differential Revision: D20250783

Pulled By: mjoras

fbshipit-source-id: 3e8b6c9e8945fb5ae1ea71a8af1512bfe0616736
2020-03-12 15:17:06 -07:00
Zachary Weinberger
88e3fdadc0 Add streaming option for FileQLogger
Summary: In the constructor of FileQlogger adds a bool that sets streaming mode. If it's set it creates a thread that reads events from the log and immediatly outputs them to an output file.

Reviewed By: mjoras

Differential Revision: D20250881

fbshipit-source-id: 2af3ff0aeaa5b62f90b0c01570c96c92fdab4412
2020-03-12 13:47:35 -07:00
Amaury Séchet
ef5d39152f Move handshake write cipher to the handshake. (#98)
Summary:
This is similar to https://github.com/facebookincubator/mvfst/issues/97 and depends on it.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/98

Test Plan:
Imported from GitHub, without a `Test Plan:` line.

 ---
## Proxygen Canary
* elb.prod.hkg3c01 - binary - 2020-03-09 20:15 - https://fburl.com/dyndash/in7s8dml
* flb.prod.fbsb8c02 - binary - 2020-03-09 20:15 - https://fburl.com/dyndash/cr6myln4
* slb.prod_regional.rvll0c00 - binary - 2020-03-09 20:15 - https://fburl.com/dyndash/jaj9flmq
* slb.regional.rcln0c01.p2 - binary - 2020-03-09 20:15 - https://fburl.com/dyndash/5ezx6w63
 ---

Reviewed By: mjoras

Differential Revision: D19873742

Pulled By: sharmafb

fbshipit-source-id: 1469e36781eb7d8a0b1bf74eca45864cf208dcbd
2020-03-11 11:34:42 -07:00
Amaury Séchet
63e9b70ce6 Move 0RTT cipher management to the handshake. (#97)
Summary:
Make sure that trigger on error is performed when running connect.

This avoids some bucket brigading around the connect function and helps to isolate QuicClientTransport pskCache management, reduce the memory footprint of the handhsake and reduce temporal coupling.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/97

Test Plan:
Imported from GitHub, without a `Test Plan:` line.

 ---
## Proxygen Canary
Traffic Canary: https://our.intern.facebook.com/intern/traffic/canary?fbid=212582886632633
* elb.prod.sof1c01 - binary - 2020-03-04 10:31 - https://fburl.com/dyndash/cu6glbvv
* flb.prod.fisb3c02 - binary - 2020-03-04 10:31 - https://fburl.com/dyndash/qaozda7o
* olb.prod.rlla0c01.p2 - binary - 2020-03-04 10:31 - https://fburl.com/dyndash/m7des08a
* slb.prod_regional.rfrc0c00 - binary - 2020-03-04 10:31 - https://fburl.com/dyndash/j2ftlr65
* slb.regional.rlla0c01.p2 - binary - 2020-03-04 10:31 - https://fburl.com/dyndash/98by8k4u
 ---

Reviewed By: mjoras

Differential Revision: D19873714

Pulled By: sharmafb

fbshipit-source-id: 7b0980e9d2590227bec5426560f5dd5d6a34ae85
2020-03-10 11:46:19 -07:00
Victor Zverovich
96b36ec31f Make errnoStr return std::string instead of fbstring
Summary:
The result of `errnoStr` is often converted to `std::string` so returning `fbstring` adds an extra copy. Make it return `std::string` instead. This will also allow removing dependency between `String.h` and `FBString.h`.

(Note: this ignores all push blocking failures!)

Reviewed By: yfeldblum

Differential Revision: D20195395

fbshipit-source-id: 0dc65f1566911156be3fcb715dd105c58f2a8822
2020-03-10 10:49:15 -07:00
Matt Joras
ef92376cb0 Support draft-27 transport parameters
Summary:
The transport parameters format changed in draft 27. It is now self describing via varints.

This diff retains support for the old encoding and does not iterate the mvfst version.

Reviewed By: lnicco

Differential Revision: D20149977

fbshipit-source-id: c6fa9c226f859ed81ca83ada5a8bc5832b4a3388
2020-03-04 22:08:34 -08:00
Yang Chi
fa1fae0d26 Introduce empty read loop detection callback in Quic
Summary:
Similar to the exiting empty write loop callback. The new API will
trigger when we read from socket but back with empty hands.

Reviewed By: lnicco

Differential Revision: D20130432

fbshipit-source-id: 9b61310b4ea4c5c7999742c5a8761a831f20f7b7
2020-03-03 18:52:17 -08:00
Matt Joras
61cd1a7289 Back out "Implement handshake done and cipher dropping."
Summary: This caused an increase in client errors.

Reviewed By: yangchi, lnicco

Differential Revision: D20186386

fbshipit-source-id: 737122a94c97498efba61292a6c292cfe482925c
2020-03-01 18:31:40 -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
Matt Joras
472e40a902 Implement handshake done and cipher dropping.
Summary: This implements the handshake done signal and also cipher dropping.

Reviewed By: yangchi

Differential Revision: D19584922

fbshipit-source-id: a98bec8f1076393b051ff65a2d8aae7d572b42f5
2020-02-27 12:25:52 -08:00
TJ Yin
a396f62335 Replace folly::Optional::hasValue() by has_value()
Differential Revision: D19882830

fbshipit-source-id: 031217f9890351022bc8d171f0ccd7e045dd6972
2020-02-26 08:40:44 -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
Amaury Séchet
e6e6196c86 Move the delayed destruction from Handshake to QuicConnectionStateBase
Summary: Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/88

Test Plan:
Imported from GitHub, without a `Test Plan:` line.

 ---
## Proxygen Canary
Traffic Canary: https://our.intern.facebook.com/intern/traffic/canary?fbid=224323975233396
* elb.prod.ham3c01 - binary_asan - 2020-02-05 02:00 - https://fburl.com/dyndash/u2q12hwq
* elb.prod.mia3c02 - binary - 2020-01-31 09:40 - https://fburl.com/dyndash/vmv34rpa
* elb.prod.otp1c01 - binary - 2020-02-05 02:26 - https://fburl.com/dyndash/0zttm61b
* flb.prod.fath4c02 - binary - 2020-02-05 02:26 - https://fburl.com/dyndash/6o1nqsti
* flb.prod.fgye3c01 - binary - 2020-01-31 09:40 - https://fburl.com/dyndash/nu3i5ahw
* olb.prod.rfrc0c01.p2 - binary - 2020-01-31 09:40 - https://fburl.com/dyndash/c1o6hpqw
* olb.prod.rftw0c01.p2 - binary - 2020-02-05 02:26 - https://fburl.com/dyndash/xg6qbyru
* slb.prod_regional.rcln0c00 - binary - 2020-02-05 02:26 - https://fburl.com/dyndash/e4qkbzcz
* slb.prod_regional.rfrc0c00 - binary - 2020-01-31 09:40 - https://fburl.com/dyndash/j0yxofty
* slb.prod_regional.rrva0c00 - binary_asan - 2020-02-05 02:00 - https://fburl.com/dyndash/4hsg02uj
* slb.regional.rfrc0c01.p2 - binary - 2020-01-31 09:40 - https://fburl.com/dyndash/1njxzbgf
* slb.regional.rvll0c01.p2 - binary - 2020-02-05 02:26 - https://fburl.com/dyndash/056xdmzn
 ---

Reviewed By: lnicco

Differential Revision: D19551142

Pulled By: mjoras

fbshipit-source-id: b0d14146d14384b8c37887b3e9d8fed7d6181d88
2020-02-05 06:13:33 -08:00
Luca Niccolini
90f0aa9665 add advertisedInitialMaxStreamsBidi and advertisedInitialMaxStreamsUni to transport params
Reviewed By: JunqiWang

Differential Revision: D19718461

fbshipit-source-id: 2a51f8e6c88663deb3a0d85402b53a9e3c1ffe61
2020-02-04 09:24:34 -08:00
Yang Chi
591f27c6f1 Remove a few quic traces
Summary:
Remove all the stream events, packet/udp recv event and ack event.
They are >40%  of  the  events.

Reviewed By: mjoras

Differential Revision: D19466165

fbshipit-source-id: 3a20b201e630527e6d25d1a14f0f520728190d50
2020-01-29 17:10:32 -08:00
Konstantin Tsoy
73eb060bfa Add recvmmsg to client
Summary: Add recvmmsg to client

Reviewed By: mjoras

Differential Revision: D18928493

fbshipit-source-id: 548a8cd2a6b7a7bbfd2ba6772816f8fae708c880
2020-01-24 22:24:31 -08:00
Udip Pant
21a7efb2e3 remove constraints of 4-bytes minimum len for connection-id
Summary:
New QUIC draft no longer has this limitation for connection-id, and allows
connid of len 0 -> 20.

This diff removes the constraints. I still kept the requirement for
*server-chosen* conn-id

Reviewed By: mjoras, lnicco

Differential Revision: D19507366

fbshipit-source-id: 4c73f45617f40b29d47d2d86b7598f6c95588d0a
2020-01-23 21:59:49 -08:00
Yang Chi
2405111e88 New QuicSocket::ConnectionCallback for first peer packet processed
Summary: as title

Reviewed By: JunqiWang

Differential Revision: D19434037

fbshipit-source-id: 7f2b6491fcce68840dc6ff57f99657dd5d535e9f
2020-01-18 13:36:04 -08:00
Yang Chi
fb999ff34b Back out "New TransportSetting option to let client deliver onTransportReady at first Ack"
Summary: Original commit changeset: 6714630c5a49

Reviewed By: mjoras

Differential Revision: D19432294

fbshipit-source-id: d756413eeed2bc50e8124abbbe750580e396e216
2020-01-17 01:45:12 -08:00
Matt Joras
431acc838f Optimize ACK frame writing
Summary:
Previously we stored an `IntervalSet` in each `WriteAckFrame`. We don't need to do this, as by the time we are writing an `ACK` the `IntervalSet` is complete. Instead of bothering with the `IntervalSet` operations, we can simply serialize it to a reverse-sorted `vector.`

Additionally this has some micro-optimizations for filling the ACK frame, with a new function for getting varint size.

Reviewed By: yangchi

Differential Revision: D19397728

fbshipit-source-id: ba6958fb36a4681edaa8394b1bcbbec3472e177d
2020-01-16 10:40:40 -08:00
Subodh Iyengar
2745a85505 receive multiple recvmsg in one loop
Summary:
Retry the original multiple recvmsg diff.

This has a few changes from the original:

1. Fixes happy eyeballs behavior by using the socket directly from the callback.
2. Fixes an error condition to make sure we unregister the callback on error
3. Makes the default to use the basic 1 message recv.

Reviewed By: yangchi

Differential Revision: D19192548

fbshipit-source-id: cd441a8bd448d2ae7d4b1add61aae0eeb7d0e840
2020-01-16 10:14:56 -08:00
Yang Chi
eacaa4f35d New TransportSetting option to let client deliver onTransportReady at first Ack
Summary:
This diff adds an new setting to allow the client callbacks
onTransportReady slightly earlier during handshake: first ack instead of cipher
ready.

Reviewed By: mjoras

Differential Revision: D19414177

fbshipit-source-id: 6714630c5a49b3ed8e81b79da2af81b50ad828a1
2020-01-15 15:54:11 -08:00
Matt Joras
066796b52d Pings are allowed in non-protected packets
Summary: As in title.

Reviewed By: yangchi

Differential Revision: D19411304

fbshipit-source-id: 674fb4ccb428badefe28b6ffe11a3b55b92afe6c
2020-01-15 13:17:43 -08:00
Luca Niccolini
5bffffea4b allow client bind to a specified socket
Summary: rather than always binding to INADDR_ANY

Differential Revision: D19361477

fbshipit-source-id: 4a6d400529833a5b3356564ea2220c77180b5700
2020-01-14 11:22:05 -08:00
Ammar Malik
98224facb6 Changing toString functions in QuicExceptions to return folly::StringPiece to avoid extra copy
Summary:
In QuicExceptions, in the case where the toString method was able to statically determine the response strings, we simply return the string literals in a folly::StringPiece instead of unnecessarily copying them into std::string.

Some toString methods had some dynamically generated responses and thus could not be updated. Added a TODO explaining the fact.

Reviewed By: mjoras

Differential Revision: D19192117

fbshipit-source-id: d9e5f202f9bf240009e8b8fd16f337b0506fbeb0
2020-01-02 14:30:48 -08:00
Subodh Iyengar
60240e3f08 partially revert multiple recvmsg
Summary:
Revert back to using getReadBUffer for reading from the udp socket.

There are a few issues we found while testing, so reverting for now, we can fix them later.

Reviewed By: yangchi

Differential Revision: D19055438

fbshipit-source-id: 2288e94e0aeab95a5cc6ade39f744b5d98062281
2019-12-19 13:07:22 -08:00
Subodh Iyengar
e524c0c069 iobufqueue diediedie
Summary:
Don't use IOBufQueue for most operations in mvfst and use BufQueue instead. Since BufQueue did not support a splitAtMost, added it in instead.

The only place that we still use IOBufQueue is in crypto because fizz still requires it

Reviewed By: mjoras

Differential Revision: D18846960

fbshipit-source-id: 4320b7f8614f8d2c75f6de0e6b786d33650e9656
2019-12-06 12:06:44 -08:00
Subodh Iyengar
9cff5f0985 dont create iobuf combined
Summary:
Just use create instead of create combined. This allows
iobuf to decide whether it wants to be created combined or not.

createcombined invoked cmpexchg during descruction.
create() simply calls free()

Reviewed By: mjoras

Differential Revision: D18838402

fbshipit-source-id: 08748429adfe36584c63155d8fc882e5d3b0ba6f
2019-12-05 14:46:39 -08:00
Subodh Iyengar
d2fa2cbcd6 process multiple packets on recvmsg
Summary:
In the current client code we read one packet, go back to epoll, and then read
another packet. This is not very efficient.

This changes it so that we can read multiple packets in one go from an epoll
callback.

This only performs changes on the client

Reviewed By: mjoras

Differential Revision: D18797962

fbshipit-source-id: 81be82111064ade4fe3a07b1d9d3d01e180f29f5
2019-12-04 12:04:10 -08:00
Subodh Iyengar
02d473e8ec use recvmsg on client
Summary:
Use the new recvmsg api on the client to receive a packet
from AsyncUDPSocket

Reviewed By: mjoras

Differential Revision: D18797963

fbshipit-source-id: 319d5c41f3a868e7b78947fdbcf2c411b6d7fbf0
2019-12-04 12:04:10 -08:00
Raghu Nallamothu
e06de27550 Merge Application Close Frame and Connection Close Frame
Summary: As a part of Draft 17, application close frame has been removed, we use connection close frame to represent both application close and connection close.

Reviewed By: mjoras

Differential Revision: D18580856

fbshipit-source-id: d274fa2d3dbc59b926bca5a2b8a20328ae582703
2019-12-03 15:02:06 -08:00
Amaury Séchet
24cedd8c6e Remove explicit use of FizzCryptoFactory from QuicClientTransport (#71)
Summary:
One less use of Fizz in "shared" space.

Depends on https://github.com/facebookincubator/mvfst/issues/70
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/71

Reviewed By: mjoras

Differential Revision: D18688620

Pulled By: yangchi

fbshipit-source-id: 8dd18dfd05964d2779dd404848879e8d76d9dd72
2019-11-27 15:25:29 -08:00
Viktor Chynarov
fe92d2a5ce Add onNetworkSwitch method to QuicSocket
Summary:
* Add onNetworkSwitch which is default no-op to QuicSocket
* rename replaceSocket to onNetworkSwitch()
* add unit tests

Reviewed By: JunqiWang

Differential Revision: D18572354

fbshipit-source-id: db304cd8369eb3a38272ab19e71854c62f2d37b7
2019-11-20 08:53:33 -08:00
Viktor Chynarov
20807a350d Exchange active_connection_id_limit in transport parameters [2/2]
Summary:
Client will set their active_connection_id_limit to the server as 7 (so it will
have 8 conn ids in total).

Reviewed By: JunqiWang

Differential Revision: D18532441

fbshipit-source-id: b0be65cec9f7c483469b0b4a2810bc370a6945c3
2019-11-20 08:46:56 -08:00
Aman Sharma
69ac8aeb62 De-templatize stream state machine logic
Summary: The state machine logic is quite abstruse, this modifies it to make it more readable.

Reviewed By: siyengar

Differential Revision: D18488301

fbshipit-source-id: c6fd52973880931e34904713e8b147f56d0c4629
2019-11-19 20:18:11 -08:00
Amaury Séchet
ccf9ca475e Move the management of the certificate verifier and the fizz::client::FizzClientContext object to FizzClientContext (#63)
Summary:
This allows to remove various fizz specific parts of the API.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/63

Test Plan:
Imported from GitHub, without a `Test Plan:` line.

 ---
## Proxygen Canary
Traffic Canary: https://our.intern.facebook.com/intern/traffic/canary?fbid=2326668697645016
* elb.prod.sju1c01 - binary - 2019-11-14 15:00 - https://fburl.com/dyndash/7m8qfbm6
* flb.prod.flhe2c01 - binary - 2019-11-14 15:00 - https://fburl.com/dyndash/alba0iv1
* olb.prod.rpnb0c01 - binary - 2019-11-14 15:00 - https://fburl.com/dyndash/f5eogqg5
* slb.prod_regional.rodn0c00 - binary - 2019-11-14 15:00 - https://fburl.com/dyndash/vtit218f
 ---

Reviewed By: yangchi

Differential Revision: D18303967

Pulled By: mjoras

fbshipit-source-id: 9bb7ed6ab608f9c2d1e8d5b0b533bda69f5d9a71
2019-11-18 09:27:42 -08:00
Viktor Chynarov
45e71f737a Add QLog events for ConnMigration, PathValidation
Summary:
QLogConnectionMigrationEvent:
Allow observing client-side ConnectionMigration attempts (replacing the
socket), and observing the server-side changing the peer address it
is writing to.

QLogPathValidationEvent:
Allow observing successful/failed path validation attempts.
Success is considered as a correct PathResponse being returned.
A Failure is only published on the timeout expiring, not an invalid
PathChallenge frame being returned (we do not cancel this).

There are already QlogEvents for PathChallenge/PathResponse that
can be observed.

Reviewed By: JunqiWang

Differential Revision: D18340999

fbshipit-source-id: 512108f82a6e082021c0bd3254f108c128b17ba3
2019-11-08 08:39:36 -08:00
Amaury Séchet
6d19c622b2 Use a factory to create ClientHandshake (#59)
Summary:
This will allow to be able to create different kind of handshake going forward.
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/59

Reviewed By: siyengar

Differential Revision: D18088574

Pulled By: mjoras

fbshipit-source-id: 0732bb63a9e243fef77cdaf4f76e711fcb09ecdc
2019-11-04 16:06:18 -08:00
Viktor Chynarov
2f2d00e607 Add replaceSocket() method to QuicClientTransport
Summary:
Support migration by default on HQServer.
Allow configurable setting to initiate client migration. If client migration is
enabled, we switch sockets on the second request.

We cannot switch sockets right away on connectSuccess, because even though the
1RTT clientWriteCipher is available, the handshake is still not fully complete.
The server would then receive a packet from a different peer address, but it
wouldn't be in the app data packet space, causing check in ServerStateMachine
to fail.

Reviewed By: JunqiWang

Differential Revision: D18246022

fbshipit-source-id: 21cfa9080a703ae09574711206b8f026282b6a34
2019-11-01 13:15:40 -07:00
Yang Chi
61a3c68470 Automatically set dcid into qlogger on client transports
Summary:
I think not doing this, and throw an error at the point of output to
files is kinda surprising to users

Reviewed By: sharma95

Differential Revision: D18016183

fbshipit-source-id: b16881b365ea82b75842f89dc364054804808116
2019-10-23 10:16:58 -07:00
Raghu Nallamothu
e06c0848e0 T24905463 - [quic][ping] Implement ping in Quic
Summary: Implement ping functionality in ping

Reviewed By: yangchi

Differential Revision: D17885286

fbshipit-source-id: 4c328d14a023057d6889818250c0129c06e60874
2019-10-21 17:07:12 -07:00
Viktor Chynarov
0ba3b6517b Ensure server/client conn ids are synced to self/peer connIdData
Summary:
Everytime a client/server sets a client/server conn id, it adds it to the
respective self/peer connection id data collections.

Reviewed By: sharma95

Differential Revision: D17577333

fbshipit-source-id: de8b887c1f3acb142c070727fb98ca0841337369
2019-10-11 14:56:29 -07:00
Yang Chi
2d24a250f7 Ping frames are retransmittable
Summary:
This will treat incoming ping frames as retransmittable frames and
update ack state accordingly.

Reviewed By: siyengar

Differential Revision: D17832707

fbshipit-source-id: 69e4a95a62bf86a707bac94399588df61c947bd3
2019-10-09 13:12:12 -07:00