torutkのブログ

ソフトウェア・エンジニアのブログ

Wireshark(旧Ethereal)でTCP/UDPのチェックサムがエラー

自宅PC(nForce 570チップセットNIC)でWiresharkのキャプチャーをすると、PCから出力するパケット(TCP/UDP)がchecksum errorとなっていました。


NICの機能でchecksum offloadingを有効にすると、TCP/UDP/IPパケットのチェックサム計算をOS側ではなくNICドライバ以下で行うため、CPU負荷が軽減されます。


しかしこのoffloadingが機能していると、Wireshark等のパケットキャプチャで見えるのはNIC内でチェックサム計算前のパケットなためchecksumが不正となってしまいます。


そこで、Wiresharkを使う場合には

  1. NICのドライバでchecksum offloadingを無効にする
  2. WiresharkTCP/UDPの設定でchecksumの検証を無効にする

といった対応が考えられます。

Wiresharkの場合は、[Edit]メニュー→[Preferences]で、左側のUDPTCPそれぞれについてValidate UDPTCP) checksum if possible のチェックをはずします。