Заметки с работы. И снова про BGP.

Сегодня я размышляю про функционал Route-Refresh. Нужен он для того, чтобы не разрывать соединение с соседом, не сбрасывать таблицу маршрутизации, не прерывать сервисы, а просто перезапросить маршруты. И ей уже семь лет в обет.

Например, одна из наиболее частых ситуаций, где востребован этот функционал — обновление политики.

Итак, есть политика на импорт маршрутов в таблицу маршрутизации — она фильтрует, к примеру, все префиксы длиннее 23 битов, то есть /24 уже не проходит и не попадает в ТМ. Потом мы бац — и меняем правило — решили блокировать только префиксы длиннее 25. И /24 тогда уже должны быть импортированы.

Тогда BGP по-быстрому перезапрашивает их и применяет обновлённую политику.

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

Настало время сказать, что существует две BGP-таблицы:

— полученные маршруты — хранит всё.
— одобренные маршруты — хранит только то, что осталось после применения политик (и удовлетворяет прочим требованиям BGP).

И есть даже две команды, которые позволяют посмотреть эти таблицы

display bgp routing-table peer ipv4-address received-routes
display bgp routing-table peer ipv4-address accepted-routes

Однако в связи с упразднением показывают они одно и то же. Для экономии оперативной памяти маршруты, не прошедшие проверки, не хранятся в таблице полученных маршрутов. А при необходимости перезапрашиваются через Route Refresh.

Выключить этот режим можно командой peer keep-all-routes (для конкретного, как вы понимаете, соседа — ибо не плодите сверх необходимого — Оккама). К примеру, если сосед не поддерживает Route-Refresh (такие троглодиты ещё существуют?)

Ну а если поддерживает, то не обязательно включать keep-all-routes. Технически и наоборот верно — если хранить все маршруты, то можно и не перезапрашивать, но кто ж его выключит — он же базовый функционал BGP (уже почти).

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

Например, имея Route-refresh, вы, вероятно, могли бы захотеть в таблице полученных от соседа маршрутов видеть полный список до фильтрации, чтобы лицезреть работу политик.
Поделиться с друзьями
-->

Комментарии (3)


  1. vvpoloskin
    05.02.2017 20:42

    Ну это особенность хуавея (наверно и циски), на джунах хранится все в hidden.

    На счет того, что встречается оборудование с неподдерживаемым функционалом bgp, я совсем не удивляюсь. На практике попадаются спутниковые модемы (из динамики поддерживают вообще только рип) и промышленные GSM-роутеры с весьма скудным функционалом, а где-то еще служат xPON ONT с интересными прошивками и даже существуют сети DOCSIS, и по ним подключены корпоративные клиенты.


    1. eucariot
      06.02.2017 04:45

      Возможно. Идея с освобождением оперативной памяти выглядит вполне оправданной, учитывая, что Route Refresh Capability согласуется на этапе установления сессии.

      Ну и я смотрю на всё это с операторской колокольни, где BGP действительно нужен. Или стык крупного энтерпрайза с оператором. Про всякие мелкие железки понятно, что ничего не понянто.


    1. xcore78
      07.02.2017 17:02

      Хранится, если вы не примените keep none.