Кратко

  • RFC 9494 позволяет держать некоторые маршруты после обычного Graceful Restart, но только для согласованной пары AFI/SAFI и в пределах Long-Lived Stale Time. LLGR_STALE показывает их возраст и ставит ниже любого свежего варианта.
  • Enke Chen — соавтор RFC 4724 и RFC 9494. Расширение не подтверждает жизнеспособность старого пути: локальный предел времени, NO_LLGR, синхронизация End-of-RIB, истечение срока и предупреждения о петлях сохраняют право на отказ.

Память о пути и сам путь

Control plane и forwarding plane могут отказать не одновременно. Процесс BGP перезапускается, а nexthop, label или tunnel остаётся в аппаратуре. Если сразу отозвать всё изученное состояние, локальный сбой управления превращается в более широкий перерыв. Если ничего не удалять, устаревшая запись способна часами скрывать потерю трафика.

BGP также переносит неоднородные данные. Обычная unicast reachability тесно связана с hop-by-hop пересылкой. VPN-состояние, обнаружение или signaling могут зависеть от сессии иначе. В туннелированной сети внутренний путь пакета отделён от control session, через которую о нём сообщили. Одна универсальная выдержка не отражает этих различий.

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

Короткая отсрочка в двенадцати битах

RFC 4724 опубликована в 2007 году за авторством Srihari Sangli, Enke Chen, Ramachandra Fernando, John Scudder и Yakov Rekhter. Она определяет Graceful Restart Capability и маркер End-of-RIB. Перезапускающийся speaker может сохранить forwarding state, а принимающий — временно оставить маршруты peer и пометить их stale.

Поле Restart Time занимает 12 бит, его кодируемый максимум — 4 095 секунд. RFC предлагает default не выше HOLDTIME, полученного в OPEN. Если сессия не восстановилась вовремя, удержанные маршруты удаляются. Если получатель раньше установил, что forwarding соседа больше не работает, ждать таймера не требуется.

В обычном GR предпочтение stale-маршрута не снижается. Так уменьшается churn во время предполагаемо короткого восстановления. RFC 8538 позже расширила перечень завершений сессии, при которых возможна graceful-процедура, и добавила Hard Reset для полной очистки. Сохранённая запись всё равно не стала доказательством доставки.

Долгая фаза меняет статус, а не только число

RFC 9494 вышла в ноябре 2023 года. Её авторы — James Uttaro, Enke Chen, Bruno Decraene и John G. Scudder. Участие Chen в базовой и долгой версиях — проверяемый вклад в коллективную работу IETF, а не единоличное изобретение или свидетельство конкретного внедрения.

LLGR Capability имеет код 71 и содержит наборы <AFI, SAFI, Flags, LLST>. Для каждой address family возможна своя Long-Lived Stale Time. Рекомендуемого default нет: назначение данных, масштаб и сценарий отказа различаются. Получатель может задать локальную верхнюю и нижнюю границу и уменьшить срок, предложенный peer.

LLGR не работает отдельно от обычного GR. Если сосед не объявил сопровождающую Graceful Restart Capability, длинную способность следует игнорировать. При двух ненулевых временах сначала идёт GR без изменения preference, затем LLGR с понижением. Restart Time, равный нулю, позволяет сразу перейти к деградированному режиму.

Это принципиально отличается от простого увеличения счётчика. Короткая фаза предполагает скорое подтверждение прежнего состояния. В длинной фазе такого предположения уже недостаточно. Старую информацию можно оставить как резерв, но нельзя давать ей тот же голос, что свежей.

Маркер сомнения нельзя снимать

При входе в LLGR helper запускает LLST для соответствующей AFI/SAFI и добавляет well-known community LLGR_STALE со значением 0xFFFF0006. Маршрут должен быть менее предпочтительным, чем любой вариант, не относящийся к least preferred. Если все кандидаты находятся на нижнем уровне, между ними снова действуют обычные tie-breaks.

Свежая альтернатива вытесняет старую. Если альтернативы нет, stale route может остаться best path и переносить пакеты. Это шанс сохранить услугу, но не заверение в исправности пути.

