tcpdump發現不同ipid的數據包被拼接成一個大包

問題:發送端將3個大小爲1460的TCP報文用tcpreplay回放到捕包機,其ipid均不相同,但是捕包機只收到了一個爲4k+的大包。

原因:捕包機使用tcpdump捕包,需要經過網卡驅動,Linux2.6.29以上內核支持gro機制,網卡開啓了gro後,會將同一tcp流的順序報文合併爲一個大包以提高處理效率。

解決方法:使用命令 ethtool -K eth0 gro off 關閉該網卡的gro功能即可。

TSO和GRO是網卡分別對TCP發、收進行的優化,都會影響wrieshark、tcpdump之類的捕包軟件。參見我的前篇博文winpcap/wireshark在win7 64位系統下IP頭部結構長度爲0的bug

參考:

http://www.pagefault.info/?p=159

http://blog.csdn.net/majieyue/article/details/7929398

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章