未能在虚拟化环境中获取vTAP接口

时间:2016-11-28 08:09:58

标签: virtualization qemu kvm ioctl tun

假设我已完成以下设置:

主机,它运行两个KVM VM( VM1 VM2 ),一个虚拟网桥 virbr ,以及两个桥接器 vTAP1 vTAP2 。 VM分别附加到vTAPS。

我在主机上运行了一个应用程序,用于衡量网桥上的不同负载指标。为实现这一目标,需要获取vTAPS,以便通过桥接器在vTAP之间传输数据包进行测量。
问题是我无法获取vTAPS,因为 ioctl TUNSETIFF 系统调用失败, EBUSY 错误号。
我想这是因为应用程序(在主机上运行)不是分接头的所有者(由VM拥有)。添加用于测量的新临时桥vTAPS可能并不总是一种解决方案,因为有时我会想直接在VM vTAPS之间测量流量。
尝试解决方案 Multiqueue tuntap界面

  

Linux支持多队列tuntap,可以使用多个     用于并行化发送或接收数据包的文件描述符(队列)。该     设备分配与之前相同,如果用户想要创建多个     具有相同设备名称的队列,TUNSETIFF必须多次调用     IFF_MULTI_QUEUE标志。

使用 IFF_MULTI_QUEUE 阻止了 ioctl 失败并使用 EBUSY 错误,但它开始在系统调用失败带有 EINVAL 错误的vTAP。所以它并没有真正解决任何问题。

感谢您的帮助,谢谢。

0 个答案:

没有答案