1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-04-18 17:24:03 +03:00

8461 Commits

Author SHA1 Message Date
Joseph Beshay
d4abef61ea Cleanup congestion controller background mode
Summary: We're removing the underlying priority that triggered the congestion controller background mode so it's not usable anymore. This cleans it up.

Reviewed By: afrind

Differential Revision: D68721476

fbshipit-source-id: 3dabcdda7eca2605529b24b36e10402d944e3ce8
2025-01-28 11:46:58 -08:00
Aman Sharma
29f6071b75 Make a checkpoint function for reliable resets
Summary: I'm making a `checkpoint` function in the QUIC API. This is to be used in conjunction with reliable resets. When we send data on a stream and want to mark which offset will constitute the reliable size in a future call to resetStreamReliably, we call this function. This function can potentially be called multiple times on a stream to advance the offset, but it is an error to call it after sending a reset.

Reviewed By: jbeshay

Differential Revision: D68592906

fbshipit-source-id: e301385a04dffdb9f23daa805ee74c574e4393c2
2025-01-28 10:52:55 -08:00
Aman Sharma
32dd68b3f0 Rename reliableResetOffset to reliableSize in StreamSendHandlers
Summary: This is just a name change that makes it more clear what we're passing in.

Reviewed By: jbeshay

Differential Revision: D68642799

fbshipit-source-id: 89d1ee34b6cbff73d765596f05c57f590ace2274
2025-01-28 10:52:55 -08:00
Alan Frindell
8ff9875714 Speed up CircularDeque::iterator::distance_to
Summary: This was linear for no particular reason?

Reviewed By: sharmafb

Differential Revision: D68718158

fbshipit-source-id: 2fd93820a8c81dbf1a5e02a4fc3586b8e5ab4d02
2025-01-28 10:35:30 -08:00
Alan Frindell
e5bbd627e2 Remove Background state priority changes
Summary: These aren't used anywhere and we're going to start refactoring the priority implementation.

Reviewed By: jbeshay, hanidamlaj

Differential Revision: D68657305

fbshipit-source-id: e4a3a5a991bac99afef1362adb2663a50766d2c7
2025-01-28 10:26:42 -08:00
Joseph Beshay
ce3e9b02f5 Start sending ACK_ECN frames only after we've seen marked packets
Summary: As title.

Reviewed By: mjoras

Differential Revision: D68642269

fbshipit-source-id: 40ad3a683a8efbbdf69e145be55aca7861081e0d
2025-01-28 10:10:09 -08:00
Open Source Bot
4667db4172 Updating hashes
Summary:
GitHub commits:

44d60402c4
3a66ed4295
52a1426962
22f500fb9d
bdc0b34443
ebe2759b74
9f0cfca2ee
541c7f4c9f
27e4bc5eeb

Reviewed By: ckwalsh

fbshipit-source-id: 1b6f64222702069cff0e400e1917639f48b1cc5c
2025-01-28 09:36:38 -08:00
Alan Frindell
bdc0b34443 Refactor QuicPacketScheduleTest priority tests
Summary: There was so much boilerplate in these tests they were very hard to read and reason about.

Reviewed By: mjoras

Differential Revision: D68677041

fbshipit-source-id: 162c80021ee6db5baacd6999a2958242b906e83a
2025-01-27 11:00:59 -08:00
Open Source Bot
92d8044759 Updating hashes
Summary:
GitHub commits:

50a45b1701
25a99dbc67
53115e1bbe
2f69a816b8
cefc779d22
b19eb4c652
c017d798fe
6939773c8d
6e568597b4

Reviewed By: bigfootjon

fbshipit-source-id: 91c91c78dd2d9f897616ae10139c535c0274e3f7
v2025.01.27.00
2025-01-26 09:34:02 -08:00
Open Source Bot
2f69a816b8 Updating hashes
Summary:
GitHub commits:

c7c1d89a02
df955b844a
d800dd5e45
5009049e96
60ca08943f
a527cc621f
bf57852849
1b339fd4dc
411c74219e
c242ea50dd

Reviewed By: bigfootjon

fbshipit-source-id: e195fc19f43497e9b25391b6fe45842d6e396db4
2025-01-25 09:34:40 -08:00
Joseph Beshay
60ca08943f Ensure we can probe all available bandwidth in one ProbeBW_UP
Summary:
When deciding whether its time to switch from ProbeBW_UP to down, the cwndBytes_ value is already limited by the inflightHi_.

This improves the logic by waiting for a target inflight that is 1.25x the current measured BDP and making sure we've hit it (i.e. we've been recently cwndLimited).

