Для проверки политик на R7 такие настройки:
router bgp 64504
network 130.0.0.0 mask 255.255.255.0
neighbor 100.0.0.5 remote-as 64500
neighbor 100.0.0.5 send-community
neighbor 100.0.0.5 route-map ISP out
!
route-map ISP permit 10
set community 64500:7 64500:50 64500:150 64500:500
Конфигурация R4:
ip community-list standard CLI deny 64500:50
ip community-list standard CLI deny 64500:100
ip community-list standard CLI deny 64500:150
ip community-list standard CLI deny 64500:1
ip community-list standard CLI deny 64500:2
ip community-list standard CLI deny 64500:3
ip community-list standard CLI permit internet
route-map CLIENTS permit 10
set comm-list CLI delete
set community 64501:300 64502:300 additive
router bgp 64500
neighbor AS64500 send-community
neighbor 100.0.0.6 route-map CLIENTS in
Конфигурация на примере R1:
ip community-list expanded ISP deny 64501:.* 64502:.*
ip community-list expanded ISP permit 64500:.*
route-map ISP_N permit 10
set comm-list ISP delete
router bgp 64500
neighbor 101.0.0.1 remote-as 64501
neighbor 101.0.0.1 send-community
neighbor 101.0.0.1 route-map ISP_N out
———Подробнее——-
На маршрутизаторах R1-R4, R7 настроено:
ip bgp-community new-format
и отправка community (на примере R4):
router bgp 64500
neighbor AS64500 send-community
Для проверки политик на R7 такие настройки:
router bgp 64504
bgp log-neighbor-changes
network 130.0.0.0 mask 255.255.255.0
neighbor 100.0.0.5 remote-as 64500
neighbor 100.0.0.5 send-community
neighbor 100.0.0.5 route-map ISP out
!
route-map ISP permit 10
set community 64500:7 64500:50 64500:150 64500:500
То есть, R7 отправляет на R4 префикс 130.0.0.0/24 с двумя community, которые определены в наших политиках 64500:50 и 64500:150 и с двумя значениями, которые не используются и должны отбрасываться.
Теперь на R4 маршрут 130.0.0.0/24 приходит с такими значениями community:
R4#sh ip bgp 130.0.0.0/24
BGP routing table entry for 130.0.0.0/24, version 7
Paths: (1 available, best #1, table default)
Advertised to update-groups:
20
Refresh Epoch 8
64504
100.0.0.6 from 100.0.0.6 (104.0.0.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 64500:7 64500:50 64500:150 64500:500
Выполним первую часть задания:
— все значения community приходящие от клиентов, которые не определены политикой, должны удаляться
Конфигурация выполняется на R4.
Сначала создаем community-list, который описывает разрешенные значения community. Так мы собираемся удалить все, кроме разрешенных, то исключаем разрешенные:
ip community-list standard CLI deny 64500:50
ip community-list standard CLI deny 64500:100
ip community-list standard CLI deny 64500:150
ip community-list standard CLI deny 64500:1
ip community-list standard CLI deny 64500:2
ip community-list standard CLI deny 64500:3
ip community-list standard CLI permit internet
Указываем в route-map, что будем удалять те community, которые указаны в строке permit в community-list:
route-map CLIENTS permit 10
set comm-list CLI delete
Применяем route-map к входящим обновлениям, которые получены от соседа:
router bgp 64500
neighbor AS64500 send-community
neighbor 100.0.0.6 route-map CLIENTS in
Проверяем. Теперь остались только разрешенные значения community:
R4#sh ip bgp 130.0.0.0/24
BGP routing table entry for 130.0.0.0/24, version 11
Paths: (1 available, best #1, table default)
Advertised to update-groups:
20
Refresh Epoch 8
64504
100.0.0.6 from 100.0.0.6 (104.0.0.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 64500:50 64500:150
Для проверки второй части задания добавляем несколько значений community в существующую route-map на R4:
route-map CLIENTS permit 10
set comm-list CLI delete
set community 64501:300 64502:300 additive
Теперь на R4:
R4#sh ip bgp 130.0.0.0/24
BGP routing table entry for 130.0.0.0/24, version 11
Paths: (1 available, best #1, table default)
Advertised to update-groups:
20
Refresh Epoch 8
64504
100.0.0.6 from 100.0.0.6 (104.0.0.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: 64500:50 64500:150 64501:300 64502:300
Выполняем вторую часть задания:
— значения community, которые проставлены клиентами, должны удаляться, при передаче префиксов соседним вышестоящим AS. При этом не должны удаляться другие значения, которые проставлены маршрутизаторами нашей AS.
Конфигурация на примере R1:
Так как теперь нам нужно указать шаблон значения community, используем expanded community-list (опять будем отбрасывать те значения, которые совпадут с permit):
ip community-list expanded ISP deny 64501:.* 64502:.*
ip community-list expanded ISP permit 64500:.*
Применяем в route-map:
route-map ISP_N permit 10
set comm-list ISP delete
И route-map к обновлениям, которые отправляются R5:
router bgp 64500
neighbor 101.0.0.1 remote-as 64501
neighbor 101.0.0.1 send-community
neighbor 101.0.0.1 route-map ISP_N out
Проверяем на R5:
R5#sh ip bgp 130.0.0.0/24
BGP routing table entry for 130.0.0.0/24, version 74
Paths: (3 available, best #3, table default)
Advertised to update-groups:
1
Refresh Epoch 1
64503 64502 64500 64504
101.0.0.10 from 101.0.0.10 (103.0.0.1)
Origin IGP, localpref 100, valid, external
Refresh Epoch 1
64502 64500 64504
101.0.0.6 from 101.0.0.6 (6.6.6.6)
Origin IGP, localpref 100, valid, external
Refresh Epoch 2
64500 64504
101.0.0.2 from 101.0.0.2 (100.0.0.1)
Origin IGP, localpref 100, valid, external, best
Community: 64501:300 64502:300
2 коментария
Спасибо пользователю ulypka007 за ответы. Мы их удалили, чтобы дать возможность другим подумать.
Ваши ответы были такими:
Этот ответ не совсем верный, так как:
— применен он на R1, к входящим обновлениям от AS 64501. А это не наш клиент, а наш апстрим. Даже если применить к клиентам, то:
— в Вашем варианте получилось, что если клиенты нашей AS анонсируют сети с принятыми значениями community, то мы их сети никому выше не анонсим. А остальные значения затираем.