
# 为什么登录虚拟机VNC界面会间歇性出现Dead loop on virtual device gw_11cbf51a, fix it urgently？
#### 问题现象
VPC网络模式的集群，登录虚拟机出现 Dead loop on virtual device gw_11cbf51a, fix it urgently，如图：
![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000001123090417.png "点击放大")
#### 原因定位
VPC网络模式的集群采用了linux开源社区的ipvlan模块实现容器网络通信，这一日志打印与ipvlan的设计实现有关，ipvlan L2E模式它优先进行二层转发，再进行三层转发。
**场景还原：**
假定有业务Pod A，它持续对外提供服务，不断被同节点访问收发报文，通过本机k8s service经过容器gw接口进行访问，或者同属本节点的Pod间直接互相访问。在升级、缩容，或者其他原因导致的退出场景，容器A已停止运行，对应的网络资源被回收。此时同节点的报文仍持续尝试在往容器A的IP发送报文。内核中的ipvlan模块首先尝试根据目的IP来二层转发这些报文，但是由于Pod A已无法找到该IP所属的网卡，ipvlan模块判断它有可能是个外部报文，因此尝试进行三层转发，根据路由规则匹配上了gw口，因此gw口又收到此报文，再经由ipvlan模块转发，如此循环。内核中的dev_queue_xmit函数检测到重复进入发包过程达10次，报文被丢弃同时打印该日志。
发起访问端的在报文丢失后一般会进行几次退避重试，因此在这种场景下会连续打印几次条日志，直到发起访问端的容器内ARP老化或业务自身终止访问。
跨节点容器间通信，由于目的IP及源IP不属于同个节点级专属子网（注意此子网与VPC子网概念不同），报文不会重复走到此业务流程因此，不会触发此问题。
同集群不同节点间的Pod通过Cluster模式的NodePort来访问除外，它会被SNAT成被访问端容器gw接口的IP，因此也有可能触发此日志打印。
#### 问题影响
被访问端容器正常运行时不会有影响。容器被销毁时，有一定影响，但影响较小，重复进入发包过程10次，然后被丢包，这个过程在内核中处理十分迅速，对性能影响可以忽略。
对于ARP老化或业务自身不再重试，或新容器会被拉起，容器service服务报文经过kubeproxy重定向到新业务。
#### 开源现状
目前开源社区ipvlan L2E模式仍存在此问题，已向开源社区反馈，待确认更优方案。
#### 解决方法
打印Dead loop问题本身无需解决。
但推荐服务Pod使用优雅退出，在业务真正终止服务前，优先将Pod设置为删除中的状态，待业务处理完毕请求后再退出。
