MSR3020设备与F友商设备对接协商bfd,当两端都开启md5时,F友商设备侧发过去的报文,MSR3020不响应,状态不会变为Init,MSR3020发出的报文,F友商侧设备可以正常响应;而不带MD5认证时,双方均可以正常响应。
通过收集debug信息,可以看到有如下报错:
*Nov 21 19:11:25:684 2013 H3C BFD/7/PKT_SND: Ctrl packet, Src:10.220.120.33, Dst:10.220.120.100, Ver:1, Diag:1, Sta:1, P/F/C/A/D/R:0/0/1/1/0/0, multi:5, LD/RD:53/0, Tx:5000ms, Rx:1000ms, H:0, L:7563084, Auth: 2
*Nov 21 19:11:25:687 2013 H3C BFD/7/PKT_RCV: Receive from source slot 0, Before StripOptions packet length is 76!
*Nov 21 19:11:25:687 2013 H3C BFD/7/PKT_RCV: Receive from source slot 0, After StripOptions packet length is 76!
*Nov 21 19:11:25:787 2013 H3C BFD/7/PKT_RCV: Ctrl packet, Src:10.220.120.100, Dst:10.220.120.33, Ver:1, Diag:0, Sta:2, P/F/C/A/D/R:0/0/1/1/0/0, multi:5, LD/RD:1/53, Tx:5000ms, Rx:1000ms, H:0, L:7563087, Auth: 2
*Nov 21 19:11:25:887 2013 H3C BFD/7/PKT_RCV: Key is not accordant(key不一致)
*Nov 21 19:11:25:938 2013 H3C BFD/7/PKT_RCV: MD5 or MMD5 authentication failed(验证失败)
*Nov 21 19:11:26:038 2013 H3C BFD/7/PKT_RCV: Authentication failed. Discard packet!(验证失败,丢弃包)
从抓包和debug来看,均为对端发送的过来的验证有无导致,但是友商侧不认可。实验室测试与C友商、H友商对接均无异常。
为了证明我司侧无异常,这里决定对抓取的报文进行深度解析并构造报文,手工计算校验值。
打开UE,新建一个文件,然后修改16进制
然后找到需要构造的报文,这里以15号报文为例:
打开该报文,找到BFD control message
这里需要做的就是构造authentication以上的报文,然后添加上密码,根据RFC标准,在结尾处进行0补全。
点击bfd control message信息,可见该段信息对应的16进制代码为:
点击checksum:
这里需要构造的就是,提取出bfd control message中除去checksum的部分,然后在后面添加密码xygm,再在后面对其进行0补全(RFC5880规定,key的值必须是16字节的二进制字符串,如果key长度不足16字节,必须用0补齐再计算checksum)。
将提取出的这部分16进制码输入到UE中,即为
因设置的验证密码为xygm,在后面添加密码:xygm
查询xygm对应的ascii码,即为78 79 67 6d,后面不足十六字节,采用0补全。
即为:
然后保存,利用MD5校验工具对其进行校验计算
对比报文中的checksum进行比较:
如此便得到了最终checksum,并验证了在报文在处理发送时,checksum是按照国际标准来的,并且无误。
对比友商的报文,可以看到报文校验值与传输过来的不一致,则证明友商在处理时未按照标准来做。
提交分析给友商之后,友商开发人员重新修改了代码,再次对接,未出现异常。
我司设备是严格按照国际标准做的,处理问题时,请对我司设备保持信息。
对于这样的问题,可以耐心点通过抓包构造函数,来对报文进行解析。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作