Расшифровка фрагментации и сборки IP-пакетов: сетевой пакетный брокер Mylinking™ идентифицирует фрагментированные IP-пакеты.

Введение

Всем известны принципы классификации и неклассификации IP-пакетов и их применение в сетевой связи. Фрагментация и повторная сборка IP-пакетов — ключевой механизм в процессе передачи пакетов. Когда размер пакета превышает максимально допустимый размер передаваемого блока (MTU) канала связи, фрагментация IP-пакетов разделяет его на несколько более мелких фрагментов для передачи. Эти фрагменты передаются независимо друг от друга в сети и, по прибытии в пункт назначения, собираются в полные пакеты с помощью механизма повторной сборки IP-пакетов. Этот процесс фрагментации и повторной сборки обеспечивает возможность передачи пакетов большого размера в сети, гарантируя при этом целостность и надежность данных. В этом разделе мы более подробно рассмотрим, как работает фрагментация и повторная сборка IP-пакетов.

Фрагментация и сборка IP-блоков

Различные каналы передачи данных имеют разные максимальные единицы передачи (MTU); например, канал передачи данных FDDI имеет MTU 4352 байта, а Ethernet — 1500 байт. MTU расшифровывается как Maximum Transmission Unit (максимальная единица передачи) и обозначает максимальный размер пакета, который может быть передан по сети.

FDDI (Fiber Distributed Data Interface) — это высокоскоростной стандарт локальных сетей (LAN), использующий оптическое волокно в качестве среды передачи. Максимальный размер передаваемого блока (MTU) — это максимальный размер пакета, который может быть передан протоколом канального уровня. В сетях FDDI размер MTU составляет 4352 байта. Это означает, что максимальный размер пакета, который может быть передан протоколом канального уровня в сети FDDI, составляет 4352 байта. Если передаваемый пакет превышает этот размер, его необходимо фрагментировать, разделив на несколько фрагментов, соответствующих размеру MTU, для передачи и последующей сборки на приемнике.

Для Ethernet размер MTU обычно составляет 1500 байт. Это означает, что Ethernet может передавать пакеты размером до 1500 байт. Если размер пакета превышает предел MTU, то пакет фрагментируется на более мелкие фрагменты для передачи и собирается заново в пункте назначения. Сборка фрагментированной IP-дейтаграммы может быть выполнена только хостом назначения, маршрутизатор не будет выполнять операцию сборки.

Ранее мы также говорили о сегментах TCP, но MSS расшифровывается как Maximum Segment Size (максимальный размер сегмента), и он играет важную роль в протоколе TCP. MSS обозначает размер максимального сегмента данных, разрешенного для передачи в TCP-соединении. Подобно MTU, MSS используется для ограничения размера пакетов, но делает это на транспортном уровне, уровне протокола TCP. Протокол TCP передает данные прикладного уровня, разделяя их на несколько сегментов, и размер каждого сегмента данных ограничивается значением MSS.

Размер MTU каждого канала передачи данных различен, поскольку каждый тип канала используется для разных целей. В зависимости от назначения могут быть установлены разные значения MTU.

Предположим, отправитель хочет передать по Ethernet-каналу большой датаграмму размером 4000 байт, поэтому датаграмму необходимо разбить на три меньшие датаграммы для передачи. Это связано с тем, что размер каждой маленькой датаграммы не может превышать предел MTU, который составляет 1500 байт. После получения трех маленьких датаграмм приемник собирает их обратно в исходную большую датаграмму размером 4000 байт, основываясь на порядковом номере и смещении каждой датаграммы.

 Фрагментация и сборка IP-блоков

При фрагментированной передаче потеря фрагмента делает недействительной всю IP-дейтаграмму. Чтобы избежать этого, в TCP был введен MSS (Multiple Service Scheme), где фрагментация выполняется на уровне TCP, а не на уровне IP. Преимущество такого подхода заключается в том, что TCP имеет более точный контроль над размером каждого сегмента, что позволяет избежать проблем, связанных с фрагментацией на уровне IP.

Для UDP мы стараемся не отправлять пакеты данных размером больше MTU. Это связано с тем, что UDP — это транспортный протокол без установления соединения, который не обеспечивает надежности и механизмов повторной передачи, как TCP. Если мы отправим пакет данных UDP размером больше MTU, он будет фрагментирован на уровне IP для передачи. Как только один из фрагментов будет потерян, протокол UDP не сможет повторно передать данные, что приведет к их потере. Поэтому, чтобы обеспечить надежную передачу данных, следует стараться контролировать размер пакетов данных UDP в пределах MTU и избегать фрагментированной передачи.

Mylinking™ — сетевой пакетный брокерМожет автоматически определять различные типы туннельных протоколов: VxLAN/NVGRE/IPoverIP/MPLS/GRE и др., а также определять их в соответствии с профилем пользователя на основе внутренних или внешних характеристик туннельного потока.

○ Он может распознавать пакеты с метками VLAN, QinQ и MPLS.

○ Может идентифицировать внутреннюю и внешнюю VLAN.

○ Пакеты IPv4/IPv6 могут быть идентифицированы.

○ Может идентифицировать пакеты VxLAN, NVGRE, GRE, IPoverIP, GENEVE, MPLS-туннелей.

