Network Education
КаталогГлоссарийПрогресс
BGP
  1. 1Структура курса и лабораторная топология
  2. 2Назначение BGP, автономные системы, типы сессий
  3. 3Установление BGP-соседства: TCP, типы сообщений и параметры сессии
  4. 4Анонсирование префиксов в BGP: network и redistribute
  5. 5Предотвращение петель: AS-PATH, Split Horizon, Full Mesh
  6. 6Route Reflector: масштабирование iBGP без Full Mesh
  7. 7BGP Add-Path: передача нескольких альтернативных путей
  8. 8Конфедерации BGP: разбиение AS на суб-AS
  9. 9Пир-группы для упрощения BGP-конфигурации
  10. 10Weight: первый атрибут в алгоритме Best Path Selection
  11. 11Local Preference: управление исходящим трафиком
  12. 12AS-PATH Prepend: влияние на входящий трафик
  13. 13MED: выбор точки входа в автономную систему
  14. 14BGP multipath: балансировка между несколькими путями
  15. 15Суммаризация в BGP: aggregate-address и AS-SET
  16. 16Suppress-map: выборочное подавление при суммаризации
  17. 17Advertise-map: тонкая настройка AS-SET
  18. 18Условное анонсирование префиксов
  19. 19Фильтрация BGP: prefix-list и AS-PATH regex
  20. 20Запрет транзита через Enterprise-сеть
  21. 21Генерация маршрута по умолчанию в BGP
  22. 22BGP community: маркировка и группировка префиксов
  23. 23Well-known community: no-export, no-advertise, local-AS
  24. 24Local AS: смена номера AS при миграции
  25. 25Allowas-in: приём апдейтов с собственной AS
  26. 26BFD: ускорение обнаружения отказа BGP-соседа
Каталог/Экспертный уровень: BGP и MPLS/BGP/Фильтрация BGP: prefix-list и AS-PATH regex

Фильтрация BGP: prefix-list и AS-PATH regex

19Урок 19 из 26

О чём этот урок

Фильтрация BGP-маршрутов с помощью prefix-list и регулярных выражений AS-PATH.

Ключевые выводы

  • Prefix-list — наиболее удобный инструмент фильтрации по конкретным префиксам и маскам.
  • Filter-list позволяет фильтровать маршруты по содержимому AS-PATH с помощью регулярных выражений.
  • Регулярное выражение _6$ отлавливает маршруты, порождённые в AS 6 (номер AS в конце AS-PATH).
  • Фильтрация может применяться как в направлении in, так и out на каждом BGP-соседе.
  • После изменения политик фильтрации необходимо выполнить clear ip bgp для их применения к существующим маршрутам.

Проверьте себя

Вопрос 1 из 5

Какой инструмент наиболее удобен для фильтрации BGP-маршрутов по конкретным префиксам?

Вопрос 2 из 5

Что делает filter-list в BGP?

Вопрос 3 из 5

Что отлавливает регулярное выражение _6$ в AS-PATH?

Вопрос 4 из 5

В каких направлениях может применяться фильтрация BGP-маршрутов?

Вопрос 5 из 5

Что необходимо сделать после изменения политик фильтрации для их применения к существующим маршрутам?

🔗Связанные уроки

🔗Смотрите также

Классификация и манипуляция над объектами в Cisco IOSCisco ROUTE: проектирование корпоративных сетей
→

Фильтрация BGP-маршрутов использует prefix-list — тот же инструмент классификации из CCNP ROUTE

BGP community: маркировка и группировка префиксовBGP
→

route-filtering и community — взаимодополняющие инструменты BGP-политик: prefix-list/route-map фильтрует по адресу, community — по тегу

Условное анонсирование префиксовBGP
→

conditional-advertisement использует те же prefix-list и route-map, что и route-filtering — оба контролируют, какие маршруты получают соседи, но с разной логикой

Запрет транзита через Enterprise-сетьBGP
→

non-transit-as реализуется через фильтрацию анонсов в BGP — те же инструменты (prefix-list, route-map), что и в route-filtering, но с конкретной целью

Условное анонсирование префиксовЗапрет транзита через Enterprise-сеть

