В своем предыдущем примере мы рассматривали модель, когда по
резервному каналу у нас приходит маршрут по умолчанию, схема эта вполне
рабочая и жизнеспособная. Но есть одно но, я об этом уже писал, весь
паразитный трафик к несуществующим адресам будет уходить на этот канал,
то есть туда будет уходить паразитный, безсмысленный трафик. Вполне
логично что это не совсем хорошо. То есть конечно можно работать и так,
но все же. Если позволяет оборудование(маршрутизаторы), лучше всего
принять два фуллвьюва и тут сбалансировать с помощью такой штуки как
local-preference. Вот эту модель мы и рассмотрим. За основу берем
прежнюю схему известную нам по статье BGP – route-map, as-path, prefix-list. Управляем анонсами.
Мы оставляем по прежнему роутер C резервным, а роутер B приоритетным
каналом, но через роутер С мы теперь примем полный список сети и
сбалансируем отдачу в роутер B c помощью local-preference.
На стороне роутера B и роутера C менять ничего не надо, все изменения нужно делать на нашем роутер A.
Схема взаимодействия такая:
Теперь переходим к настройкам нашего основного маршрутизатора Router
А, мы примем от обоих партнеров на роутер A, все что они анонсируют,
исключая default router. Нам теперь не нужен маршрут по умолчанию. Для
этого нам понадобится prefix-list запрещающий прием дефаулта:
ip prefix-list DEFAULT-IN-DENY seq5 deny 0.0.0.0/0 ip prefix-list DEFAULT-IN-DENY seq10 permit any
и назначим этот префикс лист на наши neighborы, по итогу получится такой конфиг:
router bgp 65535 bgp router-id 192.168.0.3 network 192.168.1.0/24 neighbor 192.168.0.6 remote-as 65533 neighbor 192.168.0.6 soft-reconfiguration inbound neighbor 192.168.0.6 prefix-list DEFAULT-IN-DENY in neighbor 192.168.0.6 route-map ME-OUT out neighbor 192.168.0.2 remote-as 65534 neighbor 192.168.0.2 soft-reconfiguration inbound neighbor 192.168.0.2 prefix-list DEFAULT-IN-DENY in neighbor 192.168.0.2 route-map ME-OUT out ! ip prefix-list DEFAULT-IN-DENY
seq5 deny 0.0.0.0/0 ip prefix-list DEFAULT-IN-DENY seq10 permit any ! ip as-path access-list ME-OUT permit ^$ ! route-map ME-OUT permit 10 match as-path ME-OUT !
И проверим, что мы получаем по bgp, какие маршруты.
show ip bgp
И увидим такую картину:
BGP table version is 0, local router ID is 192.168.0.3 Status codes: s suppressed, d damped, h history, * valid, > best, i
- internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path *> 192.168.1.0 0.0.0.0 032768 i * 192.168.2.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i * 192.168.3.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i * 192.168.4.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i * 192.168.5.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i * 192.168.6.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i * 192.168.7.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i * 192.168.8.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i * 192.168.9.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i * 192.168.10.0 192.168.0.2
0065534 i *> 192.168.0.6 0065533 i *> 192.168.11.0
192.168.0.2 0065534 i *> 192.168.12.0 192.168.0.2 0065534 i
Total number of prefixes 12
и в таблице маршрутизации видим такое:
B>* 192.168.2.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.3.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.4.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.5.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.6.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.7.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.8.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.9.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.10.0/24[20/0] via 192.168.0.6, em0, 20:16:52 B>* 192.168.11.0/24[20/0] via 192.168.0.2,
em0, 01:26:06 B>* 192.168.12.0/24[20/0] via 192.168.0.2, em0, 01:26:06
Мы видим картину, что все идет через резервный канал и причина тому,
то, что bgp router принял решение самостоятельно, базируясь
исключительно на том, что сессия с маршрутизатором 192.168.0.2
установлена позже и доверия ей меньше. Но нас это не устраивает –
приоритетный канал должен быть приоритетным.
Для этого нужно указать что анонсы пришедшие через 192.168.0.2 имеют более высокий приоритет.
Создадим route-map в котором и будем менять приоритет:
configure terminal route-map SET-PRIO permit 10 set local-preference 500
и теперь этот route-map припишем к neighbor:
configure terminal router bgp 65535 neighbor 192.168.0.2 route-map SET-PRIO in
и после этого нужно дернуть сессию с 192.168.0.2
clear ip bgp 192.168.0.2 soft in
Проверяем и видим:
show ip route bgp B>* 192.168.2.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.3.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.4.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.5.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.6.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.7.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.8.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.9.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.10.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.11.0/24[20/0] via 192.168.0.2, em0, 00:00:02 B>* 192.168.12.0/24[20/0] via 192.168.0.2,
em0, 00:00:02
Все работает как и задумывалось.
Потому что sh ip bgp показывает такую картину:
BGP table version is 0, local router ID is 192.168.0.3 Status codes: s suppressed, d damped, h history, * valid, > best, i
- internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path *> 192.168.1.0 0.0.0.0 032768 i *> 192.168.2.0 192.168.0.2
0500065534 i * 192.168.0.6 0065533 i *> 192.168.3.0 192.168.0.2 0500065534 i * 192.168.0.6 0065533 i *> 192.168.4.0 192.168.0.2 0500065534 i * 192.168.0.6 0065533 i *> 192.168.5.0 192.168.0.2 0500065534 i * 192.168.0.6 0065533 i *> 192.168.6.0 192.168.0.2 0500065534 i * 192.168.0.6 0065533 i *> 192.168.7.0 192.168.0.2 0500065534 i *
192.168.0.6 0065533 i *> 192.168.8.0 192.168.0.2 0500065534 i * 192.168.0.6 0065533 i *> 192.168.9.0 192.168.0.2 0500065534 i * 192.168.0.6 0065533 i *> 192.168.10.0 192.168.0.2 0500065534 i * 192.168.0.6 0065533 i *> 192.168.11.0 192.168.0.2 0500065534 i *> 192.168.12.0 192.168.0.2 0500065534 i
Напротив всех маршрутах от 192.168.0.2 появился LocPrf 500 – этот
маршрут имеет большую важность несмотря на стабильность сессии и тому
подобное.
Настройки роутера А будут иметь такой вид:
! router bgp 65535 bgp router-id 192.168.0.3 network 192.168.1.0/24 neighbor 192.168.0.6 remote-as 65533 neighbor 192.168.0.6 prefix-list DEFAULT-IN-DENY
in neighbor 192.168.0.6 route-map ME-OUT out neighbor 192.168.0.6 remote-as 65534 neighbor 192.168.0.2 prefix-list DEFAULT-IN-DENY in neighbor 192.168.0.2 route-map SET-PRIO in neighbor 192.168.0.2 route-map ME-OUT out ! ip prefix-list DEFAULT-IN-DENY seq5 deny 0.0.0.0/0 ip prefix-list DEFAULT-IN-DENY seq10 permit any ! ip as-path access-list ME-OUT permit ^$ ! route-map SET-PRIO permit 10 set local-preference 500 ! route-map ME-OUT permit 10 match as-path ME-OUT !
Эта схема так же вполне жизнеспособна и применяется для реальных систем.
Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/