cisco — Решение проблем, связанных с фрагментацией IP, а также с MTU, MSS и PMTUD, при помощи протоколов GRE и IPSEC

Примечание: PMTUD поддерживается только в протоколе TCP. Протокол UDP и другие протоколы его не поддерживают. Если на узле включен PMTUD (а чаще всего так оно и бывает), тогда во всех пакетах TCP/IP с этого узла будет установлен бит DF. Когда узел отправляет полный MSS-пакет данных с набором битов DF, алгоритм PMTUD уменьшает значение отправки MSS для данного соединения, если он получил сведения о том, что пакету необходима фрагментация. Обычно узел запоминает значение MTU для конечного адреса, создавая в таблице маршрутов запись об узле (/32) с этим значением MTU.

Если маршрутизатор попытается переадресовать IP-датаграмму с установленным битом DF по каналу, значение MTU которого меньше размера передаваемого пакета, то в этом случае маршрутизатор сбросит пакет и отправит источнику этой IP-датаграммы ICMP- сообщение «Конечный адрес не может быть достигнут», в котором будет содержаться информационный код «необходима фрагментация и установлен бит DF» (тип 3, код 4). Получив ICMP-сообщение, исходная станция уменьшает посланный MSS, а когда TCP будет передавать этот сегмент повторно, то станция будет использовать меньший размер сегмента.

Ниже приведен пример ICMP-сообщения «необходима фрагментация и установлен бит DF», которое можно видеть после включения команды debug ip icmp : ICMP: dst (10.10.10.10) frag. needed and DF set unreachable sent to 10.1.1.1 На диаграмме ниже показана структура заголовка ICMP «необходима фрагментация и установлен бит DF» сообщения «Назначение недоступно». В соответствии с документом RFC 1191 , маршрутизатор, отправляющий сообщение «требуется фрагментация и установлен бит DF», должен включать значение MTU для следующего сетевого перехода.

Для этого сообщения используются 16 бит низшего разряда в поле дополнительного заголовка ICMP, которое в спецификации по ICMP (RFC 792 ) помечено как неиспользуемое. В ранних версиях документа RFC 1191 информация о значении MTU следующего сетевого перехода на указывается. Даже если эта информация и предоставлялась, некоторые узлы ее игнорировали. На этот случай в RFC 1191 также содержится таблица, в которой указаны рекомендуемые значения, которые должны вычитаться из значения MTU при работе PMTUD. Эта таблица используется узлами для того, чтобы быстрее определить необходимое значение для MSS отправки.