Кратко

  • RFC 10005 кодирует Link Bandwidth как 32-битное значение IEEE 754 в байтах в секунду и поддерживает transitive и non-transitive формы, но оставляет вычисление значения и арифметику multipath за пределами стандарта.
  • Динамические источники и многоступенчатая сумма могут распространять частые изменения по BGP. Доказательство безопасности включает частоту UPDATE, стабильность multipath, hardware FIB, очереди, потери, приложение и проверенный rollback.

Сначала изменилась одна интерфейсная величина. Затем BGP пересчитал Link Bandwidth для тысяч префиксов. Следующий узел суммировал значения нескольких multipath и выпустил новый aggregate. Ещё один уровень повторил операцию. Сессии не падали, но поток UPDATE вырос, веса менялись, а диагностика уже не могла отделить полезную адаптацию от реакции на собственную реакцию.

Чем точнее система пытается отражать динамическую ёмкость, тем чаще она может менять control plane. Но Link Bandwidth не несёт времени измерения, причины изменения или коэффициента уверенности. Получатель видит новый float и применяет local policy.

RFC 10005, опубликованный в июне 2026 года как Proposed Standard, прямо рекомендует реализациям ограничивать churn от частых изменений. Это признание эксплуатационной границы: общий протокол переносит значение, а частота, сглаживание и цена нестабильности принадлежат локальному решению.

Что именно меняется в UPDATE

Transitive форма имеет Type 0x00, non-transitive — 0x40; SubType в обоих случаях 0x04. Local Administrator содержит четыре октета IEEE-754 single precision, единица — байт, не бит, в секунду. Global Administrator занимает два октета и обычно указывает ASN добавившего community роутера; для ASN, который не помещается, используется AS_TRANS. Полный четырёхоктетный ASN кодировкой не поддерживается.

Global Administrator не меняет семантику и не удостоверяет автора. Сам float тоже не сообщает источник. RFC оставляет определение и вычисление bandwidth вне scope.

Текущий draft use cases v11 различает remote bandwidth и local link bandwidth. Конфигурация может выбрать удалённое значение, локальное или функцию обоих. Результат называется contributing bandwidth. Если необходимый источник отсутствует или функция не возвращает результат, используется ноль по описанной процедуре.

Динамика может начаться с interface discovery: при изменении скорости BGP обновляет значение для затронутых префиксов и веса. Это конфигурируемый механизм, а не измерение текущей загрузки. Если физическая или логическая скорость часто колеблется, атрибут может стать генератором событий.

Агрегирование умножает область изменения

Draft определяет cumulation как сумму bandwidth у путей, участвующих в multipath, при объявлении соседу и изменении next hop. Она необязательна, может включаться для всех или части префиксов и управляться per-neighbor.

По умолчанию сумма может строиться по contributing bandwidth, чтобы объявленное число соответствовало входу в локальное weighted load balancing. Но конфигурация способна суммировать remote или local значения. При отсутствии нужной информации вклад пути считается нулём.

Таким образом, один и тот же Local-RIB может дать разные aggregate: сумму remote, сумму local или сумму функции. Ни одна из них не является универсальной «доступной полосой». При многоступенчатой регенерации каждое изменение на нижнем уровне способно обновить число выше и вызвать новые BGP announcements.

Draft видит и пользу, и цену. Сквозное агрегирование показывает capacity вдоль пути, но отказ линка на любой ступени меняет атрибут и создаёт дополнительный churn. Реализация может подавлять объявления, например не передавать изменение меньше заданного процента. Порог остаётся выбором оператора.

Свежесть и стабильность конфликтуют

Слишком высокий порог сохраняет старое значение после существенного изменения. Слишком низкий превращает шум источника в BGP update stream. Длинный hold-down защищает control plane, но дольше направляет трафик по устаревшим весам. Короткий быстрее адаптируется, но увеличивает перестройки FIB и перемещение flows.

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

RFC также допускает ноль. Отправитель может использовать его для maintenance, а получатель решает, исключить путь или перейти к equal balancing. Если в любом multipath отсутствует valid community, equal load balancing рекомендуется, если local config не говорит иначе. Несколько communities по умолчанию приводят к выбору минимального значения, включая ноль; negative игнорируется.

Каждый такой переход способен сменить не только вес, но и режим распределения. Потеря одного атрибута на одном path может перевести весь set из weighted в equal. Поэтому churn атрибутов и churn forwarding нельзя измерять отдельно.

Next hop задаёт точку регенерации

Если re-advertising speaker меняет next hop, он может удалить, сохранить или регенерировать Link Bandwidth. Реализация должна показывать default и позволять per-session override. При неизменном next hop, как у route reflection, значение не следует менять.

Эта граница определяет дерево зависимостей. Каждый regenerating node добавляет свой источник и свой suppression policy. Если route carries одновременно transitive и non-transitive формы во время миграции, их значения должны совпадать. Обновление только одной формы создаёт downstream divergence, особенно при старых реализациях.

Информация о capacity может быть чувствительной; RFC рекомендует фильтрацию за administrative domain. Dynamic regeneration, следовательно, влияет не только на churn, но и на то, какая свежая карта ресурсов покидает сеть.

Сначала докажите FIB, затем оптимизацию

Документация Juniper описывает autosense и hold-down, а также условия multipath. Cisco показывает interface-derived и policy values. Arista документирует regeneration и aggregate options. Это свидетельства разных control surfaces, не единый алгоритм.

Для каждого изменения хранить source event, старое и новое raw value, тип community, prefix count, policy, next hop, constituent paths, выбранную функцию и suppression decision. Затем фиксировать UPDATE rate, route processing latency, multipath membership, hardware FIB weights и время их установки.

На data plane измерять flow share, utilization, queue, drops, latency и application completion. Rollback должен восстановить источник, policy, advertised value, multipath set и FIB; возврат конфигурационного файла без возврата трафика не является rollback.

Heng Lu в Running-Code Primacy ставит наблюдаемый результат выше декларации стандарта. Minimum Initial Specification оставляет общими только детерминированные правила interoperability и safety. Частота обновления и цель трафика остаются у оператора, который несёт последствия.

Изменение capacity становится полезным BGP-сигналом только тогда, когда сеть умеет доказать, что новое знание улучшило delivery быстрее, чем породило нестабильность.