客户反映一台SR8808与中兴(GER08)设备对接时,在存在背景流量时出现直连ping包丢包问题。SR8808作为省核心,采用cpos子卡通过MP口与地税GER08对接。
当存在金昌地税(GER08)到数据中心(SR8808)方向的大量下载流量时(FTP服务器在金昌,客户端在数据中心),从SR8808 ping GER08 接口地址,存在时延抖动较大及丢包现象。如下:
Reply from 131.111.100.137: bytes=56 Sequence=1 ttl=255 time=234 ms
……
--- 131.111.100.137 ping statistics ---
200 packet(s) transmitted
198 packet(s) received
1.00% packet loss
round-trip min/avg/max = 10/55/466 ms
PING 131.111.100.137: 1000 data bytes, press CTRL_C to break
Reply from 131.111.100.137: bytes=1000 Sequence=1 ttl=255 time=285 ms
……
--- 131.111.100.137 ping statistics ---
200 packet(s) transmitted
198 packet(s) received
1.00% packet loss
round-trip min/avg/max = 18/59/423 ms
PING 131.111.100.137: 8000 data bytes, press CTRL_C to break
Reply from 131.111.100.137: bytes=8000 Sequence=1 ttl=255 time=37 ms
……
--- 131.111.100.137 ping statistics ---
200 packet(s) transmitted
195 packet(s) received
2.50% packet loss
round-trip min/avg/max = 36/72/441 ms
该问题原因为从GER08到SR88方向存在拥塞时GER08出方向报文存在MP报文序列号不连续及严重乱序问题。
SR88接收方向严格遵守RFC协议规定,对接收到的报文进行保序处理。当接收到的报文存在序列号不连续或者乱序时,SR8808会等待正确序列号的报文到达并试图对报文进行重排序,然后按报文固有顺序转发。
由于GER08发送给SR88的报文序列不连续,有时乱序严重,导致SR88等待正确序列号的时间较长,致使部分报文出现时延太大,或在规定时间内等待不到某个序号报文导致该序号前报文被老化丢弃。
SR88的具体实现如下:
比如正确的序列报文序列为:
1,2,3,4,5,6,7,8…
如果由于某种原因存在乱序或者丢包,实际进来的报文序列可能为:
1,2,3,5,6,4,…
在收到1,2,3后本来期望收到4,而实际收到的报文为5,6,则路由器应该先将5,6报文缓存,并延时等待,如果在规定时间内序列号为4的报文到达,则将4,5,6 这3个报文进行排序转发处理。如果在规定时间内序列号为4的报文没有到达,则认为序列号为4的报文丢弃,后续即使序列号为4的报文到达,该报文也会被丢弃。如果进来的报文存在严重乱序情况,保序处理将导致部分报文延时增加,部分报文被丢弃。
经过现场定位和进一步分析,中兴(GER08)设备上乱序报文产生原因可能有两个:
1、中兴(GER08)设备不支持MP分片。长度不同的报文经过多条链路发送占用时间不同,导致到达顺序完全不同。例如:MP接口上1500长度报文与64字节报文发送时间相差20倍。这意味着顺序发送的报文序列经过中兴设备后将形成完全无序序列。
2、MP接口拥塞时,没有流量整形一类配置加剧了报文乱序问题。
该问题可以通过在中兴(GER08)上配置限速(相当于简单流量整形)解决。中兴上相关命令如下:
rate-limit input localport 5000 7000 10000 conform-action transmit exceed-action drop
经过现场测试,中兴路由器上配置上述命令后,在SR88的MP口处理芯片上出现MP序列号丢失和序列号乱序的情况大大改善,该命令的作用是限制接口入方向带宽,使得报文在中兴路由器转发时不会在与SR88对接的接口上出现拥塞。
因此我们初步判定,中兴路由器在端口带宽拥塞的情况下会加剧序列号丢失和乱序。建议在中兴设备上配置此命令。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作