查看: 804|回复: 0

[分享] 【干货分享】Linux虚拟机网卡只能收包不能发包?

[复制链接]

8

主题

8

帖子

90

积分

Byte

Rank: 2

贡献
0
技术
0
活跃
0
在线时间
2 小时
发表于 2017-9-27 17:16:39 | 显示全部楼层 |阅读模式
【干货分享】Linux虚拟机网卡只能收包不能发包?在ovs场景主机与同主机上的虚拟机通信时,由于主机侧服务有问题,可能导致虚拟机网卡只能收包,不能发包,那么为什么会出现这样的问题以及应该如何解决呢?
适用操作系统:Linux
适 用 版 本 :适用UVP&EVS V200R002C00 PublicCloud版本
适用产品线 :FusionSphere

背景及现象描述
在ovs场景主机与同主机上的虚拟机通信时,由于主机侧服务有问题(目前发现iperf-2.0.2有此问题),可能导致虚拟机网卡只能收包,不能发包,使用ifconfig查看网卡状态,网卡收包总数RX packets项一直有增加,网卡发包总数TX packets项保持不变,ping虚拟机ip不通。如下图所示:
微信图片_20170927165500 - 副本.jpg

原因分析
定位发现虚拟机网卡不通是因为在主机与虚拟机之间存在iperf通信。在dom0上部署iperf-2.0.2服务端,在同主机的domU上部署客户端(iperf-c domip -d -t 3600),打流过一会就会发现domU上的网卡对外不能发包,收包正常。
定位发现虚拟机对外不能发包是因为前端环满,domU虚拟网卡对外发包使用的是零拷贝机制,报文在转发时不做数据拷贝,使用domU中的内存,在报文通过协议栈发给iperf服务端处理时,iperf未对报文处理,导致vring环上的buffer无法释放,vring环一直处于满的状态,后续的报文无法发出。
问题出现有2个条件。
1、主机与同主机上虚拟机之间通信。虚拟机与虚拟机之间没有问题,跨主机之间通信也不存在问题。
2、必须是主机上服务端存在问题的软件才会导致问题,如:netperf工具就没有这个问题,目前UVP主机与虚拟机之间有通信的服务(dhcpserver/metadata),不存在有此问题的服务。
解决方法
将对应Linux版本的内核参数添加到Linux系统的“/boot/grub/menu.lst”文件的内核启动参数后面即可。
1、应急解决方法:重启dom0上的与虚拟机有通信的服务端程序,网络可以恢复。
2、排查出问题的服务,解决服务端BUG。
微信图片_20170927165416.jpg
泰克连续三年被评为“中国区最佳培训合作伙伴”、2014年被华为公司授予“ 华为HCIE培训第一品牌”称号,成为华为技术培训的领头羊。2014年通过265名HCIE;2015年通过348名HCIE;2016年通过427名HCIE。2017年截止8月通过人数已达388人。
微信图片_20170927141811.jpg


使用 高级模式(可批量传图、插入视频等)
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表