实现SR-IOV网卡的方法和装置、实现动态迁移的方法和装置制造方法及图纸

技术编号:15048640 阅读:135 留言:0更新日期:2017-04-05 19:50
本发明专利技术公开了一种实现单根输入/输出虚拟化(SR-IOV)网卡的方法和装置、实现动态迁移的方法和装置,包括:用户态virtNIC-FE在虚拟客户机需要发送数据时,将用户态内存中的待发送数据发送给用户态virtNIC-BE;用户态virtNIC-BE将待发送数据发送给用户态虚拟功能VF驱动Driver;用户态VF Driver将待发送数据发送给对应的VF。通过本发明专利技术的方案,通过用户态virtNIC-FE、用户态virtNIC-BE、用户态VF Driver实现数据的发送,而不需要将数据从用户态内存拷贝到内核态内存中,也不需要在用户空间和内核空间之间进行切换,提高了虚拟客户机的网络性能。

【技术实现步骤摘要】

本专利技术涉及单根输入/输出虚拟化(SR-IOV,SingleRootI/OVirtualization)技术,尤指一种实现SR-IOV网卡的方法和装置、实现动态迁移的方法和装置。
技术介绍
云计算是当前非常热门的前沿技术,云计算的一个非常重要的特征是虚拟化。使用虚拟化技术后,用户可以在任意位置、使用各种终端获取应用服务。这些应用使用的资源来自“云”,而不是固定的有形实体。应用在“云”中某处,但实际上用户无需了解、也不用担心应用运行的具体位置。用户只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。为了满足用户的这个特性,云计算系统必须能执行云服务虚拟计算机(即虚拟客户机)动态迁移(LiveMigration,又叫热迁移、实时迁移)到不同的物理计算机(即宿主机)上。动态迁移是指云计算系统将整个虚拟客户机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟客户机应用仍就平滑运行,用户不会察觉到任何差异。虚拟化包括CPU的虚拟化、内存的虚拟化、输入输出(I/O)设备的虚拟化。其中,CPU的虚拟化和内存的虚拟化技术比较成熟,I/O设备的虚拟化比较滞后。I/O设备虚拟化中有一种技术叫SR-IOV技术。SR-IOV技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV标准允许在虚拟客户机之间高效共享快速外设组件互连(PCIe,PeripheralComponentInterconnectExpress)设备,直接让客户机使用宿主机的设备,由于它是在硬件中实现的,可以获得非常高的I/O性能。SR-IOV网络设备一般定义了一个物理功能(PF,PhysicalFunction)和若干个虚拟功能(VF,VirtualFunction),PF和VF可作为单独的网卡使用,VF一般通过PCIe透传技术将硬件透传到虚拟客户机中,这样在虚拟客户机中可以直接访问VF的硬件寄存器。但是由于不同宿主机的SR-IOV的硬件不同,比如网卡为不同厂家的设备,硬件完全不同,又如在虚拟客户机中的PCIe总线不同,分配的VF硬件的PCIe配置空间的基地址不同,这种方案下,携带透传VF的虚拟客户机迁移后会出现异常、宕机等故障,因而很难在不同的宿主机间实现动态迁移。为了解决这个问题,一种方法是利用PCIe热插拔技术动态地向虚拟客户机插入SR-IOVVF网卡或者从虚拟客户机移出SR-IOVVF网卡。图1为进行动态迁移的两个宿主机的结构组成示意图。如图1所示,宿主机HOST1在创建虚拟客户机VM时,为虚拟客户机VM分配两个网卡,分别为软件模拟的虚拟网卡virtNIC和SR-IOVVF网卡,virtNIC和SR-IOVVF网卡必须是同一物理网卡的PF和VF。在虚拟客户机内部,virtNIC和SR-IOVVF网卡做成聚合口bonding,bonding可以工作在负荷分担的方式或主备方式。负荷分担方式下,业务流根据一定规则分摊到virtNIC和SR-IOVVF网卡所在的两条链路上,当其中一条链路发生故障时,所有流量切换到另外一条链路上。主备方式下,业务流只通过virtNIC和SR-IOVVF网卡中所在的一条链路与其他虚拟客户机进行通讯,正常情况下,业务流通过SR-IOVVF网卡所在的链路与其他虚拟客户机进行通讯,当SR-IOVVF网卡所在的链路出现故障时,业务流全部切换到virtNIC所在的链路。同样,宿主机HOST2中创建的虚拟客户机,也需要分配两个网卡,他们之间的关系也必须保持与HOST1相同的连接关系。宿主机HOST1的物理网卡链路与宿主机HOST2的物理网卡链路必须通过交换机连接在一起,这样宿主机HOST1上的虚拟客户机可以动态迁移到宿主机HOST2上。由于SR-IOVVF网卡是PCIe的物理网卡功能,如果该SR-IOVVF网卡一直位于虚拟客户机,虚拟客户机将无法进行动态迁移。在将宿主机HOST1的虚拟客户机动态迁移到宿主机HOST2时,首先需要将宿主机HOST1的SR-IOVVF网卡从虚拟客户机中拔出,此时虚拟客户机中的汇聚口bonding的成员端口只有virtNIC一个端口,可以进行虚拟客户机的迁移。云计算系统将虚拟客户机迁移到宿主机HOST2上,宿主机HOST2上的虚拟客户机的汇聚口bonding只有virtNIC一个成员端口,这时再将SR-IOV插入到宿主机HOST2的虚拟客户机中。上述方法中,虚拟客户机中每一个业务网络端口必须要配置两个虚拟端口,这两个端口必须连接统一物流网卡的VF和PF,并且在虚拟客户机内部两个端口配置成汇聚口,增加了云计算用户的繁琐工作。这种情况下virtNIC和vSwitch位于主机内核态,而客户机位于用户态,virtNIC的性能较差,在虚拟客户的业务流量较重时迁移虚拟客户机,业务流量全部切换到virtNIC,会导致大量的网络数据丢失,会影响业务的处理过程。一般用户不太愿意接收这种方式。对SR-IOVVF网卡的另一种处理方法是在动态迁移的虚拟化环境中,SR-IOVVF网卡不透传到客户机中,而是一直位于宿主机内核。图2为实现SR-IOV网卡的示意图。如图2所示,VF驱动(Driver)运行在宿主机HOST1的内核中,在VFDriver之上通过一个macvtap与内核态virtNIC的后端模块(virtNIC-BE)。其中,macvtap是Linux内核的一个网络驱动设备,它简化了虚拟网络设备的复杂度,在虚拟化条件下,数据先到达模拟器I/O层virtNIC,再通过macvtap转发到硬件上。现有的实现SR-IOV网卡的方法大致包括:虚拟客户机需要发送数据时,用户态virtNIC的前端模块(virtNIC-FE)将用户态内存中的数据发送给内核态virtNIC-BE,并且宿主机从用户空间切换到内核空间,内核态virtNIC-BE将数据从用户态内存中拷贝到内核态内存中,内核态virtNIC-BE将内核态内存中的数据通过macvtap发送给内核态VFDriver,内核态VFDriver将数据发送给对应的VF,VF将数据发送给嵌入式网桥EmbeddedBridge,EmbeddedBridge根据数据的目的地址(如媒体访问控制(MAC,MediaAccessControl)地址、互联网协议(IP,InternetProtocol)地址等)进行转发。当VF接收到数据时,将接收到的数据发送给内核态VFDriver,内核态VFDriver通过macvtap将数据发送给内核态virtNIC-BE,内核态virtNIC-BE将数据从内核态内存拷贝到用户态内存中,并且宿主机从内核空间切换到用户空间,用户态virtNIC-FE将用户态内存中的数据发送给对应的应用。现有的实现SR-IOV网卡的方法中,由于在收发数据时,内核态virtNIC-BE需要将数据从用户态内存拷贝到内核态内存中,或者从内核态内存拷贝到用户态内存中,并且宿主机需要在用户空间和内核空间之间进行切换,导致虚拟客户机的网络性能较差。根据测试的数据显示,这种情况下,一个VF的性能只能达到宿主机裸机50%左右的性能,在虚拟化的数本文档来自技高网...
实现SR-IOV网卡的方法和装置、实现动态迁移的方法和装置

