smoltcp use larger tx/rx buf size (#1085)

* smoltcp use larger tx/rx buf size
* fix direct conn check
This commit is contained in:
Sijie.Sun
2025-07-06 10:53:01 +08:00
committed by GitHub
parent f85b031402
commit 3c65594030
4 changed files with 22 additions and 3 deletions
+6 -1
View File
@@ -21,7 +21,7 @@ use crate::{
}, },
ip_reassembler::IpReassembler, ip_reassembler::IpReassembler,
kcp_proxy::NatDstKcpConnector, kcp_proxy::NatDstKcpConnector,
tokio_smoltcp::{channel_device, Net, NetConfig}, tokio_smoltcp::{channel_device, BufferSize, Net, NetConfig},
}, },
tunnel::packet_def::{PacketType, ZCPacket}, tunnel::packet_def::{PacketType, ZCPacket},
}; };
@@ -318,6 +318,11 @@ impl Socks5ServerNet {
.parse() .parse()
.unwrap(), .unwrap(),
vec![format!("{}", ipv4_addr.address()).parse().unwrap()], vec![format!("{}", ipv4_addr.address()).parse().unwrap()],
Some(BufferSize {
tcp_rx_size: 1024 * 128,
tcp_tx_size: 1024 * 128,
..Default::default()
}),
), ),
); );
+7
View File
@@ -523,6 +523,8 @@ impl<C: NatDstConnector> TcpProxy<C> {
|| cfg!(any(target_os = "android", target_env = "ohos")) || cfg!(any(target_os = "android", target_env = "ohos"))
{ {
// use smoltcp network stack // use smoltcp network stack
use crate::gateway::tokio_smoltcp::BufferSize;
self.local_port self.local_port
.store(8899, std::sync::atomic::Ordering::Relaxed); .store(8899, std::sync::atomic::Ordering::Relaxed);
@@ -573,6 +575,11 @@ impl<C: NatDstConnector> TcpProxy<C> {
.parse() .parse()
.unwrap(), .unwrap(),
vec![format!("{}", self.get_local_ip().unwrap()).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); net.set_any_ip(true);
+7 -2
View File
@@ -54,12 +54,17 @@ pub struct NetConfig {
} }
impl NetConfig { impl NetConfig {
pub fn new(interface_config: Config, ip_addr: IpCidr, gateway: Vec<IpAddress>) -> Self { pub fn new(
interface_config: Config,
ip_addr: IpCidr,
gateway: Vec<IpAddress>,
buffer_size: Option<BufferSize>,
) -> Self {
Self { Self {
interface_config, interface_config,
ip_addr, ip_addr,
gateway, gateway,
buffer_size: Default::default(), buffer_size: buffer_size.unwrap_or_default(),
} }
} }
} }
+2
View File
@@ -334,6 +334,8 @@ impl PeerManager {
pub fn has_directly_connected_conn(&self, peer_id: PeerId) -> bool { pub fn has_directly_connected_conn(&self, peer_id: PeerId) -> bool {
if let Some(peer) = self.peers.get_peer_by_id(peer_id) { if let Some(peer) = self.peers.get_peer_by_id(peer_id) {
peer.has_directly_connected_conn() peer.has_directly_connected_conn()
} else if self.foreign_network_client.get_peer_map().has_peer(peer_id) {
true
} else { } else {
false false
} }