Атрибут community используется для маркирования маршрутов для того, чтобы можно было в дальнейшем обработать эти маршруты по каким-то специальным правилам. По умолчанию community не пересылается соседям. Как правило communityотображаются в формате AS:N, где AS – номер автономной системы, N - значение community, которое определяет политику маршрутизации трафика. Также существуют зарезервированные значения community. Если маршрутизатор получает маршрут в котором указано такое значение community, то он выполняет специфическое, предопределенное действие основанное на значении атрибута.
Зарезервированные значения community:
1. no-advertise – все маршруты, которые передаются с таким значением атрибута community, не должны анонсироваться другим BGP-соседям.
2. no-export - атрибут не пересылается между пирами внешних автономных систем (EBGPпирами).
3. no-export-subconfed– все маршруты, которые передаются с таким значением атрибута community, не должны анонсироваться внешнимBGP соседям. Т.е. рассылаются только пирам своей подсистемы.
4. internet – рассылается всем BGPсоседям.
Рассмотрим настройку на примере следующей топологии:
Начнем с базовой настройки – поднимем интерфейсы и назначим IPадреса:
AR1
interface GigabitEthernet 0/0/0
ip address 10.1.14.1 255.255.255.0
interface GigabitEthernet 0/0/1
ip address 10.1.12.1 255.255.255.0
interface loopback 0
ip address 1.1.1.1 255.255.255.255
AR2
interface GigabitEthernet 0/0/0
ip address 10.1.25.2 255.255.255.0
interface GigabitEthernet 0/0/1
ip address 10.1.12.2 255.255.255.0
interface GigabitEthernet 0/0/2
ip address 10.1.23.2 255.255.255.0
interface loopback 0
ip address 2.2.2.2 255.255.255.255
AR3
interface GigabitEthernet 0/0/2
ip address 10.1.23.3 255.255.255.0
interface loopback 0
ip address 3.3.3.3 255.255.255.255
AR4
interface GigabitEthernet 0/0/0
ip address 10.1.14.4 255.255.255.0
interface loopback 0
ip address 4.4.4.4 255.255.255.255
AR5
interface GigabitEthernet 0/0/0
ip address 10.1.25.5 255.255.255.0
interface loopback 0
ip address 5.5.5.5 255.255.255.255
Далее настраиваем BGP соседство между устройствами:
AR1
router id 1.1.1.1
bgp 64513
peer 10.1.12.2 as-number 64513
peer 10.1.14.4 as-number 64512
AR2
router id 2.2.2.2
bgp 64513
peer 10.1.12.1 as-number 64513
peer 10.1.23.3 as-number 64514
peer 10.1.25.5 as-number 64515
AR3
router id 3.3.3.3
bgp 64514
peer 10.1.23.2 as-number 64513
AR4
router id 4.4.4.4
bgp 64512
peer 10.1.14.1 as-number 64513
AR5
router id 5.5.5.5
bgp 64515
peer 10.1.25.2 as-number 64513
На этом базовая настройка окончена.
1. Настройка общего community атрибута. На маршрутизаторе AR5 поднимем три loopbackинтерфейса и объявим их в BGP процессе:
AR5
interface loopback 1
ip address 10.1.5.5 255.255.255.0
interface loopback 2
ip address 10.2.5.5 255.255.255.0
interface loopback 3
ip address 10.3.5.5 255.255.255.0
bgp 64515
network 10.1.5.5 255.255.255.0
network 10.2.5.5 255.255.255.0
network 10.3.5.5 255.255.255.0
AR2
bgp 64513
peer 10.1.12.1 next-hop-local
Проверим BGP таблицу маршрутизации на AR2 и AR4:
[AR2] display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.5.0/24 10.1.25.5 0 0 64515i
*> 10.2.5.0/24 10.1.25.5 0 0 64515i
*> 10.3.5.0/24 10.1.25.5 0 0 64515i
[AR4] display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.5.0/24 10.1.14.1 0 64513 64515i
*> 10.2.5.0/24 10.1.14.1 0 64513 64515i
*> 10.3.5.0/24 10.1.14.1 0 64513 64515i
Теперь на маршрутизаторе AR5 создадим политику при помощи которой будем добавлять communityатрибут 100 к маршруту 10.1.5.0/24:
AR5
acl number 2000
rule 5 permit source 10.1.5.0 0.0.0.255
route-policy com5 permit node 5
if-match acl 2000
apply community 100
bgp 64515
peer 10.1.25.2 route-policy com5 export
Также разрешим объявлять community атрибут на всех маршрутизаторах:
AR1
bgp 64513
peer 10.1.14.4 advertise-community
peer 10.1.12.2 advertise-community
AR2
bgp 64513
peer 10.1.12.1 advertise-community
peer 10.1.23.3 advertise-community
peer 10.1.25.5 advertise-community
AR3
bgp 64514
peer 10.1.23.2 advertise-community
AR4
bgp 64512
peer 10.1.14.1 advertise-community
AR5
bgp 64515
peer 10.1.25.2 advertise-community
Проверим передачу атрибута на маршрутизаторах AR2 и AR4:
[AR2] display bgp routing-table community
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Community
*> 10.1.5.0/24 10.1.25.5 0 0 <0:100>
[AR4] display bgp routing-table community
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Community
*> 10.1.5.0/24 10.1.14.1 0 <0:100>
2. Настройка зарезервированного community атрибута. При помощи политики маршрутизации, на маршрутизаторе AR5 добавим атрибут no-export к маршруту 10.2.5.0/24, а также атрибут no-advertise к маршруту 10.3.5.0/24:
AR5
acl 2100
rule 5 permit source 10.2.5.0 0.0.0.255
route-policy com5 permit node 10
if-match acl 2100
apply community no-export
acl number 2200
rule 5 permit source 10.3.5.0 0.0.0.255
route-policy com5 permit node 15
if-match acl 2200
apply community no-advertise
Проверим какие атрибуты получает маршуртизатор AR2:
[AR2] display bgp routing-table community
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Community
*> 10.1.5.0/24 10.1.25.5 0 0 <0:100>
*> 10.2.5.0/24 10.1.25.5 0 0 no-export
*> 10.3.5.0/24 10.1.25.5 0 0 no-advertise
Проверим таблицы маршрутизации на AR2, AR1, AR4 и проверим какие маршруты они получают:
[AR2] display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.1.5.0/24 10.1.25.5 0 0 64515i
*>i 10.2.5.0/24 10.1.25.5 0 0 64515i
*>i 10.3.5.0/24 10.1.25.5 0 0 64515i
[AR1] display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.1.5.0/24 10.1.12.2 0 100 0 64515i
*>i 10.2.5.0/24 10.1.12.2 0 100 0 64515i
[AR4] display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.5.0/24 10.1.14.1 0 64513 64515i
Как видим, AR2 не объявляет маршрут 10.2.5.0/24 за пределы своей автономной системы, но объявляет его маршрутизатору AR1, так как они находятся в одной автономной системе. И AR2 не объявляет маршрут 10.3.5.0/24 ни одному BGP устройству, так как у него атрибут no-advertise.
3. Настройка атрибута community для суммирования маршрутов. Поднимем loopbackинтерфейсы на AR3 и объявим их в BGPпроцесс.
AR3
interface loopback 1
ip address 10.1.3.3 255.255.255.0
interface loopback 2
ip address 10.2.3.3 255.255.255.0
bgp 64514
network 10.1.3.3 255.255.255.0
network 10.2.3.3 255.255.255.0
Мы хотим чтобы маршрут 10.1.5.0/24, объявляемый маршрутизатором AR5 и маршрут 10.2.3.0/24, объявляемый AR3 были просуммированы в сеть класса А 10.0.0.0/8. Community атрибут данного маршрута должен быть 200. Маршрут 10.1.3.0/24 должен быть объявлен маршрутизатору AR4. Для этого создадим политику маршрутизации на AR3, в которой будем добавлять атрибут 100 маршруту 10.2.3.0/24.
AR3
acl 2100
rule 5 permit source 10.2.3.0 0.0.0.255
route-policy com3 permit node 5
if-match acl 2100
apply community 100
route-policy com3 permit node 10
bgp 64514
peer 10.1.23.2 route-policy com3 export
На AR1, полученные маршруты 10.1.5.0/24 и 10.2.3.0/24 несут communityатрибут 100.
[AR1] display bgp routing-table community
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Community
*>i 10.1.5.0/24 10.1.12.2 0 100 0 <0:100>
*>i 10.2.3.0/24 10.1.12.2 0 100 0 <0:100>
*>i 10.2.5.0/24 10.1.12.2 0 100 0 no-export
Отфильтруем маршруты с community атрибутом 100. А также создадим две политики, в которых мы будем суммировать маршруты и добавлять атрибут 200:1 к суммированному маршруту:
AR1
ip community-filter 1 permit 100
route-policy match_com permit node 5
if-match community-filter 1
route-policy add_com permit node 5
apply community 200:1 additive
Далее на AR1 в BGP процессе будем суммировать маршруты, которые попадают под политику match_com и добавим к ним атрибут при помощи политики add_com:
AR1
bgp 64513
aggregate 10.0.0.0 255.0.0.0 detail-suppressed origin-policy match-com attribute-policy add_com
Проверим BGP таблицу маршрутизации на AR4:
[AR4] display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.0.0.0 10.1.14.1 0 64513i
*> 10.1.3.0/24 10.1.14.1 0 64513 64514i
[AR4] display bgp routing-table community
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Community
*> 10.0.0.0 10.1.14.1 0 <200:1>