BGP AS path filter
Материал из Xgu.ru
< BGP
Так как с каждым префиксом, который передает BGP, передается описание пути через автономные системы, то этот атрибут удобно использовать для создания политик.
С помощью специальных объектов описывается как должен выглядеть атрибут AS path. Например, какие номера автономных систем должны в нем встречаться. А затем эти объекты применяются в правилах фильтрации или при настройке политик с изменениями атрибутов.
Содержание |
[править] Сценарии для использования
Фильтрация маршрутов по AS path может использоваться в таких случаях:
- Клиент подключен к двум провайдерам, у него настроен BGP, и необходимо фильтровать трафик таким образом, чтобы провайдерам анонсировались только сети клиента. Необходимо избежать ситуации, когда клиент может стать транзитной AS из-за того, что он анонсирует сети провайдеров друг другу. В этом случае правилом может быть: анонсировать только сети с пустым значением AS path (локальные сети клиента).
- Для того чтобы повлиять на выбор лучшего маршрута, например, от конкретного соседа. Можно указывать какие номера автономных систем должны или не должны встречаться в маршруте.
- Если необходимо повлиять на выбор пути в локальную автономную систему из других автономных систем. Может применяться AS prepending — добавление AS в атрибуте AS path.
[править] Фильтрация маршрутов по AS path в Cisco
Отобразить маршруты, которые совпадают с указанным регулярным выражением:
dyn# show ip bgp regexp <regexp>
Создание фильтра:
dyn(config)# ip as-path access-list 1 <permit | deny> regexp
Пример настройки фильтра:
dyn(config)# ip as-path access-list 1 permit ^8_ dyn(config)# ip as-path access-list 1 permit _67_
Отобразить все настроенные фильтры или конкретный фильтр:
dyn# show ip as-path-access-list [number]
Отобразить маршруты, которые совпадают с указанным фильтром:
dyn# show ip bgp filter-list
Применение фильтра:
dyn(config-router)# neighbor <ip-address | peer-group-name> filter-list <acl-number> <in | out>
[править] Регулярные выражения
Символы, которые используются в регулярных выражениях:
- . любой символ, включая пробел
- * ноль или больше совпадений с выражением
- + одно или больше совпадений с выражением
- ? ноль или одно совпадение с выражением
- ^ начало строки
- $ конец строки
- _ любой разделитель (включая, начало, конец, пробел, табуляцию, запятую)
- \ не воспринимать следующий символ как специальный
- [] совпадение с одним из символов в диапазоне
- | логическое или
Примеры регулярных выражений:
- _67_ маршруты проходящие через AS 67
- ^67$ маршруты из непосредственно присоединенной AS 67
- _67$ маршруты отправленные из AS 67
- ^67_ сети находящиеся за AS 67
- ^$ маршруты локальной AS
- .* любая строка
[править] Пример тестирования регулярного выражения
Для того чтобы проверить отработает ли регулярное выражение так, как предполагалось, можно выполнить команду:
dyn# show ip bgp regexp <regexp>
Например, есть такая таблица BGP:
dyn1# sh ip bgp BGP table version is 9, local router ID is 197.1.8.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 100.67.67.0/24 192.168.20.8 0 8 67 i *> 100.78.78.0/24 192.168.20.8 0 8 67 i *> 100.100.6.0/24 192.168.20.8 0 8 67 i *> 192.168.1.0 0.0.0.0 0 32768 i r> 192.168.20.0 192.168.20.8 0 0 8 i *>i192.168.21.0 197.1.6.1 0 100 0 5 i *> 197.1.0.0/16 0.0.0.0 0 32768 i
Проверить как отработает регулярное выражение ^8_ (сети, которые находятся за автономной системой 8)
dyn1# sh ip bgp regexp ^8_ BGP table version is 9, local router ID is 197.1.8.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 100.67.67.0/24 192.168.20.8 0 8 67 i *> 100.78.78.0/24 192.168.20.8 0 8 67 i *> 100.100.6.0/24 192.168.20.8 0 8 67 i r> 192.168.20.0 192.168.20.8 0 0 8 i
Проверка регулярного выражения _67_ (маршруты проходящие через автономную систему 67):
dyn1# sh ip bgp regexp _67_ BGP table version is 9, local router ID is 197.1.8.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 100.67.67.0/24 192.168.20.8 0 8 67 i *> 100.78.78.0/24 192.168.20.8 0 8 67 i *> 100.100.6.0/24 192.168.20.8 0 8 67 i
[править] Пример проверки работы фильтра
Например, на маршрутизаторе настроен такой фильтр:
dyn1# show ip as-path-access-list 1 AS path access list 1 permit ^8_ permit _67_
Отобразить маршруты, которые совпадают с фильтром 1 (используется тот же маршрутизатор, что и в предыдущем примере):
dyn1# show ip bgp filter-list 1 BGP table version is 9, local router ID is 197.1.8.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 100.67.67.0/24 192.168.20.8 0 8 67 i *> 100.78.78.0/24 192.168.20.8 0 8 67 i *> 100.100.6.0/24 192.168.20.8 0 8 67 i r> 192.168.20.0 192.168.20.8 0 0 8 i
[править] Дополнительная информация
[править] Примечания