今天有同事反馈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显然更好,所以不用太在意这个。