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#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
Ато!
про параметр no-prepend в local-as не знал
ОтветитьУдалитьа ibgp allowas-in 1 это я так понимаю аналог джуниперовского loop 1