Метка сохраняется при распространении. LLGR_STALE не следует отправлять соседу без заявленной Capability, кроме узкой факультативной процедуры для внутренних IBGP- или confederation-связей. При дальнейшей рекламе community нельзя удалять. Иначе известная неопределённость превращается у следующего получателя в обычную reachability.

NO_LLGR со значением 0xFFFF0007 задаёт обратное решение. Помеченный ею маршрут нельзя держать по долгой процедуре: он удаляется по обычным правилам BGP. Отправитель может исключить неподходящие данные, а локальная политика получателя — добавить такое же исключение. Поддержка возможности не равна согласию на каждый маршрут.

Возврат связи не обнуляет возраст

Восстановленная TCP/BGP-сессия означает, что процессы снова разговаривают. Она не означает, что информация конкретной AFI/SAFI полностью обновлена. Граница синхронизации определяется End-of-RIB либо истечением selection deferral. LLST продолжает идти; если срок закончился, ещё не обновлённые stale routes удаляются.

Последовательные restarts также не должны каждый раз выдавать старому состоянию полный новый срок. Иначе никогда не подтверждённая запись могла бы омолаживаться бесконечно. Исключение заканчивается и тогда, когда вернувшийся peer больше не объявляет нужные способности, пропускает address family или не подтверждает сохранение forwarding state там, где это требуется.

В примере RFC Restart Time равна одной секунде, LLST — 3 600 секундам. После первой секунды маршруты получают LLGR_STALE и понижаются. Без backup пограничный router продолжает их использовать и рекламирует с отметкой способному внешнему peer. После истечения срока он удаляет их и отправляет withdrawals. Если через 180 секунд синхронизация завершена, свежие маршруты лишаются отметки. Внешний peer без LLGR получает withdrawal уже в начале долгой фазы.

Longest prefix не учитывает низкую preference

Первый риск возникает из-за двух разных этапов выбора. BGP сравнивает paths для одного prefix. IP forwarding сначала выбирает наиболее длинное совпадение. Устаревший more-specific способен перехватить трафик, хотя существует свежий less-specific. В BGP он стоит ниже, но пакеты всё равно попадают в более узкий blackhole.

Второй риск — несогласие внутри AS. RFC 9494 приводит топологию, где один router после depreference переключается на другой выход, а сосед всё ещё предпочитает прежний. Они начинают пересылать пакеты друг другу. Обычный GR тоже допускает краткую несогласованность, но длинная фаза делает её устойчивой.

Отсюда кардинальное правило документа: LLGR не рекомендуется для маршрутов, управляющих hop-by-hop forwarding внутри AS. Туннели вроде MPLS уменьшают некоторые виды петель; BGP-данные, далёкие от обычного next hop, тоже менее опасны. Но F bit и Forwarding State должны отражать действительно сохранённое состояние.

В VPN добавляется срок жизни label. После withdrawal старый label может быть выдан другому контексту. Если stale route всё ещё действует, то же число начинает означать иной объект. До включения LLGR для VPN-family минимальная задержка повторного использования label должна превышать максимальную LLST. Временная граница здесь защищает изоляцию.

Общая семантика, локальное принятие риска

Позднейшая работа Lu Heng о минимальной начальной спецификации, локализованном будущем решении и добровольном принятии даёт полезное разделение. Общий слой определяет Capability, область family, маркеры деградации и отказа, нижний ранг и детерминированное истечение. Сеть, несущая ущерб, выбирает peers, предел времени, архитектуру forwarding и причины раннего удаления.

Так совместимость не становится центральным приказом держать старые маршруты. Локальная свобода, в свою очередь, не позволяет снять LLGR_STALE и назвать прошлое настоящим. Стандарт задаёт значение состояния; получатель решает, стоит ли его применять.

Running-Code Primacy требует фактов сверх статуса Established: согласованные AFI/SAFI, полученная и фактически ограниченная LLST, число маршрутов в фазе, изменения best path, withdrawals неспособным peers, ход End-of-RIB, потери, признаки петли и окончательная очистка. Это последующая аналитическая рамка Sofia Ren на основе Lu Heng, не личное намерение Chen или авторов RFC.

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

Источники