Кратко

  • Редакция 02 проекта рабочей группы MASQUE от 28 октября относит объявленный параметр mtu к размеру пакета после восстановления у получателя. Сжатый кадр QUIC DATAGRAM должен соответствовать лимиту кадра у партнёра, а внешний IP-пакет вместе с накладными расходами HTTP/3, QUIC, UDP и IP — текущему MTU пути.
  • Пакеты одинаковой исходной длины могут сжиматься по-разному. Успешный зонд PMTU подтверждает прохождение своего сжатого варианта, но не всех пакетов такого размера. Для общего MTU туннеля раздел 5.1.5 советует учитывать наименьший выигрыш от сжатия у трафика, которому обещана эта величина, включая несжатые пакеты.

Что именно обещает получатель

В HTTP-поле http-datagram-contexts можно увидеть mtu=1500. Число похоже на готовую настройку туннеля. В тексте проекта у него другой адресат: получатель сообщает максимальный размер пакета, который он готов собрать после применения всех контекстов обработки. Отправитель может убрать повторяющиеся участки заголовка шаблоном, оставить вычисление длины другой стороне или передать частичное значение контрольной суммы. Получатель возвращает пропущенные данные и только затем отдаёт пакет внутреннему протоколу. Объявленный предел относится к этому готовому результату.

Согласование возможностей направленное. Каждая сторона перечисляет контексты, которые она готова принимать и хранить для пакетов от партнёра. Создавать контекст без такого объявления нельзя. В примере проекта обе стороны указывают mtu=1500, хотя наборы вычисляемых полей и поддержка обработки контрольной суммы различаются. Одинаковая цифра не делает их одинаковыми машинами и ничего не сообщает о каналах между ними.

Правило о предельном размере восстановленного пакета существовало уже в редакции 01. Отправитель не должен передавать датаграмму, которая после восстановления превысит объявленный предел. Редакция 02 уточняет предмет правила: mtu — это лимит получателя, а не измерение MTU маршрута и не гарантия, что пакет такой длины поместится в кадр QUIC DATAGRAM. Предел действует и при передаче через DATAGRAM Capsule, и без контекста сжатия. Упаковка может поменяться; ёмкость приёмной стороны остаётся объявленной.

У узкого прохода собственная линейка

Сжатие действительно помогает. CONNECT-IP несёт IP-пакеты внутри HTTP-датаграмм, и многие поля заголовков в потоке повторяются. Шаблон может не пересылать устойчивые байты; получатель восстановит их по согласованному контексту. Пакет, который в исходном виде не вошёл бы в QUIC DATAGRAM, после этой операции иногда проходит. Но каждый пакет получает только то сокращение, которое допускают его поля. Рядом может идти пакет той же исходной длины с изменяющимися байтами; его форма на линии останется шире.

Новый раздел 5.1.5 проверяет транспортный размер после сжатия. Получившийся кадр QUIC DATAGRAM должен укладываться в лимит кадра у партнёра. Внешний IP-пакет, в котором уже есть HTTP/3, QUIC, UDP и IP, должен поместиться в текущий MTU пути. Восстановленный пакет длиной 1500 байт может пройти, если переданная форма достаточно коротка. Даже пакет меньше предела получателя может не пройти, когда подходящего контекста нет или экономия байтов мала. Получатель держит большую форму в памяти; путь пропускает лишь меньшую форму, фактически предъявленную ему.

Поэтому одна удачная проверка PMTU опасна как универсальное доказательство. Проект прямо отмечает: степень сжатия меняется между пакетами одинаковой исходной длины, в том числе между пробой и обычным трафиком. Проба показывает, что прошла она сама, с данным контекстом и данным внешним размером. Несколько потоков могут делить состояние PMTU, хотя используют разные контексты; документ связывает этот случай с RFC 8899. Если результат лучшего шаблона записать как общую характеристику туннеля, все остальные потоки получат чужую скидку.

При выборе MTU туннеля или сообщении PMTU внутреннему трафику раздел 5.1.5 рекомендует исходить из наименьшего доступного сжатия для пакетов, разделяющих этот предел. Несжатый трафик тоже входит в расчёт. Оператор вправе выделить отдельный класс с собственным шаблоном и измерениями. Но общая цифра должна выдерживать пакет, который хуже всех поддаётся сокращению. Лучший результат демонстрирует возможности шаблона, а не ширину дороги.

Обходная доставка меняет условия

Слишком крупную для QUIC DATAGRAM датаграмму иногда можно отправить через DATAGRAM Capsules по нескольким транспортным пакетам, если базовый протокол это допускает. Проект перечисляет цену: надёжная доставка, блокировка очереди в её начале, дополнительные буферы и повторные передачи, а также возможное нарушение порядка относительно кадров QUIC DATAGRAM. Исходная нагрузка может прибыть, но задержка и порядок уже определяются другим механизмом.

Обход может скрыть от внутреннего отправителя предел датаграммного пути. Раздел 5.1.5 указывает на CONNECT-IP §10.1 и CONNECT-UDP §6.1: эти документы рекомендуют отбрасывать слишком большой пакет и возвращать ICMP Packet Too Big вместо молчаливого перехода на Capsules. Ответ позволяет источнику уменьшить следующие пакеты. Надёжная капсула не расширяет маршрут и не отменяет предел восстановления у получателя; она лишь меняет способ доставки и может затруднить обнаружение настоящей границы.

Datatracker показывает редакцию 02 как действующий Internet-Draft группы MASQUE со статусом IESG I-D Exists. В исходных документах нет захвата работающего туннеля и измеренной доли потерянных пакетов. Проверить конкретную реализацию можно парой пакетов одинаковой исходной длины, но с разными контекстами: записать размеры кадров и внешних IP-пакетов, текущий MTU пути и ответы Packet Too Big. Так выяснится, где именно кончилась экономия, вместо гадания по одной успешной пробе.

Источники