EasyTier / EasyTier/EasyTier

[bug] 有延迟时的 UDP 连接带宽下降

Open
#1,843 27 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.