ОСНОВЫ IPV4
Как фрагменты снова становятся дейтаграммой?
Если это разрешено, маршрутизатор может разделить дейтаграмму IPv4, чтобы она соответствовала ограничениям следующего канала. Принимающий узел группирует связанные фрагменты, размещает полезную нагрузку каждого из них по его смещению и ожидает поступления всех частей. Отсутствие одной части может привести к истечению времени ожидания неполной дейтаграммы. Приведённые ниже схемы объясняют механизм, а не показывают результаты измерений продукта.
Тракт
Отправитель → маршрутизатор → получатель
Маршрутизатор может выполнять фрагментацию, если она разрешена и MTU следующего перехода меньше.
Поля
ID · смещение · MF
Получатель использует адреса, протокол и ID для группировки частей, а смещения — для их размещения.
Отсутствующая часть
Ожидание → истечение времени ожидания → отбрасывание
Наличие последнего фрагмента само по себе не подтверждает полноту полезной нагрузки.
Контрольный список диагностики — развернуть
| Проверка | Что подтвердить | Как проверить |
|---|---|---|
| Тракт | Интерфейсы и MTU | Зафиксируйте фактический маршрут |
| Фрагменты | Адреса, протокол, ID, смещение и MF | Сравните данные захвата, выполненного с разрешения |
| Потери | Полное покрытие | Сравните данные захвата на пути передачи и у получателя |
Информация, отправленная контроллером, не всегда поступает в виде одной полной дейтаграммы IP. Иногда она разделяется на фрагменты. Как получатель определяет, какие части относятся друг к другу и где должна находиться каждая из них? Что происходит, если одна из них так и не поступает? Чтобы понять фрагментацию IPv4, следует разграничить коммутацию Ethernet, маршрутизацию IP и сборку у получателя.

Сначала разграничим дейтаграмму IP и кадр Ethernet
Контроллеры, шлюзы и серверы обмениваются данными по каналам связи. Дейтаграмма IP передаётся во внешней оболочке, подходящей для текущего канала; в Ethernet она передаётся внутри кадра Ethernet. Кадры передаются между соседними устройствами, а адреса IP помогают определить получателя на сетевом уровне. Эти уровни имеют разные заголовки и ограничения длины.
Максимальная единица передачи IP интерфейса, или MTU, ограничивает размер пакета IP, отправляемого через него. Маршрут между подсетями может проходить через несколько интерфейсов IP с разными ограничениями. Пакет, соответствующий ограничениям на предыдущем участке, не обязательно соответствует ограничениям следующего перехода. Это руководство посвящено полям фрагментов и сборке, а не утверждению, что любой сбой передачи больших пакетов вызван фрагментацией.
Когда может происходить фрагментация?
Отправитель IPv4 может выполнить фрагментацию перед передачей. Маршрутизатор, пересылающий IPv4, также может разделить пакет на более мелкие фрагменты, если пакет превышает MTU следующего перехода и фрагментация разрешена. Каждый фрагмент имеет собственный заголовок IP и несёт часть исходной полезной нагрузки IP.
Если в исходной дейтаграмме установлен флаг DF, или Don’t Fragment («Не фрагментировать»), а ей необходимо пройти через следующий переход с меньшим MTU, маршрутизатор не может просто разделить её. Обычно он отбрасывает пакет и возвращает соответствующее сообщение об ошибке ICMP; фактическое получение обратной связи зависит от устройств и фильтрации. Будет ли отправитель корректировать размер пакетов, зависит от протокола и реализации.
Обычный промышленный коммутатор уровня 2 пересылает кадры Ethernet; он не разделяет дейтаграмму IPv4, превышающую допустимый размер, на фрагменты IP. Устройство с функцией маршрутизации может обрабатывать трафик IP по-разному в зависимости от своих интерфейсов, конфигурации и фактического пути передачи. Надпись «коммутатор» или «шлюз» на корпусе не определяет поведение каждого порта.
Как получатель распознаёт связанные фрагменты?
Заголовок фрагмента IPv4 содержит адреса источника и назначения, протокол и идентификатор. Получатель использует эти поля совместно, чтобы связать фрагменты с исходной дейтаграммой. Поле идентификации в первую очередь служит для фрагментации и сборки; его не следует считать постоянно уникальным глобальным серийным номером каждого пакета.
Представьте длинный документ, разделённый на страницы: метка комплекта и сведения о получателе помогают сгруппировать страницы. У этой аналогии есть ограничения. Сетевые устройства используют поля пакетов и правила сборки, а не понимают содержимое документа; ID не является средством аутентификации или механизмом безопасности.
Данные захвата у отправителя, на маршрутизаторе и у получателя могут отражать разные аспекты передачи. Не группируйте фрагменты только по ID и не объединяйте без контекста данные захвата из разных направлений и точек сети. Сначала установите точку и время захвата, адреса IP и протокол, затем изучайте поля фрагментов.