We will also exit ProbeBW_Up if the loss level crosses the threshold at any point.

Reviewed By: mjoras

Differential Revision: D68656316

fbshipit-source-id: c95c00e8e7b922dd22e07d58f8bda0ed6ee850b3
2025-01-24 23:13:26 -08:00
Joseph Beshay
7dd1b673d1 Remove MVFST_USE_LIBEV references since they are not needed anymore
Summary: As title.

Reviewed By: mzlee

Differential Revision: D68643792

fbshipit-source-id: 328d0a7c48f85da0d5850d9f0b51cdff24c4708b
2025-01-24 19:32:23 -08:00
Paul Farcasanu
38d77ba81f paused priority support
Reviewed By: afrind

Differential Revision: D67988645

fbshipit-source-id: 465f8c56177e5b703dbc1511b73521e6c26c1f3e
2025-01-24 13:54:42 -08:00
Open Source Bot
d438b82cf2 Updating hashes
Summary:
GitHub commits:

5661a1c937
0b32ea082a
d0afc3f47e
3acae67ee3
bd490e6b1e
60a68b763d
b56f42c433
464735f0a8
dc4926972b
6a84c88495
79c9c0eafe
f16ab71d65

Reviewed By: bigfootjon

fbshipit-source-id: cb28ed7e233820ba25d221aa477175590a67440e
2025-01-24 09:35:47 -08:00
Yedidya Feldblum
b56f42c433 migrate uses of legacy alias folly::io::StreamCodec
Reviewed By: Skory, skrueger

Differential Revision: D68536730

fbshipit-source-id: 4408bf3071dc2aff7a83d522b931b58343995f97
2025-01-23 23:44:51 -08:00
Joseph Beshay
c527fd1d03 Add a new option to control bbr2 exiting startup on loss
Summary: As title.

Reviewed By: ritengupta, mjoras

Differential Revision: D68546411

fbshipit-source-id: ae45727fb8443a98e4ac69778d5d85e2512f7a7b
2025-01-23 17:45:56 -08:00
Joseph Beshay
2f794bd61a Fix cwndLimitedInRound logic to ensure ProbeBW can increase inflightHi slope
Summary:
Initializing cwndLimitedInRound_ to false at roundStart before the rest of the ack handling logic prevents inflightHi slope from increasing. This initializes it after all the logic to ensure inflightHi slope is updated.

This improves bbr2's ability to probe for newly available bandwidth during ProbeBW_UP.

Reviewed By: mjoras

Differential Revision: D68546412

fbshipit-source-id: da85a1be0624790edcd29a8ca5554786f0b5c32d
2025-01-23 17:45:56 -08:00
Yedidya Feldblum
100b1bac28 migrate uses of legacy alias folly::io::getStreamCodec
Reviewed By: skrueger

Differential Revision: D68536168

fbshipit-source-id: c696796a351a6a888c4b8b14974b55a1c50d9e06
2025-01-23 16:44:38 -08:00
Open Source Bot
7833dc0509 Updating hashes
Summary:
GitHub commits:

bb107e122c
9cc7d2e41a
9e54a45ed4
8a0ef54c64
a5a20959c8
85f5393d3c
6679fec717
b893682f35
6b976b7909

Reviewed By: bigfootjon

fbshipit-source-id: 1dba896150e4748f29279c0952569463e3a2c863
2025-01-23 09:35:27 -08:00
Open Source Bot
8a0ef54c64 Updating hashes
Summary:
GitHub commits:

cc2b297ff0
2e34abf3f0
215e9c70af
9a67d5b6bf
28c1fb03fc
d0c124fe15
cb05fe9cd9
fe27504015
440cf21e0b
d6c9a5adae

Reviewed By: bigfootjon

fbshipit-source-id: d4ebda6050b838748d2d16822aa8bd8f0c3c1284
2025-01-22 21:40:38 -08:00
Paul Farcasanu
d0c124fe15 cleanup addWritable
Summary:
All the functionality is a duplicated from `updateWritableStreams`.

Btw the only callsites were inside UT.

Reviewed By: kvtsoy

Differential Revision: D68351972

fbshipit-source-id: 7e17f38ffcffecea23a64f5d2d5c1dec7a8c43f5
2025-01-22 11:31:02 -08:00
Open Source Bot
9a46de20a4 Updating hashes
Summary:
GitHub commits:

1c63d2a535
dab4880c3f
d6f19d96ff
9b71bc3d4e
99aca5d592
ea28bbd870
c4fc70c0cb
114a775267
fd096bfd3e
31187d3554
2a089a7c3c

