Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: DPLPMTUD #1903

Merged
merged 105 commits into from
Jul 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
de41d72
WIP
larseggert May 13, 2024
a3b0f0c
Merge remote-tracking branch 'origin/main' into feat-dplpmtud
larseggert May 14, 2024
80fd884
Fixes
larseggert May 14, 2024
76f3fd4
Minimize diff
larseggert May 14, 2024
3cc307b
Progress
larseggert May 14, 2024
9f51395
Fix clippy
larseggert May 14, 2024
9ecfda2
Reduce diff to main
larseggert May 14, 2024
213ad01
Merge branch 'main' into feat-dplpmtud
larseggert May 15, 2024
19c2f44
Use RefCell
larseggert May 15, 2024
103ac4e
Make Pacer use PmtudState
larseggert May 15, 2024
cc03dc2
Merge branch 'main' into feat-dplpmtud
larseggert May 16, 2024
3a7a923
Renamings
larseggert May 17, 2024
b42b525
Fix tests broken by changing PATH_MTU_V6
larseggert May 17, 2024
e02ddf7
WIP
larseggert May 20, 2024
b3e4fd0
Finalize
larseggert May 21, 2024
da3cbb9
Merge branch 'main' into feat-dplpmtud
larseggert May 21, 2024
608e1c6
Update neqo-transport/src/path.rs
larseggert May 22, 2024
f4ee0f5
Address comments
larseggert May 22, 2024
819d08c
Update neqo-transport/src/pmtud.rs
larseggert May 22, 2024
848260c
Remove PmtudRef from ClassicCongestionControl
larseggert May 22, 2024
3c120c6
Disable PMTUD by default, except for demo client and server, and simu…
larseggert May 22, 2024
55cd448
Fix clippy
larseggert May 22, 2024
a8d49a3
Make Pmtud part of Pacer only
larseggert May 22, 2024
62a06aa
These are now `const_assert`s
larseggert May 22, 2024
5ae0466
Cleanups
larseggert May 22, 2024
4195f6c
Address more comments
larseggert May 22, 2024
4f6a3c4
Cleanups
larseggert May 22, 2024
84154c5
Add some initial tests
larseggert May 22, 2024
ee91c3c
Fix clippy
larseggert May 23, 2024
90f5761
Minimize diff
larseggert May 23, 2024
a450767
Probe with non-padding data
larseggert May 23, 2024
c9081f9
Search table based on TMA paper
larseggert May 23, 2024
1736a43
Deal with PMTU reductions
larseggert May 23, 2024
acbc0c6
Fix crypto invocation limits
larseggert May 23, 2024
e76be7c
Fix comment
larseggert May 23, 2024
68cca5b
More comments
larseggert May 23, 2024
a114469
Add PMTU_RAISE_TIMER
larseggert May 23, 2024
b8219c6
Lost PMTUD probes do not elicit a congestion control reaction
larseggert May 24, 2024
7de5e4e
Update pacer when MTU changes
larseggert May 24, 2024
810864a
Better way to update pacer
larseggert May 27, 2024
46f4ed0
Merge branch 'main' into feat-dplpmtud
larseggert May 27, 2024
31bb86f
Fix last commit
larseggert May 27, 2024
3536ad4
Merge branch 'main' into feat-dplpmtud
larseggert May 28, 2024
439a55a
Merge branch 'feat-dplpmtud' of github.com:larseggert/neqo into feat-…
larseggert May 28, 2024
501b150
Potential fix for bench
larseggert May 28, 2024
bf4f1e4
Update neqo-transport/src/pmtud.rs
larseggert May 28, 2024
08f2404
Update neqo-transport/src/pmtud.rs
larseggert May 28, 2024
6b9cb1c
Update neqo-transport/src/pmtud.rs
larseggert May 28, 2024
c1b85b9
Merge branch 'main' into feat-dplpmtud
larseggert May 29, 2024
eca5ee9
Update neqo-transport/src/cc/classic_cc.rs
larseggert May 29, 2024
a7636c4
Undo
larseggert May 29, 2024
1dc9d2c
Simplifications
larseggert May 29, 2024
9f88d7f
rustfmt
larseggert May 29, 2024
4cea3c8
Disarm raise timer when it fired
larseggert May 30, 2024
a538a58
Merge branch 'main' into feat-dplpmtud
larseggert May 30, 2024
cbcd621
Merge branch 'feat-dplpmtud' of github.com:larseggert/neqo into feat-…
larseggert May 30, 2024
f296efe
test script that triggers the bug
larseggert May 31, 2024
d5705b5
Merge branch 'main' into feat-dplpmtud
larseggert Jun 18, 2024
622e754
Merge branch 'main' into feat-dplpmtud
larseggert Jul 2, 2024
26f54d9
Merge branch 'main' into feat-dplpmtud
larseggert Jul 2, 2024
5c0322c
Revert test.sh (modulo bug fix)
larseggert Jul 2, 2024
9230cbd
Increase coverage
larseggert Jul 2, 2024
5f4563d
Better test
larseggert Jul 2, 2024
5a5750b
Another test
larseggert Jul 2, 2024
3cfe47d
Merge branch 'main' into feat-dplpmtud
larseggert Jul 2, 2024
7265c5d
let Some(...) instead of testing
martinthomson Jul 3, 2024
0b3583b
Fix
larseggert Jul 3, 2024
8f4caee
Merge branch 'main' into feat-dplpmtud
larseggert Jul 3, 2024
b5b39ca
Merge branch 'main' into feat-dplpmtud
larseggert Jul 3, 2024
c05a50e
Merge branch 'main' into feat-dplpmtud
larseggert Jul 3, 2024
35b94c4
static_assertions to dev-dependencies
larseggert Jul 4, 2024
ba10440
Panic on failure
larseggert Jul 4, 2024
4393d95
Merge branch 'feat-dplpmtud' of github.com:larseggert/neqo into feat-…
larseggert Jul 4, 2024
4fade01
Merge branch 'main' into feat-dplpmtud
larseggert Jul 4, 2024
de4a269
Fixes after merge
larseggert Jul 4, 2024
35b1512
Make test-only plpmtu() panic on error
larseggert Jul 4, 2024
07bae07
set_confirmed
larseggert Jul 4, 2024
8e13974
invocations_base -> largest_packet_len
larseggert Jul 4, 2024
7376ccb
Simplify
larseggert Jul 4, 2024
065e9fd
Set builder limit in output_path()
larseggert Jul 4, 2024
fcd02bb
fmt
larseggert Jul 4, 2024
714c547
A bunch of changes based on Martin's review
larseggert Jul 8, 2024
54dd5ab
Avoid spurious PMTUD restarts better. Possible perf. optimizations.
larseggert Jul 9, 2024
bcf0024
Merge branch 'main' into feat-dplpmtud
larseggert Jul 9, 2024
9582235
Improve coverage
larseggert Jul 9, 2024
c942fd9
Enable PMTUD for simulator
larseggert Jul 9, 2024
d0c078d
Update neqo-transport/src/connection/mod.rs
larseggert Jul 10, 2024
95e1717
Update neqo-transport/src/connection/mod.rs
larseggert Jul 10, 2024
e1a0ee6
Update neqo-transport/src/connection/mod.rs
larseggert Jul 10, 2024
61e9fbe
Update neqo-transport/src/packet/mod.rs
larseggert Jul 10, 2024
be7dcdb
Update neqo-transport/src/stats.rs
larseggert Jul 10, 2024
3a8f2c4
Suggestions from Max
larseggert Jul 10, 2024
fd2af00
Update neqo-transport/src/pmtud.rs
larseggert Jul 10, 2024
3d8ba19
Suggestions from Martin
larseggert Jul 10, 2024
1f7e277
More suggestions
larseggert Jul 10, 2024
5c06141
Add TODO
larseggert Jul 10, 2024
6f03b99
Use filter fn
mxinden Jul 10, 2024
bd58c96
clippy
mxinden Jul 10, 2024
3a3d554
Merge pull request #25 from mxinden/feat-dplpmtud
larseggert Jul 10, 2024
8d1d1cd
Fixes
larseggert Jul 10, 2024
673216a
doc fix
larseggert Jul 10, 2024
c4f03ce
refactor(pmtud): implement Copy for Probe
mxinden Jul 10, 2024
2ce8db1
Merge pull request #26 from mxinden/feat-dplpmtud
larseggert Jul 10, 2024
151e802
Make search_tables identical length, and deal with the fallout
larseggert Jul 10, 2024
5a1f659
More
larseggert Jul 10, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion neqo-bin/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,10 @@ pub struct QuicParameters {
/// Whether to disable pacing.
pub no_pacing: bool,

#[arg(long)]
/// Whether to disable path MTU discovery.
pub no_pmtud: bool,

#[arg(name = "preferred-address-v4", long)]
/// An IPv4 address for the server preferred address.
pub preferred_address_v4: Option<String>,
Expand All @@ -137,6 +141,7 @@ impl Default for QuicParameters {
idle_timeout: 30,
congestion_control: CongestionControlAlgorithm::NewReno,
no_pacing: false,
no_pmtud: false,
preferred_address_v4: None,
preferred_address_v6: None,
}
Expand Down Expand Up @@ -203,7 +208,8 @@ impl QuicParameters {
.max_streams(StreamType::UniDi, self.max_streams_uni)
.idle_timeout(Duration::from_secs(self.idle_timeout))
.cc_algorithm(self.congestion_control)
.pacing(!self.no_pacing);
.pacing(!self.no_pacing)
.pmtud(!self.no_pmtud);

if let Some(&first) = self.quic_version.first() {
let all = if self.quic_version[1..].contains(&first) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use std::{cell::RefCell, rc::Rc, time::Duration};

use neqo_common::event::Provider;
use neqo_crypto::AuthenticationStatus;
use neqo_transport::{ConnectionParameters, StreamId, StreamType, MIN_INITIAL_PACKET_SIZE};
use neqo_transport::{ConnectionParameters, Pmtud, StreamId, StreamType};
use test_fixture::{
anti_replay, fixture_init, now, CountingConnectionIdGenerator, DEFAULT_ADDR, DEFAULT_ALPN_H3,
DEFAULT_KEYS, DEFAULT_SERVER_NAME,
Expand All @@ -25,7 +25,8 @@ use crate::{
WebTransportServerEvent, WebTransportSessionAcceptAction,
};

const DATAGRAM_SIZE: u64 = MIN_INITIAL_PACKET_SIZE as u64;
// Leave space for large QUIC header.
const DATAGRAM_SIZE: u64 = Pmtud::default_plpmtu(DEFAULT_ADDR.ip()) as u64 - 40;

pub fn wt_default_parameters() -> Http3Parameters {
Http3Parameters::default()
Expand Down
1 change: 1 addition & 0 deletions neqo-transport/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ neqo-common = { path = "../neqo-common" }
neqo-crypto = { path = "../neqo-crypto" }
qlog = { workspace = true }
smallvec = { version = "1.11", default-features = false }
static_assertions = { version = "1.1", default-features = false }
larseggert marked this conversation as resolved.
Show resolved Hide resolved

[dev-dependencies]
criterion = { version = "0.5", default-features = false, features = ["html_reports"] }
Expand Down
Loading
Loading