Commit Graph

57 Commits

Author SHA1 Message Date
Adolfo Ochagavía 2d48482180 Use PLPMTUD in bench, perf and examples
Sponsored by Stormshield
2023-04-04 17:40:20 -07:00
Daniel McCarney 5d1f7bccf2 deps: upgrade rustls v0.20.3 -> v0.21.0.
This commit updates Quinn's dependency on Rustls from v0.20.3 to
v0.21.0.

This release includes a handful of small breaking changes which are
resolved alongside the upgrade.
2023-04-01 12:18:23 -07:00
Dirkjan Ochtman cbe4b4604d Consistently set rust-version in Cargo metadata 2023-02-27 07:34:35 +01:00
Dirkjan Ochtman 3cc7efbe55 Apply remaining clippy suggestions from clippy 1.67 2023-02-27 07:34:35 +01:00
Damien Deville 390f2ebeba Add a special crypto session to perf binaries to disable packet
encryption / decryption. It can be enabled using --no-protection
command line option. This can be use when doing performance
tests to reveal other hotspots than packet encryption and
decryption.
2023-01-26 22:47:53 -08:00
Dezhi Wu 6e1442370b Fix usage message 2023-01-26 22:38:52 -08:00
Dirkjan Ochtman 2c6aa43610 Apply clippy suggestions from Rust 1.66 2022-12-19 10:13:01 -08:00
Damien Deville b80baa008d Add --initial-max-udp-payload-size command line option for perf
client and server binaries to change the initial size of UDP
packet payload.
2022-10-28 09:24:03 +02:00
Damien Deville cebfb270f6 Add --keylog command line option for perf client and server
binaries. This allow dumping crypto keys to disk using
SSLKEYLOGFILE env var.
2022-10-27 17:49:28 -07:00
Benjamin Saunders 7d51d2e57e Remove Incoming stream in favor of Endpoint::accept 2022-10-23 08:18:42 +02:00
dependabot[bot] f86dd7596d Update rcgen requirement from 0.9.1 to 0.10.0
Updates the requirements on [rcgen](https://github.com/est31/rcgen) to permit the latest version.
- [Release notes](https://github.com/est31/rcgen/releases)
- [Changelog](https://github.com/est31/rcgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/est31/rcgen/compare/v0.9.1...v0.10.0)

---
updated-dependencies:
- dependency-name: rcgen
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 15:29:41 +02:00
Benjamin Saunders 6e4bcbb2fc Drop NewConnection in favor of simpler API 2022-09-27 11:08:26 +02:00
Benjamin Saunders ffa85f2c43 Abstract out async runtime
Co-authored-by: Yureka <yuka@yuka.dev>
2022-07-05 09:06:31 -07:00
Benjamin Saunders fe93a68108 Replace structopt with its successor, clap 3 2022-07-03 21:02:33 +02:00
dependabot[bot] 16769e3fa9 Update rustls-pemfile requirement from 0.3.0 to 1.0.0
Updates the requirements on [rustls-pemfile](https://github.com/rustls/pemfile) to permit the latest version.
- [Release notes](https://github.com/rustls/pemfile/releases)
- [Commits](https://github.com/rustls/pemfile/compare/v/0.3.0...v/1.0.0)

---
updated-dependencies:
- dependency-name: rustls-pemfile
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-18 15:28:52 +02:00
Benjamin Saunders c1bd43f3a6 Satisfy clippy 2022-04-08 17:51:22 +02:00
Dirkjan Ochtman 5f394099ec Upgrade rcgen to 0.9.1 2022-02-11 13:48:07 -08:00
dependabot[bot] d8615d9c2b Update rustls-pemfile requirement from 0.2.1 to 0.3.0
Updates the requirements on [rustls-pemfile](https://github.com/rustls/pemfile) to permit the latest version.
- [Release notes](https://github.com/rustls/pemfile/releases)
- [Commits](https://github.com/rustls/pemfile/compare/v/0.2.1...v/0.3.0)

---
updated-dependencies:
- dependency-name: rustls-pemfile
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-07 14:31:13 +01:00
Benjamin Saunders b2c24d957a Drop futures-util dep from benchmarking tools 2021-12-29 07:34:22 +01:00
Benjamin Saunders 7ed94be3e4 Provide inherent next methods on streams
Allows for convenient use in async blocks by downstream code without a
futures_util dependency.
2021-12-21 07:03:27 +01:00
Dirkjan Ochtman ee6bbf1d2a Fix clippy suggestions from 1.57 2021-12-10 10:29:12 -08:00
Benjamin Saunders 1159ae3c65 Non-exhaustive ClientConfig 2021-11-10 11:25:19 +01:00
Benjamin Saunders b923c4c8b0 Pass SocketAddr by value
We always consume this by value in the end, and it's a little more
ergonomic.
2021-10-29 20:12:45 +02:00
Benjamin Saunders 5d1b6a101b Remove EndpointBuilder
Now that rustls configuration is more straightforward, this is not
adding significant value.
2021-10-29 20:12:45 +02:00
Dirkjan Ochtman 78dc23614f Disable default features for rustls
In rustls 0.20, TLS 1.2 is optional but enabled by default. We also
don't need to depend on rustls enabling logging.
2021-10-26 11:05:30 -07:00
Dirkjan Ochtman 9daaa15da2 Upgrade to rustls 0.20 2021-10-26 11:05:30 -07:00
Dirkjan Ochtman 5be1824901 Upgrade to tracing-subscriber 0.3 2021-10-25 10:50:32 -07:00
Dirkjan Ochtman 72b99b0372 Drop authors from Cargo manifests
Following RFC 3052.
2021-10-07 09:47:04 +02:00
Dirkjan Ochtman fed3c5cb39 Require explicit construction of ServerConfigs 2021-09-29 10:12:44 -07:00
Dirkjan Ochtman a7efd92044 Require explicit construction of ClientConfigs 2021-09-29 10:12:44 -07:00
Wesley Rosenblum 2d30749e97 Make json output an optional feature 2021-08-19 15:23:31 +02:00
Wesley Rosenblum 48b094cca8 Add json module to output results in json format 2021-08-19 15:23:31 +02:00
Wesley Rosenblum 566d10f914 Add OpenStreamStats to track statistics per stream 2021-08-19 15:23:31 +02:00
Wesley Rosenblum 6997d2d2a9 Move stats types into a separate module 2021-08-19 15:23:31 +02:00
Marcel Märtens b224d1d0fa switch to futures_utils in tests and benches, also use futures_utils isntead of futures_core 2021-08-11 10:27:32 +02:00
Dirkjan Ochtman d78b3187a9 Apply clippy suggestions from Rust 1.54 2021-07-30 13:29:32 -07:00
Matthias Einwag e3060d3ff2 Print connection statistics in perf client and server
This adds the `--conn-stats` flag to both CLI tools, which will print
the connection statistics together with other data every 2s.
2021-05-28 09:05:53 +02:00
Luca Barbato 5ab895ba19 Add a mean to set the local address in the perf_client 2021-05-24 13:20:38 +02:00
Luca Barbato bd2a795dd9 Bind to the right ip family the local socket 2021-05-20 11:14:13 -07:00
Thomas de Zeeuw 49475c22b2 Update to socket2 v0.4 2021-03-21 14:39:11 +01:00
Matthias Einwag ff79550cd8 Print perf_client RPS in floating point format
For large requests and high latency connections the number
showed 0 most of the time which isn't too helpful.
2021-03-18 13:43:21 -07:00
Matthias Einwag 2870519f6e perf: Use dual stack socket for endpoints
Users found it rather confusing that binding to the default address
(::0) doesn't allow incoming connections via IPv4 on windows.
This change will allow for this, by using a IPv6 socket and
disabling IPv6-only on all platforms. This lets the windows and unix
implementations behave equally.
2021-03-08 06:38:34 +01:00
Matthias Einwag fe03f7d2de Rename perf server and client
The executable names conflicted with the interop server:

> The bin target `server` in package `perf v0.1.0 (C:\Users\matth\Code\rust\quinn\perf)` has the same output filename as the bin target `server` in package `interop v0.1.0 (C:\Users\matth\Code\rust\quinn\interop)`.
> Colliding filename is: C:\Users\matth\Code\rust\quinn\target\debug\server.pdb
> The targets should have unique names.
2021-03-08 06:38:34 +01:00
Dirkjan Ochtman 0f285bd751 perf: tweak style in bind_socket() 2021-03-04 12:36:49 -08:00
Dirkjan Ochtman 85dde101bd perf: adopt more convential crate layout 2021-03-04 12:36:49 -08:00
Matthias Einwag da1014c913 Allow to set send and receive buffer sizes in perf application
Also default to 2MB, which provides reasonable baseline performance.
2021-03-04 11:01:42 +01:00
Matthias Einwag f38a877b76 Print perf server errors with context
This avoids losing error context
2021-03-04 11:01:42 +01:00
Matthias Einwag 516dcd8885 Use debug instead of trace messages in the perf server
This provides basic output without seeing all the quic packet info in between.
2021-03-04 11:01:42 +01:00
Matthias Einwag 312c0f041c Perf: Use owned buffers
Use zero-copy APIs when sending data in perf application.

Performance difference:
1. First line is before
2. Second line is after (but with only the download write change)

```
      │ Duration  │ FBL       | Upload Throughput | Download Throughput
──────┼───────────┼───────────┼───────────────────┼────────────────────
 AVG  │    5.00ms │    1.00ms │      332.82 MiB/s │        334.20 MiB/s
 AVG  │    5.00ms │    0.00ns │      332.64 MiB/s │        335.96 MiB/s
```

=> Makes less than 1%. Still neat to have
2021-03-02 09:13:00 +01:00
Matthias Einwag 3de2727b94 Perf: Prefer more efficient cipher suites
Prefer AES128 in order to maximize throughput
2021-03-02 07:01:16 +01:00