【技术保护点】
一种实现单根输入/输出虚拟化SR‑IOV网卡的方法,其特征在于,包括:用户态虚拟网卡的前端模块virtNIC‑FE在虚拟客户机需要发送数据时,将用户态内存中的待发送数据发送给用户态虚拟网卡的后端模块virtNIC‑BE;用户态virtNIC‑BE将待发送数据发送给用户态虚拟功能VF驱动Driver;用户态VF Driver将待发送数据发送给对应的VF。

【技术特征摘要】
1.一种实现单根输入/输出虚拟化SR-IOV网卡的方法,其特征在于,包括:用户态虚拟网卡的前端模块virtNIC-FE在虚拟客户机需要发送数据时,将用户态内存中的待发送数据发送给用户态虚拟网卡的后端模块virtNIC-BE;用户态virtNIC-BE将待发送数据发送给用户态虚拟功能VF驱动Driver;用户态VFDriver将待发送数据发送给对应的VF。2.根据权利要求1所述的方法,其特征在于,当所述VF接收到来自嵌入式网桥EmbeddedBridge的数据时,该方法还包括:所述VF将接收到的数据发送给对应的用户态VFDriver;所述用户态VFDriver将所述接收到的数据发送给所述用户态virtNIC-BE;所述用户态virtNIC-BE将所述接收到的数据发送给所述用户态virtNIC-FE。3.根据权利要求1或2所述的方法,其特征在于,所述将用户态内存中的待发送数据发送给用户态virtNIC-BE包括:将所述用户态内存中的待发送数据采用报文指针发送给所述用户态virtNIC-BE;所述用户态virtNIC-BE将待发送数据发送给用户态VFDriver包括:所述用户态virtNIC-BE将所述待发送数据采用所述报文指针发送给所述用户态VFDriver。4.根据权利要求1或2所述的方法,其特征在于,该方法之前还包括:卸载SR-IOV网卡的内核驱动;申请所述SR-IOV网卡的用户态内存地址,并将所述VF对应的寄存器
\t地址和申请的用户态内存地址映射到所述SR-IOV网卡的进程的用户态空间;根据所述VF对应的寄存器地址和所述申请的用户态内存地址加载用户态VFDriver。5.一种实现动态迁移的方法,其特征在于,包括:接收到来自用户的动态迁移指令,根据待迁移的虚拟客户机的资源需求查找目的宿主机;控制待迁移的虚拟客户机所在的源宿主机将待迁移的虚拟客户机的配置文件发送给目的宿主机;控制目的宿主机为待迁移的虚拟客户机分配虚拟功能VF,并更新配置文件;控制目的宿主机根据更新的配置文件创建处于暂停状态的新的虚拟客户机,并将网络配置信息配置到分配的VF上;控制源宿主机将...

【专利技术属性】
技术研发人员:赵凯徐正霞刘晔波
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1