Транскрипция

В этом уроке мы с вами поговорим о фильтрации BGP-префиксов. Для фильтрации можно использовать различные структуры. Наиболее часто используемая структура – это структура раутмап. Они, на самом деле, с вами уже говорили. То есть писали префикс листы, вкладывали их в раутмапы и раутмапы применяли на какого-то конкретного соседа. Направление либо in, либо out. Но, помимо прочего, если вам необходимо отфильтровать BGP-апдейты исключительно по подсетям, можно использовать структуры непосредственно фильтр-лист, либо же можно использовать акцесс-лист. Единственное, использование акцесс-листов я не рекомендую, поскольку это не очень удобно. А вот фильтрацию на основе фильтра-листа сделать, в принципе, можно.

Давайте вернемся к нашей топологии. И, например, перейдем на маршрутизатор R1. И попробуем настроить фильтры на получение маршрутов от маршрута R6. Итак, маршрута R1. В режиме конфигурации BGP. neighbor 10.1.6.6. Вы здесь увидите, что есть команда, которая называется prefix-list. То есть фильтрация апдейтов, которые улетают к neighbor, либо прилетают к неймору. Префикс-лист. Далее вводить название этого префикс-листа. Например, какой-то префикс-лист. И, собственно говоря, направление применения. Либо in, либо out. Давайте сейчас посмотрим, что я получаю от маршрутизатора R6.

Есть show.ipbgp.summary. Как видите, от маршрутизатора R6... А, на тяжелом месте я получаю только один префикс. Только один префикс. И наиболее вероятно, что это будет префикс show.ipbgp.6666. Это даже нет. А почему так? Show run.sax.pbgp. Давайте посмотрим настройку на маршрутизаторе R6. Show run.sax.pbgp. Давайте на маршрутизаторе R6 создадим просто несколько дополнительных интерфейсов и задвертазим их в BGP табличе. Например, создадим интерфейс LBGP 1 с IP адресом 66.6666.

Интерфейс LBGP 2 с IP адресом 166.6666. И поместим эти сети в BGP таблицу. Так. Так. Так. Итак, готово. Show IP BGP. Как видим, эти префиксы помещены в BGP table. Смотрим их на маршрутизаторе R1. Добавляем 66.6666. При этом я вижу, что... префикс не получаю.

Давайте я вижу IP BGP in. Пока я не могу сходу сказать, чем это связано. Так. Show IP BGP. 66. 66. 66. 66. 66. 66. 67. 67. 67. группу номер 1, show ipbgp, update группа 1. В частности, он отдается в сторону мастер-затора R1. Давайте сделаем так. show ipbgp neighbor 10.1.6.1. И есть команда advertise routes. В частности, как вы видите, мы отдаем ему все эти апдейты. В частности, мы отдаем ему 66, 66, 66, 166 и 666.

Show transaction.gp. Remote iOS 1.2.3. Show ipbgp summary. С девятым idle. Так, пока что для меня, на самом деле, это загадка. Давайте включим debug ipbgp updates и скажем clear ipbgp 10.1.6.6.in. Звездочку надо убрать. Итак, received 6666, duplicate ignore.

дополнительный. Допустим, что я получаю этот апдейт, в том числе, который порожден... А, все правильно. Извините. Извините. Моя ошибка. Я получаю все префиксы от 6-го мартизатора. Я почему-то искал первый мартизатор. Сказать здесь мартизатор. Так, так. Здесь все есть. Хорошо. Пишем фильтр, например. Говорим. ip prefix list. назовем ее pl from r6. И предположим, что я хочу получать только префиксы 6666 и 166. И не хочу получать префиксы 6666. Что я делаю?

Указываю 6666.32. И указываю здесь. 166, 166, 166, 166. И теперь я в режиме конфигурации BGP должен сказать neighbor 10.1.6.6, префикс list pl from r6 в направлении in. Сказать clear ip bgp 10.1.6.6. После этого, после этого, show ip bgp на 6666. У меня остается маршрут получен от маршрута R6. Для префикса 166. Update также остается. А вот show ip bgp для 66-го префикса.

