Кратко

  • Успешная валидация показывает достаточное соответствие между отправленными метками ECN и счётчиками ACK_ECN, которые сообщил удалённый участник соединения на одном пути.
  • ECT(0), ECT(1) и ECN-CE — накопительные счётчики, раздельные для каждого пространства номеров пакетов и зависящие от истории ACK.
  • Результат не указывает очередь, узел, маршрутизатор, стык, оператора, длительность, тяжесть, нарушение SLA или влияние на клиента.

Рост ECN-CE на панели мониторинга легко превратить в обвинение конкретного стыка. Но протокол этого не доказывает. Валидация ECN отвечает на более узкий вопрос: может ли отправитель использовать сообщения удалённого участника как сигнал перегрузки на данном пути? Это не система определения местоположения и не механизм установления виновника.

Отправитель помечает IP-пакет как ECT(0) или ECT(1). Сетевой узел может заменить поле на ECN-CE, чтобы сообщить о перегрузке вместо сброса пакета. Получатель, способный читать поле ECN, ведёт отдельные счётчики ECT(0), ECT(1) и ECN-CE и передаёт их в последующих кадрах ACK. Если на проверенном пути обрабатывается новый прирост ECN-CE, RFC 9002 требует, чтобы указанный контроллер перегрузки вошёл в режим восстановления. Это реакция протокола, а не доказательство источника метки.

Учёт имеет строгую область действия. QUIC отдельно хранит состояние подтверждений и счётчики ECN для Initial, Handshake и 1-RTT — каждого пространства номеров пакетов. Объединённые пакеты используют один IP-заголовок и одно поле IP ECN, однако каждый успешно обработанный QUIC-пакет учитывается в своём пространстве номеров. Дубликаты повторно не обрабатываются и счётчики не увеличивают. Один ACK может сообщить накопленный прирост, превышающий число новых подтверждённых им пакетов, если предыдущий ACK был потерян. Поэтому счётчик — не скорость, не карта узлов и не причинная трасса потока.

Валидация проводится отдельно для каждого пути. Новое соединение, смена предпочтительного адреса сервера и активная миграция на новый путь требуют отдельного подхода. Конечная точка может пометить ранние пакеты нового пути ECT(0), а затем сопоставить подтверждения и потери с сообщёнными счётчиками. Если для недавно подтверждённых помеченных пакетов нет счётчиков ECN, валидация завершается неудачей. Для ECT(0) прирост ECT(0) плюс ECN-CE не должен быть меньше числа недавно подтверждённых пакетов, отправленных как ECT(0); для ECT(1) действует аналогичное правило.

Сообщённые счётчики не могут превышать общее число отправленных пакетов соответствующего кодпоинта, а неиспользованный кодпоинт не может иметь ненулевой счётчик. Переупорядоченный ACK, не продвигающий наибольший подтверждённый номер, сам по себе не должен вызывать сбой.

Эти проверки определяют пригодность обратной связи, а не её происхождение. Ошибка не различает стирание поля, неправильную перезапись, отсутствие отчёта удалённого участника, потери, переупорядочивание, смену пути, злонамеренное вмешательство или другую неисправность. При ошибке конечная точка отключает ECN на этом пути и прекращает устанавливать ECT. Позднее возможна повторная проверка. Успех разрешает продолжить маркировку, но не подтверждает, какая очередь, маршрутизатор, транспортная компания, оператор или административный домен связаны с сигналом.

Граница безопасности принципиальна. Потери, задержки и метки ECN поступают от неаутентифицированных сетевых сущностей. Атакующий может отбрасывать пакеты, менять задержку или кодпоинт и влиять на скорость отправки. Получатель тоже может сообщать неверно: подавление CE способно вызвать чрезмерную скорость, а лишние CE — заставить отправителя снизить её. Валидация проверяет часть контура обратной связи, но не устанавливает, кто вызвал перегрузку.

В независимом реестре следует разделять идентификатор соединения и текущего пути, пространство номеров пакетов, подтверждённые диапазоны, каждую отправленную метку ECT(0), ECT(1) или Not-ECT, накопительные счётчики, дельты относительно последнего успешно обработанного ACK, переходы состояния валидации, отсутствующие или невозможные приросты, потери, переупорядочивание, смену пути и реакцию контроллера перегрузки. Данные очередей, интерфейсов, узлов, маршрутизации и стыков, а также причина, длительность, тяжесть, атрибуция оператора и влияние на клиента должны храниться отдельно.

Это также отделяет ECN от TR-038, TR-045, TR-050 и TR-051: spin-bit, семантика доставки ACK, ACK delay и PTO probing измеряют иные свойства.