Let's lab together right now with local-as


Сегодня у меня игривое настроение. Будем играть с параметром local-as и его ключами.
Вот видео для поднятия (#голыелюдидетектед)



А вот топология:

Мы хотим довести префиксы от R1 из AS3216 (это адрес лупбека 1.1.1.1) до AS 65136. Мы так же хотим, чтобы R1 видел сети от R5. На беду транспортом для нас служит эта же самая AS3216, правда внутри L3VPN. 

Ставим local-as


Пытаемся хитрить, ставим на обоих роутерах R3 и R4:
R3#sh run | sec router bgp
router bgp 3216
 no synchronization
 bgp log-neighbor-changes
 network 3.3.3.3 mask 255.255.255.255
 neighbor 20.0.0.1 remote-as 65120
 neighbor 20.0.0.1 local-as 65127
 neighbor 30.0.0.2 remote-as 3216
 neighbor 30.0.0.2 next-hop-self

На R5 видим, что 1.1.1.1 не пришел, пришли только адреса из ближней AS3216 и AS65120.
Кроме того в AS-Path странная конструкция...
R5#sh ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.2/32       40.0.0.1                               0 65127 3216 65127 65120 i
*> 3.3.3.3/32       40.0.0.1                               0 65127 3216 i
*> 4.4.4.4/32       40.0.0.1                 0             0 65127 3216 i
*> 5.5.5.5/32       0.0.0.0                  0         32768 i

Происходит вот что: R4 работает в AS3216. Соседство с R5 он строит от лица 65127 - так мы получаем ближний к нам AS-NUM. Однако, для защиты от петель, свою родную 3216 он тоже добавляет. Вторая 65127 (перед 65120) это дефолтное поведение. R3 получив префикс от 65120 через соседство от лица 65127 ставит ее препенд на входе в AS 3216. 

Естественно R3 не пускает сеть от R1:

R3#cle ip bgp 20.0.0.1

*Jan 22 11:00:27.699: BGP(0): 20.0.0.1 rcv UPDATE about 1.1.1.1/32 -- DENIED due to: AS-PATH contains our own AS;
*Jan 22 11:00:27.699: BGP(0): 20.0.0.1 rcv UPDATE w/ attr: nexthop 20.0.0.1, origin i, originator 0.0.0.0, merged path 65127 65120 65127, AS_PATH , community , extended community , SSA attribute

То же самое происходит на R1 - он не видит префикса от AS65136
Пока что наша задача не решена.

Ставим no-prepend


Еще раз - при подмене AS номер локальной AS препендится для входящих префиксов. Давайте проверим - отключим на R4.
R4#sh run | sec router bgp
router bgp 3216
 no synchronization
 bgp log-neighbor-changes
 network 4.4.4.4 mask 255.255.255.255
 neighbor 30.0.0.1 remote-as 3216
 neighbor 30.0.0.1 next-hop-self
 neighbor 40.0.0.2 remote-as 65136
 neighbor 40.0.0.2 local-as 65127 no-prepend

На R5 ничего не поменялось
R5#sh ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.2/32       40.0.0.1                               0 65127 3216 65127 65120 i
*> 3.3.3.3/32       40.0.0.1                               0 65127 3216 i
*> 4.4.4.4/32       40.0.0.1                 0             0 65127 3216 i
*> 5.5.5.5/32       0.0.0.0                  0         32768 i

А на R2 препенд, как и ожидалось, ушел:
R2#sh ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.1/32       10.0.0.1                 0             0 3216 i
*> 2.2.2.2/32       0.0.0.0                  0         32768 i
*> 3.3.3.3/32       20.0.0.2                 0             0 65127 3216 i
*> 4.4.4.4/32       20.0.0.2                               0 65127 3216 i
*> 5.5.5.5/32       20.0.0.2                               0 65127 3216 65136 i

*> 6.6.6.6/32       50.0.0.2                 0             0 65127 i

И чего? Все равно не работает!

Ставим no-prepend replace-as


Можно заменить настоящую (3216) или подставную (65127). По дефолту - убираем настоящую
R4(config-router)#neighbor 40.0.0.2 local-as 65127 no-prepend replace-as ?
  dual-as  Accept either real AS or local AS from the ebgp peer
R5#sh ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.2/32       40.0.0.1                               0 65127 65127 65120 i
*> 3.3.3.3/32       40.0.0.1                               0 65127 i
*> 4.4.4.4/32       40.0.0.1                 0             0 65127 i

*> 5.5.5.5/32       0.0.0.0                  0         32768 i

Как видите, R5 не видит больше 3216. Два 65127 - из за препенда на R3 (мы там ничего не настраивали). 
Давайте настроим и убедимся, что пол задачи сделано, R1 увидел сеть 5.5.5.5
R1#sh ip bgp | i 5.5.5.5
*> 5.5.5.5/32       10.0.0.2                               0 65120 65127 65136 i

А дальше....?


Чтож делать, чтобы 1.1.1.1 дошел до R5?
По сути - один способ: разрешить на R3 принимать префиксы со своим AS-NUM один разочек, ну вы знаете - один раз не логоваз):
R3#sh run | sec router bgp
router bgp 3216
 no synchronization
 bgp log-neighbor-changes
 network 3.3.3.3 mask 255.255.255.255
 neighbor 20.0.0.1 remote-as 65120
 neighbor 20.0.0.1 local-as 65127 no-prepend replace-as
 neighbor 20.0.0.1 allowas-in 1
 neighbor 30.0.0.2 remote-as 3216
 neighbor 30.0.0.2 next-hop-self

И тут вопрос, что он примет. Ответ - префиксы от 3216 и от 65127 (вот зачем на топологии R6)
R5#sh ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.1/32       40.0.0.1                               0 65127 65120 3216 i
*> 2.2.2.2/32       40.0.0.1                               0 65127 65120 i
*> 3.3.3.3/32       40.0.0.1                               0 65127 i
*> 4.4.4.4/32       40.0.0.1                 0             0 65127 i
*> 5.5.5.5/32       0.0.0.0                  0         32768 i
*> 6.6.6.6/32       40.0.0.1                               0 65127 65120 65127 i

Получилась вполне себе петля по 65127. По этому хорошо бы пофильтрить, что мы отдаем в 3216

Ну а работает то хоть?


R1#ping 5.5.5.5 sou 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 40/42/48 ms

Ато!

Комментарии

  1. про параметр no-prepend в local-as не знал
    а ibgp allowas-in 1 это я так понимаю аналог джуниперовского loop 1

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Cisco Policing and Shaping.

EDU-JUN-JMV lab on vMX. Part1.

Опять GRE. Мультикаст, MTU и мать всех статей.