-
Notifications
You must be signed in to change notification settings - Fork 4.6k
expands transport configs in turbine QUIC endpoint #33864
expands transport configs in turbine QUIC endpoint #33864
Conversation
Codecov Report
@@ Coverage Diff @@
## master #33864 +/- ##
=========================================
- Coverage 81.8% 81.8% -0.1%
=========================================
Files 809 809
Lines 217692 217697 +5
=========================================
- Hits 178287 178285 -2
- Misses 39405 39412 +7 |
94fcc24
to
fd97b60
Compare
// Transport config. | ||
const DATAGRAM_RECEIVE_BUFFER_SIZE: usize = 256 * 1024 * 1024; | ||
const DATAGRAM_SEND_BUFFER_SIZE: usize = 128 * 1024 * 1024; | ||
const INITIAL_MAXIMUM_TRANSMISSION_UNIT: u16 = MINIMUM_MAXIMUM_TRANSMISSION_UNIT; | ||
const KEEP_ALIVE_INTERVAL: Duration = Duration::from_secs(4); | ||
const MAX_IDLE_TIMEOUT: Duration = Duration::from_secs(10); | ||
const MINIMUM_MAXIMUM_TRANSMISSION_UNIT: u16 = 1280; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Were these values found/picked empirically? The MTU and durations are seemingly simple; however, the buffer size ones seem a little less straight forward to me in how the numbers were picked
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the buffer sizes I dug the default values in the quinn library and increased them by a couple of orders of magnitude because the peak of the turbine traffic can be pretty high.
https://docs.rs/quinn-proto/0.10.2/src/quinn_proto/config.rs.html#296-330
My primary goal here is to make these core configs explicit. Hopefully, the incremental testing on testnet will allow to further fine tune these if needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got it. Maybe if/once we determine that QUIC is a suitable replacement for turbine, we can circle back and leave some paper trail comments. Hypothetically, given a block duration and block size (in shreds), we should be able to come up with a ballpark "expected load".
Not saying I think these numbers have to be a "tight fit"; rather, some rough numbers + a comment of leaving sufficient margin would be nice for the next person who is looking through the code
(cherry picked from commit 783f136)
…#33864) (#33993) expands transport configs in turbine QUIC endpoint (#33864) (cherry picked from commit 783f136) Co-authored-by: behzad nouri <[email protected]>
…solana-labs#33864) (solana-labs#33993) expands transport configs in turbine QUIC endpoint (solana-labs#33864) (cherry picked from commit 783f136) Co-authored-by: behzad nouri <[email protected]>
…solana-labs#33864) (solana-labs#33993) expands transport configs in turbine QUIC endpoint (solana-labs#33864) (cherry picked from commit 783f136) Co-authored-by: behzad nouri <[email protected]>
Problem
quinn default transport config is not suitable for turbine.
Summary of Changes
Set explicit values for transport configs in turbine QUIC endpoint