Reviewed By: bigfootjon

fbshipit-source-id: e98e4dcb01569ae2f9a89c76c69e68f0ea86fa54
2025-01-22 09:35:04 -08:00
Open Source Bot
99aca5d592 Updating hashes
Summary:
GitHub commits:

0119f68a22
e9e7e368fa
84d64ccee6
95c9b2b57f
0fb2f673dd
8ab1a04e36
77ab2ac5f6
309e215fa5
4aefa76398
ad9eaebecd
8bdef3795c

Reviewed By: bigfootjon

fbshipit-source-id: f8794a20627be2e4b238a3a9bef78accc79df534
2025-01-21 09:34:39 -08:00
Simon Marlow
0fb2f673dd Add GHC 9.2.8 to github CI
Summary:
X-link: https://github.com/facebookincubator/zstrong/pull/1149

X-link: https://github.com/facebookincubator/Glean/pull/483

Reviewed By: josefs

Differential Revision: D68326850

fbshipit-source-id: 2cde0d2b133781ae7ffdfa59dfe782ba0bf74761
2025-01-21 01:37:32 -08:00
Open Source Bot
d53b7fea6a Updating hashes
Summary:
GitHub commits:

a979e497eb
20397efbd4
494285413a
2979524b28
0ca60440cd
44205f7461
e3aa2255eb
5c6eca0480
10a6b1e112
60b13bcfad
fb537485ad

GitHub releases:

https://github.com/facebookincubator/reindeer/releases/tag/v2025.01.20.00

Reviewed By: bigfootjon

fbshipit-source-id: 2ce96cee9710d386ae3318241317fb74b5327be3
2025-01-20 09:34:21 -08:00
Simon Marlow
44205f7461 Support GHC 9.2.8 in the OSS build
Summary:
X-link: https://github.com/facebookincubator/Glean/pull/482

X-link: https://github.com/facebookincubator/zstrong/pull/1147

Reviewed By: josefs

Differential Revision: D68326697

fbshipit-source-id: 4aaebfe64b6b481ae1c8857f850c722507be4ff2
v2025.01.20.00
2025-01-20 03:15:03 -08:00
Open Source Bot
703996b11f Updating hashes
Summary:
GitHub commits:

7f49f9c87b
9f52858a41
646bd6b3b5
02d68f7fe3
68f3ae2b25
e78f53ad32
ae3835da9a
f007763f48

Reviewed By: ajb85

fbshipit-source-id: e9ff19e1b4446760e5fd6fd19a49f71aac1e1eff
2025-01-19 09:33:23 -08:00
Open Source Bot
646bd6b3b5 Updating hashes
Summary:
GitHub commits:

856a3ec7bc
cd81fc49f1
13a122b13c
f1c1542fb0
c64c82aa0e
370a80b546
a6a7eaf653
22d409028e
9737eeac65
0a27723d4a

Reviewed By: ajb85

fbshipit-source-id: d18dcf48417b851c582ca07a05208757728c2781
2025-01-18 09:33:55 -08:00
Paul Farcasanu
c64c82aa0e simplify updateWritableStreams
Summary: These are all duplicated from `removeWritable`.

Reviewed By: meleshuk, mjoras

Differential Revision: D68017903

fbshipit-source-id: 5f780a0b7d7f2d2d5d4c6430510501dd11eae2a2
2025-01-17 15:07:08 -08:00
Open Source Bot
5dff5c56b7 Updating hashes
Summary:
GitHub commits:

f80ca5d6a6
df09226e80
dcdadc8bbc
cf4395572c
4a78cb578f
bf2b2fea01
f2e2414e2a
7572b3cb15
405f5269b5
c251e543ef
b4a3ccc086

Reviewed By: ajb85

fbshipit-source-id: f5bc45c0942fc8aa5885b7a3663dd527bb84981e
2025-01-17 09:36:31 -08:00
Joseph Beshay
bf2b2fea01 Explicitly fail windows build when the wrong QuicServerBackend file is used
Summary: As title.

Reviewed By: kvtsoy, sharmafb

Differential Revision: D68281935

fbshipit-source-id: bcb0c309869a4270aaf62a01a337c86476755863
2025-01-16 18:19:20 -08:00
Jon Maltiel Swenson
5d6bd2e727 Minor tweaks to xz and libiberty builds
Summary:
X-link: https://github.com/facebookincubator/zstrong/pull/1145

This diff contains a few changes to the xz and libiberty getdeps builds that are required
in order for folly to build as a shared library, which in turn is needed for folly's Python
extensions to build correctly.

