组网及说明
问题描述
SR88F路由器接口使能bfd detect-interface,与对端NE40设备对接,BFD会话能正常up。但两端配置bfd authentication-mode hmac-msha1 1 plain abcd后,BFD会话down。
过程分析
首先确认两端配置,SR88F接口bfd认证算法hmac-msha1对应NE40算法met-sha1,密钥也确认一致,非配置问题。
在SR88F设备打开debug bfd packet查看协商过程,BFD报文有收友发,但收到BFD报文后提示seqNum not match, Discard packet,需要进一步检查报文序号参数。
*Jul 31 15:21:58:343 2023 SR88F BFD/7/DEBUG: -MDC=1-Slot=2; [K]L3 Send:Ctrl packet, Src:1.1.1.1, Dst:224.0.0.184, Ver:1, Diag:0, Sta:3 P/F/C/A/D/M:0/0/1/1/0/0, Mult:5 LD/RD:7562/6275, Tx:400ms, Rx:400ms, EchoRx:0ms, Auth: 5 ErrCode:0 ifIndex:241
*Jul 31 15:21:58:413 2023 SR88F BFD/7/DEBUG: -MDC=1-Slot=2; [K]Recv:Ctrl packet, Src:1.1.1.2, Dst:224.0.0.184, Ver:1, Diag:3, Sta:3 P/F/C/A/D/M:0/0/1/1/0/0, Mult:3 LD/RD:6275/7562, Tx:10ms, Rx:10ms, EchoRx:0ms, Auth: 5
*Jul 31 15:21:58:413 2023 SR88F BFD/7/DEBUG: -MDC=1-Slot=2; [K]Received (M)SHA1 packet seqNum not match. Discard packet.
%Jul 31 15:21:57:921 2023 SR88F IFNET/4/LINK_UPDOWN: -MDC=1; Line protocol state on the interface Pos2/3/1 changed to down.
接口BFD配置认证后,初始协商报文中会携带认证字段,包含seq num信息,设备每次发送的BFD报文seq num都会有变化。SR88F实现机制为逐包seq num + 1,并对收到的报文seq num进行校验,校验规则为:记录收到的第一个BFD报文seq num A,计算下一个报文seq num合理范围为A+3* BFD检测倍数(bfd detect-multiplier)。如果SR88F在配置BFD认证后收到的BFD报文seq num跳变,没有落在本端认为的合理范围内,则认为序号不匹配,丢弃报文。
解决方法
SR88F可以配置bfd detect-interface special-processing session-up可以规避该问题。