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

23 Commits

Author SHA1 Message Date
Viktor Chynarov
7504453972 Use Path Rate Limiter for conn migration
Summary:
Use the Path rate limiter introduced in the previous diff.

When we initialize path validation of an unvalidated peer address,
enable pathValidationRateLimit.

When we receive a proper PATH_RESPONSE frame, disable this limit.

If this limit is enabled, we will check the pathValidationLimiter for
the amount of bytes we are allowed to write.

Change the migration tests in QuicServerTransportTest to use this new limiter
instead of writableByteLimits.

Update shouldWriteData to directly use the new congestionControlWritableBytes
function.

Reviewed By: yangchi

Differential Revision: D18145774

fbshipit-source-id: 1fe4fd5be7486077c58b0d1285dfb03f6c62831c
2019-11-14 13:48:17 -08:00
Raghu Nallamothu
b62c11b841 T45316552 [quic][state] Initial Rtt measurement on Connection Migration
Summary: On Connection Migation use the time taken from pathchallenge frame to path response frame as initial rtt.

Reviewed By: JunqiWang

Differential Revision: D18388324

fbshipit-source-id: ede10484c240ca44a4eab544504461c052143bad
2019-11-11 12:17:12 -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
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
ac053567e3 NewConnectionId frame handling
Summary:
Mainly based on Junqi's changes in D15230415

