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


[править] Дополнительная информация

[править] Примечания