由于会话表老化时间配置不当导致现网业务经常中断

问题描述

防火墙作为服务器A的安全网关部署在网络出口处,与服务器B通信的报文都经过防火墙,防火墙上配置了一些安全策略,可以实现服务器A与服务器B之间的访问互通。

正常情况下,服务器A和服务器B运行相应的程序,建立TCP连接后,为防止连接因为无业务数据交互而中断,每30s服务器A、B之间会交互一种SMPP协议的报文,服务器A每隔30s会主动发起一个SMPP握手请求报文,服务器B收到后回复SMPP OK报文,A收到B的回复即判断连接正常。如果A发送SMPP握手请求后1s内未得到B的回复,A会重传SMPP握手请求,连续重传3次,如仍未得到回复则A认为与B之间的连接已中断,会以新的源端口发起一个新的TCP请求,重新建立TCP连接。

客户反映出现故障现象:服务器A每隔几分钟就会发生重新连接的情况,由于服务器B上的旧连接不会立即消失,就会出现在A侧只有一个连接,而B侧同时存在2、3个不同源端口的连接的情况,从而对业务产生影响。

处理过程

1、由于报文是时断时续,所以排除路由或包过滤配置不当导致报文不通的原因。

2、在服务器A上对服务器B发起长时间的Ping操作,观察十几分钟,没有丢包现象,排除网络质量不好的可能原因。

3、在服务器A侧使用工具进行报文分析。可以查看到正常时,每隔30s就有一次SMPP握手请求和回复报文的交互,出现异常时服务器A连续发送SMPP握手请求都无法收到对方的回应,之后重建TCP连接。由此可以判断服务器A确实将报文发送出来了。

4、在防火墙上执行命令display firewall session table source inside *.*.*.*(服务器A的地址)查看会话表状态,经过一段时间的观察,发现会话表每隔一段时间就会消失,之后再重新建立。

5、执行命令display firewall session aging-time,查看的会话表老化时间设置,发现TCP协议报文会话老化时间设置为30s。

这个时间与服务器之间握手报文的发送时间间隔正好相同。但服务器A发送SMPP握手报文的时间可能存在少量偏差,而且网络传送也有延时,实际握手报文的发送间隔有时可能会略大于30s。一旦30s内无数据传送,则会将此连接老化,此时服务器A再发送握手报文就会被因无法命中会话而被丢弃了,多次重传失败后,服务器A只得重建连接。

6、执行命令firewall session aging-time tcp 60,将防火墙上的TCP老化时间适当增大,设置为60s。经观察,故障解决。

根因

原因一:路由或包过滤配置不当,导致报文被过滤。

原因二:网络质量不好,导致报文被网络中设备丢弃。

原因三:会话表老化时间配置不当,导致报文因不能命中会话而被丢弃。

猜你喜欢

转载自blog.csdn.net/lnvjp/article/details/132332682