mirror of
https://github.com/EasyTier/EasyTier.git
synced 2025-09-27 13:02:19 +08:00
quic uses the bbr congestion control algorithm (#1010)
Some checks failed
EasyTier Core / pre_job (push) Has been cancelled
EasyTier Core / build_web (push) Has been cancelled
EasyTier Core / build (freebsd-13.2-x86_64, 13.2, ubuntu-22.04, x86_64-unknown-freebsd) (push) Has been cancelled
EasyTier Core / build (linux-aarch64, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-arm, ubuntu-22.04, arm-unknown-linux-musleabi) (push) Has been cancelled
EasyTier Core / build (linux-armhf, ubuntu-22.04, arm-unknown-linux-musleabihf) (push) Has been cancelled
EasyTier Core / build (linux-armv7, ubuntu-22.04, armv7-unknown-linux-musleabi) (push) Has been cancelled
EasyTier Core / build (linux-armv7hf, ubuntu-22.04, armv7-unknown-linux-musleabihf) (push) Has been cancelled
EasyTier Core / build (linux-mips, ubuntu-22.04, mips-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-mipsel, ubuntu-22.04, mipsel-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-x86_64, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (macos-aarch64, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
EasyTier Core / build (macos-x86_64, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
EasyTier Core / build (windows-arm64, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / build (windows-i686, windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / build (windows-x86_64, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / core-result (push) Has been cancelled
EasyTier Core / magisk_build (push) Has been cancelled
EasyTier GUI / pre_job (push) Has been cancelled
EasyTier GUI / build-gui (linux-aarch64, aarch64-unknown-linux-gnu, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
EasyTier GUI / build-gui (linux-x86_64, x86_64-unknown-linux-gnu, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
EasyTier GUI / build-gui (macos-aarch64, aarch64-apple-darwin, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
EasyTier GUI / build-gui (macos-x86_64, x86_64-apple-darwin, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
EasyTier GUI / build-gui (windows-arm64, aarch64-pc-windows-msvc, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / build-gui (windows-i686, i686-pc-windows-msvc, windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / build-gui (windows-x86_64, x86_64-pc-windows-msvc, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / gui-result (push) Has been cancelled
EasyTier Mobile / pre_job (push) Has been cancelled
EasyTier Mobile / build-mobile (android, ubuntu-22.04, android) (push) Has been cancelled
EasyTier Mobile / mobile-result (push) Has been cancelled
EasyTier Test / pre_job (push) Has been cancelled
EasyTier Test / test (push) Has been cancelled
Some checks failed
EasyTier Core / pre_job (push) Has been cancelled
EasyTier Core / build_web (push) Has been cancelled
EasyTier Core / build (freebsd-13.2-x86_64, 13.2, ubuntu-22.04, x86_64-unknown-freebsd) (push) Has been cancelled
EasyTier Core / build (linux-aarch64, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-arm, ubuntu-22.04, arm-unknown-linux-musleabi) (push) Has been cancelled
EasyTier Core / build (linux-armhf, ubuntu-22.04, arm-unknown-linux-musleabihf) (push) Has been cancelled
EasyTier Core / build (linux-armv7, ubuntu-22.04, armv7-unknown-linux-musleabi) (push) Has been cancelled
EasyTier Core / build (linux-armv7hf, ubuntu-22.04, armv7-unknown-linux-musleabihf) (push) Has been cancelled
EasyTier Core / build (linux-mips, ubuntu-22.04, mips-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-mipsel, ubuntu-22.04, mipsel-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-x86_64, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (macos-aarch64, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
EasyTier Core / build (macos-x86_64, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
EasyTier Core / build (windows-arm64, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / build (windows-i686, windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / build (windows-x86_64, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / core-result (push) Has been cancelled
EasyTier Core / magisk_build (push) Has been cancelled
EasyTier GUI / pre_job (push) Has been cancelled
EasyTier GUI / build-gui (linux-aarch64, aarch64-unknown-linux-gnu, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
EasyTier GUI / build-gui (linux-x86_64, x86_64-unknown-linux-gnu, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
EasyTier GUI / build-gui (macos-aarch64, aarch64-apple-darwin, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
EasyTier GUI / build-gui (macos-x86_64, x86_64-apple-darwin, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
EasyTier GUI / build-gui (windows-arm64, aarch64-pc-windows-msvc, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / build-gui (windows-i686, i686-pc-windows-msvc, windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / build-gui (windows-x86_64, x86_64-pc-windows-msvc, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / gui-result (push) Has been cancelled
EasyTier Mobile / pre_job (push) Has been cancelled
EasyTier Mobile / build-mobile (android, ubuntu-22.04, android) (push) Has been cancelled
EasyTier Mobile / mobile-result (push) Has been cancelled
EasyTier Test / pre_job (push) Has been cancelled
EasyTier Test / test (push) Has been cancelled
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -2008,6 +2008,7 @@ dependencies = [
|
|||||||
"prost-reflect-build",
|
"prost-reflect-build",
|
||||||
"prost-types",
|
"prost-types",
|
||||||
"quinn",
|
"quinn",
|
||||||
|
"quinn-proto",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"rcgen",
|
"rcgen",
|
||||||
"regex",
|
"regex",
|
||||||
|
@@ -65,6 +65,8 @@ pin-project-lite = "0.2.13"
|
|||||||
tachyonix = "0.3.0"
|
tachyonix = "0.3.0"
|
||||||
|
|
||||||
quinn = { version = "0.11.8", optional = true, features = ["ring"] }
|
quinn = { version = "0.11.8", optional = true, features = ["ring"] }
|
||||||
|
quinn-proto = { version = "0.11.5", optional = true }
|
||||||
|
|
||||||
rustls = { version = "0.23.0", features = [
|
rustls = { version = "0.23.0", features = [
|
||||||
"ring",
|
"ring",
|
||||||
], default-features = false, optional = true }
|
], default-features = false, optional = true }
|
||||||
@@ -291,7 +293,7 @@ full = [
|
|||||||
"socks5",
|
"socks5",
|
||||||
]
|
]
|
||||||
wireguard = ["dep:boringtun", "dep:ring"]
|
wireguard = ["dep:boringtun", "dep:ring"]
|
||||||
quic = ["dep:quinn", "dep:rustls", "dep:rcgen"]
|
quic = ["dep:quinn", "dep:rustls", "dep:rcgen", "dep:quinn-proto"]
|
||||||
mimalloc = ["dep:mimalloc"]
|
mimalloc = ["dep:mimalloc"]
|
||||||
aes-gcm = ["dep:aes-gcm"]
|
aes-gcm = ["dep:aes-gcm"]
|
||||||
tun = ["dep:tun"]
|
tun = ["dep:tun"]
|
||||||
|
@@ -9,6 +9,7 @@ use crate::tunnel::{
|
|||||||
TunnelInfo,
|
TunnelInfo,
|
||||||
};
|
};
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
|
|
||||||
use quinn::{
|
use quinn::{
|
||||||
crypto::rustls::QuicClientConfig, ClientConfig, Connection, Endpoint, ServerConfig,
|
crypto::rustls::QuicClientConfig, ClientConfig, Connection, Endpoint, ServerConfig,
|
||||||
TransportConfig,
|
TransportConfig,
|
||||||
@@ -19,17 +20,21 @@ use super::{
|
|||||||
insecure_tls::{get_insecure_tls_cert, get_insecure_tls_client_config},
|
insecure_tls::{get_insecure_tls_cert, get_insecure_tls_client_config},
|
||||||
IpVersion, Tunnel, TunnelConnector, TunnelError, TunnelListener,
|
IpVersion, Tunnel, TunnelConnector, TunnelError, TunnelListener,
|
||||||
};
|
};
|
||||||
|
use quinn_proto::congestion::BbrConfig;
|
||||||
|
|
||||||
|
|
||||||
pub fn configure_client() -> ClientConfig {
|
pub fn configure_client() -> ClientConfig {
|
||||||
let mut tspt_cfg = TransportConfig::default();
|
let client_crypto = QuicClientConfig::try_from(get_insecure_tls_client_config()).unwrap();
|
||||||
tspt_cfg.keep_alive_interval(Some(Duration::from_secs(5)));
|
let mut client_config = ClientConfig::new(Arc::new(client_crypto));
|
||||||
|
|
||||||
let mut cfg = ClientConfig::new(Arc::new(
|
// // Create a new TransportConfig and set BBR
|
||||||
QuicClientConfig::try_from(get_insecure_tls_client_config()).unwrap(),
|
let mut transport_config = TransportConfig::default();
|
||||||
));
|
transport_config.congestion_controller_factory(Arc::new(BbrConfig::default()));
|
||||||
cfg.transport_config(Arc::new(tspt_cfg));
|
transport_config.keep_alive_interval(Some(Duration::from_secs(5)));
|
||||||
|
// Replace the default TransportConfig with the transport_config() method
|
||||||
|
client_config.transport_config(Arc::new(transport_config));
|
||||||
|
|
||||||
cfg
|
client_config
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Constructs a QUIC endpoint configured to listen for incoming connections on a certain address
|
/// Constructs a QUIC endpoint configured to listen for incoming connections on a certain address
|
||||||
@@ -54,6 +59,8 @@ pub fn configure_server() -> Result<(ServerConfig, Vec<u8>), Box<dyn Error>> {
|
|||||||
let transport_config = Arc::get_mut(&mut server_config.transport).unwrap();
|
let transport_config = Arc::get_mut(&mut server_config.transport).unwrap();
|
||||||
transport_config.max_concurrent_uni_streams(10_u8.into());
|
transport_config.max_concurrent_uni_streams(10_u8.into());
|
||||||
transport_config.max_concurrent_bidi_streams(10_u8.into());
|
transport_config.max_concurrent_bidi_streams(10_u8.into());
|
||||||
|
// Setting BBR congestion control
|
||||||
|
transport_config.congestion_controller_factory(Arc::new(BbrConfig::default()));
|
||||||
|
|
||||||
Ok((server_config, certs[0].to_vec()))
|
Ok((server_config, certs[0].to_vec()))
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user