Print

某局点MSR3620配置静态路由bfd无法up问题处理经验案例

2017-12-23 发表

某局点使用我司MSR3620路由器替换第三发设备,并且与第三方对接静态路由与BFD联动,配置后发现bfd会话无法正常up。之前第三方设备自己对接正常,两台HW关键配置如下

总部HW设备:
#
interface Vlanif316
 description to-XXX
 ip address x.x.x.x 255.255.255.252
#
interface Vlanif2000
 description MSTP-to-XX
 ip address x.x.x.x 255.255.255.252
#
bfd 2 bind peer-ip x.x.x.x source-ip x.x.x.x discriminator local 2
 discriminator remote 1
 commit
#
ip route-static y.y.y.y 255.255.255.192 x.x.x.x preference 80 track bfd-session 2
ip route-static y.y.y.y 255.255.255.192 x.x.x.x preference 100


分部第三方设备:

#
interface Vlanif316
 description to-xxx
 ip address x.x.x.x 255.255.255.252
#
interface Vlanif2000
 description xxx
 ip address x.x.x.x 255.255.255.252
#

bfd 1 bind peer-ip x.x.x.x source-ip x.x.x.x
 discriminator local 1
 discriminator remote 2
 commit
#
 ip route-static 0.0.0.0 0.0.0.0 x.x.x.x preference 80 track bfd-session 1
 ip route-static 0.0.0.0 0.0.0.0 x.x.x.x preference 100
#

总部是第三方设备,现在华三MSR3620需要替换HW总部设备,华三对应的单向bfd配置后BFD会话无法正常建立。

华三设备配置如下

 ip route-static 0.0.0.0 0 Vlan-interface1005 x.x.x.x bfd control-packet preference 80
#

收集了设备的调试信息如下

*Jan  4 03:29:21:639 2011 MSR3620 BFD/7/DEBUG: Send:Ctrl packet, Src:x.x.x.x, Dst:x.x.x.x, Ver:1, Diag:0, Sta:1 P/F/C/A/D/M:0/0/1/0/0/0, Mult:5 LD/RD:98/0, Tx:1000ms, Rx:1000ms, EchoRx:0ms
*Jan  4 03:29:21:640 2011 MSR3620 BFD/7/DEBUG: Session information not match. Discard packet.
*Jan  4 03:29:21:740 2011 MSR3620 BFD/7/DEBUG: Session information not match. Discard packet.
*Jan  4 03:29:22:639 2011 MSR3620 BFD/7/DEBUG: Send:Ctrl packet, Src:x.x.x.x, Dst:x.x.x.x, Ver:1, Diag:0, Sta:1 P/F/C/A/D/M:0/0/1/0/0/0, Mult:5 LD/RD:98/0, Tx:1000ms, Rx:1000ms, EchoRx:0ms
 

从调试信息可以看出,本端设备正常发送了BFD控制报文,对端发送的BFD控制报文由于没有匹配的会话信息,被设备丢弃了。没有具体调试信息,无法定位具体问题,对交换报文进行抓包,结果如下

从抓包可以看出,对端设备发送过来的BFD控制报的生存时间值是254,从组网来看我司设备与第三方设备是直连设备,发来报文的生存时间应该是255。RFC规定,当配置BFD为直连方式时,TTL需要被设置成255,认为是直连方式,如果TTL值不为最大值,这个BFD报文将会被丢弃,所以之前调试信息会看到BFD报文不匹配会话,直接被丢弃了。

需要第三方设备侧修改BFD报文的生存时间值为最大值255。修改后问题解决,bfd会话正常。

BFD在使用直连方式时生存时间需要被设置成最大值为255。