Что должно произойти при получении сообщения ICMP о необходимости фрагментации?

Что должно произойти при получении сообщения ICMP о необходимости фрагментации?

В целом, и в частности на машине Solaris 10...

Видите ли, у нас проблема в сети. Я обрабатываю несколько экземпляров обратного прокси на сервере Solaris 10, который находится за балансировщиком нагрузки, и некоторые пользователи получают к нему доступ через брандмауэр NAT и... в любом случае, в какой-то момент 2 дня назад все это рухнуло и не работает.

После нескольких часов перехвата пакетов и анализа мы видим, что когда один из внутренних клиентов пытается получить доступ к сайту, в какой-то момент (в частности, когда мы отправляем сообщение Server Hello SSL, например), LB отправляет обратно сообщение ICMP Fragmentation Needed, в котором говорится, что MTU составляет 508 байт, а поскольку пакеты имеют бит Dont Fragment, как это установлено по умолчанию в Solaris...

Ладно, все отлично. Но затем... все, что происходит, это то, что, поскольку ACK не получен (потому что пакеты никогда не были получены клиентом), машина Solaris снова отправляет пакеты... того же размера, с тем же битом DF.

Конечно, это приводит к тому, что общение становится невозможным.

Разве ОС Solaris не должна, получив это сообщение ICPM, либо сбросить бит DF для этих пакетов, либо настроить MSS соединения так, чтобы он был < MTU, о котором нам сообщает сообщение? Можно ли это где-то настроить как включенное/отключенное? Или это то, что должно происходить?

Я не совсем уверен, как именно происходит обнаружение Path MTU в Solaris 10, но если он не учитывает это сообщение, то как он корректирует MSS?

Заранее спасибо за любые указания, помощь или просто идею о том, где искать :)

Связанный контент