Кратко

  • В RFC 9599 способность ECN принадлежит не отдельному биту или устройству, а полному контуру: все необходимые узлы должны доставить сведения о перегрузке до реального регулятора нагрузки.
  • Инкапсулятор сохраняет уже накопленное состояние, а декапсулятор вычисляет результат по внутреннему и внешнему заголовкам. Если внешняя PDU имеет CE, а внутренняя — Not-ECN, потеря остаётся единственным понятным старому транспорту уведомлением.
  • Обратная передача только ко входу подсети способна переместить очередь, но не замкнуть сквозной контур. Доставка пакета, перенос метки, отзыв получателя и снижение скорости источника требуют отдельных свидетельств.

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

Теперь пакеты скапливаются перед ограничителем. Когда буфер заполнится, другая очередь будет вынуждена терять или маркировать трафик. Исходная информация о месте и времени перегрузки превратилась в вторичный симптом на другой границе.

RFC 9599 оценивает нижние слои и туннели именно по целому контуру. IP служит переносчиком смысла между узлом, который может не понимать IP, и транспортом конца в конец, который способен уменьшить посылку. Документ не выбирает алгоритм очереди и не задаёт реакцию источника; он устанавливает правила хранения сигнала между ними.

Возможность ECN определяется полным контуром

Запись RFC Editor и IETF Datatracker относят RFC 9599 к Best Current Practice августа 2024 года в составе BCP 89. Документ обновляет рекомендации по проектированию подсетей из RFC 3819. Базовые значения IP ECN заданы в RFC 3168, а RFC 8311 расширяет пространство для последующих экспериментов.

Ключевое различие проводится между ECN-PDU и Not-ECN-PDU. Первая находится в контуре, где каждый необходимый узел умеет провести уведомление к регулятору нагрузки. Во втором хотя бы одно звено этого не умеет. Протокол может выражать свойство полем заголовка, меткой, состоянием потока или привязкой в плоскости управления. Проверочный вопрос неизменен: если очередь поставит метку здесь, узнает ли о ней субъект, способный уменьшить нагрузку?

Поэтому статус «ECN включён» у коммутатора слишком узок. Коммутатор может писать метку, а выход — стирать. Выход может передавать её, а получатель — не возвращать. Получатель может сообщать, а отправитель — не реагировать. Возможности компонентов не складываются автоматически в возможность системы.

Нижний слой не должен маркировать поток к старому L4, который не понимает ECN. Он не должен маркировать и тогда, когда один из возможных выходов не умеет поднять уведомление выше. Внутри домена допустима смесь маркировки и потерь; недопустима смесь генератора явного сигнала и границы, где этот сигнал безмолвно исчезает.

Обратный режим способен лишь передвинуть давление

Feed-backward отправляет управляющий сигнал нижнего слоя к входу подсети. Когда вход одновременно является исходным генератором нагрузки, это может хорошо работать в автономной сети. Он получает информацию и непосредственно меняет темп.

В IP-интернете вход чаще выступает промежуточным агрегатором. Он может замедлить выдачу внутрь, но входящий поток продолжает поступать. Буфер растёт, и новая перегрузка возникает там, где исходный механизм её не наблюдал. Для источников понадобится отдельный прямой сигнал от этого нового места.

Контур не был замкнут; давление перенесли. Поэтому технология для сопряжения с IP не должна строиться только на feed-backward, кроме ограниченных случаев. История ICMP Source Quench, выведенного из употребления RFC 6633, добавляет проблему подлинности: источник может не отличить реальное сообщение пути от подделки.

Вперёд по нижнему слою, затем вверх

В feed-forward-and-up перегруженный нижний узел маркирует свою PDU. Уведомление идёт вперёд до выхода подсети, а выход перед удалением внешнего заголовка переносит смысл во внутренний. L4 на стороне получателя затем возвращает его источнику.

Такая схема используется для IP-туннелей в RFC 6040 и для MPLS в RFC 5129. RFC 9600 применяет её к TRILL, а RFC 9601 — к IP-заголовкам, разделённым shim-заголовком. Кодировки могут различаться, но удаление оболочки не должно удалять факт перегрузки.

На входе новый внешний заголовок не должен обнулять накопленную историю. Наследование внутренней базы позволяет внешнему состоянию выражать суммарную перегрузку от регулятора, а разности — оценивать вклад текущей подсети. Разность не указывает виновную очередь, зато сохраняет единую меру без скрытого знания конфигурации.

Декапсуляция — вычисление, а не копирование

