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 community: маркировка и группировка префиксов

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

22Урок 22 из 26

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

BGP community — атрибут-тег для маркировки префиксов. Позволяет применять политики на основе метки без изменения prefix-list'ов при добавлении новых маршрутов.

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

  • Community задаётся в формате AS:number (например, 123:1); один префикс может иметь несколько community.
  • По умолчанию community не передаются соседям — требуется явная команда neighbor X send-community both.
  • Команда set community в route-map заменяет все существующие community; ключевое слово additive добавляет к существующим.
  • Для matching community используют ip community-list; между несколькими значениями в одной строке работает логика AND.
  • Команда ip bgp-community new-format отображает community в формате AS:number вместо одного большого числа.

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

Вопрос 1 из 5

Что представляет собой атрибут BGP Community?

Вопрос 2 из 5

Какая команда необходима для передачи комьюнити BGP-соседу в Cisco IOS?

Вопрос 3 из 5

Какая логика применяется, если в одной строке community-list указано несколько комьюнити?

Вопрос 4 из 5

Что делает ключевое слово additive в команде set community?

Вопрос 5 из 5

Какой формат записи комьюнити является общепринятым?

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

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

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

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

⏩Продолжение темы

Well-known community: no-export, no-advertise, local-ASBGP
→

wellknown-community является продолжением темы community: сначала рассматриваются кастомные community, затем зарезервированные значения (no-export, local-AS, no-advertise)

Генерация маршрута по умолчанию в BGPWell-known community: no-export, no-advertise, local-AS

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

С темой следующего урока будут BGP-комьюнити. Что же это такое? По сути, их еще называют иногда BGP-тегами. Есть некий тег, который может быть добавлен в любой BGP-префикс. В общем-то и все. Однако, поскольку данный атрибут является транзитивным, он может передаваться между любыми IBGP-сессиями. И обычно он используется для маркировки, для окрашивания апдейтов. А на приемной стороне вы просто берете этот тег, вычленяете, то есть делаете match этот тег и применяете к нему необходимые вам порисы. Давайте рассмотрим пример.

Я думаю, что вам станет чуточку понятнее, почему очень удобно использовать BGP-комьюнити в BGP. Итак, предположим, что у нас есть следующий кейс. Скажем, на мастеризаторе R3 у нас может быть много префиксов жить на этом устройстве. И что мы можем захотеть сделать? Скажем, у нас здесь есть три подсети. Например, одна подсеть, вторая подсеть, третья подсеть. Мы, например, хотим, скажем, для первого префикса, скажем, выставить на мастеризаторе 1, выставить значение met. Абсолютно как пример. Met равен, например, 100.

А для оставшихся двух префиксов можно выставить met, например, 200. Либо выставить origin-type, выставить не met, а origin. Origin, например, IGP. А для этих префиксов выставить origin-type incomplete. Вы можете спросить, а зачем нам еще какой-то дополнительный тэп? Мы можем создать префикс листы, как мы это делали раньше, отловить эти префиксы внутри раутмата и дать им команду set. Вот. Ну, все так, все так. Но представьте, что вы однажды настроили конфигурацию, а с течением времени количество префиксов, для которых вы хотите инфорсить ваши политики, оно начинает увеличиваться. Что вам придется делать для этого? Чтобы применить те же самые политики, но только на новый префикс. Вам придется на муштизаторе R1 и на муштизаторе R2

создавать новые строчки в префикс-листах, которые будут отлавливать новые префиксы. Комьюнити же позволяет нам делать следующее. Мы окрашиваем все префиксы уже на муштизаторе R3, то есть сразу, когда они, например, только порождаются. А дальше, когда муштизатор R3 отдает апдейты, они отдаются уже с неизменными комьюнити. Давайте посмотрим, как это выглядит на практике. Итак, амортизатор R3. На амортизаторе R3 у меня есть showip или gp. Например, у меня есть префиксы 200.0.3, 200.1.3 и 200.2.3. Давайте для префикса 200.0.3 выставим одно комьюнити,

а для 200.0.1.3 и 200.0.2.3 выставим другое комьюнити. Обратите внимание, что эти префиксы у нас сейчас помещаются с помощью команды network. Нет, с помощью команды network. Но если ввести команду network полностью, то вы увидите, что здесь есть еще некая раутмапа. На самом деле, когда вы только помещаете префикс внутрь bgp-таблицы, вы сразу можете выставлять или модифицировать определенные атрибуты. Определенные атрибуты. Назовем раутмапу set attributes. Хорошо. Сделали. Единственное, наверное, это не самое удачное название для раутмапа. Скажем, зовем ее...

