Особенности применения "route-map continue"¶
Disclaimer: Иногда хочется странного...
Вот такая задача появилась:¶
Начальные условия:¶
Имеется локация с несимметричными по полосе каналами на которых есть ECMP. Данная локация имеет свою AS. По нагрузке один из каналов с меньшей полосой, при прочих равных условиях начинает достигать свего максимума по полосе
Задача:¶
- Снять часть трафика с данного канала.
Решение:¶
Сделать из него UCMP чз BGP не получается по техническим условиям. Как вариант разбалансить можно принудительным выставлением доп. prepend-a для "more specific" префиксов (больших /23)
Решить данную задачу можно через route-map
!Настройка Дистрибуции в локации
!
ip prefix-list CORE-OUT seq 5 permit 192.168.0.0/23 le 24
ip prefix-list CORE-OUT seq 10 permit 192.168.10.0/24 le 32
ip prefix-list CORE-OUT seq 15 permit 172.24.128.0/17 le 24
!
route-map RM-OUT permit 10
match ip address prefix-list PL-GE-24
set as-path prepend 1111
continue 20
route-map RM-OUT permit 20
match ip address prefix-list CORE-OUT
route-map RM-OUT deny 30
!
router bgp 11111
neighbor 2.2.2.2 remote-as 22222
!
address-family ipv4
neighbor 2.2.2.2 route-map RM-OUT out
ip prefix-list PL-GE-24 seq 10 permit 0.0.0.0/0 ge 24
Логика работы route-map RM-OUT:¶
1. Приходит prefix, соответствующий prefix-list CORE-OUT с маской от 17-24¶
например 172.24.128.0/17
1.1. Согласно правилу в route-map RM-OUT permit 10
префикс 172.24.128.0/17 не подпадает под его условия
и переходит к след prepend
1.2. Переходит к следующему правилу в route-map RM-OUT permit 20
префикс 172.24.128.0/17 подпадает под него у будет "сматчен"
и пройдет на выход
ИТОГО префикс попал без изменений в advertised-route
2. Приходит prefix, соостветствующий prefix-list CORE-OUT, с маской от 24 до 32¶
например 172.24.128.0/24
1.1. Согласно правилу в route-map RM-OUT permit 10
префикс 172.24.128.0/24 будет "сматчен",
на него будет установлен доп.препенд,
и согласно правилу "continue 20" данный префикс перейдет
в route-map RM-OUT permit 20
1.2. Согласно правилу в route-map RM-OUT permit 20
префикс 172.24.128.0/24 подпадает под него у будет "сматчен"
и пройдет на выход
ИТОГО префикс попал с с доп.препендом в advertised-route
3. Приходит prefix, несоответствующий prefix-list CORE-OUT например с маской 24 до 32¶
например 192.168.4.0/30
1.1. Согласно правилу в route-map RM-OUT permit 10
префикс 192.168.4.0/30 будет "сматчен",
на него будет установлен доп.препенд,
и согласно правилу "continue 20" данный префикс перейдет
в route-map RM-OUT permit 20
1.2. Согласно правилу в route-map RM-OUT permit 20
префикс 172.24.128.0/24 несоответствует правилу
и переходит на route-map RM-OUT deny 30
где отбрасывается
ИТОГО префикс не попал в advertised-route
ПО ИТОГУ¶
мы решили задачу расбаланса трафика с выставлением доп. препенда для "more specific" префиксов, т.о. трафик к "more specific" префиксаим будет идти через более широкий канал...
Важно
При использовании "continue" правило по умолчанию у route-map меняется с "implicit deny" на "implicit permit", п.э. чтобы работало как в нашем случае необходимо в явном виде указывать последним правилом "deny"
Cсылка на документацию Cisco: Once a route is matched in a route map permit entry with a continue command clause, it will not be processed by the implicit deny at the end of the route-map.