现场组网如下图
三台设备中RT1和RT2、RT2和RT3分别建立EBGP邻居RT1发布直连网段10.0.0.0/24路由,并聚合成16位路由发布给其邻居RT2,之后RT2传递给其邻居RT3,此时RT3上能够正常收到10.0.0.0/16路由。而当RT3发布一条10.0.0.254/32明细路由至BGP中时,RT2和RT3上的16位聚合路由都消失了。如果RT3取消发布32位明细路由,之后RT2和RT3都能够正常学到16位聚合路由。
正常情况下,RT3发布32位的10.0.0.254/32路由虽然包含在聚合路由10.0.0.0/16内,但二者是两条不同的路由(掩码长度不同),在RT2和RT3上应该是能够同时存在的,互相之间应没有影响。那上面问题现象中为何RT3一发布明细路由,聚合路由就会消失呢,可以先看一下各个设备的配置,以及出现问题时设备上的抓包信息。
在RT1上,BGP配置如下,除了聚合路由时配置的as-set参数外,没有其他不常见的配置。As-set参数是让聚合出的路由携带明细路由的as-path属性。上面的问题现象是否与as-set有关呢?下面可以看一下抓包。
#
bgp 100
peer 20.0.0.2 as-number 200
#
address-family ipv4 unicast
aggregate 10.0.0.0 255.255.0.0 as-set detail-suppressed
network 10.0.0.0 255.255.255.0
peer 20.0.0.2 enable
#
当RT3发布10.0.0.254/32路由时,抓包中路由更新情况如下如下,
1. RT3发布10.0.0.254/32给RT2,RT2将该明细路由update给RT1,携带的as-path属性为200 300;
2. RT1收到上面update后,更新了聚合路由,发出的10.0.0.0/16路由如下,路由中携带了明细路由的as-path,即100 {200,300}。这个地方有问题,RT2收到这条路由时,会比较路由中的as-path,发现其中有本地BGP的as号200,这样不会将这条BGP路由上表;
3. RT2收到RT1新发出的聚合路由,并对as-path检测后,向RT1发出了withdraw,以撤销聚合路由10.0.0.0/16。同时RT2也会向RT3发送同样的withdraw。这样就造成了上面描述的问题现象,RT2和RT3上不会再保留10.0.0.0/16的聚合路由,只留下10.0.0.254/32的明细路由。
1. 重新规划组网,例如更改RT3环回口地址,避免上述出现路由的AS-PATH与本地AS号重叠的情况;
2. RT1的BGP聚合路由时不要配as-set参数
该问题属于组网规划不当引出的问题。通过问题现象来看,比较容易联想到RT3发布的明细路由与RT1聚合路由在一个大网段内可能有异常。查看配置时,RT1聚合路由时配置as-set参数不太常用,看过手册上对该参数的解释后,可以有大致的方向是路由中携带的as-path属性触发防环机制导致路由撤销。具体路由发布、撤销的过程,则可以通过抓包或debug bgp all来进一步分析和确认。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作