Ну, например, раутмапа. Скажем, выставим в комьюнити некое стол. Я хочу убедиться в том, что... Да, информация перезателась. Итак, создаем эту раутмапу. Мап. Мап. Раутмап. Команда set. Говорим set. Принимание, мы можем выставить либо комьюнити, либо через комьюнити лист. То есть мы можем создать предварительно некий список, в котором будут перечислены все нужные нам комьюнити. И дальше они будут просто выставлены в соответствии с этим листом. Либо мы можем выставить комьюнити. Первоначально. Обратите внимание, обратите внимание на запись комьюнити.

Обычно комьюнити задается в варианте. Номер автономной системы и просто некий номер, который вы выберете. Абсолютно любой. Мировая практика приводит к тому, что комьюнити задается через двоеточие, либо через точку. При этом первая часть адреса – это номер автономной системы, где этот комьюнити создан. И дальше просто некий значимый номер. Помимо прочего, у нас мы можем задать то же самое число, просто как число. То есть так же, как с 4-байтами автономной системы. Мы их можем сконфигурировать либо как одно большое число, либо, например, x.y. Либо x.y. Посмотрите, поскольку комьюнити у нас записывается в формате AS и там некое число.

Обратите внимание. AS с номерами 0 и AS с номерами 65535, они зарезервированы и не используются в качестве номеров BGP процессов. В соответствии с этим мы можем выделить некие номера комьюнити, которые явно не смогут быть использованы заказчику. Например, мы можем создать комьюнити, скажем, 60535, двоеточие, например, 1. Можем создать 65535, скажем, двоеточие 2. Можем создать 65535, двоеточие 3. Так вот, вот это так называемый зарезервированный комьюнити, и они получили свои названия. Я здесь могу немножко ошибаться,

могу ошибаться, но насколько я помню, насколько я помню, комьюнити noadvertise, то есть получила название 655351, не буду врать вам сейчас, не буду вам сейчас врать, но суть в том, что вот эти имена, эти имена, которые вы видите в возможности выставления, это на самом деле не что иное, просто как зашифрованное некое число. При этом, поскольку это зарезервированные значения, они известны на, ну, в теории они известны, должны быть для всех вендоров, и для всех железок они должны интерпретироваться одинаково. Суть в том, что просто, например, для комьюнити, например, local IS, для комьюнити noadvertise, noexport, на всех мортизаторах уже предустановлены правила

реакции мортизаторов, если они получат префикс, в котором будут содержаться эти зарезервированные комьюнити. О зарезервированных комьюнити мы поговорим чуть позже. Давайте пока завершим нашу задачку и выставим комьюнити, например, выставим в стуну 123, например, 1. Обратите внимание, мы можем выставить несколько комьюнити, то есть вы можете поставить несколько тегов к одному префиксу, то есть вы их перечисляете в одной строке. Например, выставим сеткомьюнити 123. Теперь посмотрим, что в IPVGP. В частности, у нас теперь будет отсылать префикс вот этот вот. Я здесь не вижу прицепленного комьюнити.

Важно, вручок. Трансакшн. Раутмап. Так, выведите внимание, как у меня комьюнити отображается. То есть если я ввел его через двоеточие, то он у меня отображается единым числом. Это не всегда бывает удобно, и есть команда IP. Community. No new format. И мне, наверное, здесь понадобится помощь зала. Cisco. EOS. Community. А, IPBGP Community. Здесь не есть. IPBGP, но, наверное, IPBGP Community. New format. Теперь, если мы скажем Show Run Section. Скачем. то комьюнити представлены в более удобном виде.

Так. RAM Community 100. 200. 003. Смотрим. Show IPBGP. 200. 003. Ну и обрежем внимание, что теперь у этого префикса появилась новая комьюнити. 123. 123. 123. Соответственно, этот префикс теперь отдается группе 18. То есть он отдается, наверное, нашим маршрутизаторам, которые находятся в этой же автономной системе. Проверим на маршрутизаторе R1. Show IPBGP 200. 003. Обратите внимание, что маршрутизатор R1 действительно получает префикс от маршрутизатора R3, но в нем нету комьюнити. В нем нету комьюнити. А почему так? Почему так? Если на мастер-театр скажу.