Reviewed By: hyuen

Differential Revision: D68252093

fbshipit-source-id: 036bc4a0e7bf9a11f0a4aa6ec0014f7935afbb5b
2025-01-16 16:31:42 -08:00
Aman Sharma
9e8fa06fb7 Fire readError and remove readCb only when reliable data has been read
Summary: See title

Reviewed By: afrind

Differential Revision: D67766485

fbshipit-source-id: 7283b438317f7b750e274414790777c7dd1572e9
2025-01-16 16:00:15 -08:00
Aman Sharma
3b04bf1f03 Close connection with STREAM_STATE_ERROR if final size or error code changes
Summary:
From section 5.1 of https://datatracker.ietf.org/doc/html/draft-ietf-quic-reliable-stream-reset-06,

> When sending another RESET_STREAM_AT, RESET_STREAM or STREAM frame carrying a FIN bit for the same stream, the initiator MUST NOT change the Application Error Code or the Final Size. If the receiver detects a change in those fields, it MUST close the connection with a connection error of type STREAM_STATE_ERROR.

Reviewed By: afrind

Differential Revision: D67726347

fbshipit-source-id: 79a0bd34f5b0a5a8dff10e22860154e5251f7241
2025-01-16 14:09:27 -08:00
Joseph Beshay
8308e3875c Use the correct QuicServerBackend on Windows on both fbcode and xplat
Summary:
The fix which was made in D63044682 was unintentionally reverted in D64490333.

This brings the fix back in both TARGETS and BUCK using a select(). I manually changed the BUCK file because the boilerplate generation script doesn't support the select().

Reviewed By: mzlee, kvtsoy

Differential Revision: D68236376

fbshipit-source-id: c651d8cd4fe5f14b70802d81f5d28bf449752d84
2025-01-16 11:16:57 -08:00
Open Source Bot
bbd834ca84 Updating hashes
Summary:
GitHub commits:

dc47a8c75e
4380ec810a
13da71cb41
14c4e179c8
a83a2c93fe
987c9e64ca
d1f973b58e
1216fd4ff5
7e8e285b1e
6419db6c24
1940f0c946

Reviewed By: ajb85

fbshipit-source-id: 263cbeb03d4fdb5054e46dfc5b477027c5bc4461
2025-01-16 09:38:54 -08:00
Aman Sharma
a83a2c93fe Modify read state machine for reliable resets
Summary:
We should only transition the `recvState` to `Closed` once we receive all of the reliable data, otherwise we'll drop all incoming data for that stream. This can happen in one of the two cases:
* We get a reset stream frame, and the reliable size in that frame is such that we've received all of the reliable data.
* We get a read stream frame, and that puts us in a situation where we've received all of the reliable data.

Reviewed By: jbeshay

Differential Revision: D67658440

fbshipit-source-id: b37786c7720014f3598b3c8c0a88084b06c5261e
2025-01-15 15:27:08 -08:00
Jolene Tan
a61b13a005 Add option to clone all CRYPTO packets at most once
Summary: Restore the buggy version of `cloneAllPacketsWithCryptoFrame`, which did allow up to two packets to be cloned in the same PTO flight but would only clone them at most once, as an optional mode of operation.

Reviewed By: mjoras

Differential Revision: D67994014

fbshipit-source-id: 16f66fd48a9a4410427ba21dea6e7f6d1eee48e6
2025-01-15 14:08:52 -08:00
Open Source Bot
a34b86f32a Updating hashes
Summary:
GitHub commits:

6bc175b321
9172c36465
b744781978
69479fe413
ceb40727c3
8e783ebd8f
090a94b79b
a6ae1e066f
1d7c199b4b
e1f180a119

GitHub releases:

https://github.com/facebook/buck2/releases/tag/2025-01-15

Reviewed By: ajb85

fbshipit-source-id: b4f1a499e12fd4d2de847da52b0bf433b405bc88
2025-01-15 09:35:10 -08:00
Riten Gupta
ceb40727c3 Revert startup pacing gain to original
Summary: Startup pacing gain had been changed for experimentation. Need to revert to the original value.

Reviewed By: jbeshay

Differential Revision: D68035989

fbshipit-source-id: 190f1c2699fa32eda533b04d059a712bc2ae9136
2025-01-14 15:54:24 -08:00
Joseph Beshay
19b71986ca Only update the long term loss model (inflightHi) if losses occur while probing up
Summary: The long term cwnd model (inflightHi) should only be updated when BBR is probing for more bandwidth. Prior to this change, the update could happen once per probe round but it was allowed to happen at any stage.

