-
Notifications
You must be signed in to change notification settings - Fork 124
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: auto-tune stream receive window #1868
Draft
mxinden
wants to merge
22
commits into
mozilla:main
Choose a base branch
from
mxinden:auto-tuning
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Commits on Apr 25, 2024
-
test(transport): maximum throughput on unlimited bandwidth and 50ms
This commit adds a basic smoke test using the `test-ficture` simulator, asserting that on a connection with unlimited bandwidth and 50ms round-trip-time Neqo can eventually achieve > 1 Gbit/s throughput. Showcases the potential a future stream flow-control auto-tuning algorithm can have. See mozilla#733.
Configuration menu - View commit details
-
Copy full SHA for c0a72ce - Browse repository at this point
Copy the full SHA c0a72ceView commit details
Commits on May 2, 2024
-
feat: auto-tune stream receive window
Previously the stream send and receive window had a hard limit at 1MB. On high latency and/or high bandwidth connections, 1 MB is not enough to exhaust the available bandwidth. Sample scenario: ``` delay_s = 0.05 window_bits = 1 * 1024 * 1024 * 8 bandwidth_bits_s = window_bits / delay_s bandwidth_mbits_s = bandwidth_bits_s / 1024 / 1024 # 160.0 ``` In other words, on a 50 ms connection a 1 MB window can at most achieve 160 Mbit/s. This commit introduces an auto-tuning algorithm for the stream receive window, increasing the window towards the bandwidth-delay product of the connection.
Configuration menu - View commit details
-
Copy full SHA for 5c2aa4c - Browse repository at this point
Copy the full SHA 5c2aa4cView commit details
Commits on May 7, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 1bfd2f5 - Browse repository at this point
Copy the full SHA 1bfd2f5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 167d93f - Browse repository at this point
Copy the full SHA 167d93fView commit details -
Configuration menu - View commit details
-
Copy full SHA for edc4035 - Browse repository at this point
Copy the full SHA edc4035View commit details
Commits on May 14, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 12390c8 - Browse repository at this point
Copy the full SHA 12390c8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0ad1b77 - Browse repository at this point
Copy the full SHA 0ad1b77View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8e6a5af - Browse repository at this point
Copy the full SHA 8e6a5afView commit details
Commits on May 15, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 716ba20 - Browse repository at this point
Copy the full SHA 716ba20View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3b2a52b - Browse repository at this point
Copy the full SHA 3b2a52bView commit details -
Configuration menu - View commit details
-
Copy full SHA for dba8190 - Browse repository at this point
Copy the full SHA dba8190View commit details
Commits on Nov 1, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 9b9524e - Browse repository at this point
Copy the full SHA 9b9524eView commit details
Commits on Nov 17, 2024
-
test(transport): assert maximum bandwidth on gbit link
This commit adds a basic smoke test using the `test-fixture` simulator, asserting the expected bandwidth on a 1 gbit link. Given mozilla#733, the current expected bandwidth is limited by the fixed sized stream receive buffer (1MiB).
Configuration menu - View commit details
-
Copy full SHA for 1b2a370 - Browse repository at this point
Copy the full SHA 1b2a370View commit details
Commits on Nov 19, 2024
-
Configuration menu - View commit details
-
Copy full SHA for ac5d024 - Browse repository at this point
Copy the full SHA ac5d024View commit details
Commits on Dec 1, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 22f1d7e - Browse repository at this point
Copy the full SHA 22f1d7eView commit details -
Configuration menu - View commit details
-
Copy full SHA for db3cfe5 - Browse repository at this point
Copy the full SHA db3cfe5View commit details
Commits on Dec 2, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 62dc2ba - Browse repository at this point
Copy the full SHA 62dc2baView commit details -
Configuration menu - View commit details
-
Copy full SHA for 841d086 - Browse repository at this point
Copy the full SHA 841d086View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5ec58cb - Browse repository at this point
Copy the full SHA 5ec58cbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6dd3829 - Browse repository at this point
Copy the full SHA 6dd3829View commit details -
fix(sim): correct
Waiting
state comparison inNodeHolder::ready()
A `Node` (e.g. a `Client`, `Server` or `TailDrop` router) can be in 3 states: ``` rust enum NodeState { /// The node just produced a datagram. It should be activated again as soon as possible. Active, /// The node is waiting. Waiting(Instant), /// The node became idle. Idle, } ``` `NodeHolder::ready()` determines whether a `Node` is ready to be processed again. When `NodeState::Waiting`, it should only be ready when `t <= now`, i.e. the waiting time has passed, not `t >= now`. ``` rust impl NodeHolder { fn ready(&self, now: Instant) -> bool { match self.state { Active => true, Waiting(t) => t <= now, // not >= Idle => false, } } } ``` The previous behavior lead to wastefull non-ready `Node`s being processed and thus a large test runtime when e.g. simulating a gbit connection (mozilla#2203).
Configuration menu - View commit details
-
Copy full SHA for a6fc729 - Browse repository at this point
Copy the full SHA a6fc729View commit details -
Configuration menu - View commit details
-
Copy full SHA for f9b9a27 - Browse repository at this point
Copy the full SHA f9b9a27View commit details
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.