Введение
Фрагментация IP — это процесс протокола Интернет (IP), который разбивает пакеты на более мелкие части (фрагменты), чтобы эти части могли пройти по каналу связи с меньшей максимальной длиной пакета (MTU), чем размер исходного пакета. Получающий хост выполняет повторную сборку фрагментов. Детали механизма фрагментации и общий архитектурный подход к ней различаются в IPv4 и IPv6.
IP fragmentation is an Internet Protocol (IP) process that breaks packets into smaller pieces (fragments), so that the resulting pieces can pass through a link with a smaller maximum transmission unit (MTU) than the original packet size. The fragments are reassembled by the receiving host. The details of the fragmentation mechanism, as well as the overall architectural approach to fragmentation, are different between IPv4 and IPv6.
Процесс
описывает процедуру фрагментации IP-пакетов, их передачу и повторную сборку. RFC 815 описывает упрощенный алгоритм восстановления. Для фрагментации и повторной сборки IP-пакетов используются поле "Идентификация" в сочетании с внешним и локальным интернет-адресами и идентификатором протокола, а также поле "Смещение фрагмента" вместе с флагами "Не фрагментировать" и "Больше фрагментов" в IP-заголовке.
Различия между IPv4 и IPv6
В IPv4 маршрутизатор, получивший сетевой пакет, превышающий MTU следующего участка пути, имеет два варианта: отбросить пакет, если в заголовке пакета установлен флаг "Не фрагментировать" (DF), и отправить сообщение протокола Internet Control Message Protocol (ICMP) с указанием на необходимость фрагментации (тип 3, код 4), либо фрагментировать пакет и отправить его по каналу связи с меньшим MTU. Хотя отправители могут создавать фрагментированные пакеты, маршрутизаторы IPv6 не имеют возможности дальнейшей фрагментации. Вместо этого сетевое оборудование должно обеспечивать доставку любых пакетов IPv6 или фрагментов пакетов размером не более 1280 байт, а хосты IPv6 должны определять оптимальный MTU с помощью Path MTU Discovery перед отправкой пакетов. Несмотря на то, что форматы заголовков IPv4 и IPv6 различны, для фрагментации используются аналогичные поля, поэтому один и тот же алгоритм можно использовать для фрагментации и пересборки пакетов IPv4 и IPv6. В IPv4 хосты должны приложить все усилия для пересборки фрагментированных IP-пакетов общим объемом пересобранных данных до 576 байт. Они также могут попытаться пересобрать фрагментированные IP-пакеты размером более 576 байт, но им также разрешено незаметно отбрасывать такие большие пакеты. Приложениям рекомендуется не отправлять пакеты размером более 576 байт, если они заранее не уверены, что удаленный хост способен принять или пересобрать их. Фрагментированные пакеты с общим объемом, превышающим 1500 байт, могут быть отброшены без уведомления. Приложения, использующие фрагментацию IPv6 для обхода ограничения MTU пути, должны явно фрагментировать пакет в точке отправления; однако они не должны пытаться отправлять фрагментированные пакеты общим размером более 1500 байт, если заранее не известно, что удаленный хост способен к пересборке.
Влияние на переадресацию сети
Когда в сети существует несколько параллельных путей, такие технологии, как LAG и CEF, распределяют трафик между этими путями на основе хэш-алгоритма. Одной из целей этого алгоритма является обеспечение отправки всех пакетов одного потока по одному и тому же пути, чтобы минимизировать ненужную переупорядочивание пакетов. IP-фрагментация может приводить к избыточным повторным передачам, поскольку при потере фрагментов надёжным протоколам, таким как TCP, необходимо повторно передавать все фрагменты для восстановления после потери даже одного из них. Поэтому отправители обычно используют два подхода для определения размера IP-пакетов, отправляемых по сети. Первый подход заключается в том, чтобы отправляющий хост отправлял IP-пакет размером, равным MTU первого узла в маршруте между источником и получателем. Второй подход – использование алгоритма Path MTU Discovery для определения MTU всего пути между двумя IP-хостами, чтобы избежать IP-фрагментации. По состоянию на 2020 год IP-фрагментация считается ненадежной и часто нежелательной из-за её влияния на безопасность.