前段时间在美国旧金山召开的IDF大会上,一些环节涉及到了虚拟化网络的话题。在虚拟化方面,网络不单纯指的是LAN,还有像iSCSI和FCoE这样的存储网络。这次,让我们从IDF中解读英特尔是如何在虚拟化网络方面升级更新的。
计算虚拟化达到了一定水平
从9月的IDF 2009到VMware召开的VMworld可以看出,对CPU和内存等服务器资源的虚拟化已经达到了一定的水平。也就是说,hypervisor已经达到了某个水平上。
当然,虚拟化支持功能将实现CPU内核的增加和创建服务器高可靠性的恢复架构(硬件和软件两个方面)。但是,由于支持VT-x(CPU的虚拟化功能)和在EPT(虚拟化中的内存映射功能),所以事实上hypervisor的开销变得非常小。
如果说计算虚拟化已经达到了一定水平,那么接下来应该是虚拟化对应的网络和存储吧。在虚拟化存储方面,外置存储并不是与服务器附加DAS连接的,而是使用网络,因此需要支持像实时迁移和VMotion这样可以在服务器之间迁移虚拟机的功能。
因此,连接存储和服务器的网络不仅是基于LAN发展起来的,而且是针对外置存储接口和虚拟化技术进行调节了的网络。
对于hypervisor来说虚拟NIC与交换机都是由软件来实现的,所以这必将会造成系统的CPU占用率上升。因此更好的办法是将NIC做成一个特殊的虚拟机,直接访问NIC从而获得更高的性能。总之,虽然是在一个虚拟环境中,但对于NIC来说是处在物理环境之中。
为了解决这个问题,Intel从至强5500开始的芯片组中加载了向虚拟机直接分配I/O设备的VT-d功能。这个VT-d不仅可以与NIC直接连接,而且也可以使用I/O设备。
如果使用VT-d,可通过hypervisor从虚拟机直接使用这个设备
VMDq的结构。通过在NIC方面替代TCP/IP的发送和接收来实现有效通信
如果使用VT-c的VMDq,网络效率将提升90%
同时Intel还对虚拟NIC提供了所谓的VT-c功能。VT-d,是用于芯片组的功能,而VT-c则是用于NIC的功能。
VT-c大体上由I/O Acceleration Technology(I/OAT)、Virtual Machine Device Queues(VMDq)和Single Root I/O Virtualization(SR-IOV)三个功能构成。
I/OAT可以使用NIC处理复杂的TCP/IP协议。因此,即使网络使用频繁的情况下CPU也不会负载过大,因为不需要在CPU方面进行TCP/IP协议处理。
Intel在NIC上的虚拟机设备队列(VMDq)技术提供了多个硬件队列,通过在多个虚拟机上共享一个网络设备来减少了软件的负载,实现更高效的通信。
SR-IOV是对PCIe的扩展,可以在虚拟化服务器环境下让单个适配器象多个物理适配器一样使用。
在虚拟化环境下,不可能为每个虚拟机都配备一个网络适配器(NIC),因此网络性能将会因为追加的虚拟化网络功能而获得最大的受益。当具备网卡虚拟化功能后,允许多台虚拟机共享一块NIC,它是通过在虚拟化管理器Hypervisor上建立一个软件仿真层来实现资源的共享,并帮助虚拟机更快速的访问网络,同时也将减轻CPU的负荷。
如果使用SR-IOV,可以从多个虚拟机器访问一个NIC
使用SR-IOV时的存储I/O性能
不过,现在所提到的VT-c标准,英特尔自身的网络芯片和网卡以外的同类产品并不支持。但是,在其他的网络芯片供应商的产品中也都有各自相类似的功能,只是名称不同而已。比如英特尔的I/OAT(I/O加速)技术,与其他厂商的TCP/IP Off Load(TOE)技术基本就是同一个东西。所以,即使不使用英特尔的芯片,虚拟化的功能仍然可用,只是对于虚拟化管理器平台的支持,一个整体打包的称呼–VT-c更容易让人理解。
另外,VMware ESX、Windows Server 2008 R2 Hyper-V和Xen等hypervisor也都支持VR-c功能。
Intel计划在2010年发布代号为Westmere、用于服务器主板的网络芯片Intel 82599。这款网络芯片采用了10Gb的双端口。因此,支持10Gb也不会花费太多成本。Intel解释说,架构10Gb环境的成本相当于现在的千兆以太网。而且,825PP网络芯片还是一个可以同时兼容iSCSI、FCoE和LAN的统一网络解决方案。因此,NIC可以同时处理光纤通道存储和iSCSI存储。
这样,用一台服务器就可以简单地处理光纤通道和iSCSI两种存储。
由于使用82599网络芯片,一个NIC可以同时处理FCoE和iSCSI
一个NIC同时支持FCoE和iSCSI
Nehalem(至强5500)的虚拟化功能带来CPU和存储方面性能的提升。因此,如何利用VT-d和VT-c来提升外部网络存储就成为下一个话题。VT-d和VT-c将成为虚拟化方面两个重要的技术。