Сложности с Jumbo Frames

Aug 19, 2009 19:03

Нежданно-негаданно, возникли на сервере под FreeBSD проблемы с отправкой почты на smtp.yandex.ru. Симптомы такие: соединение устанавливается, передаются адресат и отправитель, но само письмо не отправляется и почтовый сервер Яндекса сообщает о таймауте в передачи данных.
Анализ обмена при помощи tcpdump выявил, что тело письма отправляется в пакете размером более 4 Кб. И эти данные сервер Яндекса не получает. В ходе разбирательств выяснилось, что у нас обычный случай проблемы с PMTU-D (Path MTU Discovery), когда наш сервер не получает ICMP пакеты о необходимости фрагментации.
В ходе разбирательств я не мог понять, почему на mail.ru и rambler.ru письмо уходит без проблем. Оказалось дело в MSS. mail.ru и rambler.ru передают MSS равным 1460 байт, а smtp.yandex.ru - 8960 байт. Понятное дело, что виноват не Яндекс, а шлюз провайдера, который отбрасывает большие пакеты без отсылки ICMP-сообщений.
Для того, чтобы сделать в локальной сети нормальное хождение JumboFrames, а все пакеты на внешние адреса ограничить, решено было вручную задать MTU для маршрута по-умолчанию. Так как более "удобного" варианта я не нашел, пришлось сделать так:

defaultrouter="NO"
static_routes="default"
route_default="default xxx.xxx.xxx.xxx -mtu 1500"

freebsd, defaultrouter, pmtu-d, mtu

Previous post
Up