Added the start of several error checking. Section 19.15
of d-23
(https://tools.ietf.org/html/draft-ietf-quic-transport-23#section-19.15)
specifies 2 cases where PROTOCOL_VIOLATION should be thrown during processing:
* retire_prior_to is larger than sequence number
* new_connection_id is sent by peer using 0-len conn id (will handle later)

I don't think it was specified what happens if we get a NEW_CONN_ID frame
after the the endpoint already has enough of the peer's conn ids - just ignore
the frame.

Reviewed By: sharma95

Differential Revision: D17578167

fbshipit-source-id: 6e410b6110970a6e52970576ac3ff2b1c7d5c06a
2019-10-11 14:56:29 -07:00
Subodh Iyengar
cbbc6b0c77 Custom variant for simple frames
Summary: Use a custom variant for simple frames

Reviewed By: mjoras

Differential Revision: D17781068

fbshipit-source-id: e059d33df4651c7e0a1c989cc8651c9cd661b14b
2019-10-07 22:43:32 -07:00
Viktor Chynarov
7ca3482f1d Back out "Revert D15268028: [quic] Process lost RetireConnectionIdFrame"
Summary: Original commit changeset: 0447c8666a58

Reviewed By: lnicco

Differential Revision: D17688744

fbshipit-source-id: 8fc2180f65b9a9c03f40f3d242ee020ee319765c
2019-10-01 11:11:06 -07:00
Viktor Chynarov
8af79b3436 Back out "Revert D15267963: [quic] Clone RetireConnectionIdFrame"
Summary: Original commit changeset: c9fb0a514788

Reviewed By: lnicco

Differential Revision: D17688756

fbshipit-source-id: fc098fa9804bf0076cb8f2ff0c6d6b8550021a34
2019-10-01 11:11:05 -07:00
Viktor Chynarov
fa98978d6d Back out "Revert D15264935: [quic] Make RetireConnectionIdFrame a QuicSimpleFrame (for now)"
Summary: Original commit changeset: aa2ccf4bb39e

Reviewed By: lnicco

Differential Revision: D17688496

fbshipit-source-id: e627784cdfe208994cbae3f71062d74d312d3600
2019-10-01 11:11:05 -07:00
Shawn Shihang Wei
5cf3c6ce67 Revert D15264935: [quic] Make RetireConnectionIdFrame a QuicSimpleFrame (for now)
Differential Revision:
D15264935

Original commit changeset: 8c66c4604e24

fbshipit-source-id: aa2ccf4bb39ec3b0286baaed5cc42bf9065f4fcd
2019-09-30 18:49:59 -07:00
Shawn Shihang Wei
52a79997d8 Revert D15267963: [quic] Clone RetireConnectionIdFrame
Differential Revision:
D15267963

Original commit changeset: a2e9059900c0

fbshipit-source-id: c9fb0a514788dd32d5f1956dbea4dcefe34468c8
2019-09-30 18:49:59 -07:00
Shawn Shihang Wei
59f20c91c7 Revert D15268028: [quic] Process lost RetireConnectionIdFrame
Differential Revision:
D15268028

Original commit changeset: 238dcf524251

fbshipit-source-id: 0447c8666a5814e9f88e9f6decd61db54d5c0a34
2019-09-30 18:49:58 -07:00
Viktor Chynarov
edb8104fe7 Process lost RetireConnectionIdFrame
Reviewed By: sharma95

Differential Revision: D15268028

fbshipit-source-id: 238dcf524251e6134d2685d5ad821658982c953e
2019-09-30 17:40:14 -07:00
Viktor Chynarov
fbd80f3428 Clone RetireConnectionIdFrame
Reviewed By: sharma95

Differential Revision: D15267963

fbshipit-source-id: a2e9059900c0c231e53d672a4d9495173ed546cc
2019-09-30 17:40:14 -07:00
Viktor Chynarov
0ab06b6fc9 Make RetireConnectionIdFrame a QuicSimpleFrame (for now)
Reviewed By: sharma95

Differential Revision: D15264935

fbshipit-source-id: 8c66c4604e24442f4c77e8eb2d10901d1702adc7
2019-09-30 17:40:13 -07:00
Matt Joras
72e677df33 Send windowed stream limit updates
Summary:
Implement sending stream limit updates in a windowed fashion, so that as a peer exhausts its streams we will grant it additional credit. This is implemented by having the stream manager check if an update is needed on removing streams, and the api layer potentially sending an update after it initiates the check for closed streams.

This also makes some driveby changes to use `std::lower_bound` instead of `std::find` for the sorted collections in the stream manager.

Reviewed By: yangchi

Differential Revision: D16808229

fbshipit-source-id: f6e3460d43e4d165e362164be00c0cec27cf1e79
2019-09-18 11:33:03 -07:00
Junqi Wang
0cc3eabc56 Do not retransmit PATH_RESPONSE
Summary: https://github.com/quicwg/base-drafts/issues/2724

Reviewed By: mjoras

Differential Revision: D15719978

fbshipit-source-id: 1c57f3e2b497f1abfcd5fa3b5643d76aa51d11d9
2019-06-26 22:30:38 -07:00
Junqi Wang
90a5ba9b45 Process lost NewConnectionId
Reviewed By: sharma95

Differential Revision: D15177595

fbshipit-source-id: 5603111b68697da52619eb0f843f13d2f1779997
2019-05-10 19:07:43 -07:00
Junqi Wang
69333685f4 Clone NewConnectionIdFrame
Reviewed By: sharma95

Differential Revision: D15177440

fbshipit-source-id: 4bd511ec6263008b9a9c0960fc2fb27f14940931
2019-05-10 19:07:42 -07:00
Junqi Wang
87672083c3 Make NewConnectionIdFrame a QuicSimpleFrame (for now)
Summary:
The plan is to not treat probing frame as simple frame, but that is not
going to happen soon.

Reviewed By: sharma95

Differential Revision: D15176635

fbshipit-source-id: 62ac13cdb82a09161e9148dfc437cf7377a01c96
2019-05-10 19:07:42 -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
Udip Pant
4a9537798e Add correct license headers on some missing files
Summary: ^

Reviewed By: sharma95

Differential Revision: D15172546

fbshipit-source-id: bacc832752a433b86962e77bb19aff4504640e60
2019-05-01 22:42:04 -07:00
udippant
50d4939e9e Initial commit of mvfst 2019-04-22 23:42:46 -07:00