Linux TCP SYN包不返回问题解析
来源:互联网 发布:mac os 10.12.6 原版 编辑:程序博客网 时间:2024/05/21 09:15
http://www.saview.net/archives/93
Linux TCP SYN包不返回问题解析
现象描述及排查过程:
最早是在网站图片cache集群中出现监控系统偶尔报告vip连接超时的现象,当时集群是在netscaler上以三角DSR模式提供服务的。开始认为是服务器在三角模式下直接接收外部请求,可能是数量太多导致服务器响应不及,当时在服务器上的抓包见下图,是红圈处服务器不回SYN包。于是切了一半流量到A10走NAT模式,此时监控系统也不报连接超时了。
再后来一次负载均衡设备升级,将A10的流量切换到F5,同样是NAT模式,却发现连接超时的现象又出现了,并且还很严重,抓包检查发现是相同的问题,仍然是服务器不响应SYN包。而此时服务器的连接数量并不多,甚至当我们将流量全部切走,使服务器空闲再去访问,依然出现这个状况,在服务器上抓包的结果与上面的截图相同。
解决方法及分析:
同时也在尝试修改各种tcp内核参数,在一次偶然情况下从网络上搜到说tcp_timestamps参数置为1时,timestamp数值有可能溢出造成TCP超时,尝试着将服务器上的tcp_timestamps参数置0,结果是问题解决,又尝试了在客户端置0、在负载均衡设备上将timestamp移除,满足任何一条都不会再出现服务器不响应SYN包的现象。
这个timestamp参数在rfc1323里面定义是为了提高tcp性能的扩展选项,用于计算RTT和减少重复发包,2.6内核的Linux默认是打开的,按它的作用来讲关闭掉应该也不会造成什么问题。事情至此可以说问题是解决了,但是我们还无法确定引起这个问题的原因,到底是如网上所说的tcp包头里面timestamp数值溢出4字节的边界导致超时呢,还是有别的原因,我们暂时也没有手段可以在这个问题上剖析其实质,正在求助。
附:Cache集群的拓扑结构(抓包都是在图中的HAproxy服务器上抓的)
- Linux TCP SYN包不返回问题解析
- TCP服务端收到syn但是不回复syn ack问题分析
- TCP服务端收到syn但是不回复syn ack问题分析
- Linux系统不响应SYN包的解决办法
- TCP粘包问题解析
- SYN包TCP选项的设置
- NAT网关自动去掉TCP syn包的时间戳
- NAT网关自动去掉TCP syn包的时间戳
- TCP包的类型 (SYN, FIN, ACK, PSH, RST, URG)
- linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)4 TCP SYN方式
- Linux网络编程---TCP三次握手,SYN洪水攻击,
- linux下用RAW socket发送syn包
- TCP SYN,ACK 详解
- TCP SYN Flooding
- TCP SYN,ACK 详解
- TCP SYN扫描
- TCP SYN Flooding
- tcp SYN扫描
- 一个简单的用户注册JavaBean
- 五行代码的疑惑(关于指针的深刻理解...)
- 处理Flex 页面的后退前进刷新关闭事件
- 15条理财理念
- 《Effective C#中文版:改善C#程序的50种方法》读书笔记
- Linux TCP SYN包不返回问题解析
- 复制文件夹函数
- 杂乱的知识
- Twitter与iOS 5整合推动月注册人数增25%
- java移位运算符详解
- hahaa
- jquery+asp.net实现的一个简易web聊天工具
- Create database link
- vim as php ide