Show IPBGP Neighbors 3. 3. 3. 3. Наверное, сделать нужно греб по комьюнити. IPBGP Neighbor Нужен Detail. Есть команда Detail. Нет команды Detail. detail. Так. Family, security. Ну хорошо. Дело в том, что по умолчанию, по умолчанию комьюнити не передаются между соседями. Поскольку этот атрибут не обязательный, он не обязан присутствовать в BGP апдейтах, то в CSC use такая реализация, что BGP комьюнити автоматом не передается между соседями.

Что для этого можно сделать, чтобы они передавались? Можно зайти в категорию раутера BGP и сказать neighbor3333 дать команду send community. Обратите внимание, что комьюнити вовсе на самом деле двух типов, стандартные и расширенные. Здесь нет никакой магии. Это просто первоначально, когда комьюнити только появились, они были длиной, если не ошибаюсь, 16 бит. Это так называемый стандартный комьюнити. Но в течение времени длина просто возросла, поскольку комьюнити стали очень широко использоваться в мире, на них начали накладываться какие-то различные служебные функции, и поэтому появились в комьюнити большего размера, это extended комьюнити. По факту вы можете говорить send community boss, но не ошибетесь. Send community boss.

Хорошо. Нужно посмотреть, прилетел ли префикс. и, соответственно, то же самое нужно сделать с анафтизатора R3. 1, 2, 3. Neighbor 1, 1, 1, 1. Send community boss. Например, Neighbor 2, 2, 2, 2. Send community boss. Хорошо. Сейчас нужно проверить show ipbgp для префикса 3, 3, 3, 3. Ой, извините, не для префикса 3, 3. Show ipbgp для префикса 200, 0, 0, 3. Хорошо. Наверное, нам нужно сделать clear ipbgp out, выслать заново все апдейты. Обратите внимание, что на мастер-р1 появился префикс от мастер-р3,

и в нем выставлен комьюнити с этим числом. Чтобы у меня везде было одинаково, ipbgp комьюнити new формат. Отлично. Он появился на мастер-р1 и должен был точно так же появиться на мастер-р2. Проверяем show ipbgp 200, 0, 0, 0, 0, 0. Вот он здесь. Соответственно, теперь на маршрутизаторе r1 я, например, выставлю для префикса, который имеет комьюнити 1, 2, 3, скажем, origin type, я ставлю igp, а на маршрутизаторе r2 я выставлю origin type incomplete. Говорю, создаю route map, rm, например, from r3,

перемен 10, говорю match. Обратите внимание, здесь есть команда комьюнити. Обратите внимание, что вы здесь задаете не саму комьюнити, на которую вы ссылаетесь, а вы здесь задаете лист. То есть возможность отлова комьюнити присутствует только по заранее созданному листу. Этот лист вам необходимо создать с командой IP community list. Собственно говоря, можете выбрать, так же как в акцесс-листах, либо некий номер, либо имя. То есть там будет, если не ошибаюсь, я возьму expanded, назову комьюнити лист, назову его просто комьюнити лист.

Говорю, соответственно, я хочу поймать префикс, у которого комьюнити соответствует 123.1. Обратите внимание, если я скажу, например, 123.1, 123.2, 123.3, то в этом случае, в этом случае, между вот этими значениями применяется логика end. То есть префикс будет отловлен листом комьюнити лист только в том случае, если все три комьюнити атрибута будут представлены в BGP update. Если вы хотите использовать логику или, вам необходимо будет создать просто несколько строчек в этом акцесс-листе. В первой строке указать, например, комьюнити 123.1, во второй указать, например, 123.2 и так далее. Как альтернативой для отлова нескольких комьюнити, на самом деле, вы можете использовать регулярные выражения.

Например, вы знаете, что ваши все комьюнити начинаются на значение 1, 2, 3. А дальше может быть любое число, например. Или, например, это должно быть обязательно число 123. Например, вы можете это задать так. Например, 123 в таком духе. То есть здесь все упирается исключительно в использовании регулярных выражений. В моем примере, в моем примере я пока буду использовать 1 комьюнити. Итак, отлично. Комьюнити лист мы создали. Теперь мы должны вернуться в раутмапу и сказать match.community. Далее имя access-листа. Комьюнити лист. Комьюнити лист. Комьюнити лист. И говорим set, origin и, например, incomplete.

