|
5 | 5 | log::error, |
6 | 6 | quinn::{ |
7 | 7 | ClientConfig, ConnectError, Connecting, Connection, ConnectionError, Endpoint, |
8 | | - EndpointConfig, SendDatagramError, ServerConfig, TokioRuntime, TransportConfig, VarInt, |
| 8 | + EndpointConfig, IdleTimeout, SendDatagramError, ServerConfig, TokioRuntime, |
| 9 | + TransportConfig, VarInt, |
9 | 10 | }, |
10 | 11 | rcgen::RcgenError, |
11 | 12 | rustls::{Certificate, PrivateKey}, |
@@ -39,10 +40,17 @@ use { |
39 | 40 | const CLIENT_CHANNEL_BUFFER: usize = 1 << 14; |
40 | 41 | const ROUTER_CHANNEL_BUFFER: usize = 64; |
41 | 42 | const CONNECTION_CACHE_CAPACITY: usize = 3072; |
42 | | -const INITIAL_MAXIMUM_TRANSMISSION_UNIT: u16 = 1280; |
43 | 43 | const ALPN_TURBINE_PROTOCOL_ID: &[u8] = b"solana-turbine"; |
44 | 44 | const CONNECT_SERVER_NAME: &str = "solana-turbine"; |
45 | 45 |
|
| 46 | +// Transport config. |
| 47 | +const DATAGRAM_RECEIVE_BUFFER_SIZE: usize = 256 * 1024 * 1024; |
| 48 | +const DATAGRAM_SEND_BUFFER_SIZE: usize = 128 * 1024 * 1024; |
| 49 | +const INITIAL_MAXIMUM_TRANSMISSION_UNIT: u16 = MINIMUM_MAXIMUM_TRANSMISSION_UNIT; |
| 50 | +const KEEP_ALIVE_INTERVAL: Duration = Duration::from_secs(4); |
| 51 | +const MAX_IDLE_TIMEOUT: Duration = Duration::from_secs(10); |
| 52 | +const MINIMUM_MAXIMUM_TRANSMISSION_UNIT: u16 = 1280; |
| 53 | + |
46 | 54 | const CONNECTION_CLOSE_ERROR_CODE_SHUTDOWN: VarInt = VarInt::from_u32(1); |
47 | 55 | const CONNECTION_CLOSE_ERROR_CODE_DROPPED: VarInt = VarInt::from_u32(2); |
48 | 56 | const CONNECTION_CLOSE_ERROR_CODE_INVALID_IDENTITY: VarInt = VarInt::from_u32(3); |
@@ -173,11 +181,18 @@ fn new_client_config(cert: Certificate, key: PrivateKey) -> Result<ClientConfig, |
173 | 181 | } |
174 | 182 |
|
175 | 183 | fn new_transport_config() -> TransportConfig { |
| 184 | + let max_idle_timeout = IdleTimeout::try_from(MAX_IDLE_TIMEOUT).ok(); |
176 | 185 | let mut config = TransportConfig::default(); |
177 | 186 | config |
178 | 187 | .max_concurrent_bidi_streams(VarInt::from(0u8)) |
179 | 188 | .max_concurrent_uni_streams(VarInt::from(0u8)) |
180 | | - .initial_mtu(INITIAL_MAXIMUM_TRANSMISSION_UNIT); |
| 189 | + .max_idle_timeout(max_idle_timeout) |
| 190 | + .initial_mtu(INITIAL_MAXIMUM_TRANSMISSION_UNIT) |
| 191 | + .min_mtu(MINIMUM_MAXIMUM_TRANSMISSION_UNIT) |
| 192 | + .mtu_discovery_config(None) |
| 193 | + .keep_alive_interval(Some(KEEP_ALIVE_INTERVAL)) |
| 194 | + .datagram_receive_buffer_size(Some(DATAGRAM_RECEIVE_BUFFER_SIZE)) |
| 195 | + .datagram_send_buffer_size(DATAGRAM_SEND_BUFFER_SIZE); |
181 | 196 | config |
182 | 197 | } |
183 | 198 |
|
|
0 commit comments