From 3c65594030e20c0fc0e6f923ba469a54c4164aa0 Mon Sep 17 00:00:00 2001 From: "Sijie.Sun" Date: Sun, 6 Jul 2025 10:53:01 +0800 Subject: [PATCH] smoltcp use larger tx/rx buf size (#1085) * smoltcp use larger tx/rx buf size * fix direct conn check --- easytier/src/gateway/socks5.rs | 7 ++++++- easytier/src/gateway/tcp_proxy.rs | 7 +++++++ easytier/src/gateway/tokio_smoltcp/mod.rs | 9 +++++++-- easytier/src/peers/peer_manager.rs | 2 ++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/easytier/src/gateway/socks5.rs b/easytier/src/gateway/socks5.rs index c99d15df..9bad0009 100644 --- a/easytier/src/gateway/socks5.rs +++ b/easytier/src/gateway/socks5.rs @@ -21,7 +21,7 @@ use crate::{ }, ip_reassembler::IpReassembler, kcp_proxy::NatDstKcpConnector, - tokio_smoltcp::{channel_device, Net, NetConfig}, + tokio_smoltcp::{channel_device, BufferSize, Net, NetConfig}, }, tunnel::packet_def::{PacketType, ZCPacket}, }; @@ -318,6 +318,11 @@ impl Socks5ServerNet { .parse() .unwrap(), vec![format!("{}", ipv4_addr.address()).parse().unwrap()], + Some(BufferSize { + tcp_rx_size: 1024 * 128, + tcp_tx_size: 1024 * 128, + ..Default::default() + }), ), ); diff --git a/easytier/src/gateway/tcp_proxy.rs b/easytier/src/gateway/tcp_proxy.rs index 234ec794..d56d9094 100644 --- a/easytier/src/gateway/tcp_proxy.rs +++ b/easytier/src/gateway/tcp_proxy.rs @@ -523,6 +523,8 @@ impl TcpProxy { || cfg!(any(target_os = "android", target_env = "ohos")) { // use smoltcp network stack + + use crate::gateway::tokio_smoltcp::BufferSize; self.local_port .store(8899, std::sync::atomic::Ordering::Relaxed); @@ -573,6 +575,11 @@ impl TcpProxy { .parse() .unwrap(), vec![format!("{}", self.get_local_ip().unwrap()).parse().unwrap()], + Some(BufferSize { + tcp_rx_size: 1024 * 16, + tcp_tx_size: 1024 * 16, + ..Default::default() + }), ), ); net.set_any_ip(true); diff --git a/easytier/src/gateway/tokio_smoltcp/mod.rs b/easytier/src/gateway/tokio_smoltcp/mod.rs index 9f2f0350..3187d8c7 100644 --- a/easytier/src/gateway/tokio_smoltcp/mod.rs +++ b/easytier/src/gateway/tokio_smoltcp/mod.rs @@ -54,12 +54,17 @@ pub struct NetConfig { } impl NetConfig { - pub fn new(interface_config: Config, ip_addr: IpCidr, gateway: Vec) -> Self { + pub fn new( + interface_config: Config, + ip_addr: IpCidr, + gateway: Vec, + buffer_size: Option, + ) -> Self { Self { interface_config, ip_addr, gateway, - buffer_size: Default::default(), + buffer_size: buffer_size.unwrap_or_default(), } } } diff --git a/easytier/src/peers/peer_manager.rs b/easytier/src/peers/peer_manager.rs index 7937a35b..04ef5016 100644 --- a/easytier/src/peers/peer_manager.rs +++ b/easytier/src/peers/peer_manager.rs @@ -334,6 +334,8 @@ impl PeerManager { pub fn has_directly_connected_conn(&self, peer_id: PeerId) -> bool { if let Some(peer) = self.peers.get_peer_by_id(peer_id) { peer.has_directly_connected_conn() + } else if self.foreign_network_client.get_peer_map().has_peer(peer_id) { + true } else { false }