TCP长连接业务通过S9700 SPU防火墙出现间歇性中断
问题描述
1, S9700版本为V200R003C00SPC500. SPU版本为V200R003C00SPC300
2, 客户端网关设在S3700地址为10.0.13.1,
3, 中间CE6800、CE12800、S9700为2层网络,S3700与SPU 3层对接(172.31.0.0/24),采用静态路由互指。
4, 服务器网关设在SPU板上,地址为10.0.11.1。SPU仅做了业务连通并未做任何策略控制。
5, 相关MAC地址请看图。
客户端与服务器之间建立TCP长连接跑TNS业务流量,业务出现间歇性中断。客户端重启业务进程后业务能恢复。
业务中断期间,客户端与服务器互ping没有异常。
告警信息
处理过程
1,业务中断期间,客户端和服务器互ping没有异常,,客户端重启业务进程后,故障恢复。由此可判断业务中断期间IP层可达。将故障锁定在传输层和应用层。
2, 在CE12800和S9700之间双向获取报文,发现在故障发生时客户端发出的TNS请求包在CE12800到S9700的时候还有,但是从S9700再回到CE12800的时候就没有了。由此可判断TNS流量在经过S9700和SPU之后被丢弃。
3,判断流量是丢在S9700还是SPU。由于S9700和SPU是通过内部逻辑接口互联,S9700的入方向无法部署抓报环境,所以无法通过抓报来定位。将服务器网关设在S9700,使TNS流量绕开SPU,故障不再复现。因此可判断业务流量是被SPU丢弃。
4,再次分析抓报信息,发现在客户端停止任何操作的情况下,业务每10分钟中断一次。而且该TNS业务为TCP流量,但该流量在中断之前没有发过任何类似keeplive消息来保持TCP的长连接。
5,SPU防火墙的TCP aging-time 默认为600s(10分钟)。增加aging-time时间,TNS业务持续时间相应增长。
6,通知第三方业务系统修改TNS业务模块,增加keeplive消息机制后,业务正常运行。
根因
解决方案
1,在第三方业务系统暂时未开发或修改keeplive消息机制前,与客户协商后适当修改tcp aging-time 参数。
2,第三方业务系统开发或修改keeplive消息机制为最终解决方案。
建议与总结
在企业集成项目中,我司设备经常用于承载第三方业务流量。由于第三方业务系统缺陷的无法预知性,会导致上述故障的发生。
遇到该类故障时应迅速了解业务流量类型和实现机制,这样能最快速的定位问题解决问题
云服务器爆款直降90%
新客首单¥68起 | 人人可享99元套餐,续费同价 | u2a指定配置低至2.5折1年,立即选购享更多福利!