Commit Graph

3653 Commits

Author SHA1 Message Date
Dirkjan Ochtman b8bd3d542d Set unexpected_cfgs for fuzzing 2024-07-25 17:37:15 +00:00
Benjamin Saunders d7abf0aaab Discard pre-handshake packets after the handshake
Attempting to parse frames from these non-frame-bearing packets was
responsible for some spurious connection failures in interop testing
under high packet loss.
2024-07-24 21:55:56 -07:00
Benjamin Saunders 2a3ef522af Raise default idle timeout to 30 seconds
Recommended in RFC9308 § 3.2 for use on the public internet when a NAT
may be on the path.
2024-07-24 20:51:55 -07:00
Dirkjan Ochtman 2677bce166 Trigger workflows for merge queue groups 2024-07-24 20:46:55 -07:00
Dirkjan Ochtman 55fd192343 Bump MSRV to 1.70 following tokio 1.39 2024-07-24 20:46:55 -07:00
Max Inden 061a74fb6e fix(udp): feature flag tracing in windows.rs
8712910a made `tracing` optional and added optional `log`, but forgot to update
`quinn-udp/src/windows.rs`. This commit fixes the oversight and bumps the
`quinn-udp` version to `v0.5.4`.
quinn-udp-0.5.4
2024-07-22 12:41:28 -07:00
Max Inden ff91ffe815 chore: increase quinn-udp version to v0.5.3 quinn-udp-0.5.3 2024-07-19 09:58:07 -07:00
Max Inden 8712910a4c deps(udp): make tracing optional and add optional log
This commit makes the `tracing` dependency in `quinn-udp` optional, but enabled
by default. In additional it adds optional logging via the `log` crate, enabled
through the `direct-log` feature. `tracing` takes precedence over `native-log`.
2024-07-19 09:58:07 -07:00
Max Inden 349dcd6017 refactor(udp): add use declaration for tracing debug and error 2024-07-19 09:58:07 -07:00
TirushOne 411abe9e1c Fix lack of reexport of ConnectionStats and ResetError (#1920) 2024-07-17 17:03:07 +02:00
Dirkjan Ochtman 3f489e2eab Use workspace dependencies for all external dependencies 2024-07-14 22:17:01 -07:00
Dirkjan Ochtman f484d633ef proto: bump version to 0.11.4 2024-07-12 22:41:01 +02:00
Dirkjan Ochtman f0fa66f871 proto: avoid overflow in handshake done statistic 2024-07-12 22:41:01 +02:00
Dirkjan Ochtman 32c2d914ad Bump MSRV to 1.67 (for cc) 2024-07-12 22:41:01 +02:00
Max Inden 36407fecc3 bench(udp): measure non-GSO & GSO on localhost (#1915)
This commit adds a basic benchmark, measuring the time to transfer 10
MiB with and without GSO on localhost.

```
gso_false/throughput    time:   [23.455 ms 25.230 ms 27.004 ms]
                        thrpt:  [370.31 MiB/s 396.35 MiB/s 426.35 MiB/s]

gso_true/throughput     time:   [1.0168 ms 1.1239 ms 1.2496 ms]
                        thrpt:  [7.8153 GiB/s 8.6889 GiB/s 9.6044 GiB/s]
```

```
$ cat /proc/cpuinfo
model name      : 12th Gen Intel(R) Core(TM) i9-12900HK
```

---

Given various optimizations for `localhost` traffic on Linux, we were
wondering whether GSO actually has an impact on `localhost`. According
to this benchmark: Yes it does.

For what a `localhost` network benchmark is worth, here it is. Feel free
to close in case it isn't useful.
2024-07-08 09:23:55 +02:00
Phoenix Kahlo 693c9b7cfb quinn: Make Endpoint::client dual-stack V6 by default 2024-07-03 17:32:25 -07:00
Benjamin Saunders fb63829dd1 Fix debug assert with reordered ACKs 2024-07-03 15:11:42 +02:00
Max Inden 7c4cce1370 docs: remove reference to sendmmsg
`sendmmsg` has been dropped in https://github.com/quinn-rs/quinn/commit/ee0882657a16a8ffd7ff5844f355caca519e63ce.

This commit removes left-over references to sendmmsg.
2024-07-02 19:27:28 -07:00
Phoenix Kahlo 02ed62142d docs(quinn): Revise SendStream.stopped docs comment 2024-07-01 11:24:50 -07:00
Phoenix Kahlo 9366f5e80b docs: Revise and add additionall 0-rtt doc comments 2024-07-01 11:24:50 -07:00
Phoenix Kahlo 715416a025 Fix unnecessary Incoming warning on Endpoint drop 2024-06-30 16:15:13 -07:00
Dirkjan Ochtman c445e9b8ff Upgrade to rustc-hash 2 2024-06-24 13:54:26 -07:00
Benjamin Saunders bc150927d8 Wake blocked streams on 0-RTT rejection 2024-06-23 10:07:03 -07:00
Dirkjan Ochtman 70f5194fc8 quinn: introduce wake_stream() helper 2024-06-23 09:59:12 -07:00
Dirkjan Ochtman 0273e0a704 quinn: introduce wake_all() helper 2024-06-23 09:59:12 -07:00
Adolfo Ochagavía e7505be795 Allow configuring rng seed through EndpointConfig 2024-06-20 23:01:47 -07:00
LAN Xingcan 03fe15f99e proto: make initial destination cid configurable 2024-06-20 18:46:11 -07:00
Max Inden 9e2272a477 refactor: use workspace dependency for tracing and tracing-subscriber 2024-06-20 18:23:04 -07:00
Max Inden 8f3f8242c9 fix: remove unused dependency tracing-attributes
Various `quinn*` crates depend on `tracing`. `tracing` in its default feature
set includes `tracing-attributes` in order to expose `#[instrument]` procedural
macro in `tracing::instrument`.

None of `quinn*` make use of the `#[instrument]` macro. Thus the
`tracing-attributes` dependency is unused.

To remove the dependency from the tree, this commit restricts `tracing`'s
`features` to `std`, effectively removing the `attributes` feature.
2024-06-20 18:23:04 -07:00
Benjamin Saunders c7a2c40305 Only send MAX_STREAMS when >1/8 of flow control window is consumed 2024-06-17 10:14:36 +02:00
Benjamin Saunders 0e621dfb22 Infer need for MAX_STREAMS from change in limit 2024-06-17 10:14:36 +02:00
Benjamin Saunders 99ddbefac1 Track most recently sent MAX_STREAMS value per direction 2024-06-17 10:14:36 +02:00
Dirkjan Ochtman 7b97a3fbd8 Apply clippy suggestions from Rust 1.79 2024-06-13 10:59:05 -07:00
Phoenix Kahlo 11050d6fe3 docs(quinn): Clarify effects of setting AckFrequencyConfig 2024-06-08 19:10:26 -07:00
Dirkjan Ochtman f117a7430c udp: bump version to 0.5.2 quinn-0.11.2 quinn-proto-0.11.3 quinn-udp-0.5.2 2024-06-07 23:10:19 +02:00
Dirkjan Ochtman 253e63aba4 Bump version numbers (quinn 0.11.2, -proto 0.11.3) 2024-06-07 13:51:24 -07:00
Benjamin Saunders 809cf79336 Resolve stopped/received_reset futures on lost connections
If a connection is lost before a stream becomes closed, these would
otherwise never complete.
2024-06-07 06:41:58 +02:00
Max Inden c66f45e985 docs(udp): replace AsRawFd and AsRawSocket with AsFd and AsSocket 2024-06-06 12:57:54 -07:00
Charlie Root 2ad6dbbdcf Fix openbsd: no support for DONTFRAG on IPv4 2024-06-02 11:23:22 -07:00
Floris Bruynooghe 72ef0c0f16 Support netbsd
NetBSD does not support DONTFRAG or ECN on IPv4, but does for IPv6.
It has recvmmsg.
2024-06-02 11:23:22 -07:00
Benjamin Saunders b55ec29251 Fix panic on multiple incoming connections w/ zero-length IDs 2024-05-30 10:08:41 +02:00
Benjamin Saunders 3437e19a59 Convert test EndpointFactory from tuple struct to braced struct
Groundwork for expanding configurability of common test setup logic.
2024-05-30 10:08:41 +02:00
Benjamin Saunders e107643060 Fix packet dispatch for outgoing connections with zero-length CIDs 2024-05-30 10:08:41 +02:00
Benjamin Saunders 772c269c8d Fix panic in example due to unset default crypto provider 2024-05-24 20:43:35 +02:00
Benjamin Saunders 9229c37362 Fix double indirect call in default CID generator factory
A lambda expression is a unique ZST, but coercing it to a function
pointer discards that information.
0.11.2
2024-05-23 07:02:08 +02:00
Benjamin Saunders 70f5f6d183 Make ConnectionIdParser object-safe, and accept trait object impls 2024-05-23 07:02:08 +02:00
Dirkjan Ochtman 6c9c252326 proto: rename Plain types to Protected 2024-05-22 23:58:44 +02:00
LAN Xingcan ee1c0fd143 proto: introduce ConnectionIdParser
Currently `PlainHeader::decode` and `PartialDecoder::new` expect a
`local_cid_len`, which means they cannot support variable length
Connection ID format and make it less useful in various use cases,
such as implementing a [QUIC-LB] confirming load balancer.

[QUIC-LB]: https://www.ietf.org/archive/id/draft-ietf-quic-load-balancers-19.html
2024-05-22 23:58:44 +02:00
LAN Xingcan d9da98bdc8 proto: make packet parsing APIs public 2024-05-22 23:58:44 +02:00
Benjamin Saunders fc22ddd7f8 quinn: Introduce RecvStream::received_reset 2024-05-22 14:41:13 -07:00