В прошлой статье я коротко упомянул о фичи allowas-in, давайте на примере разберем как это работает и где может пригодиться.
Рассмотрим такую топологию:
Здесь мы вижим что у нас к AS1.3 подключена AS2, которая также подключена к AS1.1. Нам необходимо на AS2 увидеть маршруты от роутера AS2.1 (а именно 11.11.11.11/32).
AS2.1(config-router)#do sh run | s bgp
router bgp 2
no synchronization
bgp log-neighbor-changes
network 1.1.21.0 mask 255.255.255.0
network 11.11.11.11 mask 255.255.255.255
neighbor 1.1.21.1 remote-as 1
no auto-summary
AS2.1(config-router)#
Все правильно, смотрим на AS2 маршруты:
AS2(config-router)#do sh ip bgp | inc 11.11.11.11
AS2(config-router)#
посмотрим на AS3:
AS3#sh ip bgp | inc 11.11.11.11
*> 11.11.11.11/32 1.1.5.2 0 1 2 i
AS3#
На AS3 приходит. Почему не приходит на AS2? Правильно, потому что это та же система, и в AS-PATH, когда маршрут дойдет до AS2 уже будет содержаться 2-ка, а это говорит нам о чем? о петле, поэтому такой маршрут отбрасывается.
Если на AS2 запустить debug ip bgp update можно увидеть:
*Mar 11 15:47:11.735: BGP(0): 1.1.10.1 rcvd UPDATE w/ attr: nexthop 1.1.10.1, origin i, path 1 1 1 1 1 1
*Mar 11 15:47:11.739: BGP(0): 1.1.10.1 rcvd 1.1.21.0/24…duplicate ignored
*Mar 11 15:47:11.739: BGP(0): 1.1.10.1 rcvd 1.1.5.0/24…duplicate ignored
*Mar 11 15:47:11.743: BGP(0): 1.1.10.1 rcvd 1.1.13.0/24…duplicate ignored
*Mar 11 15:47:11.743: BGP(0): 1.1.10.1 rcvd UPDATE w/ attr: nexthop 1.1.10.1, origin i, metric 0, path 1 1 1 1 1 1
*Mar 11 15:47:11.747: BGP(0): 1.1.10.1 rcvd 1.1.12.0/24…duplicate ignored
*Mar 11 15:47:11.747: BGP(0): 1.1.10.1 rcvd 1.1.1.0/24…duplicate ignored
*Mar 11 15:47:11.747: BGP(0): 1.1.10.1 rcvd 1.1.10.0/24…duplicate ignored
*Mar 11 15:47:11.751: BGP(0): 1.1.10.1 rcv UPDATE w/ attr: nexthop 1.1.10.1, origin i, originator 0.0.0.0, path 1 1 1 1 1 1 2, community , extended community
*Mar 11 15:47:11.751: BGP(0): 1.1.10.1 rcv UPDATE about 11.11.11.11/32 — DENIED due to: AS-PATH contains our own AS;
Для того, что бы разрешить принимать такой маршрут, нужно воспользоваться фичей allowas-in:
AS2(config-router)#do sh run | s bgp
router bgp 2
bgp log-neighbor-changes
neighbor 1.1.2.3 remote-as 3
neighbor 1.1.10.1 remote-as 1
!
address-family ipv4
neighbor 1.1.2.3 activate
neighbor 1.1.10.1 activate
neighbor 1.1.10.1 allowas-in 1
no auto-summary
no synchronization
network 1.1.2.0 mask 255.255.255.0
network 1.1.10.0 mask 255.255.255.0
network 10.10.10.10 mask 255.255.255.255
exit-address-family
AS2(config-router)#
проверим получение маршрута:
AS2(config-router)#do sh ip bgp | inc 11.11.11.11
*> 11.11.11.11/32 1.1.10.1 0 1 1 1 1 1 1 2 i
Все честно, все работает.
neighbor 1.1.10.1 allowas-in 1, последняя единичка говорит нам о том сколько раз в AS-PATH может содержаться система, в нашем случае AS 2.