По идее, он у меня должен пропасть. Да. Он должен пропасть. Сейчас я включу debug ipbgp updates. И запрошу pin. То-то-то. Я должен увидеть один deny. Префикса 166. Угу. Угу. Обратите внимание, что префикс 66-й, который получен от маршрута R6, он отброшен по причине фильтрации префикс листом. Префикс лист. Для чего вообще фильтровать, скажем, апдейты на вход? Наиболее частый сценарий может быть вот каким.

Может быть вот каким. Итак. Предположим, что красный, что красный, что красный, что красный, это конечный кастом. Конечный кастом. У него есть пиринг с желтым и с зеленым. При этом зеленая автономная система, это, скажем, сервис провайдер 2. Сервис провайдер 2. Ну а желтый, соответственно, это сервис провайдер 1. Сервис провайдер 1. И, например, для лаба, я, наверное, мы погасим вот этот линк. То есть нету вот этого линка. И, скажем, основной путь, то есть, скажем, основной путь должен быть через маршрутизатор, через желтый сервис провайдер, то есть это primary путь.

Путь через зеленый сервис провайдер, это standby, либо secondary. Например, так. Но при этом мы, например, хотим, скажем, чтобы все префиксы, скажем, которые принадлежат зеленому сервис провайдеру, то есть у этого провайдера могут быть сети, может быть какое-то количество сетей, которое так или иначе порождено прям непосредственно в автономной системе зеленого сервис провайдера. И мы хотим использовать зеленый сервис провайдер, то есть мы можем использовать зеленый сервис провайдер как primary, но только для префиксов, которые порождены в его собственной автономной системе. Почему? Для чего так делать? Ну, понимаете, если префикс принадлежит зеленой автономке,

то если мы трафик будем пускать через желтую, он в любом случае потом приземлится на зеленом. Так или иначе. Как этого достичь? Теоретически можно отслеживать информацию в BGP, букву глаз, писать скрипты, которые будут в режиме чуть ли не реального времени модифицировать ваши раутмапы, либо ваши префикс-листы для отлавливания новых префиксов, для добавления неактуальных. Но, но. Есть более простой способ. Есть более простой способ. Как будут выглядеть апдейты, которые прилетают от зеленого сервис-провайдера в сторону амортизатора R1? Там обязательно будет зашит номер автономной системы.

  1. Соответственно, если префикс порожден внутри зеленой автономной системы, это будет нам говорить о чем? О том, что внутри атрибута ASPath номер автономной системы 6 будет стоять где? Он будет стоять последний. Он будет стоять последний. Соответственно, маршрутизатор обрабатывает вот этот атрибут ASPath как обычную текстовую строку. Обычную текстовую строку. Стринг. Соответственно, поскольку это Unix-style, то в конце строки в конце строки у нас всегда будет стоять некий символ, который нам говорит о том, что строка заканчивается. В частности, если написать

вот эту всю строку, скажем, вот это положительность, здесь там есть x, y, z слов, то с точки зрения маршрутизатора, когда он ее будет обрабатывать, она будет выглядеть как? У нас есть эти номера автономных систем x, y, z, 6. Далее в начале строки есть спецсимвол, вот такая галочка. И в конце текста строки у нас стоит вот такой вот знак доллар. доллар. Мы можем вот эту строку, по сути говоря, пропустить через регекс, через регулярное выражение. Что мы будем искать с помощью этого регулярного выражения? Мы будем искать все аэспасы, которые заканчиваются на 6 и доллар. На 6 и доллар. и, например, для всех таких аэспасов мы можем повышать local preference. Например, выставлять local preference

равный, скажем, 200. Что тогда произойдет? Тогда префикс, который порожден непосредственно в зеленой автономной системе, для него мы будем использовать кратчайший путь через зеленую сервис провайдера. А если же номер автономной системы стоит, скажем, где-то просто в середине этого пути 6, то есть есть что-то в начале, какой-то x, есть что-то в конце, есть какой-то y, то такое выражение не будет отловлено с помощью нашего регулярного выражения. Для него local preference не применится. Не применится. Давайте попробуем это реализовать. Итак, на марштизаторе смотрим show ipbgp. Обречь внимание, что у нас, например, префикс 66, 60, 66,

