Что не так с фрагментированными UDP, почему они теряются?
Заметил некоторую странность в работе IP-телефонов с облачной АТС. Входящие вызовы доходят, двухсторонняя голосовая связь есть, а исходящий звонок или невозможно совершить, или только работают короткие трехзначные номера. Глянул трафик через Wireshark - при наборе сотового номера размер пакета с запросом INVITE превышает MTU 1500 байт, и запрос разбивается на два UDP пакета. При наборе коротких номеров зачастую исходящий вызов работает, в эти моменты по трафику видно, что запрос INVITE полностью помещается в один UDP пакет.
Проблему решил отключением лишних кодеков и опциональных заголовков, теперь размер INVITE не превышает 1500 байт в любом случае. А теперь внимание, знатоки, вопрос - почему провайдер "теряет" фрагментированные UDP пакеты? Фрагментация UDP - это же вполне законно, правда?)
И на засыпку: в другом офисе у того же самого провайдера фрагментированные пакеты вполне себе доходят до сервера АТС. Отличие с первым офисом в том, что здесь подключен белый IP. Явно фильтрация какая-то идет, ну и минус провайдерский NAT (провайдер говорит его тип "симметричный", но тесты все же показывают наличие Port-Restricted NAT). Канал интернет в основном простаивает, полосы в офисах 30 и 100 МБит/с соответственно.
PS: симметричный NAT для этой АТС не проблема, там предусмотрены средства обхода (сервер делает всю работу, отправляет регулярные keep-alive, поддерживает симметричный RTP и т.д.), дело точно не в нем.
И еще - дома тот же провайдер, играть в видеоигры типа Dark Souls, которые работают по P2P, почти невозможно на канале 100 МБит/с)