Кратко

  • RFC 9616 добавляет к Babel измерение RTT между соседями без синхронизации их часов.
  • Сырые отсчёты проходят экспоненциальное сглаживание, ограниченное отображение в стоимость и гистерезис; рекомендованные параметры — 0,836, 10/120 мс и штраф 150.
  • Итоговая стоимость свидетельствует о работе заданного алгоритма, но не о пропускной способности, потерях, FIB, фактическом пути или задержке приложения.

В RFC 9616 удалённый обход не скрыт в примечании. Он стоит в начале спецификации. A, B и D находятся в Париже, C — в Токио. Между A и D есть два двухзвенных пути. Если туннель считается одним переходом, локальный путь через B и межконтинентальный через C выглядят одинаково. Трафик может выбирать C примерно в половине случаев.

Так проявляется предел абстракции. Базовый RFC 8966 не навязывает один способ вычисления метрики. Потери подходят радио, число переходов — простой проводной сети. Overlay делает топологическую близость ненадёжным заменителем физической.

Расширение измеряет круговое время в обычном обмене Hello и IHU. A отправляет t1, B сохраняет время приёма t1'. Затем B возвращает их в IHU и отправляет новый Hello с t2'. A принимает пакет в t2 и получает RTT = (t2 - t1) - (t2' - t1').

В каждой разности участвуют значения одних локальных часов. Общая эпоха и синхронизация не нужны. Метод восходит к Mills и RFC 891; RFC 5905 даёт связанный контекст работы со временем.

В IANA Babel Parameters Timestamp зарегистрирован как sub-TLV типа 3. В Hello тело занимает четыре октета, в IHU — восемь. Узкий формат добавляет совместимое наблюдение, не централизуя решение о его ценности.

Где поставлена отметка, то и измерено

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

RFC предлагает заранее вставить PadN, а перед фактической отправкой заменить его текущим временем. Это не мелкая оптимизация. Два продукта могут обмениваться одинаковым полем, но наблюдать разные участки системы.

32-битный счётчик микросекунд оборачивается примерно через 71 минуту. Перезагрузка назначает новый произвольный старт. Рекомендуемое трёхминутное окно отбрасывает будущие, старые и нелепые значения. Соседство может обновляться, а конкретный отсчёт — не участвовать в RTT.

Поэтому нужны возраст, доля принятия, отбрасывание и перезапуск. Одна сглаженная линия не показывает, современно ли измерение.

Сырой RTT запускает отрицательную обратную связь

Низкая задержка привлекает трафик. Трафик увеличивает очередь. RTT растёт, маршрут теряет предпочтение, освобождается и снова становится привлекательным. Если решение следует каждому отсчёту, оно гоняется за собственным эффектом.

Всплески создают одиночные пики, а близкие пути пересекаются вокруг общего уровня. Первичная работа A delay-based routing metric сообщает отсутствие колебаний в реальных тестах и минутный период в искусственно тяжёлых случаях. Это опора для стабилизации, а не универсальная гарантия.

Первый фильтр — RTT := α RTT + (1 - α) RTTn. Alpha рекомендуется от 0,8 до 0,9, по умолчанию 0,836. Прошлое подавляет выброс и задерживает признание нового состояния.

Второй фильтр переводит значение в ограниченную стоимость. Ниже rtt-min остаётся номинальная C. Между минимумом и максимумом стоимость растёт линейно. Выше rtt-max останавливается на C + max-rtt-penalty. Рекомендуются 10 мс, 120 мс и 150.

Третий фильтр — гистерезис. Малые движения в средней зоне не должны менять маршрут. Стабильность оплачивается памятью, потерей различий и временем.

Пороги — это сжатая политика

При 10 мс пути в 1 и 9 мс относятся к одному хорошему классу. Для задачи не ходить через другой континент этого может хватить. Для продукта, продающего единицы миллисекунд, такое равенство уничтожает нужный сигнал.

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

Снижение rtt-max повышает устойчивость, но уменьшает различимость. Повышение сохраняет данные и допускает больше движения. Штраф 150 не равен миллисекундам ущерба, пропускной способности, потерям или цене. Это вес в расчёте.

Значения по умолчанию требуют владельца не меньше пользовательских. Кто определил локальный диапазон? Когда связь должна стать последним резервом? Сколько времени допустимо держать устаревший путь? Без ответов настройка остаётся политикой без ответственности.

Спокойная маршрутизация может быть старой

RFC предупреждает: после изменения RTT алгоритм способен секунды или минуты оставаться субоптимальным. В фиксированном overlay это защищает от flapping и переупорядочивания. При высокой мобильности — сохраняет решение о уже исчезнувшей топологии.

Малое число переключений доказывает спокойствие, не актуальность. Испытание должно отдельно менять распространение, ёмкость и нагрузку; пересекать оба порога; перезапускать соседей; ждать wrap; перемещать узел. Временная линия связывает физическое событие, отсчёт, среднее, стоимость, кандидата, FIB и первый пакет.

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

Смешанная сеть продолжает работать разными смыслами

Непонимающая реализация игнорирует sub-TLV и разбирает остальное. Новые и старые узлы могут сосуществовать без петель и патологий из-за самого смешения, хотя маршрут может быть субоптимальным.

Это обеспечивает добровольное поэтапное внедрение. Но одна связь использует RTT, другая — переходы, третья — потери. Полный путь объединяет разные свидетельства.

Нужна матрица возможностей по соседствам. Следует испытать старый узел в роли transit, прекращение Timestamp новым узлом и пересечение островов метрик. Обратная совместимость — свидетельство продолжения работы, а не единого смысла.

Граница отличается от RFC 9647. YANG показывает состояние и конфигурацию; RFC 9616 создаёт стоимость из задержки. Видимость поля не подтверждает происхождение и результат.

Отказ от времени меняет маршрут

Произвольная эпоха не выдаёт непосредственно время загрузки или часовой пояс. Но точный локальный сигнал может помочь определить физическое положение. Узел вправе не отправлять Timestamp, после чего соседи возвращаются к hop count.

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

Так общий механизм остаётся тонким: совместимый формат, локальное принятие или отказ, проверяемый результат. Стандарт доступен; реальность создаётся внедрением.

Пять уровней квитанции

Первый — происхождение времени: версия, точка отметки, часы, wrap, reboot, принятые и отвергнутые отсчёты. Второй — преобразование: alpha, пороги, штраф, номинальная стоимость, гистерезис.

Третий — решение: кандидаты, стоимости, причина и время установления. Четвёртый — исполнение: RIB, FIB, next hop, пакет, потери. Пятый — услуга: распределение задержки, пропускная способность, завершение и видимая ошибка.

Только эта цепь поддерживает вывод об улучшении услуги в заданных условиях. Низкая стоимость отдельно подтверждает лишь локальное суждение алгоритма.

Источники