BGP и два канала

К одной удаленной точке, которая была доступна только по WiFi, появился 100 Мбит/с канал. Решили сделать так, чтобы при падении 100 Мбит/с канала связь переруливалась на WiFi, а при восстановлении — все переруливалось обратно (т. к. пользователям той удаленной точки мы предоставляем интернет). С обеих сторон стоят циски, есть небольшой пул «белых» IP-адресов.

Первым делом задал два default-маршрута с разной метрикой:

ip route 0.0.0.0 0.0.0.0 A.B.C.73
ip route 0.0.0.0 0.0.0.0 A.B.C.81 10

И, о чудо, при отключении 100 Мбит/с канала, в лабораторных условиях, естественно :-), трафик пошел через A.B.C.81 10. Вот только при восстановлении 100 Мбит/с канала назад ничего не перерулилось.
Решил реализовать все при помощи BGP.
Со стороны удаленной точки:

router bgp 65534
 bgp log-neighbor-changes
 network A.B.C.76 mask 255.255.255.252
 neighbor A.B.C.73 remote-as 65533
 neighbor A.B.C.73 send-community
 neighbor A.B.C.73 soft-reconfiguration inbound
 neighbor A.B.C.73 route-map FiberUplink-IN in
 neighbor A.B.C.73 route-map FiberUplink-out out
 neighbor A.B.C.81 remote-as 65533
 neighbor A.B.C.81 send-community
 neighbor A.B.C.81 soft-reconfiguration inbound
 neighbor A.B.C.81 route-map RadioUplink-IN in
 neighbor A.B.C.81 route-map RadioUplink-out out
!
access-list 1 permit 0.0.0.0
access-list 1 deny any
ip prefix-list RemotePrefixes seq 10 permit A.B.C.76/30
route-map RadioUplink-out permit 10
 match ip address prefix-list RemotePrefixes
!
route-map FiberUplink-out permit 10
 match ip address prefix-list RemotePrefixes
!
route-map FiberUplink-IN permit 10
 match ip address 1
 set weight 1000
!
route-map RadioUplink-IN permit 10
 match ip address 1
 set weight 10
!

Немного опишу:
network A.B.C.76 mask 255.255.255.252 — объявляю, что хочу аплинку проанонсировать эту подсеть.
access-list 1 permit 0.0.0.0
access-list 1 deny any — хочу принимать только default-префикс (full-view мне там не нужен, да и памяти на удаленной циске маловато)
route-map FiberUplink-IN permit 10
set weight 1000 — ставлю бОльший приоритет на скоростной аплинк

Теперь конфиг с главного узла:

router bgp 65533
 neighbor A.B.C.74 remote-as 65534
 neighbor A.B.C.74 send-community
 neighbor A.B.C.74 default-originate
 neighbor A.B.C.74 soft-reconfiguration inbound
 neighbor A.B.C.74 route-map RemoteFiberUplink-IN in
 neighbor A.B.C.74 route-map RemoteFiberUplink out
 neighbor A.B.C.82 remote-as 65534
 neighbor A.B.C.82 send-community
 neighbor A.B.C.82 default-originate
 neighbor A.B.C.82 soft-reconfiguration inbound
 neighbor A.B.C.82 route-map RemoteRadioUplink-IN in
 neighbor A.B.C.82 route-map RemoteRadioUplink out
!
ip prefix-list RemotePrefixes seq 10 permit A.B.C.76/30
access-list 10 permit 0.0.0.0
access-list 10 deny any
route-map RemoteFiberUplink-IN permit 10
 match ip address prefix-list RemotePrefixes
 set weight 1000
!
route-map RemoteRadioUplink-IN permit 10
 match ip address prefix-list RemotePrefixes
 set weight 10
!
route-map RemoteRadioUplink permit 10
 match ip address 10
!
route-map RemoteFiberUplink permit 10
 match ip address 10
!

Вот с такими настройками заработало именно так, как мне надо было. При падении основного канала нужно минуты, примерно, три на то, чтобы циски заметили падение, и секунду-две для восстановление основного маршрута при появлении основного аплинка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *