Commit Graph

2901 Commits

Author SHA1 Message Date
Benjamin Saunders 0dad2ce1a5 Push Arcing of crypto configs down into their traits 2021-10-27 17:49:48 -07:00
Benjamin Saunders 4927355049 Remove config builders
These aren't significantly more convenient than working with rustls
directly at this point.
2021-10-27 17:49:48 -07:00
Benjamin Saunders 9630ddb955 Factor out helpers for constructing suitable rustls configs 2021-10-27 17:49:48 -07:00
Benjamin Saunders 52edc788b9 Erase crypto::Session::HeaderKey 2021-10-27 17:49:48 -07:00
Benjamin Saunders 441560647d Erase crypto::Session::PacketKey 2021-10-27 17:49:48 -07:00
Benjamin Saunders 02e02b1df3 Erase crypto::Session::HandshakeTokenKey 2021-10-27 17:49:48 -07:00
Benjamin Saunders 0e415dd296 Erase crypto::HandshakeTokenKey::AeadKey 2021-10-27 17:49:48 -07:00
Benjamin Saunders 2575356c88 Remove dead code 2021-10-27 17:49:48 -07:00
Benjamin Saunders d60c9c282d Erase crypto::Session::HmacKey
EndpointConfig::default now depends on ring
2021-10-27 17:49:48 -07:00
Benjamin Saunders 6fa5a007ec Erase crypto::Session::Identity 2021-10-27 17:49:48 -07:00
Benjamin Saunders a384ee2edb Erase crypto::Session::HandshakeData 2021-10-27 17:49:48 -07: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 7529687e1c Remove now unnecessary QUIC_CIPHER_SUITES 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 1ca9374b54 Use rustls-native-certs without its dependency on rustls 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 be60420b35 Remove two unused fields 2021-10-25 10:48:48 -07:00
Benjamin Saunders d43150821c Nuke interop tool
Manual interop testing has been obsoleted by
e.g. https://github.com/marten-seemann/quic-interop-runner
2021-10-11 08:50:36 +02:00
Dirkjan Ochtman 91d22f73a6 quinn-udp: bump version number 2021-10-07 09:47:04 +02:00
Dirkjan Ochtman 72b99b0372 Drop authors from Cargo manifests
Following RFC 3052.
2021-10-07 09:47:04 +02:00
Dirkjan Ochtman b65a402634 quinn-udp: normalize Cargo.toml formatting 2021-10-07 09:47:04 +02:00
Dirkjan Ochtman 07aac1238b Bump crc dependency to current version 2021-09-29 10:14:32 -07:00
Dirkjan Ochtman f33c6994e7 Update MSRV to 1.51
This is now a little over 6 months old.
2021-09-29 10:14:32 -07:00
Dirkjan Ochtman 9bf6bcfcff Add Dependabot config 2021-09-29 10:14:32 -07:00
Dirkjan Ochtman 34b3345a36 Upgrade arbitrary to 1 2021-09-29 10:14:32 -07:00
Dirkjan Ochtman 79d61bfe61 Ignore more cruft 2021-09-29 10:14:32 -07: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
Dirkjan Ochtman bd7df40511 Make Endpoint::connect() error when no ClientConfig is configured 2021-09-29 10:12:44 -07:00
Roman Proskuryakov 8c27e64f70 Add quinn-udp to the list of crates into the main README 2021-09-21 13:58:23 +02:00
Roman Proskuryakov 777845ab33 Fix repo urls for quinn* crates 2021-09-21 13:58:23 +02:00
Roman Proskuryakov e03926f3c0 Mv quinn/src/platform/ -> quinn-udp 2021-09-21 13:58:23 +02:00
Matthias Einwag 8899b1a57b Allow multiple clients in the bulk benchmark
This allows to specify a "--client" parameter in the benchmark,
which specifies the amount of clients which perform a  test concurrently.
Each client uses its own thread and single-threaded runtime.

Stats are currently printed for each individual client and not aggregated.
2021-09-20 21:49:48 +02:00
Matthias Einwag 074da13c4b Allow to specify units for the bulk benchmark
This makes it a bit easier to specify large arguments
2021-09-20 21:49:48 +02:00
Matthias Einwag 8408135208 Allow bulk benchmark in both directions
This changes the bulk benchmark to support server->client
in addition to client->server transfers.

The default direction is set to server->client, since
this is more typically used.
2021-09-20 21:49:48 +02:00
Matthias Einwag 3ac0a05313 Restructure bulk benchmarks
In order to extend the bulk benchmark further, this change moves most
common functions out of the bulk.rs binary and into a lib.rs and stats.rs file.

Functionally there are no relevant changes.
2021-09-20 21:49:48 +02:00
Matthias Einwag 578cbb1eb0 Use WorkLimiter also for sending data
This adds time-based yielding to the send loop in the same fashion it
had been previously added ot the receive loop.
In my performance testing this didn't show a noticeable difference - likely
because in the current benchmark the client is the bottleneck. But it should
make things more deterministic.
2021-09-20 12:44:49 +02:00
Matthias Einwag 76d1184d08 WorkLimiter must allow at least 1 work item
Without this, users of it will just be stuck and can never get work done.

Also make sure a work item is calculated to take at least 1ns, to prevent
a division by zero.
2021-09-20 12:44:49 +02:00
BiagioFesta 9bb4971b8d endpoint: allow override server configuration 2021-09-20 09:59:34 +02:00
Chris Connelly e63dd77376 Make TransportConfig setters infallible
For most setters this was just a case of changing the signature to take
a `VarInt`.

`max_idle_timeout` was a bit more involved in order to maintain a usable
conversion from `Duration`. The internal representation was changed from
`Duration` from `VarInt`, and an `IdleTimeout` newtype was introduced
for the setter signature. `IdleTimeout` contains a `VarInt`-encoded
millisecond value, and has a fallible conversion from `Duration`. The
use of a newtype is preferable to a direct `Duration` -> `VarInt`
encoding since there could be other `VarInt`-encoded values in future
that use a different resolution than milliseconds.

These changes allow callers to avoid the type-level possibility of error
if they have a `VarInt` (or a value that can be converted infallibly
into one). Fallible conversion from `VarInt` is still convenient with
`TryInto`, and callers can handle the conversion errors without the
indirection of `ConfigError`.

Closes #1176.

BREAKING CHANGE: The `max_concurrent_bidi_streams`,
`max_concurrent_uni_streams`, `stream_receive_window`, and
`receive_window` methods on `TransportConfig` now take `VarInt`
arguments and return `&mut Self`. `TransportConfig::max_idle_timeout`
now takes an `IdleTimeout` argument and returns `&mut Self`.
2021-09-19 18:30:43 -07:00
Violet 5d3a10372e add async-await-macro feature to futures-util in dev-depedancies, to make sure quinn crate can compile tests 2021-09-06 08:13:01 +02:00
Benjamin Saunders 827f4f9bd3 Disable default features in proto dependency 2021-08-30 14:25:17 +02:00
Basti Ortiz 60b9f9ff70 Chore: disable unused default features for various crates 2021-08-25 12:00:38 -07:00
Basti Ortiz 858a26a6c6 Chore: remove unused import 2021-08-25 12:00:38 -07:00
Chris Connelly 2f96a226cd Remove unused ConnectError::Config variant
There has been no implicit conversion to this variant since the switch
to `thiserror` (1bca0f7c), since `#[source]` does not imply `#[from]`.
There has never been any explicit construction of this variant, so it
likely became unused some time before during various configuration
refactors.

BREAKING CHANGE: The `ConnectError::Config` variant is removed.
2021-08-19 10:18:17 -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
Matthias Einwag 78d8619dd9 Fix cubic minimum congestion window handling
`config.minimum_window` is already in bytes - it doesn't have to be multiplied by them..
2021-08-19 08:04:31 +02:00