Настройка bgp conditional advertisement на Juniper MX при пропадании маршрута.

Автор: | 15.06.2019

Рассмотрим нетипичный случай bgp conditional advertisement при пропадании маршрута.
Задача :
Анонсировать определенные сети резервному аплинку только при пропадании дефолтного маршрута от основного аплинка.
Оба аплинка анонсируют Default route — 0/0.

Для реализации такой схемы, нам понадобится проверять наличие маршрута от основного аплинка. Для этого поместим его в отдельную таблицу с помощью RIB группы:

Настроим RIB группу и зададим политику импорта маршрута в новую таблицу:

set routing-options rib-groups inet.0_to_check-conditional export-rib inet.0
set routing-options rib-groups inet.0_to_check-conditional import-rib [inet.0  check-conditional.inet.0]
set routing-options rib-groups inet.0_to_check-conditional import-policy default-route-only-accept

Политика импорта:

set policy-options policy-statement default-route-only-accept term accept from route-filter 0.0.0.0/0 exact
set policy-options policy-statement default-route-only-accept term accept then accept
set policy-options policy-statement default-route-only-accept term deny then reject

Применим RIB группу к основному апстриму :

set protocols bgp group UPSTREAM type external
set protocols bgp group UPSTREAM local-as 64399
set protocols bgp group UPSTREAM family inet unicast rib-group  inet.0_to_check-conditional
set protocols bgp group UPSTREAM neighbor 10.10.10.1 description upstream-main
set protocols bgp group UPSTREAM neighbor 10.10.10.1 peer-as 64500

После коммита у нас должен появиться маршрут от основного аплинка в таблице check-conditional.inet.0

>show route table check-conditional.inet.0  
 check-conditional.inet.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
 = Active Route, - = Last Active, * = Both 
 0.0.0.0/0          *[BGP/170] 00:01:26, localpref 150
                       AS path: 64500 I, validation-state: unverified
                     > to  10.10.10.1 via ae10.10

Теперь мы можем настроить механизм проверки при анонсировании маршрутов бекапному апстриму.
Проверка основывается на встроенном в Junos механизме condition, в данном примере это работает таким образом:

Анонс наших сетей контролируется с помощью полиси upstream-backup-out.
В терме check проверятся наличие маршрута в таблице check-conditional.inet.0 . Если маршрут присутствует, наступает матч и исполняется action — reject.

Если маршрута в таблице check-conditional.inet.0 нет, то матча в терме check не будет и маршруты будут обработаны в терме announce.
Таким образом, при пропадании маршрута от основного аплинка наши сети будут проанонсированы в резерв.

Создадим полиси для проверки наличия маршрута :

set policy-options condition conditional_advertise if-route-exists 0.0.0.0/0
set policy-options condition conditional_advertise if-route-exists table check-conditional.inet.0

Добавим полиси для экспорта маршрутов резервному аплинку:

set policy-options policy-statement upstream-backup-out term check from prefix-list MY-NETWORKS
set policy-options policy-statement upstream-backup-out term check from condition conditional_advertise
set policy-options policy-statement upstream-backup-out term check then reject
set policy-options policy-statement upstream-backup-out term announce from prefix-list MY-NETWORKS 
set policy-options policy-statement upstream-backup-out term  announce  then accept
set policy-options policy-statement upstream-backup-out term discard-all then reject

Применим полиси к пиру:

set protocols bgp group UPSTREAM-BACKUP neighbor 10.20.20.1 export upstream-backup-out
Подписаться
Уведомить о

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии