虚拟机不通网关,排查发现是业务聚合口其中一个口不发包(tx packets不涨,tx drop一直在涨)
或者有这样的现象:聚合口两个成员口,down 掉其中一个口通,down 掉另一个不通。
PS:本文适用网口是 DPDK 模式接管的场景
1. 首先抓包确认在业务口能抓到请求包,但没收到响应包,那就有三种情况:
2. 确认网口有没有丢包统计
# ethX 换成对应网卡
echo -e "show interface ethX"|cli|grep -Ei "drop|err"
可以发现,tx packets 没有增长,但 tx drop 一直在涨,说明可能网卡卡死了
3. 确认网卡是否卡死
网卡卡死的问题,以前出现过两起:
本文属于第一起,经确认这个客户当前6.8.0R2已经解决这个问题,属于新问题。
dump 网卡队列发现有非法 GSO 包发出,查看 dp日志(/sf/log/today/dataplane.log)发现 dp 确实收到了非法 GSO 包:
4. 可以看到该包是从 6273921390672 这台虚拟机的 eth0 网卡发出的,前端看到该虚拟机一台 vAF,判定是 vAF 发出非法 GSO 的异常包导致网卡队列卡死。
临时解决方案:
1. 关闭 vAF,后台修改 vAF 的配置文件,将 host_tso=on 字段修改为host_tso=off,再启动vAF
修改方法:
# 到AF所在主机找到 /cfs/ 下的 conf 文件:
find /cfs/ -name <vmid>.conf
# 然后把里面的host_tso=on,都改成 host_tso=off
2. 当前业务口还是卡死的,需要down/up一下恢复,如无法恢复需要重启sdn,(这个会影响这台主机上的所有业务,时间大概在10-30s)
down/up方法:
# ethX 换成对应的口
echo -e "con t\ninterface ethX\nshutdown"|cli
echo -e "con t\ninterface ethX\nno shutdown"|cli
永久解决方案:
1. AF 出包解决发出非法 GSO 包的问题
2. HCI 出包解决非法 GSO 包没有拦住的问题,HCI6.11.0解决,后续出各 LTS 版本的补丁(20240908更新)