Июл 08 2009

BGP, quagga, контролируем входящий трафик с помощью prepend

Если с отдачей трафика все в принципе понятно, то контролировать ситуацию откуда пойдет входящий трафик намного сложнее. Для управления входящим трафиком мы должны влиять на принятие решения куда направлять трафик, по какому пути, маршрутизатора удаленной системы. Вообще то, актуальными параметрами влияющими на то куда пойдет трафик являются:
1. LocalPreferences — на удаленной автономной системы на этот параметр мы повлиять ну никак не сможем.
2. Длительность и стабильность bgp сессии отвечающей за маршрут
3. Размер сети. Чем меньше размер сети тем выше ее приоритет в таблице роутинга.
4. Количество автономных систем которые нужно пройти пакету для достижения автономной системы назначения. То есть длина AS-PATH.

Фактически повлиять мы можем только на поледние 2 пункта и если размер анонсируемой сети мы можем контролировать только в нескольких случаях, то длину AS-PATH нам контролировать проще. На этом методе мы и остановимся.

Для демонстрации работы prepend соберем такую схему из 3 маршрутизаторов:

prepend1

Соответственно настройки Router A будут иметь такой вид:

router bgp 65535
 bgp router-id 192.168.0.1
 network 192.168.1.0/24
 neighbor 192.168.0.2 remote-as 65534
 neighbor 192.168.0.2 next-hop-self
 neighbor 192.168.0.2 soft-reconfiguration inbound
 neighbor 192.168.0.6 remote-as 65533
 neighbor 192.168.0.6 next-hop-self
 neighbor 192.168.0.6 soft-reconfiguration inbound
!

Маршрутизатор RouterB:

router bgp 65534
 bgp router-id 192.168.0.2
 network 192.168.2.0/24
 neighbor 192.168.0.1 remote-as 65535
 neighbor 192.168.0.1 next-hop-self
 neighbor 192.168.0.1 soft-reconfiguration inbound
 neighbor 192.168.0.10 remote-as 65533
 neighbor 192.168.0.10 next-hop-self
 neighbor 192.168.0.10 soft-reconfiguration inbound
!

И роутер RouterC:

router bgp 65533
 bgp router-id 192.168.0.6
 network 192.168.3.0/24
 neighbor 192.168.0.5 remote-as 65535
 neighbor 192.168.0.5 next-hop-self
 neighbor 192.168.0.5 soft-reconfiguration inbound
 neighbor 192.168.0.9 remote-as 65534
 neighbor 192.168.0.9 next-hop-self
 neighbor 192.168.0.9 soft-reconfiguration inbound
!

Наш тестовый роутер 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                           0 65533 65534 i
*>                  192.168.0.2             0             0 65534 i
*> 192.168.3.0      192.168.0.6             0             0 65533 i
*                   192.168.0.2                           0 65534 65533 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                           0 65534 65535 i
*>                  192.168.0.5              0             0 65535 i
*  192.168.2.0      192.168.0.5                            0 65535 65534 i
*>                  192.168.0.9             0             0 65534 i
*> 192.168.3.0      0.0.0.0                  0         32768 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 65535 65535 65535 65535 65535

и теперь назначим этот 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                           0 65534 65535 i
*                   192.168.0.5              0             0 65535 65535 65535 65535 65535 65535 i
*  192.168.2.0      192.168.0.5                            0 65535 65535 65535 65535 65535 65535 65534 i
*>                  192.168.0.9             0             0 65534 i
*> 192.168.3.0      0.0.0.0                  0         32768 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 не принимаются.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть