Проблема управления входящим трафиком
Основная сложность заключается в том, что вы не можете напрямую контролировать, как провайдеры выбирают пути для доставки трафика в вашу сеть. Они используют свои собственные политики маршрутизации, основанные на таких факторах, как:
- Метрики протоколов внутренней маршрутизации (IGP);
- Атрибуты BGP (например, AS_PATH, Local Preference, Weight и т.д.);
Поэтому для управления входящим трафиком необходимо использовать специальные механизмы, позволяющие влиять на выбор путей у операторов связи.
Методы балансировки входящих маршрутов eBGP
- Использование различных префиксов
- Если ваша сеть имеет в собственности достаточно большую подсетей публичных IP-адресов, вы можете разбить её на отдельные префиксы и анонсировать каждый префикс через разные каналы связи. Таким образом, операторы связи будут направлять трафик для разных префиксов через разные каналы.
Управление AS_PATH с помощью AS Prepend
AS_PATH - это атрибут BGP, содержащий список всех автономных систем (AS), через которые проходит маршрут. Чем длиннее AS_PATH, тем менее предпочтительным считается путь.
Вы можете добавить свою AS несколько раз в AS_PATH (AS Prepend), чтобы сделать определенный путь менее привлекательным для операторов связи.
- Community-атрибуты
- В статье, сommunity-атрибуты рассматривать не будем т.к использование community-атрибутов может быть сложным, поскольку их интерпретация зависит от конкретного оператора связи, и они не регламентированы стандартами RFC. Поэтому многие операторы связи либо не поддерживают community-атрибуты, либо интерпретируют их по-своему.
Схема:
- Локальная AS: 64500
- Удаленная AS: 64505
- Анонсируемый префикс : 192.168.0.0/20
Использование различных префиксов
Задача: Необходимо организовать балансировку входящего трафика между двумя операторами связи с обеспечением отказоустойчивости.
Проблема: Без каких-либо настроек весь трафик с удалённой 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
Решение:
- Анонсируется префикс 192.168.0.0/20, который может быть разделён на две подсети: 192.168.0.0/21 и 192.168.8.0/21. Подсеть 192.168.0.0/21 планируется анонсировать через оператора AS64502, а подсеть 192.168.8.0/21 - через оператора AS64501. Такое распределение позволит организовать балансировку входящего трафика между двумя операторами.
- Для обеспечения отказоустойчивости также предусматривается анонсирование агрегированного префикса 192.168.0.0/20 через обоих операторов. В случае недоступности одного из каналов связи трафик к адресному пространству будет автоматически направляться через оставшегося оператора, обеспечивая непрерывную доступность сети.
- При нормальной работе более специфичные маршруты /21 будут приоритетны.
- Агрегат /20 сработает как резерв при падении одного из аплинков.
Создаём два 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_PATH с помощью AS Prepend
Задача: Обеспечить прохождение входящего трафика через первого оператора связи. Второй оператор должен использоваться только как резервный канал с автоматическим переключением при отказе основного.
Проблема: Без каких-либо настроек весь трафик с удалённой 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
Решение:
- В рассматриваемой схеме префикс анонсируется через двух операторов. Для первого оператора анонс передается без изменений, а для резервного оператора к атрибуту AS_PATH добавляется несколько дополнительных экземпляров номера автономной системы. Поскольку большинство BGP-маршрутизаторов при прочих равных условиях предпочитают маршрут с более коротким AS_PATH, входящий трафик будет направляться через первого оператора.
Создадим 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
