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消息机制后,业务正常运行。

根因

第三方业务系统TNS业务模块发送的业务流量是TCP流量,但是没有相关keeplive消息机制。导致在客户端静默情况下超过SPU所设置的TCP老化时间后被丢弃。

解决方案

1,在第三方业务系统暂时未开发或修改keeplive消息机制前,与客户协商后适当修改tcp aging-time 参数。

2,第三方业务系统开发或修改keeplive消息机制为最终解决方案。

建议与总结

在企业集成项目中,我司设备经常用于承载第三方业务流量。由于第三方业务系统缺陷的无法预知性,会导致上述故障的发生。

遇到该类故障时应迅速了解业务流量类型和实现机制,这样能最快速的定位问题解决问题

阅读剩余
THE END
阿里云ECS特惠活动
阿里云ECS服务器 - 限时特惠活动

云服务器爆款直降90%

新客首单¥68起 | 人人可享99元套餐,续费同价 | u2a指定配置低至2.5折1年,立即选购享更多福利!

新客首单¥68起
人人可享99元套餐
弹性计费
7x24小时售后
立即查看活动详情
阿里云ECS服务器特惠活动