О чём говорят смещение и флаг MF?
Смещение фрагмента определяет, где его полезная нагрузка должна располагаться в исходной полезной нагрузке IP. Оно выражается в единицах по восемь байт, а не как номер байта кадра Ethernet. Получатель использует смещения для размещения частей на нужных позициях, а не просто соединяет их в порядке поступления. Более поздний фрагмент может поступить первым.
MF означает More Fragments («Есть ещё фрагменты»): у непоследнего фрагмента MF обычно установлен в 1, а у последнего — в 0. Значение MF = 0 указывает на конец дейтаграммы, но не доказывает, что все предыдущие части получены. Получателю всё равно необходимо полное покрытие от начала до конца, прежде чем передать собранную полезную нагрузку дальше.
При фрагментации также действует правило выравнивания: длина полезной нагрузки каждого фрагмента, кроме последнего, обычно должна быть кратна восьми байтам. Операторам не требуется вручную рассчитывать каждое двоичное поле, но следует проверять, показывает ли средство захвата исходное поле смещения или уже пересчитанную позицию в байтах.
Что происходит при потере одной части?
Получатель обычно сохраняет временное состояние сборки и ожидает недостающие фрагменты. Если к моменту истечения времени хранения этого состояния дейтаграмма остаётся неполной, она отбрасывается; приложение обычно не может использовать оставшиеся фрагменты как полную дейтаграмму IP. Ограничения буфера, обработка тайм-аутов и политики безопасности различаются в разных системах, поэтому общие объяснения не определяют значения параметров конкретного продукта.
Чем больше фрагментов, тем больше независимо передаваемых частей приходится на одну дейтаграмму. Отсутствие одной части может помешать сборке всей дейтаграммы. Поэтому важны весь путь передачи и каждый фрагмент, однако сам по себе сбой передачи большого пакета не доказывает потерю фрагмента: перегрузка сети, фильтрация, нагрузка на устройства и другие проблемы каналов связи могут проявляться сходным образом.
Будет ли TCP или приложение выполнять повторную передачу — вопрос вышележащего уровня, зависящий от протокола и реализации. Сама фрагментация IPv4 не предоставляет общего механизма надёжной повторной передачи отдельных фрагментов. Приложение, использующее UDP, не должно предполагать, что IP автоматически восполнит недостающую полезную нагрузку.

Что следует фиксировать при диагностике?
В тестовой среде, на работу в которой получено разрешение, сначала составьте схему отправителя, коммутаторов уровня 2, маршрутизирующих интерфейсов, туннелей и получателя. Зафиксируйте MTU интерфейсов, состояние DF, протокол, место и время захвата. Для каждой предполагаемой группы фрагментов проверяйте адреса источника и назначения, протокол, идентификатор, смещение и MF, а не только длину пакета.
Если у отправителя видна полная дейтаграмма, а на выходном интерфейсе маршрутизатора — несколько фрагментов, проверьте пересылку IP и MTU интерфейса. Если все фрагменты выходят через этот интерфейс, но до получателя доходит лишь часть, исследуйте потери или фильтрацию на фактическом пути передачи. Настройки зеркалирования, аппаратная разгрузка сетевого интерфейса и точка захвата могут влиять на видимость трафика; один снимок экрана не отражает всю сеть.
Также учитывайте, как устройства безопасности обрабатывают фрагменты. Некоторые правила проверяют порты транспортного уровня, однако не первый фрагмент обычно не содержит полного транспортного заголовка. То, как устройство сопоставляет состояние и разрешает ли оно фрагменты, зависит от его реализации и правил. Прохождение первого фрагмента не доказывает прохождение всех фрагментов. Сохраните существующую конфигурацию и согласуйте изменения с ответственными за эксплуатационную безопасность и защиту сети.
Если сборка регулярно завершается неудачей, исследуйте MTU пути, потери пакетов и фильтрацию, прежде чем просто увеличивать время ожидания у получателя. Приложения реального времени и приложения, чувствительные к полноте данных, могут иметь разные ограничения. Принимайте решения об изменениях на основе устройства протокола, документации оборудования и контролируемых испытаний.
Для систем управления производством согласуйте с владельцем объекта время и объём испытаний. Не отключайте межсетевой экран, не увеличивайте размеры кадров и не включайте маршрутизацию без понимания последствий и плана возврата к исходному состоянию. Перед проверкой ограниченного изменения подтвердите поддержку протокола и границы сети.
Разграничивайте этапы
Фрагментация IPv4 — механизм сетевого уровня. Получатель использует адреса, протокол, идентификатор, смещения и сведения MF для сборки дейтаграммы. Части могут поступать не по порядку, но перед передачей на вышележащий уровень дейтаграмма должна быть полной и соответствовать правилам получателя. MTU, маршрутизация IP, ограничения размеров кадров коммутатора и повторные передачи приложения относятся к разным этапам и требуют отдельных подтверждающих данных.
Промышленные коммутаторы и шлюзы FCTELE могут входить в состав промышленных сетей Ethernet. Поддержку маршрутизации IP, настройки MTU интерфейсов и фильтрации конкретным продуктом и его прошивкой необходимо проверять по документации. Эти иллюстрации объясняют общие механизмы; они не представляют результаты измерений или внутреннюю схему конкретной модели FCTELE.
Источники
RFC 791: межсетевой протокол · RFC 6864: поле идентификации IPv4 · Информация об управляемом промышленном коммутаторе FCTELE.
Переведено с китайской технической статьи: Прочитать оригинальную статью на китайском языке.
Частые вопросы
Фрагментирует ли коммутатор Ethernet дейтаграмму IPv4?
Обычный коммутатор уровня 2 пересылает кадры; фрагментация IP может происходить у отправителя IPv4 или на маршрутизаторе, если она разрешена.
Означает ли MF = 0, что все фрагменты получены?
Нет. Это значение обозначает последний фрагмент; получателю всё равно необходимо полное покрытие исходной полезной нагрузки.
Что происходит, если фрагмент отсутствует?
Получатель ожидает в соответствии со своими правилами сборки; неполная дейтаграмма отбрасывается, если истекает время хранения состояния сборки.
Область рассмотрения и дополнительные материалы
Это общее объяснение IPv4, а не испытание продукта или результат измерений.
Как промышленные коммутаторы пересылают кадры · RFC 791 · RFC 6864


