Я наткнулся на 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
Почему я получаю эту ошибку и как ее исправить?
Стоит отметить, что если я делаю 2000 мс (или 5 мс, как в связанном ответе), он сообщает мне, что это недопустимое значение , поэтому я отбросил часть ms. В случае необходимости, моя информация о Linux приведена ниже:
Linux 4.4.13-v7+ #894 SMP Mon Jun 13 13:13:27 BST 2016 armv7l GNU/Linux
Параметры tcp _ *
, указанные в IPv4, также применимы к IPv6, согласно документации .
IPv6 не имеет глобальных переменных, таких как tcp_ *. tcp_ * настройки в ipv4 / также применить к IPv6 [XXX?].
Учитывая вопрос в документации, было бы разумно проверить, что это применимо к вашему конкретному (более старому) ядру, прежде чем продолжить.