Reviewed By: mjoras

Differential Revision: D68041579

fbshipit-source-id: 94b1728d889cbdc265175ddbc3e5c0a70b9f0981
2025-01-14 14:54:19 -08:00
Joseph Beshay
41eedbd25f Update the experimental mode in the tokenless pacer
Summary:
- The burstSize should only be scaled down if the write function is late. If it’s early, the write should proceed, since it’s not triggered by the timer.
- When scaling the burstSize up, rounding should not be used. Instead whenever a partial packet can be sent, we go ahead and send it, then scale down future bursts if feasible.

Reviewed By: mjoras

Differential Revision: D67944934

fbshipit-source-id: cba79843fe77b54343f92edfa5fc09404f4c7cf7
2025-01-14 14:54:19 -08:00
Victor Zverovich
40a0e6bfd1 Merge mustache between fbcode and xplat
Summary:
Demonstrate feasibility of merging fbcode and xplat copies of thrift on a single target, `thrift/compiler/detail/mustache:mustache`. To this end:

* Switch fbcode_builder from fbcode to xplat.
* Map dependencies to the correct variants for fbcode.
* Exclude mustache directory from target remapping. Once the merge is complete remapping rules will no longer be necessary at all, further reducing maintenance burden and complexity.
* Remove one copy of mustache (~2.6kLOC).

This also demonstrates that autodeps are working as expected after the fix in D67919546.

Reviewed By: yoney

Differential Revision: D67676056

fbshipit-source-id: ba3854c0997c4dd10f47a5e623381c3dadef4ecc
2025-01-14 10:09:58 -08:00
Open Source Bot
7df4354a26 Updating hashes
Summary:
GitHub commits:

ab209e9295
ba9ea42817
14c7e92570
9007c1c7c9
afee69d577
468ad8033a
02f76f813e
8b434a110a
98c85be5d3
d4a050fe29

Reviewed By: ajb85

fbshipit-source-id: 1c13850bbab013e574ddf7602df1ab4fc3caeae9
2025-01-14 09:34:11 -08:00
Aman Sharma
afee69d577 Remove unused iovec in QuicClientTransportLite::recvFrom
Summary: Nothing is using this. Don't know why it's here

Reviewed By: jbeshay

Differential Revision: D67988403

fbshipit-source-id: 5619d49b31c0ed72fa6b3fef6584e54a4c8fabe3
2025-01-13 15:01:59 -08:00
Aman Sharma
bc789de7d1 Clarifying comment within isAllDataReceivedUntil
Summary: This is just a comment

Reviewed By: hanidamlaj

Differential Revision: D67984557

fbshipit-source-id: 598e2d7598f1465914732972fae5d1c1408b43cb
2025-01-13 13:24:12 -08:00
Joseph Beshay
a687f0eeb5 Improve bandwidth string format
Summary: As title. The existing format is awkward to read.

Reviewed By: sharmafb

Differential Revision: D67944933

fbshipit-source-id: 05802a9c86077ba5ff0d73d57e5c14c4ecc104d4
2025-01-13 10:43:56 -08:00
Joseph Beshay
f94790600b Support static cwnd congestion controller in Tperf
Summary:
Adds new Tperf parameters to use the static cwnd congestion controller with a fixed pacer. The pacer can have its interval updated from min, smoothed, or latest rtt.

This is an example for the tperf command with the static cwnd options:
```
tperf --host=fc00::200 -congestion=staticcwnd -pacing=true -pacer_interval_source=srtt -static_cwnd_bytes=625000
```

Reviewed By: sharmafb

Differential Revision: D67925269

fbshipit-source-id: 648a90c1a63619a140c64c3f41c34229aad1b965
2025-01-13 10:43:56 -08:00
Joseph Beshay
5fa7816bfd Enable controlling the pacer in the static cwnd controller
Summary: The StaticCwnd congestion controller is useful for the transport with a constant cwnd. This change allows it to control the pacer to make it easier to test the transport and pacer performance at a fixed cwnd + fixed pace.

Reviewed By: sharmafb

Differential Revision: D67925271

fbshipit-source-id: 27eba6b33f05f82e052129aed0324afab9c8ab42
2025-01-13 10:43:56 -08:00
Joseph Beshay
a539f0277c Make the pacing observer independent of qlog in the TperfServer
Summary:
Support using the pacing observer without qlogs.

The pacing observations are logged at v=2.

Reviewed By: sharmafb

Differential Revision: D67925268

fbshipit-source-id: de92e1c593160af059d9e62265c3c532793bf381
2025-01-13 10:43:56 -08:00