tcpdump捕包乱序的解决方案
来源:互联网 发布:java获取自己程序路径 编辑:程序博客网 时间:2024/04/30 10:59
在一台Linux设备上,使用tcpdump捕包获从另一台设备tcpreplay的报文,发现接收顺序与回放包序列不一致。
问题排查
乱序表现为三次握手的SYN、SYN-ACK包出现在数据包之后。尤为奇怪的是光纤直连的情况下没有乱序,但是通过交换机后就乱序了。为了排查是否是交换机导致的乱序,通过分光器对光路一分二,另一台接受同样流量的设备tcpdump捕包没有乱序。
因此,推测乱序问题是出现在捕包网卡上。在排除网卡GRO原因导致的乱序后,重点怀疑网卡多队列导致的。
解决方案
使用下面的命令,将网卡队列数设置为1,之后乱序情况消失。
ethtool -S eth0 #查看队列个数
ethtool -L eth0 combined # 配置队列个数.
反思
1、一般网卡上都有多个发送和接收队列,用来减少CPU中断数,网卡上也会采用哈希算法保证同一TCP链接获同一IP地址的数据分配到一个队列,从而避免乱序的情况。文中反应的网卡,不知为何出现这样的情况。
2、同样的流量,同样的接收网卡,通过交换机回放和光纤直连回放竟然会产生乱序和不乱序两种结果,而使用wireshark的查看报的到达时序间隔,也没有发现特殊之处,实在令人费解。
[1]: https://toontong.github.io/blog/ethtool.html ethtool 开启多队列网卡
[2]: http://www.danoking.com/2012/06/04/平定igb之乱/ 平定igb之乱[链接失效]
[3]:http://blog.csdn.net/littlefang/article/details/50505760 [转载]平定igb之乱
- tcpdump捕包乱序的解决方案
- tcpdump捕包乱序的解决方案
- android基于tcpdump的数据包捕获完整解决方案
- 基于 tcpdump for Android 的智能移动终端数据包捕获完整解决方案
- 基于tcpdump的Android智能移动终端数据包捕获完整解决方案
- 【转】基于 tcpdump for Android 的智能移动终端数据包捕获完整解决方案
- 基于tcpdump的Android智能移动终端数据包捕获完整解决方案
- 基于 tcpdump for Android 的智能移动终端数据包捕获完整解决方案
- 利器Tcpdump的使用
- TCPDUMP的使用方法
- Tcpdump的使用
- TCPDUMP的简单使用
- tcpdump的用法
- Tcpdump的小经验
- Tcpdump的小经验
- Tcpdump的使用
- tcpdump的一个用法
- Tcpdump 的用法
- Dynamics CRM Plugin DLL恢复工具
- 笨办法学Python学习笔记 练习17
- Educational Codeforces Round 5 B. Dinner with Emma
- 如何用 React Native 创建一个iOS APP?(二)
- Android Gradle Plugin指南(一)
- tcpdump捕包乱序的解决方案
- ios 基础攻略
- 相较于其他语言,golang的突出特点和优势
- live555学习笔记2-基础类
- HDU 1005 Number Sequence
- CC2540关于定时器模模模式的设置
- 初探swift语言的学习笔记九(OC与Swift混编)
- extjs radio样例集合
- AngularJs返回前一页面时刷新一次前面页面