Хорошо. И теперь применяем данную, только что созданную, раутмапу. Раутер BGP 1, 2, 3. Для нейбора 3.3.3.3. Раутмапа в направлении int. И запросим для RGP 3.3.3.3.3. Проверяем. Show IPBGP 200.0.3. Комьюнити лист. Давайте немного подождем. Как вы видите, прошло время, к нам прилетели апдейт инвестициатора R3. И теперь на основе комьюнити 1, 2, 3 выставлен origin type incomplete.

Таким образом, если на маркетизаторе R3, например, добавится новый префикс, которого не было ранее, и если этот префикс также будет помечен в комьюнити, в нашем случае 1, 2, 3, то для нового префикса, origin type будет автоматически выставлен автоматически на маркетизаторе. Давайте проверим. Давайте проверим. Например, я создам нам штат R3.2.show.ip.interfee.brief новый loopback. Создам его интерфейс loopback 4.ip.adress 200.0.3.3. Должен уровень section bgp. Скажу router bgp 1, 2, 3. gp 1, 2, 3. Выставляю. Для префикса этого требуют комьюнити.

Проверяю на маркетизаторе R2. Видите, сразу видим origin type is incomplete. Согласитесь, что работать в таком виде с комьюнити гораздо удобнее во многих случаях, чем работать напрямую с префикс-листами. А что делать? Что делать, например, если вам нужно переписать комьюнити, либо добавить какое-то новое комьюнити, либо изменить существующее? Предположим, у нас такой вот сценарий. Мы договорились внутри своей администраторской команды, что внутри автономной системы у нас префикс бегает с комьюнити, скажем, 1, 2, 3, там, 2, 1. А с сервис-провайдером, например, мы договорились, что он будет принимать от нас префиксы только в том случае, если они помечены комьюнити, например, 123 и 100.

Что можно сделать? Что можно сделать? Мы можем взять оригинальное комьюнити, удалить его, мы можем сделать процедуру удаления комьюнити, плюс установку нового и в таком случае передать нам с азатой 5. Либо же мы можем необходимое комьюнити 123 и 100 использовать как добавочное, то есть плюс. И в таком случае на маршрутизаторе R5 появится префикс, у которого два комьюнити. Давайте посмотрим оба этих варианта. Прежде всего, мне нужно сделать так, чтобы между маршрутизаторами R2 и R5 комьюнити передавались.

Говорим, conf.t, router bgp123, neighbor 10.2.5.5, send community boss. И тоже самое мы сделаем на маршрутизаторе R5 для сессии с маршрутизатором R2. Раутор bgb4, 5, send community boss. Готово. 2.5.5.1 будет. 2.5.2, конечно же. 2.5.2, конечно же. Хорошо. Проверяем show ipbgp 200.0.3.3. Видите, здесь прилетел префикс community, все хорошо. Я тоже делаю ipbgp community new format. Хорошо.

На муштизаторе R2 создадим route map в сторону R5. И скажем set community. Например, сделаем community. Set community 123.100. 123.100. В этом случае сделаем clear ipbgp 10.2.5.5. А вот. А, сейчас ничего, конечно, не поменяется. Извиняюсь. Я забыл применить route map. Наибор 10.2.5. Route map. Название route map. Управление out.

Сделали. Передали маршрут. Теперь нам уже на 3R5. Обратите внимание, что вместо community, который был раньше, то есть это было число 123.100. То есть это было число 123.100. Сейчас оно трансформировалось в 123.100. Почему получается именно так? На самом деле это просто поведение Cisco IOS. Когда вы говорите set community, то на самом деле все предыдущие community удаляются. А вместо всех старых пишется то, что вы выставляете now. Если же вам нужно сделать так, чтобы у вас community добавлялись,

добавлялись, то вы указываете set community additive. Указываете set community additive. То есть это community будет использовано как добавочное ко всем community, которые у этого префикса уже были. Теперь проверяем на маршрутизатор R5. И как вы видите, на маршрутизатор R5 теперь два community. То есть и на их основе уже, например, сервисный провайдер, либо ваш партнер может применять какие-то свои политики. Редактор субтитров А.Семкин Корректор А.Егорова

Network Education

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

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