Path MTU Discovery cdp

Когда устройству необходимо передать информацию через интерфейс в сеть, в первую очередь оно обращается к параметру Maximum Transmission Unit (MTU) данного интерфейса для того, чтобы определить, какое количество данный возможно поместить в каждый кадр. Ethernet интерфейсы, например, имеют MTU 1500 байт, не включая сам заголовок Ethernet и преамбулу. Это означает, что устройство которое должно отправить данные по протоколу TCP будет использовать первые 20 из этих 1500 байт для заголовка IP, следующие 20 байт для заголовка TCP, и только оставшиеся 1460 байт остаются для помещения в них самих передаваемых данных. Инкапсуляция данных в пакеты максимального размера позволяет сократить объем служебных данных передаваемых по линиям связи.

К сожалению, далеко не все линии связи из которых состоит Интернет имеют одинаковое значение MTU. MTU линии связи может зависеть, как от типа физической среды, так и от типа настроенной инкапсуляции (такой, как GRE или IPsec). Когда маршрутизатор должен отправить пакет IPv4 через интерфейс, но определяет, что размер пакета больше, чем MTU данного интерфейса, маршрутизатору необходимо фрагментировать данный пакет для отправки его в виде двух или более фрагментов, каждый из которых соответствует MTU интерфейса. Фрагментация — очень затратная процедура, как с точки зрения ресурсов маршрутизатора, так и с точки зрения утилизации линий связи т.к. для каждого фрагмента должны быть сгенерированы собственные заголовки.

1

Для максимально рационального использования канала, устройство-отправитель должно определит MTU этого канала; оно представляет из себя минимальное значение MTU среди всех каналов на пути до точки назначения трафика. Например, для двух устройств подключенных через три разных канала с MTU 1500, 800, и 1200 байт, наименьшее значение (800 байт) должно быть определено каждым из этих устройств для того, чтобы избежать фрагментации на пути следования трафика.

2

Естественно невозможно снабдить конечные устройства информацией о значениях MTU всех каналов через которые передается их трафик. RFC 1191 определяет механизм path MTU discovery — простой процесс при помощи которого устройство может определить, что MTU по пути до узла назначения меньше, чем MTU его собственного интерфейса. Основой данного процесса являются два компонента: DF (Don’t Fragment) бит IP заголовка, и специальный код сообщения ICMP Destination Unreachable, Fragmentation Needed (необходима фрагментация).

3

Установка бита DF в заголовке IP пакета говорит маршрутизаторам на пути следования пакета о том, что при обнаружении ситуации, когда размер пакета превышает MTU интерфейса через который его необходимо передать, маршрутизатор не должен осуществлять фрагментацию пакета. В такой ситуации пакет должен быть отброшен и сообщение ICMP Fragmentation Needed должно быть отправлено по адресу источника данного пакета (т.е. его отправителю). По существу, данным сообщение маршрутизатор сообщает источнику пакета, что он не может его передать дальше т.к. превышен размер возможного MTU на интерфейсе, а в заголовке пакета установлен флаг DF. RFC 1191 дополняет это сообщение информацией о MTU интерфейса, через который не удалось передать данный пакет.

4

Теперь, когда известен актуальный размер MTU всей линии связи, узел может учитывать эту информацию при генерации IP пакетов. Заметьте, что path MTU discovery — это постоянный процесс; узел продолжает отправлять пакеты с флагом DF, для того чтобы иметь возможность заметить изменения MTU, например в случае изменения топологии сети в результате работы протокола маршрутизации. RFC 1191 так-же позволяет тестировать сеть на предмет увеличения текущего MTU, путем периодической отправки пакетов с MTU размером превышающий текущий известный MTU канала. Если пакет достигнет точки назначения успешно, то текущее значение MTU будет увеличено в соответствии с MTU этого пакета.

Вы можете измерить path MTU в существующей сети при помощи утилиты tracepath (часть Linux пакета IPutils ) или mturoute (только Windows). Ниже представлен вывод утилиты tracepath в топологии представленной на картинке выше,где MTU интерфейса F0/1 уменьшено до 1400 байт с использованием команды ip mtu:

Host$ tracepath -n 192.168.1.2
 1:  192.168.0.2       0.097ms pmtu 1500
 1:  192.168.0.1       0.535ms 
 1:  192.168.0.1       0.355ms 
 2:  192.168.0.1       0.430ms pmtu 1400
 2:  192.168.1.2       0.763ms reached
    Resume: pmtu 1400 hops 2 back 254 

Leave a Reply

Your email address will not be published.





Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Яндекс.Метрика