Если с отдачей трафика все в принципе понятно, то контролировать
ситуацию откуда пойдет входящий трафик намного сложнее. Для управления
входящим трафиком мы должны влиять на принятие решения куда направлять
трафик, по какому пути, маршрутизатора удаленной системы. Вообще то,
актуальными параметрами влияющими на то куда пойдет трафик являются:
1. LocalPreferences – на удаленной автономной системы на этот параметр мы повлиять ну никак не сможем.
2. Длительность и стабильность bgp сессии отвечающей за маршрут
3. Размер сети. Чем меньше размер сети тем выше ее приоритет в таблице роутинга.
4. Количество автономных систем которые нужно пройти пакету для достижения автономной системы назначения. То есть длина AS-PATH.
Фактически повлиять мы можем только на поледние 2 пункта и если
размер анонсируемой сети мы можем контролировать только в нескольких
случаях, то длину AS-PATH нам контролировать проще. На этом методе мы и
остановимся.
Для демонстрации работы prepend соберем такую схему из 3 маршрутизаторов:
Соответственно настройки Router A будут иметь такой вид:
Наш тестовый роутер Router A, посмотрим на нем таблицы bgp:
show ip bgp BGP table version is 0, local router ID is 192.168.0.1 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.2.0 192.168.0.6 06553365534
i *> 192.168.0.2 0065534 i *> 192.168.3.0 192.168.0.6 0065533
i * 192.168.0.2 06553465533 i
Как видно, активными являются те маршруты у которых наименьший AS-PATH.
Теперь изменим наши настройки на Router A так, что бы маршрутизация к немук пошла только через Router B.
А перед этим помотрим на маршруты bgp на роутере Router C:
show ip bgp BGP table version is 0, local router ID is 192.168.0.6 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 192.168.0.9 06553465535 i *> 192.168.0.5 0065535 i * 192.168.2.0 192.168.0.5 06553565534
i *> 192.168.0.9 0065534 i *> 192.168.3.0 0.0.0.0 032768 i
Total number of
prefixes 3
Как видно активными(best) являются маршруты у которых кратчайший AS-PATH.
Таблица роутинга выглядит так:
show ip route bgp Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route
B>* 192.168.2.0/24[20/0] via 192.168.0.9, eth0, 00:00:27 B>*
192.168.3.0/24[20/0] via 192.168.0.5, eth0, 00:00:22
ну так как и должно быть.
А теперь мы добавим на маршрутизаторе Router A prependов на сессию:
configure terminal route-map PREP-OUT permit 10 set as-path prepend 6553565535655356553565535
и теперь назначим этот route-map на сессию с AS65533.
configure terminal router bgp 65535 neighbor 192.168.0.6 route-map PREP-OUT out
и после этого можно дернуть сессию и посмотреть что получилось:
clear ip bgp 192.168.0.6 soft out
и смотрим на роутере Router C:
show ip bgp BGP table version is 0, local router ID is 192.168.0.6 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 192.168.0.9 06553465535
i * 192.168.0.5 00655356553565535655356553565535 i * 192.168.2.0 192.168.0.5 065535655356553565535655356553565534 i *> 192.168.0.9 0065534 i *> 192.168.3.0 0.0.0.0 032768 i
Total number of prefixes 3
Четко видно, что маршрут к сети 192.168.1.0/24 идет теперь через Router B:
sh ip route bgp Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route
B 192.168.1.0/24[20/0] via 192.168.0.9, em0, 00:06:15 B>*
192.168.2.0/24[20/0] via 192.168.0.9, em0, 00:52:45
Вот так вот мы и можем влиять на то откуда прийдет трафик, через
какой канал. В реальной жизни, где взаимодействуют десятки тысяч
автономных систем, все значительно сложнее. Четко спрогнозировать
откуда вернется трафик практически не реально, но повлиять на отдачу мы
можем.
И в дополнении, в начале я упоминал о том что сеть можно
анонсировать разными кусками в каналы, при использзовании этого метода
следует помнить, что обязательно необходимо завести в RIPE Route Object
для каждой из частей сети и то что анонсы префиксов меньше /24 не
принимаются.
Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/