专利名称:基于硬件队列扩展的网卡虚拟化系统及其方法
技术领域:
本发明属于系统虚拟化中的IO虚拟化领域,具体涉及一种多核网络处理器平台上基于硬件队列扩展的网卡虚拟化系统及其方法。
背景技术:
近年来,计算机硬件计算能力不断攀升,硬件成本下降,导致廉价硬件大量增加。 与之相关的一系列现实问题成为当前产业界关注的热点管理成本攀升,安全性低,资源的利用率低下。而虚拟化技术具有隔离性、可合并、可迁移性等特点,被认为是优化当前产业界基础IT架构,解决上述现实问题的最好解决方案。尽管虚拟化技术存在诸多优点,在产业界的应用却还面临着很多制约,其中性能开销问题成为影响虚拟化技术应用的一个重要制约因素。虚拟化技术的发展经历了处理器虚拟化,芯片虚拟化,IO虚拟化三个阶段。现阶段虚拟化的性能瓶颈已从处理器虚拟化转向IO虚拟化对于偏重于IO访问的应用,虚拟化的性能开销十分明显,有时可能达不到非虚拟化环境的1/3。另外对于多核架构的虚拟化系统,IO访问更加频繁,这就对IO性能,可靠性方面提出了更高的要求,网卡作为重要的IO设备更是如此。在此背景下,传统的基于软件实现的网卡虚拟化方案已不能满足要求。
发明内容
本发明目的在于提供一种多核网络处理器平台上的网卡虚拟化系统,解决多核架构的虚拟平台上对于偏重于IO访问的应用尤其是网络应用普遍存在的虚拟化的性能开销大的问题,提高虚拟系统对网卡的访问效率。为了解决现有技术中的这些问题,本发明提供的技术方案是一种多核网络处理器平台上基于硬件队列扩展的网卡虚拟化系统,包括接口管理模块,虚拟接口驱动模块和网卡驱动模块,其特征在于所述虚拟接口驱动模块中虚拟接口由独立中断硬件队列构成,硬件队列与物理网卡绑定,为分区操作系统提供虚拟接口,所述接口管理模块,虚拟接口驱动模块和网卡驱动模块通过域间通信机制进行控制交互,完成网络通信。优选的,所述虚拟接口驱动模块根据运行时状态由所述接口管理模块使能,使分区操作系统获得访问虚拟接口的权限,并为分区操作系统提供与虚拟接口交互的接口。优选的,所述接口管理模块位于虚拟机监控器中,提供轻量级API管理虚拟接口并实时更新虚拟接口状态信息,使用mailbox核间通信机制与驱动域进行控制交互。优选的,所述网卡驱动模块位于宿主操作系统上,负责虚拟接口与物理网卡的数据及控制交互,当驱动域接收到mailbox中断后,所述网卡驱动模块调用相应中断处理函数从相应虚拟接口获得数据包,调用物理网卡驱动的发送函数,当物理网卡收到数据包后, 所述网卡驱动模块根据所述接口管理模块传来的接口状态信息数据发送至虚拟接口接收队列。
本发明的另一目的在于提供一种多核网络处理器平台上基于硬件队列扩展的网卡虚拟化方法,其特征在于所述方法包括以下步骤(I)所述虚拟接口驱动模块通过加载参数在启动分区操作系统时被加载;(2)所述接口管理模块根通过mailbox中断控制使能所述虚拟接口驱动模块接 Π ;(3)所述网卡驱动模块接受的中断信号处理数据包,与物理网卡驱动交互完成网络访问。优选的,所述方法中所述分区操作系统是由虚拟机监控器加载,虚拟机监控器与分区是物理上平行,逻辑上主从的结构,虚拟机监控器处于主控地位,利用全局内存管理模块控制分区加载。优选的,所述方法中所述全局内存管理模块通过全局链表管理各操作系统可见资源,根据加载申请分配资源。本发明人经长期研究,采用了自虚拟化的方法,对物理网卡进行扩展。本发明将多核网络处理器平台上的具有独立中断的硬件队列与物理网卡绑定,为每个客户操作系统提供有硬件队列封装的虚拟接口,通过硬件保证了 IO隔离性。用硬件扩展功能和高效的核间中断机制代替了传统IO虚拟化的超级调用和中断截获来完成虚拟IO访问,减少了虚拟机上下文转移的次数,从而避免了 TLB失效率增加带来的额外虚拟化开销,有效地提高了虚拟化性能。网卡虚拟化系统进行网络访问的具体工作步骤如下虚拟机监控器为客户虚拟机配置加载虚拟接口驱动;客户虚拟机发出网络IO访问请求;将IO请求映射到物理网卡物理接口 ;物理网卡接口接受网络报文,正确地分派给各个客户虚拟机的虚拟接口,完成网络通信。上述步骤主要包含两个映射从虚拟机到物理网卡的映射以及从物理网卡接口到虚拟机的映射,本发明的主要目的在于实现一个可靠,安全,低虚拟化开销的虚拟网卡系统,而其中地虚拟化开销目标关键在于减少这两个映射过程中虚拟化性能损耗,为了实现这一目的,本发明人遇到以下亟需解决的难题首先是实现物理网卡接口与虚拟接口扩展硬件队列实时绑定问题有别于软件虚拟化的中断截获和设备模拟,本发明中需要由属主虚拟机判断物理网卡接口的网络报文属于哪个虚拟机,即判断物理网卡接受队列应该绑定哪个扩展队列,从而完成网络报文的分配。其次是域间通信策略选择问题所述网卡虚拟化系统中各个模块分别位于不同的域上, 选择一种高效的通信机制可以更有效地完成各个模块之间的控制交互,大大提升网卡虚拟化系统的性能。本发明人经长期研究,找出上述问题的解决方法,具体方案如下(I)物理网卡接口与虚拟接口扩展硬件队列实时绑定虚拟接口共同维护一个16位的中断标识。每个虚拟接口用其所在核心ID来标示, 将网络数据包封装成异步消息队列,每个消息中含有虚拟接口的ID信息。异步消息队列由一组Work-Queue-Entry(WQE)结构体填充,WQE结构体中封装了指向数据包首地址的指针。(2)域间通信策略选择
所述网卡虚拟化系统在设计中,各个模块间的通信并没有涉及到网络报文的传输,而仅仅作为一种控制传递的方式。本发明人经过实验采用了基于mailbox的核间通信机制。Mailbox是多核处理器平台上常见的一组核间中断寄存器,一般为4个字节或8个字节,可以储存命令号或数据,命令号指的是接收中断方响应哪种动作,即通过传递过来的动作调用相应的中断处理函数,动作传递可以被安全地用于中断服务例程中。对于小块数据传递或是命令传递,Mailbox中断是非常高效的且不受处理器数量的限制。每个中断仅需要总线上一个单一地址,每一位可被单独地设置或清零。任意核可直接通过mailbox对其它核发出中断。相对于现有技术中的方案,本发明的优点是本发明由硬件保证了 IO隔离,确保了系统的可靠性,与软件IO虚拟化相比,本发明中虚拟机监控器仅负责虚拟接口的配置,不参与网络IO通信过程,此外本发明利用硬件队列的独立中断代替基于软件实现方案中的中断截获和模拟过程,使得系统在多虚拟接口的环境下,有良好的性能。
下面结合附图及实施例对本发明作进一步描述图I为网卡虚拟化系统模块框架图;图2为驱动域间的控制交互;图3为虚拟化环境与非虚拟化环境下往返时延对比;图4为虚拟机个数对硬件扩展虚拟网卡性能的影响。
具体实施例方式以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。实施例基于硬件队列扩展的网卡虚拟化的实践及试验本实施例基于MIPS架构的多核网络处理器目标开发板及PC机,开发板具体配置如下多核网络处理器,拥有12个核,最高主频为800MHz,基于MIPS指令集。测试网口 百兆网口(SGMII 接口)。PC 机配置处理器 Intel(R)Pentium(R)D CPU 3.00GHz,内存
2.OOGB。在本实施例中,网卡虚拟化系统模块框架如图I所示,处理器基于MIPS架构,支持在每个物理核上加载一个嵌入式linux,多核网络处理器平台上维护了 15个有独立中断的硬件队列。本实验例为每个虚拟接口维护一个授权表项,其中绑定了硬件队列ID和核心ID, 客户操作系统要发起一次IO访问,首先发送请求给虚拟机监控器中的虚拟接口管理模块, 虚拟机监控器查询授权表,如果合法,则根据核心ID找到相应硬件队列ID,注册中断,使能虚拟接口,将硬件队列ID号反馈给客户操作系统,并将更新的接口状态信息传给驱动域。 为vMM定义了一组轻量级API用来管理虚拟接口,如下所示
权利要求
1.一种基于硬件队列扩展的网卡虚拟化系统,用于多核网络处理器平台,包括接口管理模块、虚拟接口驱动模块和网卡驱动模块,其特征在于所述虚拟接口驱动模块中虚拟接口由独立中断硬件队列构成,硬件队列与物理网卡绑定,为分区操作系统提供虚拟接口,所述接口管理模块,虚拟接口驱动模块和网卡驱动模块通过域间通信机制进行控制交互。
2.根据权利要求I所述的基于硬件队列扩展的网卡虚拟化系统,其特征在于所述虚拟接口驱动模块根据运行时状态由所述接口管理模块使能,使分区操作系统获得访问虚拟接口的权限,并为分区操作系统提供与虚拟接口交互的接口。
3.根据权利要求I所述的基于硬件队列扩展的网卡虚拟化系统,其特征在于所述接口管理模块位于虚拟机监控器中,提供轻量级API管理虚拟接口并实时更新虚拟接口状态信息,使用mailbox核间通信机制与驱动域进行控制交互。
4.根据权利要求I所述的基于硬件队列扩展的网卡虚拟化系统,其特征在于所述网卡驱动模块位于宿主操作系统上,负责虚拟接口与物理网卡的数据及控制交互,当驱动域接收到mailbox中断后,所述网卡驱动模块调用相应中断处理函数从相应虚拟接口获得数据包,调用物理网卡驱动的发送函数,当物理网卡收到数据包后,所述网卡驱动模块根据所述接口管理模块传来的接口状态信息数据发送至虚拟接口接收队列。
5.一种多核网络处理器平台上基于硬件队列扩展的网卡虚拟化方法,其特征在于所述方法包括以下步骤(1)所述虚拟接口驱动模块通过加载参数在启动分区操作系统时被加载;(2)所述接口管理模块根通过mailbox中断控制使能所述虚拟接口驱动模块接口;(3)所述网卡驱动模块接受的中断信号处理数据包,与物理网卡驱动交互完成网络访问。
6.根据权利要求5所述的方法,其特征在于所述方法中所述分区操作系统是由虚拟机监控器加载,虚拟机监控器与分区是物理上平行,逻辑上主从的结构,虚拟机监控器处于主控地位,利用全局内存管理模块控制分区加载。
7.根据权利要求6所述的方法,其特征在于所述方法中所述全局内存管理模块通过全局链表管理各操作系统可见资源,根据加载申请分配资源。
全文摘要
本发明公开了一种基于硬件队列扩展的网卡虚拟化系统,用于多核网络处理器平台,包括接口管理模块、虚拟接口驱动模块和网卡驱动模块,其特征在于所述虚拟接口驱动模块中虚拟接口由独立中断硬件队列构成,硬件队列与物理网卡绑定,为分区操作系统提供虚拟接口,所述接口管理模块,虚拟接口驱动模块和网卡驱动模块通过域间通信机制进行控制交互。该系统利用硬件队列的独立中断代替基于软件实现方案中的中断截获和模拟过程,使得系统在多虚拟接口的环境下,有良好的性能。
文档编号G06F9/455GK102609298SQ20121000692
公开日2012年7月25日 申请日期2012年1月11日 优先权日2012年1月11日
发明者吴俊敏, 朱小东, 朱峪, 赵小雨 申请人:中国科学技术大学苏州研究院