allow peer rpc split packet, so tunnel mtu can be small (#116)

This commit is contained in:
Sijie.Sun
2024-05-16 08:18:35 +08:00
committed by GitHub
parent 58d2ec475c
commit f665de9b18
6 changed files with 223 additions and 65 deletions
+3 -3
View File
@@ -33,7 +33,7 @@ use super::{
IpVersion, Tunnel, TunnelConnCounter, TunnelError, TunnelListener, TunnelUrl,
};
pub const UDP_DATA_MTU: usize = 65000;
pub const UDP_DATA_MTU: usize = 2000;
type UdpCloseEventSender = UnboundedSender<Option<TunnelError>>;
type UdpCloseEventReceiver = UnboundedReceiver<Option<TunnelError>>;
@@ -318,7 +318,7 @@ impl UdpTunnelListenerData {
let socket = self.socket.as_ref().unwrap().clone();
let mut buf = BytesMut::new();
loop {
reserve_buf(&mut buf, UDP_DATA_MTU, UDP_DATA_MTU * 128);
reserve_buf(&mut buf, UDP_DATA_MTU, UDP_DATA_MTU * 16);
let (dg_size, addr) = socket.recv_buf_from(&mut buf).await.unwrap();
tracing::trace!(
"udp recv packet: {:?}, buf: {:?}, size: {}",
@@ -555,7 +555,7 @@ impl UdpTunnelConnector {
tokio::spawn(async move {
let mut buf = BytesMut::new();
loop {
reserve_buf(&mut buf, UDP_DATA_MTU, UDP_DATA_MTU * 128);
reserve_buf(&mut buf, UDP_DATA_MTU, UDP_DATA_MTU * 16);
let ret;
tokio::select! {
_ = close_event_recv.recv() => {