Основная сложность заключается в том, что вы не можете напрямую контролировать, как провайдеры выбирают пути для доставки трафика в вашу сеть. Они используют свои собственные политики маршрутизации, основанные на таких факторах, как:
Поэтому для управления входящим трафиком необходимо использовать специальные механизмы, позволяющие влиять на выбор путей у операторов связи.
Управление AS_PATH с помощью AS Prepend
AS_PATH - это атрибут BGP, содержащий список всех автономных систем (AS), через которые проходит маршрут. Чем длиннее AS_PATH, тем менее предпочтительным считается путь.
Вы можете добавить свою AS несколько раз в AS_PATH (AS Prepend), чтобы сделать определенный путь менее привлекательным для операторов связи.
Схема:

hostname AS64500
syslog console
virtual-serial
exit
route-map permit
rule 10
exit
exit
router bgp log-neighbor-changes
router bgp 64500
neighbor 198.51.100.1
remote-as 64502
address-family ipv4 unicast
route-map permit out
enable
exit
enable
exit
neighbor 203.0.113.1
remote-as 64501
address-family ipv4 unicast
route-map permit out
enable
exit
enable
exit
address-family ipv4 unicast
network 192.168.0.0/20
exit
enable
exit
interface gigabitethernet 1/0/1
ip firewall disable
ip address 198.51.100.2/30
exit
interface gigabitethernet 1/0/2
ip firewall disable
ip address 203.0.113.2/30
exit
ip route 192.168.0.0/20 blackhole |
Задача: Необходимо организовать балансировку входящего трафика между двумя операторами связи с обеспечением отказоустойчивости.
Проблема: Без каких-либо настроек весь трафик с удалённой AS проходит только через ISP2 (64502), так как этот маршрут короче.
AS64505# show bgp ipv4 unicast
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 192.168.0.0/20 198.51.100.101 -- 100 0 64504 64502 64500 i
|
Решение:
|
Создаём два route-map и применяем их к двум BGP-соседствам:
route-map OUT-TO-AS64502
rule 10
match ip address 192.168.0.0/21
exit
rule 20
match ip address 192.168.0.0/20
exit
exit
route-map OUT-TO-AS64501
rule 10
match ip address 192.168.8.0/21
exit
rule 20
match ip address 192.168.0.0/20
exit
exit
router bgp log-neighbor-changes
router bgp 64500
neighbor 198.51.100.1
remote-as 64502
address-family ipv4 unicast
route-map OUT-TO-AS64502 out
enable
exit
enable
exit
neighbor 203.0.113.1
remote-as 64501
address-family ipv4 unicast
route-map OUT-TO-AS64501 out
enable
exit
enable
exit
address-family ipv4 unicast
network 192.168.8.0/21
network 192.168.0.0/20
network 192.168.0.0/21
exit
enable
exit
ip route 192.168.0.0/21 blackhole
ip route 192.168.8.0/21 blackhole |
Проверяем таблицу маршрутизации BGP на удалённом ресурсе после применения политик и видим, что путь к сети 192.168.8.0/21 идет через первого оператора, а к 192.168.0.0/21 через второго.
AS64505# show bgp ipv4 unicast
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 192.168.0.0/20 198.51.100.101 -- 100 0 64504 64502 64500 i
*> u 192.168.0.0/21 198.51.100.101 -- 100 0 64504 64502 64500 i
*> u 192.168.8.0/21 198.51.100.101 -- 100 0 64504 64503 64501 64500 i |
Задача: Обеспечить прохождение входящего трафика через первого оператора связи. Второй оператор должен использоваться только как резервный канал с автоматическим переключением при отказе основного.
Проблема: Без каких-либо настроек весь трафик с удалённой AS проходит только через ISP2 (64502), так как этот маршрут короче.
AS64505# show bgp ipv4 unicast
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 192.168.0.0/20 198.51.100.101 -- 100 0 64504 64502 64500 i
|
Решение:
Создадим route-map с использованием AS-Path Prepending и применим её к соседству со вторым провайдером:
route-map add_prepand
rule 10
action set as-path prepend 64500,64500
exit
exit
router bgp log-neighbor-changes
router bgp 64500
neighbor 198.51.100.1
remote-as 64502
address-family ipv4 unicast
route-map add_prepand out
enable
exit
enable
exit
neighbor 203.0.113.1
remote-as 64501
address-family ipv4 unicast
route-map permit out
enable
exit
enable
exit
address-family ipv4 unicast
network 192.168.0.0/20
exit
enable
exit |
В таблице маршрутизации BGP на маршрутизаторе локальной AS видно, что для маршрутов, анонсируемых второму оператору, применён AS-Path Prepending, вследствие чего длина атрибута AS_PATH увеличилась:
AS64500# show bgp ipv4 unicast neighbor 198.51.100.1 advertise-routes
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 192.168.0.0/20 198.51.100.2 -- -- -- 64500 64500 64500 i
BORDER-AS64500# show bgp ipv4 unicast neighbor 203.0.113.1 advertise-routes
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 192.168.0.0/20 203.0.113.2 -- -- -- 64500 i |
После применения политики в таблице маршрутизации BGP на удалённом маршрутизаторе видно, что маршрут к анонсируемой сети выбирается через первого оператора:
AS64505# show bgp ipv4 unicast
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 192.168.0.0/20 198.51.100.101 -- 100 0 64504 64503 64501 64500 i |