IP фрагментация, MTU, MSS, и PMTUD. Проблемы с GRE и IPSEC

Введение Цель этого документа заключается в том, чтобы показать как работают IP Фрагментация и Path Maximum Transmission Unit Discovery (PMTUD) и обсудить некоторые сценарии, связанных с поведением PMTUD в сочетании с различными комбинациями IP туннелей. На сегодняшний день, использование IP туннелей приобретает массовый характер. IP фрагментация и Реассемблирование IP протокол был разработан для использования на самых различных каналах передачи данных. Несмотря на то, что максимальная длина IP датаграммы составляет 64К, многие каналы передачи данных требуют установить ограничение на меньшую максимальную длину пакета - MTU. Значение параметра MTU зависит от типа канала передачи данных. IP Фрагментация - это разбиение датаграммы на множество частей, которые могут быть воссозданы позже: IP источника, назначения, идентификация, общая длина, и смещение фрагмента поля, вместе с флагами "более фрагментов" и "не фрагментировать" в заголовке IP, используются для IP фрагментации и повторной сборки пакетов. Для получения дополнительной информации о механике IP фрагментации и повторной сборке пакетов, см. RFC 791. Схема ниже, демонстрирует макет заголовка IP: Идентификация - 16 бит и значение, назначенное отправителем датаграммы IP для оказания помощи в сборке фрагментов датаграммы. Смещение фрагмента составляет 13 бит и указывает, где фрагмент принадлежит оригинальной IP датаграмме. Это значение кратно 8 байтам. В области флагов заголовка IP, есть три бита для управления флагами. Важно отметить, что флаг "не фрагментировать" (DF) бит играет центральную роль в PMTUD поскольку он определяет, действительно ли пакет может быть фрагментирован. Бит 0 - зарезервирован, и всегда равен 0. Бит 1 это DF (0 = "пакет может быть фрагментирован", 1 ="Пакет не может быть фрагментирован"). Бит 2 это MF бит (0 = "Последний фрагмент" 1 = "больше фрагментов").
Value Bit 0 Reserved Bit 1 DF Bit 2 MF
0 0 May Last
1 0 Do not More
График ниже, демонстрирует пример фрагментации. Если Вы сложите длину всех IP фрагментов, Вы увидите, что полученное значение превышает исходную IP датаграну на 60, из-за того, что были созданы 3 дополнительных заголовка IP, по одному для каждого фрагмента. Первый фрагмент имеет смещение 0, длина этого фрагмента равна - 1500 байт; это включает 20 байт для немного измененного оригинального заголовка IP. Второй фрагмент имеет смещение 185 (185 х 8 = 1480), которое означает, что данные из этого фрагмента начинаются с 1480 байт в оригинальной IP датаграмме. Длина этого фрагмента 1500; это включает дополнительный заголовок IP, созданный для этого фрагмента. Третий фрагмент имеет смещение 370 (370 х 8 = 2960), которое означает, что данные из этого фрагмента начинаются с 2960 байт в оригинальной IP датаграмме. Длина этого фрагмента 1500; это включает дополнительный заголовок IP, созданный для этого фрагмента. Четвертый фрагмент имеет смещение 555 (555 х 8 = 4440), которое означает, что данные из этого фрагмента начинаются с 4440 байт в оригинальной IP датаграмме. Длина этого фрагмента 700 байт; это включает дополнительный заголовок IP, созданный для этого фрагмента. И только когда последний фрагмент получен, размер оригинальной датаграммы IP может быть определен.

Leave a Reply