/
/
现场一台MCR S12508R的nqa twamp统计定期会出现丢一个包,导致网管收到工单问题,业务未受影响:
查看设备端口收光无问题,端口无CRC,ping测无丢包:
经远程排查分析,已确认是统计定时器在特定情况下未考虑隐式的类型转换,软件考虑不周导致的误判丢包,具体机制如下:
FPGA实现twamp的机制是,发射端发送报文时,将统计计数sidx(32bit)的低8bit 与发送计数send的低24 bit 组成32bit序列号, seq = (sidx << 24) | (send++ & MBITS(24));发射端收到反射回来的报文后,获取序列号中的8bit sidx(unsigned char seq = pkt->r.seq >> 24;),与此时的统计计数sidx的低8bit比较(unsigned char sidx = sess->stat.sidx;),即if (((sidx - seq) ) >2U),如果此时的统计计数sidx比反射回来的seq(sidx)大2,则认为该报文需要丢弃,不在统计范围内;当发生周期与统计周期相同时,且发送定时器先与统计定时器配置,报文发出时的序列号应为00 000000 , 01 000001, 02 000002,…, ff 0000ff,第255个报文发出时为ff0000ff, 此时,统计定时器超时sidx加1,变为0x100,当反射报文回来时,if (((sidx - seq) ) >2U)出现0-ff的情况,由于未考虑隐式的类型转换,将0-ff的结果扩展为32bit,出现 0-ff = FFFFFF01 > 2U,不统计该报文,将其丢弃。
综上原因,后续我们调整发送定时器与统计定时器的配置定时器,让统计定时器先与发送定时器配置,发出的报文序列号可以保证在一个统计周期,不会出现0-ff的情况,则不会丢包。后续发布R3608H07补丁解决。
后续调整设备发送定时器与统计定时器的配置定时器,让统计定时器先与发送定时器配置,发出的报文序列号可以保证在一个统计周期,不会出现0-ff的情况,则不会丢包。后续发布R3608H07补丁解决。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作