[bug] 有延迟时的 UDP 连接带宽下降
- Dominant language
- Rust
- Stars
- 13.6k
- Forks
- 1.4k
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 34
Description
测试的时候发现一个奇怪的问题,在以下环境/配置中连接带宽(iperf3)会随延迟增加迅速下降:
1. `tc qdisc replace dev 12-t1 root netem rate 1gbit delay 30ms limit 2147483647`,其中 `12-t1` 是连接两端的 veth
2. 发送端/接收端任意一方使用 UDP 连接到对方
~~3. 发送端内核 CC 是 cubic~~
配置文件 (test1.toml)
```
hostname = "test1"
instance_name = "test1"
ipv4 = "172.17.0.1/24"
dhcp = false
listeners = [ "tcp://0.0.0.0:11001", "udp://0.0.0.0:11001" ]
[network_identity]
network_name = "easytier"
network_secret = ""
[[peer]]
uri = "udp://192.168.12.2:11002"
[flags]
no_tun = false
bind_device = false
dev_name = "test1"
disable_kcp_input = false
disable_quic_input = false
disable_p2p = true
disable_sym_hole_punching = true
disable_udp_hole_punching = true
enable_encryption = false
enable_ipv6 = false
enable_kcp_proxy = false
enable_quic_proxy = false
quic_listen_port = 4433
multi_thread = true
use_smoltcp = false
#p2p_only = true
```
配置文件 (test2.toml)
```
hostname = "test2"
instance_name = "test2"
ipv4 = "172.17.0.2/24"
dhcp = false
listeners = [ "tcp://0.0.0.0:11002", "udp://0.0.0.0:11002" ]
[network_identity]
network_name = "easytier"
network_secret = ""
[[peer]]
uri = "tcp://192.168.12.1:11001"
[flags]
no_tun = false
bind_device = false
dev_name = "test2"
disable_kcp_input = false
disable_quic_input = false
disable_p2p = true
disable_sym_hole_punching = true
disable_udp_hole_punching = true
enable_encryption = false
enable_ipv6 = false
enable_kcp_proxy = false
enable_quic_proxy = false
quic_listen_port = 4433
multi_thread = true
use_smoltcp = false
#p2p_only = true
```
如果增大 UDP 的 Ring Buffer,并且增大 SO_RCVBUF 和 SO_SNDBUF (`setup_sokcet2_ext`),那么可以维持几秒的满速,但最终带宽还是会下降
Contributor guide
Assessment
This issue has not been assessed yet.