Как часто IP-пакеты фрагментируются на исходном узле?

Я знаю, что если полезная нагрузка IP > MTU, то маршрутизаторы обычно фрагментируют IP-пакет. Наконец, все фрагментированные пакеты собираются в пункте назначения с использованием полей IP-ID, смещений IP-фрагментов и флагов фрагментации. Максимальная длина полезной нагрузки IP составляет 64 КБ. Таким образом, вполне вероятно, что L4 передаст полезную нагрузку, которая составляет 64 КБ. Если протоколом L2 является Ethernet, что часто бывает, то MTU будет около 1600 байт. Следовательно, IP-пакет будет фрагментирован на самом хосте-источнике. Тем не менее, быстрый поиск по реализации IP в Linux говорит мне, что в последних ядрах протоколы L4 являются дружественными к фрагментам, т.е. они пытаются сохранить работу фрагментации для IP, передавая буферы размером, близким к MTU. .

Учитывая эти два факта, мне интересно, как часто IP-пакет фрагментируется на самом хосте-источнике. Бывает ли это иногда/редко/никогда? Кто-нибудь знает, есть ли исключения из правила фрагментации в ядре Linux (т.е. есть ли ситуации, когда протоколы L4 не поддерживают фрагментацию)? Как это обрабатывается в других распространенных ОС, таких как Windows? В целом, как часто IP-пакеты фрагментируются?


person Methos    schedule 08.03.2009    source источник


Ответы (1)


Хотя технически не должно быть протоколов, которые неправильно обрабатывают фрагментацию IP, есть пара (например, NFS), которые выиграет от отсутствия фрагментации.

То, как часто вы видите фрагментированные пакеты, во многом зависит от вашей сетевой среды. Инкапсуляция пакетов для VPN, плохо спроектированные или плохо реализованные протоколы UDP, а также протоколы L1/L2, которые снижают сквозной MTU ниже значений конечной точки, могут вызвать фрагментацию IP.

Большинство современных хостов реализуют PTMUD, который автоматически определяет размер MTU, если не задействованы совместимые устройства или гиперпараноидальные брандмауэры. В наши дни Ethernet Everywhere я не ожидаю, что они будут особенно распространены в Интернете в целом.

person HUAGHAGUAH    schedule 08.03.2009
comment
Фрагменты NFS поверх UDP для меня немного, но фрагментация, кажется, ограничена чтением и записью. - person jdizzle; 08.03.2009
comment
Даже при использовании TCP фрагментация крайне нежелательна, так как один потерянный фрагмент вынуждает пункт назначения отбрасывать весь пакет. Однако, как вы сказали, обнаружение MTU пути обычно позволяет избежать фрагментации в источнике. +1. - person nimrodm; 08.03.2009
comment
Хорошая мысль о TCP, я пересекал провода с размерами MTU и скользящими окнами. Отредактировано. - person HUAGHAGUAH; 08.03.2009
comment
Спасибо за ответ. Чтобы уточнить, мой вопрос касается удобства фрагментов L4. Я думаю, что вы сказали, это работа L3, то есть обнаружение MTU и разделение буфера на пакеты размером с MTU. Я спрашиваю, позаботится ли сам L4 о передаче буферов с ‹= MTU, чтобы L3 не приходилось тратить больше циклов на фрагментацию. - person Methos; 03.06.2009