![Linux 在 IPv6 设备上设置 min_rto](https://linux22.com/image/699019/Linux%20%E5%9C%A8%20IPv6%20%E8%AE%BE%E5%A4%87%E4%B8%8A%E8%AE%BE%E7%BD%AE%20min_rto.png)
我碰到https://unix.stackexchange.com/questions/210367/changing-the-tcp-rto-value-in-linux这基本上正是我想要的,但我需要使用 IPv6 隧道来实现。
$ sudo ip -6 route
aaaa::/64 dev tun0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev wlan0 proto kernel metric 256
fe80::/64 dev tun0 proto kernel metric 256
然后,如果我查看我的活动连接,我们会看到:
$ ss -i
tcp ESTAB 0 0 aaaa::1:51692
cubic rto:360 rtt:157.424/6.438 ato:40 mss:64 cwnd:10 send 32.5Kbps pacing_rate 65.0Kbps rcv_space:28800
目前的 rto 为 360。此设备仅处理超低带宽、高延迟、有损网络(即 6LoWPaN)所以我想将 min_rto 增加到至少几秒钟。
我已禁用 frto:
$ sudo cat /proc/sys/net/ipv4/tcp_frto
0
现在我想设置 min_rto,如链接问题所示。
$ sudo ip -6 route change aaaa:: dev tun0 rto_min 2000
RTNETLINK answers: No such file or directory
为什么我会收到此错误?如何修复它?
值得注意的是,如果我执行 2000ms(或 5ms,如链接的答案中所示),它会告诉我这是一个无效值,因此我删除了 ms 部分。如果这很重要,我的 Linux 信息如下:
Linux 4.4.13-v7+ #894 SMP Mon Jun 13 13:13:27 BST 2016 armv7l GNU/Linux
答案1
tcp_*
根据 IPv4 下列出的设置也适用于IPv6文档。
IPv6 has no global variables such as tcp_*. tcp_* settings under ipv4/ also apply to IPv6 [XXX?].
考虑到文档中的问题,在继续之前,最好先验证这是否适用于您的特定(较旧)内核。