Кратко

  • RFC 1267 предусматривала полную передачу таблицы BGP в начале и только изменения после неё, поэтому каждый участник хранил текущую таблицу соседа на протяжении соединения.
  • RFC 4271 сделала закрытие соединения неявным отзывом. RFC 4724 разрешила согласованное исключение: маршруты отдельных семейств временно остаются stale до замены, End-of-RIB или истечения срока.
  • RFC 8538 обозначила Hard Reset как полный отказ от сохранения, а RFC 9494 потребовала для более долгой памяти LLGR-метку, наименьший приоритет, ограничение распространения и явное включение.

Первая таблица создавала общий контекст

В BGP-3 по RFC 1267 два участника сначала устанавливали транспортное соединение и обменивались начальными сообщениями. Первый поток данных содержал полную таблицу маршрутизации BGP. Затем UPDATE передавали только изменения.

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

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

Сохранённая таблица не становилась вечной записью личности, владения или разрешения. Это был вход управляющей плоскости из конкретного разговора. Работающий TCP-канал не подтверждал правильность всех маршрутов; строка в памяти не подтверждала FIB и тем более доставку пакета.

Закрытие обнуляло обычное право на маршрут

RFC 4271 разделила Adj-RIBs-In с полученными маршрутами, Loc-RIB с локальным выбором и Adj-RIBs-Out с подготовленными объявлениями. Получение, выбор и экспорт стали разными фактами.

Спецификация назвала три способа вывода маршрута из обслуживания: явный отзыв NLRI, замена другим маршрутом или закрытие BGP-соединения. Последний вариант неявно удаляет все маршруты, которыми обменялась эта пара участников.

При ошибке очищается связанная Adj-RIB-In, зависящие от соседа записи Loc-RIB становятся недействительными, лучший маршрут пересчитывается, наружу уходят отзывы или замены. Физический сосед не объявляется исчезнувшим. Истекает действие управляющего свидетельства, связанного с закрытой сессией.

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

Graceful Restart оформил отсрочку

RFC 4724 рассматривает перезапуск управляющего процесса BGP, при котором состояние пересылки могло сохраниться. Исключение начинается не с догадки о сбое, а с согласованной Graceful Restart Capability и области AFI/SAFI.

Поддержка capability, Restart State и Forwarding State отвечают на разные вопросы. Понимать механизм, находиться в перезапуске и заявлять о сохранённой пересылке — не одно и то же. Ни один из этих признаков не является трассой пакета.

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

У отсрочки несколько сроков взыскания. Если сессия не восстановилась за Restart Time, stale-маршруты удаляются. Если новая сессия не подтверждает пересылку, не включает семейство или capability, удаление происходит сразу. Новые UPDATE заменяют совпавшие старые записи.

End-of-RIB закрывает остаток. Даже пустое семейство может послать пустой UPDATE, чтобы явно завершить начальную передачу. После него все не заменённые stale-маршруты этого семейства удаляются. Молчание превращается в формальный конец инвентаризации.

Но завершённая инвентаризация не доказывает восстановление. RFC 4724 предупреждает о временных петлях и чёрных дырах, а также о снижении пользы, когда IGP и BGP перезапускаются вместе без согласованной поддержки. Управляющее завершение, пересылка и результат сервиса требуют разных свидетельств.

Hard Reset не позволил долгу продлеваться автоматически

RFC 8538 ввела согласуемый бит N. Если оба соседа обменялись им, graceful-поведение можно применить после NOTIFICATION или истечения Hold Time. Так отдельные ошибки получили явное право на сохранение, но не все ошибки по умолчанию.

Cease/Hard Reset требует полного сброса по базовому правилу. Причина уведомления и решение не сохранять старое состояние — две записи. Hard Reset сам по себе не раскрывает первопричину, зато явно прекращает разрешение на память.

Документ требует настраиваемого таймера stale, предлагает 180 секунд и запрещает бесконечность как значение по умолчанию. Иначе повторные сбросы могли бы рефинансировать маршрут, который ни разу не стал актуальным снова.

LLGR увеличил и срок, и цену ошибки

RFC 9494 продлевает сохранение с Long-Lived Graceful Restart за пределы обычного Restart Time. Помощник добавляет транзитивное сообщество LLGR_STALE; NO_LLGR исключает маршрут; долгоживущие старые записи получают наименьшее предпочтение и обычно не передаются соседям без LLGR.

Long-Lived Stale Time задаётся по AFI/SAFI и может быть локально сокращён. Для каждого семейства нужно положительное включение, настройка не может действовать по умолчанию. Дополнительное время становится зарегистрированным выбором оператора.

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

Источники