Укртелеком, MTU и фрагментация пакетов | Крымский форум

Укртелеком, MTU и фрагментация пакетов

  • Добро пожаловать на форум! Рады видеть вас здесь! Зарегистрируйтесь или Войдите в аккаунт, чтобы иметь полный доступ к площадке!
S

SwD

Guest
Итак, имеем следующую картину...
Удалённая точка, подключенная через нормального провайдера (например Крымтел, Свифт-трейс), пробует простроить openvpn-туннель на УТ-интерфейс в моей головной конторе. Это проходит без проблем, и туннель стоит... Однако стоит подать на него плотную нагрузку (ну, например, uucp/rsync/плотный ping), как тут же туннелю становится плохо... Вдумчивое втыкание в tcpdump показало, что падение туннеля вызвано дропом больших (т.е. фрагментированных) пакетов. Тупое уменьшение MTU на интерфейсе удалённой точки проблему решило, равно как и более элегантное iptables -A OUTPUT -o eth1 -p tcp -d 82.207.xxx.xxx --tcp-flag SYN,RST SYN -m tcpmss --mss 1420:1500 -j TCPMSS --set-mss 1420 .
Но...
1. Наблюдал ли кто аналогичные проблемы с дропом пакетов на неУТ/УТ-коннектах?
2. Прав ли я, предполагая, что проблемы вызваны некорректной работой pmtud в недрах УТшной сетки (например какой-то шлюз зафильтровал напрочь icmp и/или тупо передаёт лишь первую часть фрагментированного пакета, дропая оставшиеся, что приводит к невозможности собрать такой пакет в финальной точке)? Косвенно это подтверждается тем, что при коннекте не на УТ никаких плясок с MTU/MSS производить не надо.
3. Как, собственно, корректно вычислить MTU в данном случае? Ибо реально я скорее с потолка взял 1460 в описанном случае (вернее потихоньку уменьшал изначальные 1500).
 
Цитата(SwD @ 10 Июня, 2009, 20:12)
Прав ли я, предполагая, что проблемы вызваны некорректной работой pmtud

вполне, только скорее всего просто дропают все большие пакеты (так например microsoft.com делает)

Цитата(SwD @ 10 Июня, 2009, 20:12)
Как, собственно, корректно вычислить MTU в данном случае?

по идее MTU = размер данных + размер заголовка TCP/IP + размер обертки пакета туннеля + заголовок TCP/IP туннеля < 1500
 
link-mtu 1504
в openvpn не пробовал ?
ну и mssfix подобрать экспериментально
 
Цитата(adeep @ 10 Июня, 2009, 20:39)
по идее MTU =

Ну в данном случае, как так tcpdump «слушал» не туннельный интерфейс (это нам мало чего дало бы), а УТшный MTU = MSS + 40 байт на заголовки TCP/IP
В итоге экспериментально получен MTU 1460...

Eugene
Завтра поиграюсь с опцией mtu-test посмотрю на результат... Она-то позволит вычислить оптимальный MTU, но... это займёт несколько минут при старте туннеля.
 
Цитата(Eugene @ 10 Июня, 2009, 20:52)
link-mtu 1504

Если верить документации, то:
Цитата
--link-mtu n
  • Sets an upper bound on the size of UDP packets which are sent between OpenVPN peers. It's best not to set this parameter unless you know what you're doing.



Т.е. этот параметр мне мало поможет, ибо туннель по tcp строится, а не по udp.
 
тогда mssfix на обрезку пакетов до 1460

Цитата(adeep @ 10 Июня, 2009, 20:39)
только скорее всего просто дропают все пакеты с флагом фрагментации (так например microsoft.com делает)

поправлюсь:
дропают большие пакеты и не присылают icmp response на ограничение MTU (не работает MTU Path Discovery)

то бишь экспериментально надо подобрать mssfix на максимуме работоспособности. в принципе немаксимальное значение просто немного увеличит расход траффика (ограничит туннельную скорость) без других негативных эффектов.
 
adeep
Ну, в сущности, именно ограничение MSS и сделано, через iptables.
 
Назад
Сверху