一种管理网卡的方法、装置及系统与流程

文档序号:12375706阅读:265来源:国知局
一种管理网卡的方法、装置及系统与流程
本发明实施例涉及信息
技术领域
,具体涉及一种管理网卡的方法、装置及系统。
背景技术
:虚拟化是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的障碍,计算机元件在虚拟的基础上而不是真实的基础上运行,使用户可以更好的应用这些资源。虚拟化技术可以单硬件平台模拟多个独立运行的硬件环境,从而使得一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。在现有的虚拟化技术中,虚拟机(VirtualMachine,VM)使用的虚拟网卡都是由Hypervisor软件在软件层提供,并且所有虚拟网卡都共享一个物理网卡。发明人发现,软件层提供的虚拟网卡虽然使用方便、灵活,但是存在实现复杂、性能不足、可靠性差等问题。首先,虚拟化技术的Hypervisor软件设计复杂,在该层次对设备进行虚拟化管理本身就需要复杂的控制逻辑,然而虚拟网卡的流量隔离等工作也需要在该层次进行保障,进一步增加了Hypervisor软件的设计难度。其次,复杂的实现造成虚拟网卡的软件栈太厚,在高负载、多虚拟网卡情况下其性能严重下降。此外,软件层次的网卡虚拟化技术还存在可靠性差问题,软件层的虚拟网卡共享一个物理网卡,这样一旦该物理网卡发生故障,必然造成基于其的所有软件层虚拟网卡不能正常工作。技术实现要素:本发明实施例的目的是提供一种可以提高系统稳定性和扩展便利性的管理网卡的方法、装置及系统。第一方面,提供一种管理网卡的方法,包括以下步骤:建立映射表,所述映射表用于保存复数个虚拟网卡和复数个物理网卡之 间的映射关系;接收数据包;根据所述数据包的虚拟新一代周边元件扩展接口PCIe地址查询所述映射表,获取所述虚拟PCIe地址所对应的物理网卡的地址信息,即物理PCIe地址;向所述虚拟PCIe地址所对应的物理网卡转发所述数据包。结合第一方面,在第一方面的第一种可能的实现方式中,所述映射表具体包括:虚拟PCIe地址、虚拟MAC地址、物理PCIe地址以及权重信息。结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述向所述虚拟PCIe地址所对应的物理网卡转发所述数据包的步骤具体包括:当所述虚拟PCIe地址所对应的物理网卡为一个时,直接向对应的物理网卡转发所述数据包;当所述虚拟PCIe地址所对应的物理网卡为多个时,则利用负载均衡技术将数据包发送到多个物理网卡中的一个物理网卡。结合第一方面以及第一方面的第一种至第二种可能的任一种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述根据所述虚拟PCIe地址查询所述映射表的步骤之前,还包括:网卡管理器将该数据包临时保存在缓存单元中;网卡管理器获取该虚拟PCIe地址信息。第二方面,提供一种网卡管理器,包括:接收单元,用于接收数据包;存储单元,用于存储网卡映射表,所述映射表保存复数个虚拟网卡和复数个物理网卡的映射关系,其中,一个虚拟网卡也可以映射到多个物理网卡;控制单元,用于根据所述数据包的虚拟新一代周边元件扩展接口PCIe地址查询所述映射表,获取所述虚拟PCIe地址所对应的物理网卡的地址信息;以及发送单元,用于根据所述控制单元的指令发送所述数据包到所述地址信息对应的物理网卡。结合第二方面,在第二方面的第一种可能的实现方式中,所述映射表具 体包括:虚拟PCIe地址、虚拟MAC地址、物理PCIe地址以及权重信息。结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述控制单元进一步用于:当所述虚拟PCIe地址所对应的物理网卡为一个时,控制所述发送单元直接向对应的物理网卡转发所述数据包;当所述虚拟PCIe地址所对应的物理网卡为多个时,则利用负载均衡技术控制所述发送单元将数据包发送到多个物理网卡中的一个物理网卡。结合第二方面,在第二方面的第三种可能的实现方式中,其特征在于,进一步包括:缓存单元,用于缓存所述数据包;所述控制单元,进一步用于获取所述数据包的虚拟PCIe地址。第三方面,提供一种网卡管理系统,包括:复数个物理网卡、复数个虚拟网卡以及网卡管理器,所述复数个物理网卡与网卡管理器相连接,通过网卡管理器虚拟成复数个虚拟网卡,所述网卡管理器进一步包括:接收单元,用于接收数据包;存储单元,用于存储网卡映射表,所述映射表保存复数个虚拟网卡和复数个物理网卡的映射关系,其中,一个虚拟网卡也可以映射到多个物理网卡;控制单元,用于根据所述数据包的虚拟新一代周边元件扩展接口PCIe地址查询所述映射表,获取所述虚拟PCIe地址所对应的物理网卡的地址信息;以及发送单元,用于根据所述控制单元的指令发送所述数据包到所述地址信息对应的物理网卡。结合第三方面,在第三方面的第一种可能的实现方式中,所述控制单元进一步用于:当所述虚拟PCIe地址所对应的物理网卡为一个时,控制所述发送单元直接向对应的物理网卡转发所述数据包;当所述虚拟PCIe地址所对应的物理网卡为多个时,则利用负载均衡技术控制所述发送单元将数据包发送到多个物理网卡中的一个物理网卡。结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述网络控制器进一步包括:缓存单元,用于缓存所述数据包;所述控制单元,进一步用于获取所述数据包的虚拟PCIe地址。本发明实施例的有益效果是:本发明的实施例,利用映射表建立复数个虚拟网卡和复数个物理网卡之间的映射关系,两个以上的虚拟网卡可以映射到一个物理网卡,提高物理网卡的利用效率;一个虚拟网卡也可以映射到多个物理网卡,当其中一个物理网卡故障时,网卡管理器可以将数据包分流到其它可以正常工作的物理网卡,起到备份保护的作用,提高虚拟机系统的稳定性。另外,还可以根据业务需要临时增加物理网卡,此时,只需要更新网卡管理器的映射表,将增加的物理网卡加入到映射表,网卡管理器就可以根据更新后的映射表分流数据包,使得虚拟机系统的灵活性和可扩展性大大提高。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1是本发明实施例的网卡管理系统的架构示意图;图2是本发明实施例的网卡管理器的组成示意图;图3是本发明第一实施例的方法流程示意图;图4是本发明第二实施例的方法流程示意图。具体实施方式如图1所示,本发明实施例的网卡管理系统,包括:复数个物理网卡、网卡管理器以及复数个虚拟网卡。复数个物理网卡分别与网卡管理器相连接,通过网卡管理器虚拟出复数个虚拟网卡。如图2所示,本发明的网卡管理器进一步包括:接收单元、缓存单元(RINGBUFFER)、存储单元、控制单元以及发送单元等组件。其中,接收单元,用于接收数据包;缓存单元,用于缓存物理网卡接收到的数据包、发送给虚拟网卡的数据包、以及其它临时数据包;存储单元,用于保存网卡(NetworkInterfaceCard,NIC)映射表,映射表的内容如表1所示:虚拟PCIe地址虚拟MAC地址物理PCIe地址权重保留VNIC1MAC1PNIC1weightreservedVNIC2MAC2PNIC2weightreservedVNIC3MAC3PNIC2,PNIC4weightreserved………weightreservedVNICkMACkPNICnweightreserved表1映射表用于保存复数个虚拟网卡(VirtualNetworkInterfaceCard,VNIC)和复数个物理网卡(PhysicalNetworkInterfaceCard,PNIC)的映射关系,其中,多个个虚拟网卡可以映射到一个物理网卡,一个虚拟网卡也可以映射到多个物理网卡。如表1所示,虚拟网卡VNIC1与唯一的物理网卡PNIC1对应,虚拟网卡VNIC3则映射到两个物理网卡(PNIC2和PNIC4)。控制单元,用于根据所述数据包的虚拟新一代周边元件扩展接口PCIe地址查询所述映射表,获取所述虚拟PCIe地址所对应的物理网卡的地址信息,控制单元进一步包括直接内存访问(DirectMemoryAccess,DMA)控制器、协议分析(ProtocolAnalysis,PA)逻辑等,用于控制网卡管理器的整个工作流程;发送单元,用于根据所述控制单元的指令发送所述数据包到所述地址信息对应的物理网卡。如图3所示,当有下行数据传输时,本发明第一实施例的方法操作流程如下:S100,网卡管理器的接收单元接收来自上层设备的数据包,假设该数据包的虚拟PCIe(新一代周边元件扩展接口,PeripheralComponentInterconnectExpress)地址为VNIC1;S102,网卡管理器将该数据包临时保存在缓存单元中;S104,网卡管理器的控制单元获取该数据包的虚拟PCIe地址,即VNIC1;S106,网卡管理器的控制单元通过该数据包的虚拟PCIe地址查询存储单元所保存的映射表,并获取该数据包的虚拟PCIe地址所对应的物理网卡的地址信息,即PNIC1;S108,网卡管理器的发送单元将该数据包发送给所述地址信息对应的物理网卡,进一步的,如果该数据包的虚拟PCIe地址所对应的物理网卡数量为多个,例如虚拟网卡VNIC3对应两个物理网卡(PNIC2和PNIC4),则可以利用负载均衡技术将数据包发送到其中一个物理网卡PNIC2或PNIC4。如图4所示,当有上行数据传输时,本发明第二实施例的方法操作流程如下:S200,网卡管理器的接收单元接收来自物理网卡的数据包,假设该数据包的物理PCIe(PeripheralComponentInterconnectExpress)地址为PNIC1;S202,网卡管理器的控制单元获取该物理PCIe地址,即PNIC1;S204,网卡管理器的控制单元通过该物理PCIe地址查询存储单元所保存的映射表,并获取该物理PCIe地址所对应的虚拟网卡的地址信息,即VNIC1;S206,网卡管理器将该数据包临时保存在该虚拟网卡所对应的缓存单元中;S208,当该缓存单元中的数据达到一定条件后,重生DMA中断,将数据发往指定内存。其中,该一定条件是指缓存数据达到规定数量或者时间超过规定时间或者接收到上层软件发送的读请求。另外,每个虚拟网卡的DMA中断传输数据的内存地址由上层的输入/输出内存管理单元(Input/OutputMemoryManagementUnit,IOMMU)进行分配,这样可以直接让虚拟机VM使用虚拟网卡,而不需要Hypervisor层的干预。根据本发明的实施例,利用映射表建立复数个虚拟网卡和复数个物理网卡之间的映射关系,两个以上的虚拟网卡可以映射到一个物理网卡,提高物理网卡的利用效率;一个虚拟网卡也可以映射到多个物理网卡,当其中一个物理网卡故障时,网卡管理器可以将数据包分流到其它可以正常工作的物理网卡,起到备份保护的作用,提高虚拟机系统的稳定性。另外,还可以根据业务需要临时增加物理网卡,此时,只需要更新网卡管理器的映射表,将增加的物理网卡加入到映射表,网卡管理器就可以根据更新后的映射表分流数据包,使得虚拟机系统的灵活性和可扩展性大大提高。在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
,均同理包括在本申请的专利保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1