На выходе нельзя просто выбрать один заголовок. Итог рассчитывается по способности и тяжести внутреннего и внешнего состояний. Если оба способны к ECN, более сильное свидетельство должно сохраниться. Если внешняя оболочка не умеет уведомлять, но внутренний заголовок уже несёт состояние, внутреннее состояние проходит без изменения.

Самая важная ветвь — CE снаружи и Not-ECN внутри. Старый транспорт не понимает явной метки. Записать её означает создать символ без реакции; переслать чистый пакет означает стереть факт. Декапсулятор теряет пакет. Потеря переводит перегрузку на единственный язык, который способен понять такой транспорт.

Это противоречит локальной цели «ноль потерь», но сохраняет причинность. Если пакет выживает ценой удаления сигнала, получатель сообщает успех, источник сохраняет темп, а низкая доля потерь начинает ложно обозначать свободную ёмкость.

Разные уровни требуют явной единицы измерения

Некоторые нижние слои кодируют несколько уровней перегрузки. Выход может переводить количественную ступень в частоту IP-меток на временном окне. Это не копирование числа, а преобразование шкалы.

Агрегация и фрагментация меняют знаменатель. Один IP-пакет может занимать несколько кадров или ячеек; один агрегированный кадр может нести несколько IP-PDU. Доли по пакетам, байтам и кадрам не взаимозаменяемы. Счётчик обязан назвать единицу, окно и границу преобразования, иначе его точное число не сопоставимо с соседним слоем.

Рекомендации AQM в RFC 7567 объясняют управление очередью, а RFC 8087 — выгоду уведомления до потери. RFC 9599 добавляет обязанность хранения: результат работы очереди должен пережить смену оболочки.

Поиск IP из нижнего слоя обязан остановиться

Если нижний заголовок не имеет своего поля, feed-up-and-forward позволяет устройству найти инкапсулированный IP и изменить ECN в нём. Коммутатор, пересылающий по MAC, или узел радиодоступа может сделать это как ограниченную оптимизацию.

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

Достаточно первого распознанного IP-заголовка. Последующая граница способна поднять сигнал глубже. Так каждое устройство отвечает только за структуру, понимание которой может доказать.

Пошаговое внедрение измеряется покрытием выходов

MPLS показывает управляемую модель. Чтобы не тратить дефицитное место, возможность необязательно указывать в каждой PDU. Но оператор обновляет все выходы, способные декапсулировать, прежде чем любой внутренний узел начнёт маркировать. Увидев CE вокруг Not-ECN, выход теряет пакет от имени раннего узкого места.

Гарантию даёт контроль над полным множеством выходов, а не имя MPLS. В plug-and-play среде такая координация отсутствует, поэтому требуется отказобезопасное согласование либо ограничение маркировки управляемым профилем.

Процент обновлённых устройств — неверная метрика. В знаменатель входят все основные и резервные оконечные узлы, ветви service chain, аварийные маршруты и временные точки обслуживания, которые могут снять маркированный заголовок. Один старый выход способен удалить все сигналы конкретного потока во время переключения.

Обратимое внедрение сначала инвентаризирует выходы, включает теневые счётчики и тестирует эквивалентность потери. Внутренняя маркировка включается по доменам и так же отключается без изменения посторонней пересылки. Труднообратимое внедрение сначала включает функцию везде, а потом строит планирование ёмкости на графиках низких потерь, не заметив исчезнувшие метки.

Изменяемое поле должно оставаться допустимой мутацией

Поле перегрузки по замыслу меняется промежуточными узлами. Если профиль аутентификации считает весь заголовок неизменяемым, каждая правильная метка ломает проверку. Защищаемая структура должна явно исключить или нормализовать изменяемое поле.

Разрешённость изменения не гарантирует правду: узел может подавить или выдумать метку. RFC 9599 указывает на сквозное обнаружение подавления и недостаточной реакции вместо отдельной hop-by-hop системы доверия для каждой инкапсуляции. Аудит должен различать допустимую мутацию, её доставку и фактическую реакцию регулятора.

Аргумент Lu Heng о первичности работающего кода превращает заявление «поддерживает RFC 9599» в цепочку квитанций: входное внутреннее состояние, выбранное внешнее, внутренняя метка, расчёт выхода, исходящий IP, отзыв получателя и изменение скорости.

Идея минимальной исходной спецификации позволяет разным технологиям разделить два инварианта без единой кодировки: не создавать явный сигнал, если контур не перенесёт его, и не стирать перегрузку при удалении заголовка. Разделение слоёв реальности не даёт свести давление очереди, метку, доставку, отзыв, реакцию и результат услуги к одному зелёному индикатору.

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

Источники