网络接口管理方法、使用方法、装置、设备和存储介质与流程

未命名 07-19 阅读:82 评论:0


1.本技术涉及虚拟化网络设计技术领域,特别是涉及一种网络接口管理方法、使用方法、装置、计算机设备和存储介质。


背景技术:

2.随着互联网流量的飞速增长,未来对于高带宽网络的需求也是迫在眉睫,特别是在超大规模数据中心和云计算中,100g等高速以太网络已经成为数据中心趋势,虚拟机、容器等云资源接口性能并不能与高速以太网络的发展相匹配,当前网络接口依靠软件来转发报文时需要消耗大量cpu限制了性能,将硬件资源透传给虚拟机方式会导致云资源失去了灵活扩展性,造成无法合理利用网卡硬件资源导致数据传输速度慢。


技术实现要素:

3.基于此,有必要针对上述技术问题,提供一种网络接口管理方法、使用方法、装置、计算机设备和存储介质,能够解决目前无法合理利用网卡硬件资源导致数据传输速度慢的技术问题。
4.一方面,提供一种网络接口管理方法,所述方法包括:在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
5.在其中一个实施例中,所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤包括:将所有可分配资源进行资源池化以进行动态的分配和回收。
6.在其中一个实施例中,所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤还包括:设置所有的可分配设备接口使用相同的地址空间进行通信;设置不同的可分配设备接口使用不同的进程地址空间标识符。
7.在其中一个实施例中,所述方法还包括:每个可分配设备接口在分配给进程使用时,对每个可分配设备接口分配进程地址空间标识符,所述可分配设备接口根据进程地址空间标识符访问地址空间。
8.在其中一个实施例中,所述对每个可分配设备接口分配进程地址空间标识符时,包括:
根据雪花算法生成的唯一设备地址作为所述进程地址空间标识符的最后一位。
9.在其中一个实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:在待读写的数据资源传输完成后关闭虚拟设备。
10.在其中一个实施例中,所述在待读写的数据资源传输完成后关闭虚拟设备步骤之后还包括:销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。
11.在其中一个实施例中,所述在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备步骤包括:获取虚拟机用于传输待读写的数据资源所需的可分配设备接口数量;采用网卡驱动获取网卡硬件中所有未使用的可分配设备接口;在网卡硬件中选取对应数量的未使用的可分配设备接口动态组装成虚拟设备。
12.在其中一个实施例中,所述方法还包括:实时监控虚拟机的数量;实时监控每一虚拟机对应的虚拟设备中可分配设备接口的状态;根据虚拟设备是否使用控制其对应的可分配设备接口的状态为是否被使用。
13.在其中一个实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:相应于虚拟机对待读写的数据资源进行传输时,实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机。
14.在其中一个实施例中,所述实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机步骤包括:扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页;在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理。
15.在其中一个实施例中,所述扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页步骤包括:基于扩展高速串行计算机扩展总线标准扩展第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器;所述第一寄存器存储网卡硬件发包起始地址,记录正在发送报文使用的起始内存地址;所述第二寄存器存储网卡硬件发包结束地址,记录正在发送报文使用的结束内存地址;所述第三寄存器存储网卡硬件收包起始地址,记录正在接收报文使用的起始内存地址;所述第四寄存器存储网卡硬件收包结束地址,记录正在接收报文使用的结束内存地址;所述第五寄存器存储网卡硬件收发包标记,根据所述收发包标记控制网卡硬件发送和接收数据资源的启动和关闭;当虚拟机使用所述虚拟设备对应的可分配设备接口进行收发包时,记录网卡硬件收发包的起始和结束内存地址。
16.在其中一个实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤包括:
设置迁移模块插件,用于控制虚拟机源主机网络输入输出脏数据的收集和发送,控制虚拟机目的主机脏数据的接收;对虚拟机源主机通过钩子函数执行迁移前后的回调函数,当有虚拟机需要进行迁移时,迁移模块插件暂停网卡硬件收发包动作,获取网卡硬件收发包使用的内存地址,将相应的内存地址数据进行拷贝发送到迁移目的主机。
17.在其中一个实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:虚拟机目的主机接收虚拟机源主机发送过来的数据并在虚拟机目的主机进行恢复,设置虚拟机使用的可分配设备接口对应的收发包起始和结束内存地址。
18.在其中一个实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:当目的宿主机起始或者结束内存地址不可用时,则自动向内存地址向下偏移一个内存页地址进行映射,并将相应的数据复制到对应内存地址中。
19.在其中一个实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:在进行虚拟机数据迁移之前,设置网卡硬件收发包标记后启动网卡硬件收发数据工作;实时监测进行虚拟机数据迁移时的脏页数据产生速度和迁移速度,当脏页数据产生速度大于迁移速度时,降低可分配设备接口对待读写的数据资源进行传输的速度,以降低脏页数据产生速度。
20.在其中一个实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:在网卡硬件透传给虚拟机时,保持待读写的数据资源与用于控制待读写的数据资源的控制命令相分离。
21.在另一个实施例中,还提供一种网络接口使用方法,所述方法包括:加载网卡驱动,在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;加载虚拟设备管理模块,获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;根据用户态进程探测虚拟设备,申请用于标识进程地址空间的进程地址空间标识符,对不同的可分配设备接口分配不同的进程地址空间标识符;网卡硬件开始执行初始化,初始化完成后,将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
22.在其中一个实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:所述虚拟机打开网卡硬件中与所述虚拟设备对应的可分配设备接口;用户态进程向网卡驱动发布虚拟机用于控制待读写的数据资源的控制命令,根据
所述控制命令执行控制路径操作;用户态进程向网卡硬件发送读写请求,对待读写的数据资源执行数据路径操作。
23.在其中一个实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:在待读写的数据资源传输完成后关闭虚拟设备;销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。
24.另一方面,提供了一种网络接口实现装置,所述装置包括:接口划分模块,用于在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;虚拟机管理模块,用于获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;虚拟设备管理模块,用于获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;网卡驱动模块,用于将组装的虚拟设备反馈至所述虚拟机,并在所述虚拟机启动时打开网卡硬件中与所述虚拟设备对应的可分配设备接口;虚拟机驱动模块,用于控制所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
25.再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
26.又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
27.上述网络接口管理方法、使用方法、装置、计算机设备和存储介质,通过在网卡硬
件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口,且将控制命令与数据传输路径分离,基于控制命令在网卡硬件中申请数据传输所需数量的未使用的可分配设备接口并动态组装成虚拟设备,对应待读写的数据资源构建虚拟机,虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输,避免了控制命令对数据传输的干扰,有效提升了网卡硬件的利用率,提升了数据传输速度。
附图说明
28.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
29.图1为一个实施例中网络接口管理方法的应用装置图;图2为一个实施例中网络接口使用方法的流程示意图;图3为一个实施例中虚拟机热迁移的流程示意图;图4为一个实施例中网络接口管理方法的流程示意图;图5为一个实施例中在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤的流程示意图;图6为一个实施例中在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备步骤的流程示意图;图7为一个实施例中实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机步骤的流程示意图;图8为一个实施例中网络接口使用方法的流程示意图;图9为一个实施例中虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤的流程示意图;图10为一个实施例中网络接口实现装置的结构框图;图11为一个实施例中计算机设备的内部结构图。
具体实施方式
[0030] 为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0031]
实施例1如背景技术部分所述,当前网络接口有以下几种方式:1、传统使用virtio接口依靠软件来转发报文,需要消耗大量cpu,随着带宽需求的进一步增长,性能已经无法达到业务要求。其中virtio 是半虚拟化虚拟机监视器中位于设备之上的抽象层。
[0032] 2、直通或是sr-iov(single-root i/o virtualization,单根i/o虚拟化)的方式通过将硬件资源透传给虚拟机,虽然性能较好,但是导致云资源失去了灵活扩展性。
[0033] 3、vdpa方式,随着智能网卡发展越来越成熟,通过vdpa方式可以达到虚拟机热迁
移,但是由于virtio 队列在网卡硬件队列做了多次转换,导致性能大幅下降。vdpa(virtio data path acceleration)就是只用硬件加速virtio的数据面。在vdpa技术框架中,硬件设备只需要支持virtio的数据面接口,也就是virtqueue/vring队列结构,控制面接口和实现仍然可以保留设备特有的方式。vdpa的意义在于降低了网卡支持virtio接口的难度。
[0034] 4、虚拟机内部使用virtio网卡和直通网卡进行主备绑定方式,虚拟机正常使用时,绑定接口的物理网卡处于激活状态转发流量,当进行迁移是virtio网卡处于激活状态,使操作系统能够跟踪虚拟机的脏页完成迁移,这种方式需要在虚拟机内部进行操作绑定端口,对用户虚拟机侵入性太大,不适合大批量部署使用。
[0035]
因此需要一种能够兼顾高性能、灵活性、扩展性能的网络接口使用方式来满足当前业务发展需求。
[0036]
本发明实施例1中创造性的提出了一种网络接口管理方法,包括软硬资源定义方法、控制数据路径分离,设备资源管理等组成。本技术提供的网络接口管理方法,可以应用于如图1所示装置的应用环境中。
[0037]
软硬件资源定义方法:由硬件提供细粒度的最小可分配单元,软件进行资源整合提供粗粒度的虚拟设备。
[0038] assignable device interface(adi)是一种最小粒度的可单独分配给各种容器,虚拟机等的硬件资源,adi根据不同网卡硬件支持特性不同,由不同的资源组成比如网卡的收发包队列,rdma的queue pair(qp)。rdma是remote direct memory access的缩写,意思是远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。而容器、虚拟机看到的设备并不是adi,而是由多个adi组合而成的virtual device(vdev)。vdev是一个纯软件的实体,可以使用软件模块对其进行生命周期管理。
[0039]
快慢路径分离:控制面模拟操作,数据面直通。
[0040]
网卡控制面的操作其频度一般较低,所以由软件模拟的,也就是所有控制面的操作走慢路径从虚拟机、容器绕行至宿主机的驱动模块,最终由宿主机驱动负责配置硬件,而非由虚拟机或容器直接配置硬件。数据面经常需要发送和接收报文操作一般非常频繁,为了达到最大的性能,所以数据面硬件需要直通给虚拟机或容器,直接进行数据的读写,无需宿主机介入。
[0041] 设备资源管理:最小硬件可分配单元adi由软件动态组装成虚拟机或容器可用的虚拟设备 (virtual device,vdev)。
[0042] 设备管理模块将最小资源管理单元adi组成一个资源池,对其进行分配和回收管理。一个虚拟设备vdev需要多少个adi硬件资源不需要事先规划制定,甚至vdev本身也不需要事先创建好,它们都是动态按需组装。当某一个业务需要一个n 个adi的vdev设备时,由宿主机虚拟设备管理模块动态的分配n个未使用的adi给此vdev,再将此vdev呈现给虚拟机或容器使用。
[0043]
本技术提供的网络接口管理方法对应图1所示的网络接口管理装置,装置主要包括:资源管理、i/o虚拟化可扩展框架,设备声明周期管理,虚拟机热迁移流程等部分组成。
[0044] 1)资源管理模块:通过cpu的硬件i/o辅助虚拟化技术,重新设计定义虚拟i/o相关资源。
[0045]
通过将网卡设备的队列资源或者rdma的cq队列资源抽象为最小可分配资源adi,
并对这些adi进行资源池化,可以进行动态的分配和回收。
[0046] 通过将最小虚拟机或容器可使用共享设备的粒度定义为可分配设备接口( assignable device interface),所有的可分配设备接口使用相同的pcie requester id (也即使用相同pcie地址)进行通信。
[0047]
不同的可分配设备接口使用进程地址空间标识符(pasid)区分不同的adi执行的内存访问的地址空间。
[0048]
每个可分配设备接口在分配给进程使用时,进程驱动需要分配进程地址空间标识符给adi接口,后续adi接口会根据进程地址空间标识符进行相关的操作,来达到隔离的目的。
[0049] 2)i/o虚拟化可扩展框架:为了提高性能,数据路径操作直接映射到底层adi硬件,这样以来,用户态就能直接读写网卡数据。数据路径通常是网卡在pcie总线发送pasid前缀的内存操作事务,通过可扩展的iommu模式的支持直接访问用户空间内存。
[0050] 为了最大化灵活性,控制路径操作通过vdcm虚拟设备管理模块进行模拟。adi组成虚拟设备vdev并分配给用户空间,每当用户空间应用程序访问控制路径内的某些vdev区域(例如:pcie csr/bar),访问将被捕获处理,通过vfio驱动框架路由到宿主机的驱动模块进行处理,这样宿主机就能跟踪网卡设备的状态,实现脏页跟踪,达到能够在线迁移虚拟机的目的。
[0051]
其中网络接口管理装置的周期管理如图2所示的时序图,以dpdk进程使用网卡为例,包括步骤:步骤1、加载网卡驱动,虚拟设备管理模块;步骤2、创建虚拟设备,根据需要通过申请一个唯一的资源id,去底层网卡硬件申请对应数量的adi资源;步骤3、用户态进程dpdk探测虚拟设备,vfio设备驱动会申请用于标识进程地址空间的pasid,iommu驱动分配pasid,完成相关资源分配之后,设备相关的初始化就开始执行,初始化完成后即可以打开设备使用;步骤4、dpdk进程通过发布vfio设备的读写指令通告网卡驱动针对控制路径进行操作;步骤5、dpdk进程直接可以再网卡硬件执行数据路径操作通过dma读写请求,dma的读写请求;步骤6、当dpdk进程关闭虚拟设备;步骤7、销毁虚拟设备,释放从网卡硬件申请的adi资源。
[0052] 请参阅图3,虚拟机热迁移流程:能够实现虚拟机在线迁移的关键是宿主机虚拟机监视器(hypervisor)能够跟踪虚拟机运行过程中产生的脏页,并能够将这些脏页数据迁移到目的主机。
[0053] 1)扩展pcie寄存器,保存网络i/o数据处理的脏页基于标准的pcie进行扩展如下五个寄存器。
[0054] 网卡发包起始地址 2字节:记录正在发送报文使用的起始内存地址;网卡发包结束地址 2字节:记录正在发送报文使用的结束内存地址;
网卡收包起始地址 2字节:记录正在接收报文使用的起始内存地址;网卡收包结束地址 2字节:记录正在接收报文使用的结束内存地址;暂停网卡收发包标记flag 1字节:低2位bit分别用于控制网卡发送和接收的启动和关闭。
[0055] 当虚拟机使用数据路径进行收发包的时候,驱动会在pcie记录网卡卡收发包的起始和结束内存地址。
[0056] 2)设计migrate插件(迁移辅助插件),监控pcie的寄存器的变化,对脏数据进行拷贝处理增加migrate迁移模块插件,该模块负责虚拟机源主机网络i/o相关脏数据的收集和发送,虚拟机目的主机脏数据的接收。对于虚拟机源主机该模块通过hook钩子函数执行迁移前后的一些回调函数,当有虚拟机需要进行迁移时,migrate模块首先通过暂停网卡收发包标记寄存器停止网卡收发包动作,然后获取网卡收发包使用内存地址,将相应的内存地址数据进行拷贝发送到迁移目的主机。对于虚拟机目的主机该模块接收源主机发送过来的数据并在目的主机进行恢复,主要是设置虚拟机使用的adi设备pcie扩展寄存器的网卡起始和结束地址,当目的宿主机起始或者结束地址不可用时,则自动向内存地址向下偏移一个page(内存页)地址进行映射,并将相应的数据复制到对应内存地址中,当整体虚拟机迁移完成之前,设置网卡收发包标记flag启动网卡收发数据继续进行工作,完成虚拟机的在线迁移。
[0057] 如图3所示,qemu是一套由法布里斯
·
贝拉(fabrice bellard)所编写的以gpl许可证分发源码的模拟处理器软件,在gnu/linux平台上使用广泛。
[0058] 虚拟机使用该高性能、高扩展性的接口,在虚拟机启动时传给qemu如下设备参数:-device vfio-pci,sysfsdev=/sys/bus/mdev/devices/596661ba-b9f9-11ec-97ad-984fee00 51ab,其中最后一位为根据雪花算法生成的唯一设备id,保证不与其他设备id冲突,虚拟机启动后,在虚拟机内部安装网卡vf(virtual function)的驱动识别网卡,虚拟机内部识别到网卡后即可进行正常的收发报文。
[0059] 当虚拟机正在执行网络i/o相关操作时,可以通过执行qemu migrate命令对虚拟机进行迁移,并可以使用qemu info vm-id查看虚拟机内存脏页的迁移状态,等待虚拟内存内存迁移完成之后,虚拟机就完成了迁移。当虚拟机网络i/o压力很大时,可能会导致内存脏页产生速度大于迁移速度,这样会导致虚拟机无法完成迁移,这时可以使用ip link set vf 0 qos《速率》命令针对网卡机型i/o限速,让虚拟机能够完成迁移。
[0060] 本实施例的关键点是:控制与数据路径分离,通过重新组合硬件资源,获得资源弹性分配的能力,并拦截pci bar操作重定向到宿主机驱动处理,跟踪虚拟机资源的寄存器状态,可以动态跟踪内存脏页数据,形成兼顾高性能、高扩展性的网络接口方案。
[0061]
本实施例支持虚拟机、容器在线热迁移的高性能网络接口实现方法及装置可以是大幅提高云计算的使用效率,降低网络i/o损耗,同时又具有云资源的灵活伸缩的能力,满足云计算环境业务对高带宽的需求,提高产品竞争力。以低成本低复杂性的方式提供高可扩展和高性能的物理设备共享和租户隔离的能力。
[0062] 本实施例采用软件驱动与硬件资源协同管理的方法;通告细粒度资源的重新组合进行虚拟设备资源的抽象,达到硬件资源的高扩展弹性使用,同时控制与数据路径分离,
拦截pci控制路径操作交由宿主机驱动处理,从而使宿主机能够跟踪虚拟机或容器脏页内容,达到可以在线迁移的效果;并且为了高性能虚拟机和容器可以通过用户态驱动直接对网卡硬件进行读写。
[0063]
实施例2在实施例2中包含了实施例1的全部技术特征,如图4所示,在实施例2中提供了一种网络接口管理方法,以该方法应用于图1中的网络接口管理装置为例进行说明,包括以下步骤:步骤s1,在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;步骤s2,获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;步骤s3,获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;步骤s4,将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
[0064]
如图5所示,在本实施例中,所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤包括:步骤s11,将所有可分配资源进行资源池化以进行动态的分配和回收。
[0065]
如图5所示,在本实施例中,所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤还包括:步骤s12,设置所有的可分配设备接口使用相同的地址空间进行通信;步骤s13,设置不同的可分配设备接口使用不同的进程地址空间标识符。
[0066]
在本实施例中,所述方法还包括:每个可分配设备接口在分配给进程使用时,对每个可分配设备接口分配进程地址空间标识符,所述可分配设备接口根据进程地址空间标识符访问地址空间。
[0067]
在本实施例中,所述对每个可分配设备接口分配进程地址空间标识符时,包括:根据雪花算法生成的唯一设备地址作为所述进程地址空间标识符的最后一位。
[0068]
如图4所示,在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:步骤s5,在待读写的数据资源传输完成后关闭虚拟设备。
[0069]
如图4所示,在本实施例中,所述在待读写的数据资源传输完成后关闭虚拟设备步骤之后还包括:步骤s6,销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。
[0070]
如图6所示,在本实施例中,所述在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备步骤包括:步骤s31,获取虚拟机用于传输待读写的数据资源所需的可分配设备接口数量;步骤s32,采用网卡驱动获取网卡硬件中所有未使用的可分配设备接口;步骤s33,在网卡硬件中选取对应数量的未使用的可分配设备接口动态组装成虚拟设备。
[0071]
在本实施例中,所述方法还包括:实时监控虚拟机的数量;实时监控每一虚拟机对应的虚拟设备中可分配设备接口的状态;根据虚拟设备是否使用控制其对应的可分配设备接口的状态为是否被使用。
[0072]
在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:相应于虚拟机对待读写的数据资源进行传输时,实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机。
[0073]
如图7所示,在本实施例中,所述实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机步骤包括:步骤s41,扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页;步骤s42,在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理。
[0074]
在本实施例中,所述扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页步骤包括:基于扩展高速串行计算机扩展总线标准扩展第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器;所述第一寄存器存储网卡硬件发包起始地址,记录正在发送报文使用的起始内存地址;所述第二寄存器存储网卡硬件发包结束地址,记录正在发送报文使用的结束内存地址;所述第三寄存器存储网卡硬件收包起始地址,记录正在接收报文使用的起始内存地址;所述第四寄存器存储网卡硬件收包结束地址,记录正在接收报文使用的结束内存地址;所述第五寄存器存储网卡硬件收发包标记,根据所述收发包标记控制网卡硬件发送和接收数据资源的启动和关闭;当虚拟机使用所述虚拟设备对应的可分配设备接口进行收发包时,记录网卡硬件收发包的起始和结束内存地址。
[0075]
在本实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤包括:设置迁移模块插件,用于控制虚拟机源主机网络输入输出脏数据的收集和发送,控制虚拟机目的主机脏数据的接收;对虚拟机源主机通过钩子函数执行迁移前后的回调函数,当有虚拟机需要进行迁移时,迁移模块插件暂停网卡硬件收发包动作,获取网卡硬件收发包使用的内存地址,将相应的内存地址数据进行拷贝发送到迁移目的主机。
[0076]
在本实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:虚拟机目的主机接收虚拟机源主机发送过来的数据并在虚拟机目的主机进行恢复,设置虚拟机使用的可分配设备接口对应的收发包起始和结束内存地址。
[0077]
在本实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:当目的宿主机起始或者结束内存地址不可用时,则自动向内存地址向下偏移一个
内存页地址进行映射,并将相应的数据复制到对应内存地址中。
[0078]
在本实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:在进行虚拟机数据迁移之前,设置网卡硬件收发包标记后启动网卡硬件收发数据工作;实时监测进行虚拟机数据迁移时的脏页数据产生速度和迁移速度,当脏页数据产生速度大于迁移速度时,降低可分配设备接口对待读写的数据资源进行传输的速度,以降低脏页数据产生速度。
[0079]
在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:在网卡硬件透传给虚拟机时,保持待读写的数据资源与用于控制待读写的数据资源的控制命令相分离。
[0080]
即是网卡pcie通道控制路径和数据路径分离有两个目的,第一可以提高性能,保持与网卡硬件想进的性能,第二是控制路径的分离能够使宿主机驱动、宿主机虚拟机监视器(hypervisor)、migrate插件(迁移辅助插件)模块监控到网卡当前数据处理状态,跟踪脏数据,达到在线迁移的目的。
[0081]
结合图2,如图8所示,在本实施例中,还提供一种网络接口使用方法,所述方法包括:步骤s10,加载网卡驱动,在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;步骤s20,获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;步骤s30,加载虚拟设备管理模块,获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;步骤s40,根据用户态进程探测虚拟设备,申请用于标识进程地址空间的进程地址空间标识符,对不同的可分配设备接口分配不同的进程地址空间标识符;步骤s50,网卡硬件开始执行初始化,初始化完成后,将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
[0082]
如图9所示,在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:步骤s51,所述虚拟机打开网卡硬件中与所述虚拟设备对应的可分配设备接口;步骤s52,用户态进程向网卡驱动发布虚拟机用于控制待读写的数据资源的控制命令,根据所述控制命令执行控制路径操作;步骤s53,用户态进程向网卡硬件发送读写请求,对待读写的数据资源执行数据路径操作。
[0083]
如图8所示,在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:步骤s60,在待读写的数据资源传输完成后关闭虚拟设备;
步骤s70,销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。
[0084]
上述网络接口管理方法中,通过在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口,且将控制命令与数据传输路径分离,基于控制命令在网卡硬件中申请数据传输所需数量的未使用的可分配设备接口并动态组装成虚拟设备,对应待读写的数据资源构建虚拟机,虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输,避免了控制命令对数据传输的干扰,有效提升了网卡硬件的利用率,提升了数据传输速度。
[0085]
应该理解的是,虽然图4-图9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4-图9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0086]
在一个实施例中,如图10所示,提供了一种网络接口实现装置10,包括:接口划分模块1、虚拟机管理模块2、虚拟设备管理模块3、网卡驱动模块4、虚拟机驱动模块5。
[0087]
所述接口划分模块1用于在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口。
[0088]
所述虚拟机管理模块2用于获取待读写的数据资源,并对应待读写的数据资源构建虚拟机。
[0089]
所述虚拟设备管理模块3用于获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备。
[0090]
所述网卡驱动模块4用于将组装的虚拟设备反馈至所述虚拟机,并在所述虚拟机启动时打开网卡硬件中与所述虚拟设备对应的可分配设备接口;所述虚拟机驱动模块5用于控制所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
[0091]
在本实施例中,所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤包括:将所有可分配资源进行资源池化以进行动态的分配和回收。
[0092]
在本实施例中,所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤还包括:设置所有的可分配设备接口使用相同的地址空间进行通信;设置不同的可分配设备接口使用不同的进程地址空间标识符。
[0093]
在本实施例中,在每个可分配设备接口在分配给进程使用时,对每个可分配设备接口分配进程地址空间标识符,所述可分配设备接口根据进程地址空间标识符访问地址空间。
[0094]
在本实施例中,所述对每个可分配设备接口分配进程地址空间标识符时,包括:根据雪花算法生成的唯一设备地址作为所述进程地址空间标识符的最后一位。
[0095]
在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:在待读写的数据资源传输完成后关闭虚拟设备。
[0096]
在本实施例中,所述在待读写的数据资源传输完成后关闭虚拟设备步骤之后还包括:销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。
[0097]
在本实施例中,所述在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备步骤包括:获取虚拟机用于传输待读写的数据资源所需的可分配设备接口数量;采用网卡驱动获取网卡硬件中所有未使用的可分配设备接口;在网卡硬件中选取对应数量的未使用的可分配设备接口动态组装成虚拟设备。
[0098]
如图10所示,在本实施例中,所述网络接口实现装置10还包括虚拟机监视器6;所述虚拟机监视器6用于:实时监控虚拟机的数量;实时监控每一虚拟机对应的虚拟设备中可分配设备接口的状态;根据虚拟设备是否使用控制其对应的可分配设备接口的状态为是否被使用。
[0099]
在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:相应于虚拟机对待读写的数据资源进行传输时,实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机。
[0100]
在本实施例中,所述实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机步骤包括:扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页;在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理。
[0101]
在本实施例中,所述扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页步骤包括:基于扩展高速串行计算机扩展总线标准扩展第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器;所述第一寄存器存储网卡硬件发包起始地址,记录正在发送报文使用的起始内存地址;所述第二寄存器存储网卡硬件发包结束地址,记录正在发送报文使用的结束内存地址;所述第三寄存器存储网卡硬件收包起始地址,记录正在接收报文使用的起始内存地址;所述第四寄存器存储网卡硬件收包结束地址,记录正在接收报文使用的结束内存地址;所述第五寄存器存储网卡硬件收发包标记,根据所述收发包标记控制网卡硬件发送和接收数据资源的启动和关闭;当虚拟机使用所述虚拟设备对应的可分配设备接口进行收发包时,记录网卡硬件收发包的起始和结束内存地址。
[0102]
在本实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤包括:
设置迁移模块插件,用于控制虚拟机源主机网络输入输出脏数据的收集和发送,控制虚拟机目的主机脏数据的接收;对虚拟机源主机通过钩子函数执行迁移前后的回调函数,当有虚拟机需要进行迁移时,迁移模块插件暂停网卡硬件收发包动作,获取网卡硬件收发包使用的内存地址,将相应的内存地址数据进行拷贝发送到迁移目的主机。
[0103]
在本实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:虚拟机目的主机接收虚拟机源主机发送过来的数据并在虚拟机目的主机进行恢复,设置虚拟机使用的可分配设备接口对应的收发包起始和结束内存地址。
[0104]
在本实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:当目的宿主机起始或者结束内存地址不可用时,则自动向内存地址向下偏移一个内存页地址进行映射,并将相应的数据复制到对应内存地址中。
[0105]
在本实施例中,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:在进行虚拟机数据迁移之前,设置网卡硬件收发包标记后启动网卡硬件收发数据工作;实时监测进行虚拟机数据迁移时的脏页数据产生速度和迁移速度,当脏页数据产生速度大于迁移速度时,降低可分配设备接口对待读写的数据资源进行传输的速度,以降低脏页数据产生速度。
[0106]
上述网络接口实现装置中,通过在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口,且将控制命令与数据传输路径分离,基于控制命令在网卡硬件中申请数据传输所需数量的未使用的可分配设备接口并动态组装成虚拟设备,对应待读写的数据资源构建虚拟机,虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输,避免了控制命令对数据传输的干扰,有效提升了网卡硬件的利用率,提升了数据传输速度。
[0107]
关于网络接口实现装置的具体限定可以参见上文中对于网络接口管理方法的限定,在此不再赘述。上述网络接口实现装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0108]
请参阅图2,结合图1、图10所示的网络接口实现装置,在本实施例中还提供一种适用于网络接口实现装置的网络接口使用方法,所述方法包括:加载网卡驱动,在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;加载虚拟设备管理模块,获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;
根据用户态进程探测虚拟设备,申请用于标识进程地址空间的进程地址空间标识符,对不同的可分配设备接口分配不同的进程地址空间标识符;网卡硬件开始执行初始化,初始化完成后,将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
[0109]
在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:所述虚拟机打开网卡硬件中与所述虚拟设备对应的可分配设备接口;用户态进程向网卡驱动发布虚拟机用于控制待读写的数据资源的控制命令,根据所述控制命令执行控制路径操作;用户态进程向网卡硬件发送读写请求,对待读写的数据资源执行数据路径操作。
[0110]
在本实施例中,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:在待读写的数据资源传输完成后关闭虚拟设备;销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。
[0111]
实施例3在实施例3中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储网络接口实现数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种网络接口管理方法。
[0112]
本领域技术人员可以理解,图11中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0113]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
[0114]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤包括:将所有可分配资源进行资源池化以进行动态的分配和回收。
[0115]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤还包括:设置所有的可分配设备接口使用相同的地址空间进行通信;设置不同的可分配设备接口使用不同的进程地址空间标识符。
[0116]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:每个可分配设备接口在分配给进程使用时,对每个可分配设备接口分配进程地址空间标识符,所述可分配设备接口根据进程地址空间标识符访问地址空间。
[0117]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述对每个可分配设备接口分配进程地址空间标识符时,包括:根据雪花算法生成的唯一设备地址作为所述进程地址空间标识符的最后一位。
[0118]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:在待读写的数据资源传输完成后关闭虚拟设备。
[0119]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述在待读写的数据资源传输完成后关闭虚拟设备步骤之后还包括:销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。
[0120]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备步骤包括:获取虚拟机用于传输待读写的数据资源所需的可分配设备接口数量;采用网卡驱动获取网卡硬件中所有未使用的可分配设备接口;在网卡硬件中选取对应数量的未使用的可分配设备接口动态组装成虚拟设备。
[0121]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:实时监控虚拟机的数量;实时监控每一虚拟机对应的虚拟设备中可分配设备接口的状态;根据虚拟设备是否使用控制其对应的可分配设备接口的状态为是否被使用。
[0122]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:相应于虚拟机对待读写的数据资源进行传输时,实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机。
[0123]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机步骤包括:扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页;在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷
贝处理。
[0124]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页步骤包括:基于扩展高速串行计算机扩展总线标准扩展第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器;所述第一寄存器存储网卡硬件发包起始地址,记录正在发送报文使用的起始内存地址;所述第二寄存器存储网卡硬件发包结束地址,记录正在发送报文使用的结束内存地址;所述第三寄存器存储网卡硬件收包起始地址,记录正在接收报文使用的起始内存地址;所述第四寄存器存储网卡硬件收包结束地址,记录正在接收报文使用的结束内存地址;所述第五寄存器存储网卡硬件收发包标记,根据所述收发包标记控制网卡硬件发送和接收数据资源的启动和关闭;当虚拟机使用所述虚拟设备对应的可分配设备接口进行收发包时,记录网卡硬件收发包的起始和结束内存地址。
[0125]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤包括:设置迁移模块插件,用于控制虚拟机源主机网络输入输出脏数据的收集和发送,控制虚拟机目的主机脏数据的接收;对虚拟机源主机通过钩子函数执行迁移前后的回调函数,当有虚拟机需要进行迁移时,迁移模块插件暂停网卡硬件收发包动作,获取网卡硬件收发包使用的内存地址,将相应的内存地址数据进行拷贝发送到迁移目的主机。
[0126]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:虚拟机目的主机接收虚拟机源主机发送过来的数据并在虚拟机目的主机进行恢复,设置虚拟机使用的可分配设备接口对应的收发包起始和结束内存地址。
[0127]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:当目的宿主机起始或者结束内存地址不可用时,则自动向内存地址向下偏移一个内存页地址进行映射,并将相应的数据复制到对应内存地址中。
[0128]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:在进行虚拟机数据迁移之前,设置网卡硬件收发包标记后启动网卡硬件收发数据工作;实时监测进行虚拟机数据迁移时的脏页数据产生速度和迁移速度,当脏页数据产生速度大于迁移速度时,降低可分配设备接口对待读写的数据资源进行传输的速度,以降低脏页数据产生速度。
[0129] 关于处理器执行计算机程序时实现步骤的具体限定可以参见上文中对于网络接口实现的方法的限定,在此不再赘述。
[0130]
实施例4在实施例4中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
[0131]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤包括:将所有可分配资源进行资源池化以进行动态的分配和回收。
[0132]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤还包括:设置所有的可分配设备接口使用相同的地址空间进行通信;设置不同的可分配设备接口使用不同的进程地址空间标识符。
[0133]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:每个可分配设备接口在分配给进程使用时,对每个可分配设备接口分配进程地址空间标识符,所述可分配设备接口根据进程地址空间标识符访问地址空间。
[0134]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述对每个可分配设备接口分配进程地址空间标识符时,包括:根据雪花算法生成的唯一设备地址作为所述进程地址空间标识符的最后一位。
[0135]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:在待读写的数据资源传输完成后关闭虚拟设备。
[0136]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述在待读写的数据资源传输完成后关闭虚拟设备步骤之后还包括:销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。
[0137]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备步骤包括:获取虚拟机用于传输待读写的数据资源所需的可分配设备接口数量;
采用网卡驱动获取网卡硬件中所有未使用的可分配设备接口;在网卡硬件中选取对应数量的未使用的可分配设备接口动态组装成虚拟设备。
[0138]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:实时监控虚拟机的数量;实时监控每一虚拟机对应的虚拟设备中可分配设备接口的状态;根据虚拟设备是否使用控制其对应的可分配设备接口的状态为是否被使用。
[0139]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:相应于虚拟机对待读写的数据资源进行传输时,实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机。
[0140]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机步骤包括:扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页;在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理。
[0141]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述扩展高速串行计算机扩展总线标准(pcie)寄存器,保存输入输出数据处理的脏页步骤包括:基于扩展高速串行计算机扩展总线标准扩展第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器;所述第一寄存器存储网卡硬件发包起始地址,记录正在发送报文使用的起始内存地址;所述第二寄存器存储网卡硬件发包结束地址,记录正在发送报文使用的结束内存地址;所述第三寄存器存储网卡硬件收包起始地址,记录正在接收报文使用的起始内存地址;所述第四寄存器存储网卡硬件收包结束地址,记录正在接收报文使用的结束内存地址;所述第五寄存器存储网卡硬件收发包标记,根据所述收发包标记控制网卡硬件发送和接收数据资源的启动和关闭;当虚拟机使用所述虚拟设备对应的可分配设备接口进行收发包时,记录网卡硬件收发包的起始和结束内存地址。
[0142]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤包括:设置迁移模块插件,用于控制虚拟机源主机网络输入输出脏数据的收集和发送,控制虚拟机目的主机脏数据的接收;对虚拟机源主机通过钩子函数执行迁移前后的回调函数,当有虚拟机需要进行迁移时,迁移模块插件暂停网卡硬件收发包动作,获取网卡硬件收发包使用的内存地址,将相应的内存地址数据进行拷贝发送到迁移目的主机。
[0143]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:虚拟机目的主机接收虚拟机源主机发送过来的数据并在虚拟机目的主机进行恢复,设置虚拟机使用的可分配设备接口对应的收发包起始和结束内存地址。
[0144]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:当目的宿主机起始或者结束内存地址不可用时,则自动向内存地址向下偏移一个内存页地址进行映射,并将相应的数据复制到对应内存地址中。
[0145]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:在进行虚拟机数据迁移之前,设置网卡硬件收发包标记后启动网卡硬件收发数据工作;实时监测进行虚拟机数据迁移时的脏页数据产生速度和迁移速度,当脏页数据产生速度大于迁移速度时,降低可分配设备接口对待读写的数据资源进行传输的速度,以降低脏页数据产生速度。
[0146]
关于计算机程序被处理器执行时实现步骤的具体限定可以参见上文中对于网络接口实现的方法的限定,在此不再赘述。
[0147] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink) dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0148]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0149]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。

技术特征:
1.一种网络接口管理方法,其特征在于,包括:在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。2.根据权利要求1所述的网络接口管理方法,其特征在于,所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤包括:将所有可分配资源进行资源池化以进行动态的分配和回收。3.根据权利要求2所述的网络接口管理方法,其特征在于,所述在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口步骤还包括:设置所有的可分配设备接口使用相同的地址空间进行通信;设置不同的可分配设备接口使用不同的进程地址空间标识符以在访问地址空间时能够区分不同的可分配设备接口。4.根据权利要求3所述的网络接口管理方法,其特征在于,所述方法还包括:每个可分配设备接口在分配给进程使用时,对每个可分配设备接口分配进程地址空间标识符,所述可分配设备接口根据进程地址空间标识符访问地址空间。5.根据权利要求4所述的网络接口管理方法,其特征在于,所述对每个可分配设备接口分配进程地址空间标识符时,包括:根据雪花算法生成的唯一设备地址作为所述进程地址空间标识符的最后一位。6.根据权利要求1所述的网络接口管理方法,其特征在于,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:在待读写的数据资源传输完成后关闭虚拟设备。7.根据权利要求6所述的网络接口管理方法,其特征在于,所述在待读写的数据资源传输完成后关闭虚拟设备步骤之后还包括:销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。8.根据权利要求1所述的网络接口管理方法,其特征在于,所述在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备步骤包括:获取虚拟机用于传输待读写的数据资源所需的可分配设备接口数量;采用网卡驱动获取网卡硬件中所有未使用的可分配设备接口;在网卡硬件中选取对应数量的未使用的可分配设备接口动态组装成虚拟设备。9.根据权利要求1所述的网络接口管理方法,其特征在于,所述方法还包括:实时监控虚拟机的数量;实时监控每一虚拟机对应的虚拟设备中可分配设备接口的状态;根据虚拟设备是否使用控制其对应的可分配设备接口的状态为是否被使用。
10.根据权利要求1所述的网络接口管理方法,其特征在于,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:相应于虚拟机对待读写的数据资源进行传输时,实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机。11.根据权利要求10所述的网络接口管理方法,其特征在于,所述实时跟踪虚拟机运行过程中产生的脏页,并将脏页数据迁移到目的主机步骤包括:扩展高速串行计算机扩展总线标准寄存器,保存输入输出数据处理的脏页;在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理。12.根据权利要求11所述的网络接口管理方法,其特征在于,所述扩展高速串行计算机扩展总线标准寄存器,保存输入输出数据处理的脏页步骤包括:基于扩展高速串行计算机扩展总线标准扩展第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器;所述第一寄存器存储网卡硬件发包起始地址,记录正在发送报文使用的起始内存地址;所述第二寄存器存储网卡硬件发包结束地址,记录正在发送报文使用的结束内存地址;所述第三寄存器存储网卡硬件收包起始地址,记录正在接收报文使用的起始内存地址;所述第四寄存器存储网卡硬件收包结束地址,记录正在接收报文使用的结束内存地址;所述第五寄存器存储网卡硬件收发包标记,根据所述收发包标记控制网卡硬件发送和接收数据资源的启动和关闭;当虚拟机使用所述虚拟设备对应的可分配设备接口进行收发包时,记录网卡硬件收发包的起始和结束内存地址。13.根据权利要求12所述的网络接口管理方法,其特征在于,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤包括:设置迁移模块插件,用于控制虚拟机源主机网络输入输出脏数据的收集和发送,控制虚拟机目的主机脏数据的接收;对虚拟机源主机通过钩子函数执行迁移前后的回调函数,当有虚拟机需要进行迁移时,迁移模块插件暂停网卡硬件收发包动作,获取网卡硬件收发包使用的内存地址,将相应的内存地址数据进行拷贝发送到迁移目的主机。14.根据权利要求13所述的网络接口管理方法,其特征在于,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:虚拟机目的主机接收虚拟机源主机发送过来的数据并在虚拟机目的主机进行恢复,设置虚拟机使用的可分配设备接口对应的收发包起始和结束内存地址。15.根据权利要求14所述的网络接口管理方法,其特征在于,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:当目的宿主机起始或者结束内存地址不可用时,则自动向内存地址向下偏移一个内存页地址进行映射,并将相应的数据复制到对应内存地址中。16.根据权利要求15所述的网络接口管理方法,其特征在于,所述在输入输出数据对应脏页数据收集和发送时监控寄存器的变化,对脏数据进行拷贝处理步骤还包括:在进行虚拟机数据迁移之前,设置网卡硬件收发包标记后启动网卡硬件收发数据工作;
实时监测进行虚拟机数据迁移时的脏页数据产生速度和迁移速度,当脏页数据产生速度大于迁移速度时,降低可分配设备接口对待读写的数据资源进行传输的速度,以降低脏页数据产生速度。17.根据权利要求1所述的网络接口管理方法,其特征在于,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:在网卡硬件透传给虚拟机时,保持待读写的数据资源与用于控制待读写的数据资源的控制命令相分离。18.一种网络接口使用方法,其特征在于,所述方法包括:加载网卡驱动,在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;加载虚拟设备管理模块,获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;根据用户态进程探测虚拟设备,申请用于标识进程地址空间的进程地址空间标识符,对不同的可分配设备接口分配不同的进程地址空间标识符;网卡硬件开始执行初始化,初始化完成后,将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。19.根据权利要求18所述的网络接口使用方法,其特征在于,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤包括:所述虚拟机打开网卡硬件中与所述虚拟设备对应的可分配设备接口;用户态进程向网卡驱动发布虚拟机用于控制待读写的数据资源的控制命令,根据所述控制命令执行控制路径操作;用户态进程向网卡硬件发送读写请求,对待读写的数据资源执行数据路径操作。20.根据权利要求18所述的网络接口使用方法,其特征在于,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输步骤之后还包括:在待读写的数据资源传输完成后关闭虚拟设备;销毁虚拟设备,释放从网卡硬件申请的可分配设备接口。21.一种网络接口实现装置,其特征在于,所述装置包括:接口划分模块,用于在网卡硬件中构建多个最小粒度的可分配资源,将每一最小粒度的可分配资源定义为可分配设备接口;虚拟机管理模块,用于获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;虚拟设备管理模块,用于获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;网卡驱动模块,用于将组装的虚拟设备反馈至所述虚拟机,并在所述虚拟机启动时打开网卡硬件中与所述虚拟设备对应的可分配设备接口;虚拟机驱动模块,用于控制所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。
22.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至17中任一项所述方法的步骤。23.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至17中任一项所述的方法的步骤。

技术总结
本申请涉及一种网络接口管理方法、使用方法、装置、设备和存储介质。所述方法包括:在网卡硬件中构建多个最小粒度的可分配资源,将每一可分配资源定义为可分配设备接口;获取待读写的数据资源,并对应待读写的数据资源构建虚拟机;获取所述虚拟机用于控制待读写的数据资源的控制命令,并根据所述控制命令计算用于传输待读写的数据资源所需的可分配设备接口数量,在网卡硬件中申请对应数量的未使用的可分配设备接口并动态组装成虚拟设备;将组装的虚拟设备反馈至所述虚拟机,所述虚拟机根据所述虚拟设备对应的可分配设备接口对待读写的数据资源进行传输。本方法避免了控制命令对数据传输的干扰,提升了网卡硬件的利用率,提升了数据传输速度。数据传输速度。数据传输速度。


技术研发人员:王培辉
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.06.13
技术公布日:2023/7/18
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