用户反馈 client 访问某服务 的 udp 端口 1107 访问异常,使用tcpdump在服务端抓包时发现,客户端发给服务端的udp报文可以接收到,但服务端发给客户端的udp报文会报错bad udp cksum
#tcpdump -i any -nneevvv udp and port 1107
11:01:57.774673 In fe:16:4f:00:00:00 ethertype IPv4 (0x0800), length 218: (tos 0x0, ttl 115, id 8448, offset 0, flags [none], proto UDP (17), length 202)
10.18.200.248.58569 > 10.43.0.139.1107: [udp sum ok] UDP, length 174
11:01:57.776813 Out fa:16:3e:b6:5d:84 ethertype IPv4 (0x0800), length 561: (tos 0x0, ttl 64, id 52480, offset 0, flags [DF], proto UDP (17), length 545)
10.43.0.139.1107 > 10.18.200.248.58569: [bad udp cksum 0xe0de -> 0x8f2b!] UDP, length 517
服务跑在虚拟机上,查询虚机 tx checksumming 参数
#ethtool -k eth0|grep tx
#ethtool --offload eth0 tx off
发现是打开了,关闭了再抓包就发现正常了,这可能和宿主机网卡有某些关系吧