Назад | Перейти на главную страницу

Linux устанавливает min_rto на устройстве IPv6

Я наткнулся 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 has no global variables such as tcp_*.  tcp_* settings under ipv4/ also
apply to IPv6 [XXX?].

Учитывая вопрос в документации, было бы разумно убедиться, что это применимо к вашему конкретному (более старому) ядру, прежде чем продолжить.