tcp协议timestamp字段导致问题分析
2013-09-26 22:13
246 查看
1.现象
不同主机C1,C2上的相同模块(开启timestamp),通过NAT网关(1个出口ip)访问同一服务S,主机C1connect成功,而主机C2connect失败
2.分析
根据现象上述问题明显和tcptimestmap有关;查看linux2.6.32内核源码,发现tcp_tw_recycle/tcp_timestamps都开启的条件下,60s(timewai时间)内同一源ip主机的socketconnect请求中的timestamp必须是递增的。
3.验证server端当tcp_tw_recycle和tcp_timestamps都是1的时候,会检查收到数据包TCP选项字段中的的timestamp(TSValue),当来自同一个IP地址(任意源端口号)后来的数据包中TCP选项字段如果有timestamp且比前面的数据包中的timestamp小,则server不做ACK响应
4.解决方法1.服务器端不要将tcp_tw_recycle字段和tcp_timestamps字段同时设为12.客户端把tcp_timestamps字段设0,这样不会发送TCP选项字段中的timestamps选项对于服务提供方1较适合个人建议关闭tcp_tw_recycle选项,而不是timestamp;因为在tcptimestamp关闭的条件下,开启tcp_tw_recycle是不起作用的;而tcptimestamp可以独立开启并起作用。-------------------/proc/sys/net/ipv4/在该目录下进行修改,重启后会失效。添加进/etc/rc.localecho 1 >/proc/sys/net/ipv4/tcptimestamp
不同主机C1,C2上的相同模块(开启timestamp),通过NAT网关(1个出口ip)访问同一服务S,主机C1connect成功,而主机C2connect失败
2.分析
根据现象上述问题明显和tcptimestmap有关;查看linux2.6.32内核源码,发现tcp_tw_recycle/tcp_timestamps都开启的条件下,60s(timewai时间)内同一源ip主机的socketconnect请求中的timestamp必须是递增的。
3.验证server端当tcp_tw_recycle和tcp_timestamps都是1的时候,会检查收到数据包TCP选项字段中的的timestamp(TSValue),当来自同一个IP地址(任意源端口号)后来的数据包中TCP选项字段如果有timestamp且比前面的数据包中的timestamp小,则server不做ACK响应
4.解决方法1.服务器端不要将tcp_tw_recycle字段和tcp_timestamps字段同时设为12.客户端把tcp_timestamps字段设0,这样不会发送TCP选项字段中的timestamps选项对于服务提供方1较适合个人建议关闭tcp_tw_recycle选项,而不是timestamp;因为在tcptimestamp关闭的条件下,开启tcp_tw_recycle是不起作用的;而tcptimestamp可以独立开启并起作用。-------------------/proc/sys/net/ipv4/在该目录下进行修改,重启后会失效。添加进/etc/rc.localecho 1 >/proc/sys/net/ipv4/tcptimestamp
相关文章推荐
- tcp协议timestamp字段导致问题分析
- tcp协议timestamp字段导致问题分析
- [ 案例分析 ] 数据库时间字段CURRENT_TIMESTAMP ON UPDATE导致时间错乱
- 【iOS自动约束】使用Masonry导致内存持续增长问题分析
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- fprintf函数导致进程挂死问题分析
- (转)频繁分配释放内存导致的性能问题的分析
- 一段RUBY的脚本,分析姓名的分数,本来没甚么难的,就是ruby1.91的编码问题,导致一堆问题。
- DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
- 关于include标签导致js路径找不到的问题分析及解决
- HTML的input类型为hidden导致无法reset改字段的value问题
- mysql自增列导致主键重复问题分析。。。
- [转载]DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子2
- 【百度分享】频繁分配释放内存导致的性能问题的分析
- 关于ip_conntrack跟踪连接满导致网络丢包问题的分析
- [转]DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
- 关于mysql 修改权限表user字段host导致权限丢失的问题
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- [百度分享]频繁分配释放内存导致的性能问题的分析
- 解决因删除外键引用的时候导致相应字段被删除了的问题