【udp测试工具】UDP checksum错误导致DHCP服务不可用解决办法

时间:2019-10-07  来源:安装和部署  阅读:


前两天,运维同事在给客户部署环境时,碰到虚拟机无法获取IP的情况。
在虚拟机网卡eth0抓包来看,DHCP请求和回复都正常,但是虚拟机没响应,手动配置IP地址可以通。

如果单从tcpdump或者wireshark来分析,看不出来是什么异常。

这时候就需要有很好的搜索能力了,google到下面这篇文章:
https://github.com/Metaswitch/calico/issues/40

这篇文章的解决办法是在计算节点上添加iptables规则,在udp报文中添加checksum:
iptables -A POSTROUTING -t mangle -p udp –dport 68 -j CHECKSUM –checksum-fill

checksum-fill的解释:

–checksum-fill

Compute and fill in the checksum in a packet that lacks a checksum. This is particularly useful, if you need to work around old applications such as dhcpclients, that do not work well with checksum offloads, but don’t want to disable checksum offload in your device.

wireshark开启UDP校验和:

这个办法并没有解决问题,但是大概知道了是udp checksum问题后,可以对wireshark抓的包进一步分析,wireshark对tcp、udp以及ip的校验和的validation默认是关闭的。
开启检验UDP校验和:edit->preference->protocol中选择UDP协议,相应的地方打勾。

再来看wireshark的包:

udp_checksum_error

可以看到checksum的错误信息,可能由于udp checksum offload导致。

接着在数据包所经过的每一个设备进行一次抓包,发现udp checksum的错误是从网络节点出来后开始的,在网络节点data网络网卡执行如下命令,就OK了:
ethtool -K ethX tx off

即关闭网卡的Checksum Offload功能,但是这样做可能会增加cpu的负载

【udp测试工具】UDP checksum错误导致DHCP服务不可用解决办法

http://m.bbyears.com/asp/71796.html

推荐访问:udp端口 udp端口测试 udp报文
相关阅读 猜你喜欢
本类排行 本类最新