○ Возможность идентификации фрагментированных IP-пакетов (поддерживается идентификация фрагментации IP-пакетов и их повторная сборка для реализации фильтрации на уровне L4 для всех фрагментированных IP-пакетов. Реализация политики вывода трафика.)

Почему IP-протокол и TCP-протокол фрагментированы?

Поскольку при передаче данных по сети IP-уровень автоматически фрагментирует пакет данных, даже если TCP-уровень не сегментирует данные, пакет данных будет автоматически фрагментирован IP-уровнем и передан в обычном режиме. Так зачем же TCP нужна фрагментация? Не является ли это излишним?

Предположим, что большой пакет не сегментирован на уровне TCP и потерян при передаче; TCP повторно передаст его, но только целиком (хотя уровень IP разбивает данные на более мелкие пакеты, каждый из которых имеет длину MTU). Это происходит потому, что уровень IP не заботится о надежной передаче данных.

Иными словами, на транспортном уровне, если транспортный уровень фрагментирует данные, IP-уровень этого не делает. Если фрагментация не выполняется на транспортном уровне, она возможна на IP-уровне.

Проще говоря, TCP сегментирует данные таким образом, чтобы IP-уровень больше не был фрагментирован, и при повторной передаче передаются только небольшие фрагментированные части данных. Таким образом, повышается эффективность и надежность передачи.

Если протокол TCP фрагментирован, разве протокол IP не фрагментирован?

В приведенном выше обсуждении мы упомянули, что после фрагментации TCP на стороне отправителя фрагментация на уровне IP отсутствует. Однако на протяжении всего транспортного канала могут находиться другие устройства сетевого уровня, максимальный размер передаваемого блока (MTU) которых может быть меньше, чем MTU на стороне отправителя. Поэтому, даже если пакет был фрагментирован на стороне отправителя, он снова фрагментируется при прохождении через уровень IP этих устройств. В конечном итоге все фрагменты будут собраны на стороне получателя.

Если мы сможем определить минимальный MTU на всем канале связи и передавать данные этой длины, фрагментация не произойдет независимо от того, на какой узел передаются данные. Этот минимальный MTU на всем канале связи называется MTU пути (PMTU). Когда IP-пакет поступает на маршрутизатор, если MTU маршрутизатора меньше длины пакета и флаг DF (Do not Fragment) установлен в 1, маршрутизатор не сможет фрагментировать пакет и сможет только отбросить его. В этом случае маршрутизатор генерирует сообщение об ошибке ICMP (Internet Control Message Protocol) под названием «Требуется фрагментация, но установлен флаг DF». Это сообщение об ошибке ICMP будет отправлено обратно на адрес отправителя со значением MTU маршрутизатора. Когда отправитель получает сообщение об ошибке ICMP, он может скорректировать размер пакета на основе значения MTU, чтобы избежать повторной ситуации запрещенной фрагментации.

Фрагментация IP-пакетов необходима и должна быть предотвращена на уровне IP, особенно на промежуточных устройствах в канале связи. Поэтому в IPv6 фрагментация IP-пакетов промежуточными устройствами запрещена, и фрагментация может осуществляться только в начале и конце канала связи.

Базовое понимание IPv6

IPv6 — это шестая версия интернет-протокола, преемник IPv4. В IPv6 используется 128-битная длина адреса, что позволяет предоставлять больше IP-адресов, чем 32-битная длина адреса IPv4. Это связано с тем, что адресное пространство IPv4 постепенно исчерпывается, в то время как адресное пространство IPv6 очень велико и может удовлетворить потребности будущего интернета.

Говоря об IPv6, помимо большего адресного пространства, следует отметить, что он также обеспечивает лучшую безопасность и масштабируемость, а это значит, что IPv6 может обеспечить более высокое качество работы сети по сравнению с IPv4.

Несмотря на то, что IPv6 существует уже давно, его глобальное внедрение по-прежнему происходит относительно медленно. Это в основном связано с тем, что IPv6 должен быть совместим с существующей сетью IPv4, что требует перехода и миграции. Однако с исчерпанием адресов IPv4 и ростом спроса на IPv6 все больше интернет-провайдеров и организаций постепенно переходят на IPv6 и постепенно реализуют работу в двух стеках: IPv6 и IPv4.

Краткое содержание

В этой главе мы более подробно рассмотрели, как работают фрагментация и повторная сборка IP-пакетов. Различные каналы передачи данных имеют разные значения максимального размера передаваемого блока (MTU). Когда размер пакета превышает предел MTU, фрагментация IP-пакета разделяет пакет на несколько более мелких фрагментов для передачи и повторно собирает их в полный пакет с помощью механизма повторной сборки IP-пакетов после прибытия в пункт назначения. Цель фрагментации TCP заключается в том, чтобы IP-уровень больше не фрагментировал пакеты и повторно передавал только те небольшие данные, которые были фрагментированы при повторной передаче, тем самым повышая эффективность и надежность передачи. Однако на протяжении всего канала передачи могут находиться другие устройства сетевого уровня, MTU которых меньше, чем у отправителя, поэтому пакет все равно будет фрагментирован на IP-уровне этих устройств. Фрагментации на IP-уровне следует избегать по возможности, особенно на промежуточных устройствах в канале.


Дата публикации: 07.08.2025