PLPMTUD¶
PLPMTUD (Packetization Layer Path MTU Discovery) — это механизм в компьютерных сетях, предназначенный для определения максимального размера пакета (MTU, Maximum Transmission Unit), который может быть передан по сетевому пути без фрагментации. В отличие от классического Path MTU Discovery (PMTUD), работающего на уровне IP, PLPMTUD функционирует на уровне протоколов прикладного уровня или транспортного уровня (например, TCP, UDP, QUIC), что позволяет избежать проблем, связанных с блокировкой ICMP-сообщений и несовместимостью с некоторыми сетевыми устройствами.
¶История и предпосылки
Классический PMTUD, описанный в RFC 1191 (для IPv4) и RFC 1981 (для IPv6), использует ICMP-сообщения «Fragmentation Needed» (для IPv4) или «Packet Too Big» (для IPv6) для уведомления отправителя о необходимости уменьшить размер пакета. Однако на практике этот метод сталкивается с рядом проблем:
- Блокировка ICMP: Многие межсетевые экраны и маршрутизаторы блокируют ICMP-трафик, что приводит к невозможности получения уведомлений о фрагментации.
- Недостоверность ICMP: Некоторые сети генерируют ложные ICMP-сообщения, что может привести к неправильной оценке MTU.
- Проблемы с IPv6: В IPv6 фрагментация на промежуточных узлах запрещена, и PMTUD является обязательным, но его эффективность снижается из-за тех же проблем с ICMP.
PLPMTUD был предложен как альтернатива, устраняющая эти недостатки. Основные идеи были заложены в RFC 4821 (2007 год), который описал общий подход к обнаружению MTU на уровне пакетизации, а затем уточнены в последующих RFC, таких как RFC 8899 (для UDP) и RFC 9000 (для QUIC).
¶Принцип работы
PLPMTUD основан на активном зондировании сетевого пути пакетами различного размера и анализе успешности их доставки. Процесс включает несколько этапов:
- Начальная оценка: Отправитель начинает с известного безопасного размера пакета (например, 1200 байт для IPv6 или 576 байт для IPv4) и постепенно увеличивает его.
- Зондирование: Отправитель отправляет серию пробных пакетов (probes) увеличивающегося размера. Каждый пробный пакет обычно дублируется несколько раз для повышения надежности.
- Анализ результатов: Если все пробные пакеты определенного размера успешно доставлены (подтверждение получается через ACK в TCP или через подтверждение приема в протоколах более высокого уровня), то размер считается допустимым. Если пакет потерян или не подтвержден, размер считается превышающим MTU.
- Уточнение: После обнаружения максимального успешного размера отправитель может продолжить зондирование для поиска точного значения MTU, используя двоичный поиск или другие алгоритмы.
- Адаптация: PLPMTUD может динамически изменять оценку MTU при изменении сетевого пути (например, при переключении между Wi-Fi и мобильной сетью).
¶Отличие от классического PMTUD
- Отсутствие зависимости от ICMP: PLPMTUD не требует ICMP-сообщений, что делает его устойчивым к блокировкам и фильтрации.
- Работа на уровне выше IP: PLPMTUD оперирует на уровне транспортного или прикладного протокола, что позволяет учитывать особенности конкретного протокола (например, размер заголовков TCP или UDP).
- Требование к подтверждению: Для работы PLPMTUD необходима обратная связь от получателя (например, подтверждение получения пакетов), что ограничивает его применение протоколами с подтверждением доставки.
¶Протоколы, использующие PLPMTUD
PLPMTUD реализован в нескольких современных протоколах, где важна эффективная передача данных без фрагментации:
¶TCP
В TCP PLPMTUD может быть реализован как альтернатива классическому PMTUD. Некоторые реализации TCP (например, в Linux) поддерживают PLPMTUD через опцию TCP_MTU_PROBE. Однако на практике PLPMTUD в TCP менее распространен из-за сложности интеграции с существующими механизмами управления перегрузкой.
¶QUIC
Протокол QUIC (RFC 9000) активно использует PLPMTUD. В QUIC PLPMTUD встроен в транспортный уровень и позволяет динамически определять MTU пути. QUIC использует пробные пакеты с уникальными номерами и подтверждениями, что обеспечивает надежное зондирование. Это особенно важно для QUIC, так как он работает поверх UDP, который не имеет встроенных механизмов обнаружения MTU.
¶UDP
Для UDP-приложений PLPMTUD описан в RFC 8899. Он позволяет приложениям, работающим поверх UDP, определять MTU пути без необходимости полагаться на ICMP. Примеры использования включают протоколы потокового видео и VoIP, где большие пакеты могут повысить эффективность.
¶IPsec
В IPsec PLPMTUD может использоваться для определения MTU туннеля, что особенно важно при использовании инкапсуляции, которая увеличивает размер пакета.
¶Алгоритмы и методы
PLPMTUD может использовать различные алгоритмы для зондирования:
- Линейное увеличение: Отправитель постепенно увеличивает размер пробных пакетов на фиксированный шаг (например, 32 байта) до тех пор, пока не произойдет потеря.
- Двоичный поиск: Отправитель быстро сужает диапазон возможных значений MTU, отправляя пакеты среднего размера и анализируя результаты.
- Адаптивное зондирование: Алгоритм подстраивает частоту и размер пробных пакетов в зависимости от стабильности сети и предыдущих результатов.
Для повышения надежности часто используется несколько пробных пакетов одного размера (например, 3-5 пакетов). Если хотя бы один из них потерян, размер считается недопустимым. Это снижает влияние временных потерь на оценку MTU.
¶Преимущества и недостатки
¶Преимущества
- Устойчивость к блокировкам ICMP: PLPMTUD не зависит от ICMP, что делает его надежным в сетях с фильтрацией трафика.
- Адаптивность: PLPMTUD может динамически изменять оценку MTU при изменении сетевого пути, что важно для мобильных устройств и VPN.
- Точность: PLPMTUD позволяет определить точное значение MTU, так как зондирование проводится на уровне протокола, который может учитывать свои заголовки.
- Совместимость с IPv6: PLPMTUD решает проблему обязательного PMTUD в IPv6, где блокировка ICMP может привести к полной потере связности.
¶Недостатки
- Зависимость от подтверждений: PLPMTUD требует надежной обратной связи от получателя, что ограничивает его применение протоколами без подтверждения (например, некоторые UDP-приложения).
- Дополнительная задержка: Процесс зондирования может увеличить задержку при установлении соединения или при изменении пути.
- Сложность реализации: PLPMTUD требует более сложной логики на стороне отправителя и получателя по сравнению с классическим PMTUD.
- Возможность ложных срабатываний: В сетях с высокими потерями пакетов PLPMTUD может ошибочно снизить оценку MTU, что приведет к неоптимальной производительности.
¶Применение
PLPMTUD находит применение в следующих областях:
- Веб-серверы и клиенты: Серверы, использующие QUIC (например, Google, Cloudflare), применяют PLPMTUD для оптимизации передачи данных.
- VPN и туннели: PLPMTUD используется для определения MTU туннеля, что позволяет избежать фрагментации внутри туннеля.
- Потоковое видео и VoIP: Приложения, передающие большие пакеты данных, могут использовать PLPMTUD для повышения эффективности.
- Мобильные сети: В сетях 4G/5G PLPMTUD помогает адаптироваться к изменяющимся условиям пути.
¶Критика и ограничения
Основная критика PLPMTUD связана с его сложностью и потенциальной неэффективностью в сетях с высокой потерей пакетов. Некоторые исследователи отмечают, что PLPMTUD может быть избыточным для большинства приложений, где классический PMTUD работает достаточно хорошо. Кроме того, PLPMTUD требует поддержки на обоих концах соединения, что ограничивает его распространение.
¶См. также
- Path MTU Discovery
- Maximum Transmission Unit
- QUIC
- RFC 4821
- RFC 8899
¶Источники
- RFC 4821 — Packetization Layer Path MTU Discovery
- RFC 8899 — Packetization Layer Path MTU Discovery for Datagram Transports
- RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport
- Stevens, W. R. (1994). TCP/IP Illustrated, Volume 1: The Protocols. Addison-Wesley.
- Postel, J. (1981). RFC 791 — Internet Protocol.
- Deering, S., & Hinden, R. (1998). RFC 2460 — Internet Protocol, Version 6 (IPv6) Specification.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


