WireShark抓包時TCP數據包出現may be caused by ip checksum offload


最近用WireShark抓包時發現TCP數據包有報錯:IP Checksum Offload,經過查閱資料終於找到了原因

總結下來就是wireshark抓到的數據包提示Checksum錯誤,是因為它截獲到的是操作系統胡亂填充的checksum,而千兆網卡在開啟Checksum Offload之后,會把這些計算的工作交給網卡去做,網卡最后還是會計算出正確的checksum並且發出去的。

也就是以前校驗和是由系統協議棧來實現,現在交給網卡硬件去實現了,這樣可以節約不少CPU資源,微軟的測試表明它可以最多節約30%的CPU資源。IBM里AIX的文檔則指出:對於PCI接口的千兆網卡來說還不如讓400Mhz以上的CPU來計算校驗和,而PCI-X的千兆網卡啟用此項后可以達到線路速度,從而節約CPU資源

在windows系統下,我們可以打開設備管理器找到相應的網卡,在網卡的高級屬性里將checksum offload屬性改為none。

linux下使用ethtool命令關閉checksum offload,具體命令如下:

#ethtool -K eth0 tx off rx off

這樣就修改為不由網卡硬件去完成檢驗和,而由系統來實現,也就不會報錯了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM