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

View File

@@ -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()
}),
),
);

View File

@@ -523,6 +523,8 @@ impl<C: NatDstConnector> TcpProxy<C> {
|| 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<C: NatDstConnector> TcpProxy<C> {
.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);

View File

@@ -54,12 +54,17 @@ pub struct 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 {
interface_config,
ip_addr,
gateway,
buffer_size: Default::default(),
buffer_size: buffer_size.unwrap_or_default(),
}
}
}

View File

@@ -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
}