для него есть три записи. Видите, для него есть, сейчас, секунду, посмотрим. show ipbgp, 166, 166, 166, 166, да? Так, для него есть две записи. Одна запись ispass 4578.6, другая запись 6. Давайте выставим для всех префиксов, которые были так или иначе порождены внутри шестой автономной системы, высокий local preference, чтобы всегда ходить на эти сети напрямую. Делается это следующим образом. Сначала создается фильтр с помощью команды ip ispass. Далее говорим название акцесс-листа.

Это будет именованный акцесс-лист, например. Мы будем отлавливать, скажем, автономную систему номер 6, поэтому мы дадим имя акцесс-листу номер 6. дальше говорим permit и дальше используется обычное регулярное выражение. В этом курсе я не буду вам рассказывать детали о том, как эти регулярные выражения составляются, но вы всегда можете воспользоваться Google. Для этого можно сделать cisco, bgp, regexp, соответственно там есть ссылки либо на community cisco.com либо на документацию непосредственно на самом сайте cisco.com в котором приводятся различные примеры построения регулярных выражений.

Итак, говорим айспас. Знаешь, мы хотим с вами сказать, что мы отлавливаем все префиксы, которые заканчиваются на автомом системе номер 6. То есть, мы сначала говорим, что выражение должно выглядеть вот так. Вот так. А для чего я делаю вот это? Для чего я делаю такое нижнее подчеркивание? Нижнее подчеркивание это пробел. Это пробел. Все дело в том, что если вы будете использовать просто регулярное выражение 6 долларов, то здесь же будут отловлены автопрефиксы, которые порождены, например, в автономной системе номер 66, 126, так далее. То есть, строка заканчивается на 6. Если же мы говорим регулярное выражение нижнее подчеркивание 6 долларов, то это говорит о том, что перед 6 обязательно должен стоять что?

Пробел. Итак, создали аэспас. Создали акцесс пас лист. Далее. Создаем. Я не уверен, что этот аэспас можно применить напрямую на соседа, но в любом случае нам нужно выставлять некий local preference, поэтому нам потребуется route map. Например, ну просто возьмем in, потому что мы должны его будем применить как для маршрутов, которые мы получаем от R4, так и для маршрутов, которые мы получаем от R6. rmin, то есть на permit, например, 10. здесь мы говорим match aspass

и номер 6, и говорим для этих позитивов выставляем set local preference 200, и не забываем создать дополнительную строку в раутмапе, чтобы все остальное не дропалось, пропускал. Другой мы говорим, то есть router bgp 123, neighbor 10.1.6.6 route map rmin, rmin, in, и neighbor 10.1.4.4 route map rmin, in, делаем clear ipbgp, in, сейчас немножечко подождем,

show ipbgp, update прилетели, к сожалению, забыл выключить дебаг, дебаг, дебаг, дебаг, дебаг. И обратите внимание, что для всех префиксов, которые были порождены в шестой автономной системе, выставлены

local preference 200. local preference есть. Помимо прочего, то есть помимо применения regexp, скажем, для ISPASS, вы можете применять те же самые regexp для фильтрации вашего вывода show ipbgp. Например, show ipbgp, далее здесь есть ключевая команда regexp, и, например, regexp. Здесь мы увидим все префиксы, которые порождены в шестой автономной системе. Например, можно сделать вот так, 45, 70, 80 с двумя пробелами. что мы здесь увидим? Мы здесь увидим префиксы, которые прошли транзитом через автономную систему 45, 78.

Вот они. Мы можем, например, сказать, совершают bgp regexp, скажем, пустой regexp. То есть, по сути, здесь мы увидим все префиксы, которые живут внутри нашей автономной системы, потому что у них аспас будет пустой. Аспас будет пустой. ? А Phil Ап created

Network Education

Бесплатная онлайн-академия сетевых технологий. Видеоуроки, транскрипции и структурированные треки обучения — от основ до продвинутого уровня.

ТрекиКаталогО проекте
© 2026 Network Education