Меня внезапно торкнуло.
Вот есть механизм Path MTU Discovery. Типичный случай.
Клиент устанавливает HTTPS-соединение. Сервер начинает слать ему payload с флагом DF (Don't Fragment). Роутер где-то по дороге понимает, что пакет не протиснется через очередное звено маршрута, а фрагментировать пакет низззя потому что DF. Тогда он шлёт серверу ICMP-сообщение "Fragmentation needed" и говорит, мол, "кромсай на пакетики помельче". После чего всё благополучно бегает. Это если совсем на пальцах. И к слову о том, почему не стоит из соображений "безопасности" фильтровать ICMP.
Но тут я внезапно вспомнил, что сейчас уже почти на всех современных сетевых картах есть поддержка TCP Segmentation Offloading (TSO). И в ядре она практически всегда включена по умолчанию.
То есть, если вы натравите какой-нибудь tcpdump / wireshark и иже с ними на сетевой интерфейс и будете изучать исходящий трафик, то "без палева" внезапно увидите там пакетики длиной килобайта по четыре и шосукахарактерно с неправильной контрольной суммой. Это вот как раз оно и есть. Покромсает потом уже сама сетевая карта. И если хочется узреть "настоящую" длину кадра и контрольную сумму, то надо либо отключать offloading в драйвере интерфейса, либо снимать пакет с порта коммутатора. Кому интересно, подробнее есть вот здесь.
Но теперь я задумался: класть бороду под одеяло или на одеяло как TSO уживается совместно с Path MTU Discovery? То есть по идее, сетевая плата не сможет обработать входящее ICMP-сообщение "Fragmentation needed", она для этого недостаточно умная. Ядро его, конечно, получит и примет к сведению... но на что это повлияет, когда на кадры режет-то всё равно сетевуха? Этот вопрос отныне не будет давать мне спать ночами.
А задался я им вот почему. Тут шаловливые мои ручки решили "пооптимизировать" один IPSEC-тоннель и выставить на нем MTU=1446, дабы шифрованный туннелированный пакет вместе с оверхедом по-прежнему бы умещался в один кадр на сети провайдера. Но при этом отвалились HTTPS-ресурсы по одну из сторон тоннеля. И как прикажете понимать, это я вляпался в очередной баг ждунипера, или же просто Path MTU Discovery не работает одновременно с TSO?
Посидел бы со снифферами, но на боевой среде отлаживать это достаточно тяжело. Слишком много всякого говна трафика летает.