Attempting to parse frames from these non-frame-bearing packets was
responsible for some spurious connection failures in interop testing
under high packet loss.
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`.
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`.
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.
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.
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