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显然更好,所以不用太在意这个。