Кратко

  • max_udp_payload_size — аутентифицированное одностороннее заявление о максимальной полезной нагрузке UDP, которую готов принимать объявивший её узел.
  • В RFC 9000 размер датаграммы — это полезная нагрузка UDP без заголовков IP и UDP; PMTU — максимальный размер полного IP-пакета, который путь переносит без фрагментации.
  • Максимальная полезная нагрузка UDP равна применимому PMTU минус заголовок IP и заголовок UDP; отправитель также учитывает предел узла и текущие свидетельства PMTUD или DPLPMTUD.

Неверная интерпретация обычно появляется в панели мониторинга. Параметр, полученный во время криптографического рукопожатия, называют «MTU» и используют как описание сети. RFC 9000 не даёт оснований для такого вывода. max_udp_payload_size — свойство конечной точки. Она сообщает, какую максимальную полезную нагрузку UDP готова принять. Для отправителя это дополнительное ограничение, но не измерение пути, не состояние пути и не гарантия безопасного размера.

Аутентификация объявления в криптографическом рукопожатии подтверждает его источник и целостность, но не состояние промежуточной сети. Значение по умолчанию — 65527, максимально допустимая полезная нагрузка UDP. Оно не доказывает, что маршрут поддерживает 65527 байт. Значения меньше 1200 недействительны и приводят к обработке ошибки транспортного параметра.

UDP-датаграмма может содержать один или несколько полных QUIC-пакетов. По RFC 9000 её размер — общая полезная нагрузка UDP, включая QUIC-заголовки и защищённые данные, но без заголовков IP и UDP. PMTU — это наибольший размер полного IP-пакета, который конкретный путь может передать без фрагментации при данных условиях. Соответствующая максимальная полезная нагрузка UDP равна PMTU за вычетом заголовка IP и заголовка UDP. PMTU и максимальную полезную нагрузку UDP нельзя считать взаимозаменяемыми. PMTU меняется со временем и может отличаться для каждой локальной и удалённой пары адресов.

Путь QUIC должен поддерживать не менее 1200 байт полезной нагрузки UDP. Без PMTUD или DPLPMTUD конечные точки не должны отправлять датаграммы больше 1200 байт. Датаграммы UDP с QUIC нельзя фрагментировать на уровне IP; для IPv4 по возможности устанавливается бит Don't Fragment. До получения значения узла отправка выше 1200 несёт риск потери. После получения это значение лишь дополнительно ограничивает отправку: фактический предел — меньшее из него и полезной нагрузки UDP, выведенной из текущего PMTU. Расширение датаграмм с пакетами Initial до 1200 подтверждает только минимум протокола.

PMTUD использует ICMP. Сообщение о слишком большом пакете требуется сопоставить с адресами, портами и, если возможно, идентификатором соединения QUIC. Одного сообщения ICMP недостаточно, чтобы увеличить PMTU. DPLPMTUD проверяет размеры с помощью зондов и ведёт для каждой пары адресов состояние на основании подтверждённых или потерянных зондов. Потеря зонда не является надёжным признаком перегрузки и сама по себе не должна запускать реакцию на перегрузку, хотя зонды расходуют окно перегрузки.

В журнале должны быть отдельные поля: время соединения и наблюдения; пара адресов; объявившая конечная точка; аутентифицированный max_udp_payload_size и момент его доступности; сохранённое значение, если оно управляло 0-RTT; текущий PMTU и выведенная из него полезная нагрузка UDP; метод и состояние PMTUD или DPLPMTUD; размеры зондов и подтверждения или потери; проверенное свидетельство ICMP; версия IP, допущения о заголовках и политика фрагментации; полезная нагрузка приложения, накладные расходы QUIC и объединение нескольких пакетов в одной датаграмме; затем потери, перегрузка, пропускная способность, задержка, завершение и результат

приложения.

Ни один параметр не доказывает производительность или успех приложения.

HIST-008 — история PMTUD; TR-039 — трёхкратный предел защиты от усиления; TR-049 — объединение QUIC-пакетов в одной датаграмме; TR-046 — полномочия управления потоком; TR-040 — идентификаторы соединений и миграция. Они не заменяют доказательство размера для текущей пары адресов.