虚拟化 频道

IO虚拟化:虚拟设备队列VMDq技术解析

  虚拟化的精髓就是多个虚拟机共享一定的硬件资源,特别地:网卡。尽管VT-d技术提供了不同的虚拟机直接使用不同的网卡的可能性,不过多个虚拟机共用一块或者数块网卡仍然是绝大多数情况。对于VT-d技术,一些人可能会很高兴地看到,不同的显卡也可以通过它在不同的虚拟机之间直接分配,如Paralles Workstation Extreme软件可以主机和虚拟机直接使用不同的Quadro显卡进行渲染工作(是的,它和前面说的还有些距离,不过原理相同)。

  因为这样的缘故,实际上所有的提供上网能力的虚拟机软件都内置了一个虚拟交换机,大部分还在这个基础上提供了路由器的功能,作用就是和真实的交换机/路由器一样,将多台虚拟机连成一个或者多个网络:

 
VMDq实际上将这个虚拟交换机的一部分功能用硬件进行加速

  VMDq实际上实现了一个半软半硬的虚拟交换机,和原有的纯软件方案相比,新的方案提供了更高的性能、更低的资源占用率,它怎么实现的呢?


VMDq技术提供了一个属于ISO OSI 9层网络模型中的第二层的分类/排序引擎实现了交换机的部分功能,为了提供合适的性能,它必须使用到一堆缓存队列,因此支持VMDq的网卡通常也支持RSS接收方扩展功能

   在支持VMDq的网卡上,用硬件实现了一个Layer 2分类/排序器,通过MAC地址或者VLAN来讲数据包发送到指定的虚拟机队列中去(这堆队列叫做pool),最后的VMM软件只需要非常简单的数据复制工作就可以完成虚拟交换机的任务。从而极大地提升了虚拟化网络效率。

  支持VMDq队列的网卡通常也支持RSS队列,例如Intel 82576EB网卡支持8个虚拟机队列,支持16个RSS队列,它们实质上都是16个发送/接收队列对的划分,另外意味着,每个虚拟机可以分配到两个发送/接收队列对。


Hyper-V 1.0,也就是Windows Server 2008携带的版本,所有的网络IO都需要经过经过纯软件实现的虚拟交换机


Hyper-V 2.0,也就是Windows Server 2008 R2携带的版本,提供了一个新的VMQ特性,它利用硬件的VMDq将虚拟交换机的大部分工作放到了网卡上,并通过内存映射设计避免了数据需要在多个空间来来回复制移动


VMware的NetQueue同样也利用了VMDq技术,实现了两倍以上的吞吐量提升

  VMDq的效果是不是真有这么明显呢?还有IO虚拟化相关的技术还有很多,且听下回分解。

9
相关文章