BGP community. Настройка в Quagga.
По мере роста числа клиентов, количества BGP сессий вы убедитесь, что управлять становится все сложнее. То один попросит анонсировать в тот канал, но не анонсировать в другой и тому подобное. Потихоньку замечаешь что управление такой системой занимает черезчур много времени. Решение простое, нужно использовать community. Внедрение bgp сommunity снимает сразу ряд проблем. Первое – это мы можем передовать принадлежность комьюнити между своими маршрутизаторам, тем самым избавившись от проверок на каждом хосте access листами и второе, более важное, наши клиенты теперь смогут сами устанавливать принадлежность своих анонсов к той или иной community, тем самым сами смогут управлять поведением проходящих через вашу автономную систему анонсов. Главное все правильно и красиво спроектировать. А теперь вернемся к вопросу как же все таки работать c community.
Для того, что бы в этот вопросе разобраться построим нашу изначальную схему на базе community. Схема выглядит так:

Свою сеть 192.168.1.0/24 авнономной системы AS65535 мы будем анонсировать с community 65535:0, для этого надо вначале описать community:
vtysh configure terminal ip community list standart MYNET permit 65535:0
теперь нужно создать route-map который можно будет назначить сети:
route-map SET-COMMUNITY permit 10 set community 65535:0
и теперь припишем этот роуте мап к нашей сети:
network 192.168.1.0/24 route-map SET-COMMUNITY
Теперь наши анонсы будут помечены community 65535:0. Теперь мы можем запретить анонсировать что либо отличное от нашей автономной системы и сети входяще в нее, для этого сделаем такую route-map:
route-map ME-OUT permit 10 match community 65535:0
И поставим route-map на наши neighbors:
neighbor 192.168.0.2 route-map ME-OUT out neighbor 192.168.0.6 route-map ME-OUT out
То есть конфигурационный файл bgp роутера будет таким:
router bgp 65535 bgp router-id 192.168.0.1 network 192.168.1.0/24 neighbor 192.168.0.6 remote-as 65533 neighbor 192.168.0.6 soft-reconfiguration inbound neighbor 192.168.0.6 route-map ME-OUT out neighbor 192.168.0.2 remote-as 65534 neighbor 192.168.0.2 soft-reconfiguration inbound neighbor 192.168.0.2 route-map ME-OUT out ! ip community-list standard MYNET permit 65535:0 ! route-map ME-OUT permit 10 match community 65535:0
Таким образом же образом мы можем назначать комунити всем партнерам(neighbor) помечать их анонсы и дальше использовать эти признаки для фильтрации анонсов. Более того, наши клиенты могут сами назначать себе комунити и тем самым регулировать свои анонсы. Вам просто нужно спроектировать систему комунити своей системы и предоставить информацию клиентам.
Для того, что бы передавалось community необходимо указать в настройках:
neighbor 192.168.0.2 send-community both
хотя в последних версиях Quagga передача community разрешена по умолчанию. Ключевое слово both означает что передавать и extended и standart community.
В следующих статьях я постараюсь применить типичное применение community в работе.



