checksum error的原因

今天有同事反馈dig @223.5.5.5的时候看到本地发出去的包是提示“bad udp cksum”


xxx > 223.5.5.5.53: [bad udp cksum 0x85e1 -> 0xc2e3!] 8250+ A? www.baidu.com.

实际这个是因为网卡开启了tx checksum,开启之后这个checksum的计算是由网卡硬件自己完成,tcpdump抓包的时候实际还没有去结算checksum,所以一直是bad upd cksum


#ethtool -k  eth1
Offload parameters for eth1:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off
rx-vlan-offload: off
tx-vlan-offload: off
ntuple-filters: off
receive-hashing: off

只能在目标机器进行抓包才能发现是否发出的包checkum是否真的有错误。
另外可以选择本地把tx checksum关闭掉


#ethtool -K  eth1 tx off

再测试的时候可以看到是OK的了


xxx. > 223.5.5.5.53: [udp sum ok] 44024+ A? www.baidu.com. (31)

实际利用网卡计算checksum显然更好,所以不用太在意这个。

此条目发表在net分类目录。将固定链接加入收藏夹。

发表回复