DMA队列切换方法和系统与流程

文档序号:11590063阅读:270来源:国知局

本发明涉及通信技术领域,特别是涉及到一种dma队列切换方法和系统。



背景技术:

现有的虚拟化管理系统如图1所示,包括虚拟化管理平台、网卡和虚拟化实体,虚拟化实体可以是虚拟机、容器(container)等。网卡中高速物理接口、虚拟硬交换、流分类器、直接内存访问(directmemoryaccess,dma)队列、虚拟功能(virtualfunction,vf)(或物理功能(physicalfunction,pf))组成数据通路,其中,每一个dma队列服务一个虚拟化实体,如dma队列1、dma队列2和dma队列3分别服务于虚拟化实体1、虚拟化实体2和虚拟化实体3。数据报从局域网进入网卡后,网卡中的内置交换逻辑和流分类器确定数据报要去的dma队列的队列号,并且该队列号被添加为数据报的一个属性域。数据报在网卡的数据通路中继续被处理,当处理结束后,数据报被输出网卡的数据通路,写回虚拟化实体所在的物理服务器的内存。数据报输出网卡的数据通路后,虚拟化实体有两种工作模式:一种是数据报通过虚拟化管理平台的虚拟软交换转发给虚拟化实体,如图1中的虚拟化实体3;一种是虚拟化实体直接拥有dma队列,也就是说,数据报直接从网卡流向虚拟化实体,不经由虚拟化管理平台转发,如图1中的虚拟化实体1和虚拟化实体2,单根输入/输出虚拟化(sr‐iov)和container直接操作dma队列就属于这种模式。

在数据报传输过程中,有时需要进行虚拟化实体的热迁移。虚拟化实体的热迁移是指在保证虚拟化实体服务正常运行的同时,将虚拟化实体在不同的物理服务器之间进行迁移。为了保证热迁移过程中虚拟化实体服务的可用,热迁移过程仅有非常短暂的停机时间。热迁移的前面阶段,服务在源服务器上运行,当热迁移进行到一定阶段,目的服务器已经具备了运行系统的必须资源,经过一个非常短暂的切换,源服务器将控制权转移到目的服务器,服务在目的服务器上继续运行。对于服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而热迁移过程对用户是透明的。

虽然上述切换的时间非常短暂,然而,在热迁移过程中,一部分数据报已经进入网卡的缓存,当虚拟化实体短暂宕机时,这部分数据报由于无法到达虚拟化实体而丢失。这可能引起系统应用的可靠性问题,而丢失数据报后导致的数据报重传会加大瞬时的网络负载。

随着网卡技术的发展,设计者把越来越多的数据报处理功能集成进网卡,来加速主机cpu。这需要网卡缓存一部分数据报来进行报文处理。特别随着网络功能虚拟化(networkfunctionvirtualization,nfv)技术的发展,业界正着力把特征匹配、深度包解析、数据去冗余等功能迁移到带有可编程器件的智能网卡(smartnic)上,这进一步加大了数据报的缓存需求。当虚拟化实体宕机的时候,这些缓存的数据报可能因为到达不了虚拟化实体而丢失。

为了解决上述问题,现有技术中提出了一种虚拟化实体迁移方法,通过虚拟化管理平台将待迁移的虚拟化实体的流量重定向至网络迁移辅助实体来实现虚拟化实体的无缝迁移,该方案要求在发起切换命令之前,数据报都送往待迁移的虚拟化实体;在发起切换命令后,数据报都送往网络迁移辅助程序。而且,必须保证既不能把切换命令后的数据报再发往待迁移的虚拟化实体,又不能把切换命令前的数据报发往网络迁移辅助程序。

然而,上述方案只能适用于数据流通过虚拟化管理平台的应用场景(如图1中的虚拟化实体3的工作模式),此时虚拟化管理平台才可以对数据流进行重定向操作。但是,对于数据流不通过虚拟化管理平台的应用场景(如图1中虚拟化实体1和2的工作模式),比如sr‐iov和container直接操作dma队列的情形,虚拟化管理平台就无法对数据流进行重定向,无法实现虚拟化实体的无缝迁移。

综上所述,现有的虚拟化实体迁移方案,适用范围窄,无法对数据流不通过虚拟化管理平台的应用场景实现虚拟化实体的无缝迁移。



技术实现要素:

本发明的主要目的为提供一种dma队列切换方法和系统,旨在解决现有技术中无法对数据流不通过虚拟化管理平台的应用场景实现虚拟化实体的无缝迁移的技术问题。

为达以上目的,本发明提出一种dma队列切换方法,所述方法包括以下步骤:

虚拟化管理平台向网卡侧的切换模块发送切换命令;

所述切换模块根据所述切换命令执行切换操作,以将所述网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向预置的服务于网络迁移辅助实体的热备dma队列;

当切换完成后,所述虚拟化管理平台对所述虚拟化实体进行宕机操作。

进一步地,所述切换模块根据所述切换命令进行切换操作的步骤包括:

所述切换模块接收到所述切换命令后,判断当前是否有数据报传输至所述虚拟化实体;

若是,则待所述数据报传输完毕后才执行切换操作;

若否,则立即执行切换操作。

进一步地,所述切换模块设于所述数据通路的末端,所述方法还包括:

当所述数据报全部通过所述切换模块所在位置时,所述切换模块则判决所述数据报传输完毕。

进一步地,所述切换模块设于所述数据通路的中部,所述方法还包括:

当所述数据报通过所述切换模块所在位置时,所述切换模块记录所述数据报的标记;

根据所述标记跟踪所述数据报,当所述数据报全部输出所述数据通路时,所述切换模块则判决所述数据报传输完毕。

进一步地,所述切换模块根据所述切换命令执行切换操作的步骤之后还包括:

所述切换模块通知所述虚拟化管理平台切换完成。

本发明同时提出一种dma队列切换系统,所述系统包括虚拟化管理平台和网卡侧的切换模块,其中:

所述虚拟化管理平台,用于向所述切换模块发送切换命令;

所述切换模块,用于根据所述切换命令执行切换操作,以将所述网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向预置的服务于网络迁移辅助实体的热备dma队列;

所述虚拟化管理平台还用于:当切换完成后,对所述虚拟化实体进行宕机操作。

进一步地,所述切换模块用于:

接收到所述切换命令后,判断当前是否有数据报传输至所述虚拟化实体;若是,则待所述数据报传输完毕后才执行切换操作;若否,则立即执行切换操作。

进一步地,所述切换模块设于所述数据通路的末端,所述切换模块还用于:当所述数据报全部通过所述切换模块所在位置时,判决所述数据报传输完毕。

进一步地,所述切换模块设于所述数据通路的中部,所述切换模块还用于:

当所述数据报通过所述切换模块所在位置时,记录所述数据报的标记;根据所述标记跟踪所述数据报,当所述数据报全部输出所述数据通路时,判决所述数据报传输完毕。

进一步地,所述切换模块还用于:当执行切换操作后,通知所述虚拟化管理平台切换完成。

本发明实施例所提供的一种dma队列切换方法,通过在网卡侧设置切换模块,并预置服务于网络迁移辅助实体的热备dma队列,由切换模块根据虚拟化管理平台的切换命令执行切换操作,从而将网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向预置的热备dma队列,并经由热备dma队列将数据报导向网络迁移辅助实体。从而,即使在数据流不通过虚拟化管理平台的应用场景下,虚拟化管理平台也能在网卡硬件的协助下,将待迁移的虚拟化实体的流量重定向至网络迁移辅助实体,实现虚拟化实体的无缝迁移,使得虚拟化实体的热迁移在网络连接上更加平滑,解决了热迁移过程中网卡中的数据报丢失的问题。

本发明实施例的dma队列切换方法,不受虚拟化实体工作模式的限制,无论是数据流通过/不通过虚拟化管理平台的应用场景,均能实现虚拟化实体的无缝迁移,扩大了适用范围;而且,不需要虚拟化管理平台上的软件参与数据通路,而只需要参与控制,大大节省了cpu的开销;并且,占用硬件逻辑少,实现方式简单,实现成本低。

附图说明

图1是现有技术中虚拟化管理系统的结构示意图;

图2是本发明第一实施例的dma队列切换方法的流程图;

图3是本发明第二实施例的dma队列切换方法的流程图;

图4是实现本发明实施例的dma队列切换方法一可选的虚拟化管理系统的结构示意图;

图5是本发明第三实施例的dma队列切换系统的模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

实施例一

参照图2,提出本发明第一实施例的dma队列切换方法,所述方法包括以下步骤:

s11、虚拟化管理平台向网卡侧的切换模块发送切换命令。

本发明实施例中,在网卡侧设置了切换模块,该切换模块的位置可以灵活设置,如可以设于网卡的数据通路的末端(即输出端),也可以设于数据通路的中部(即数据通路的输入端与输出端的任意位置)。可选地,可以为每一个待迁移的dma队列配置一个切换模块。

具体实施时,虚拟化管理平台可以通过配置硬件寄存器的方式来向待迁移的dma队列对应的切换模块发送切换命令,例如,通过置寄存器的值为“1”或“0”的方式来发送切换命令。此外,也可以通过向网卡侧的切换模块发送控制信号或控制消息等方式来发送切换命令。

s12、切换模块根据切换命令执行切换操作,以将网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向预置的服务于网络迁移辅助实体的热备dma队列。

本发明实施例中,虚拟化管理平台预先为待迁移的虚拟化实体(如虚拟机、容器等)配置了网络迁移辅助实体(或称网络迁移辅助程序),并配置网卡,为每一个服务于待迁移的虚拟化实体的待迁移的dma队列指定热备dma队列,该热备dma队列服务于网络迁移辅助实体,后续热备dma队列中的数据报将传输至网络迁移辅助实体。一个待迁移的dma队列可以对应一个热备dma队列,或者至少两个待迁移的dma队列共享同一个热备dma队列。可选地,可以通过将队列号配置到硬件寄存器上的方式来指定热备dma队列,其中队列号可以任意指定。

本步骤s12中,切换模块接收到切换命令后,根据切换命令执行切换操作,以将网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向预置的服务于网络迁移辅助实体的热备dma队列。网络迁移辅助实体配置网卡,把本来应流向待迁移的虚拟化实体的网络流量经由热备dma队列无缝导入到自己的缓冲池中。

本发明实施例中,切换模块接收到切换命令后,首先判断当前是否有数据报传输至虚拟化实体;若是,则将当前的数据报作为流向待迁移的虚拟化实体的最后一个数据报,待该数据报全部传输完毕后才执行切换操作,改变硬件状态到切换完成状态;若否,则立即执行切换操作,改变硬件状态到切换完成状态,其中,切换模块可以将切换完成状态记录在硬件寄存器中。从而,防止数据报传输一部分时被打断,保证了数据的完整性。

具体实施时,如果切换模块设于网卡的数据通路的末端,只要当前的数据报全部通过切换模块所在位置,切换模块则判决流向待迁移的虚拟化实体的最后一个数据报传输完毕,执行切换操作。

如果切换模块设于数据通路的中部,当数据报通过切换模块所在位置时,切换模块则记录数据报的标记,根据标记通过待迁移的dma队列跟踪该数据报,当该数据报全部输出数据通路时,判决流向待迁移的虚拟化实体的最后一个数据报传输完毕。所述数据报的标记可以是数据报的一个属性控制位,也可以是附加于该数据报的特征数据报,该特征数据报为内部产生和使用的特征数据报。

当然,切换模块也可以在接收到切换命令后不进行任何判断,直接执行切换操作。

进一步地,当执行完切换操作后,切换模块则及时通知虚拟化管理平台切换完成。可选地,切换模块可以采用中断方式或者发送消息的方式通知虚拟化管理平台。

s13、当切换完成后,虚拟化管理平台对待迁移的虚拟化实体进行宕机操作。

虚拟化管理平台可以通过中断事件或者轮询切换模块发送的消息的方式来了解切换完成事件。此外,虚拟化管理平台也可以通过数据报的状态来了解切换完成事件,例如,当切换模块设于网卡的数据通路的末端时,一旦网络迁移辅助实体接收到第一个数据报时,虚拟化管理平台则认定切换完成。

当得知网卡侧的切换模块切换完成后,虚拟化管理平台才对待迁移的虚拟化实体进行宕机操作,暂时关掉待迁移的虚拟化实体,并进行内存迁移。虚拟化管理平台对虚拟化实体的宕机操作与现有技术相同,本发明对此不再赘述。

本发明实施例的dma队列切换方法,通过在网卡侧设置切换模块,并预置服务于网络迁移辅助实体的热备dma队列,由切换模块根据虚拟化管理平台的切换命令执行切换操作,从而将网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向预置的热备dma队列,并经由热备dma队列将数据报导向网络迁移辅助实体。从而,即使在数据流不通过虚拟化管理平台的应用场景下,虚拟化管理平台也能在网卡硬件的协助下,将待迁移的虚拟化实体的流量重定向至网络迁移辅助实体,实现虚拟化实体的无缝迁移,使得虚拟化实体的热迁移在网络连接上更加平滑,解决了热迁移过程中网卡中的数据报丢失的问题。

本发明实施例的dma队列切换方法,不受虚拟化实体工作模式的限制,无论是数据流通过/不通过虚拟化管理平台的应用场景,均能实现虚拟化实体的无缝迁移,扩大了适用范围;而且,不需要虚拟化管理平台上的软件参与数据通路,而只需要参与控制,大大节省了cpu的开销;并且,占用硬件逻辑少,实现方式简单,实现成本低。

实施例二

参照图3、图4,提出本发明第二实施例的dma队列切换方法,所述方法包括以下步骤:

s21、虚拟化管理平台为每个服务于待迁移的虚拟化实体的待迁移的dma队列指定一个热备dma队列。

如图4所示,虚拟化实体1为待迁移的虚拟化实体,服务于该虚拟化实体1的dma队列1为待迁移的dma队列,连接外部局域网的高速物理接口、虚拟硬交换、流分类器、dma队列1和虚拟功能1构成网卡的数据通路,切换模块10设于网卡的数据通路的末端,即虚拟功能1的末端。虚拟化管理平台为dma队列1指定一个热备dma队列,该热备dma队列服务于虚拟化管理平台预置的网络迁移辅助实体。

在某些实施例中,切换模块10也可以设于数据通路的中部,如设于图4所示的流分类器的位置。

s22、虚拟化管理平台为每个待迁移的dma队列对应的切换模块发送切换命令并等待。

s23、切换模块接收切换命令,根据切换命令执行切换操作,以将网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向指定的热备dma队列。

如图4所示,当流向虚拟化实体1的最后一个数据报全部通过切换模块10所在位置时,说明切换命令之前的所有数据报都已发往待迁移的虚拟化实体1,此时切换模块10才执行切换操作,硬件变成切换完成状态,切换完成状态可以记录在硬件寄存器中。当硬件完成切换完成状态后,dma队列1中的数据报流向热备dma队列,再经由热备dma队列流向网络迁移辅助实体。

s24、切换完成后,切换模块通知虚拟化管理平台。可以通过中断或发送消息的方式进行通知。

s25、虚拟化管理平台接收到切换完成的通知后,开始对待迁移的虚拟化实体进行宕机操作。

如图4所示,虚拟化管理平台暂时关掉虚拟化实体1,并进行内存迁移。

采用本发明实施例的dma队列切换方法,不受虚拟化实体工作模式的限制,无论是数据流通过/不通过虚拟化管理平台的应用场景,均能实现虚拟化实体的无缝迁移,扩大了适用范围;而且,不需要虚拟化管理平台上的软件参与数据通路,而只需要参与控制,大大节省了cpu的开销;并且,占用硬件逻辑少,实现方式简单,实现成本低。

实施例三

参照图5,提出本发明第三实施例的dma队列切换系统,所述系统包括虚拟化管理平台和网卡侧的切换模块,该切换模块的位置可以灵活设置,如可以设于网卡的数据通路的末端(即输出端),也可以设于数据通路的中部(即数据通路的输入端与输出端的任意位置)。可选地,可以为每一个待迁移的dma队列(如dma队列)配置一个切换模块。其中:

虚拟化管理平台:用于向切换模块发送切换命令,当切换完成后,对虚拟化实体进行宕机操作。

具体实施时,虚拟化管理平台可以通过配置硬件寄存器的方式来向待迁移的dma队列对应的切换模块发送切换命令,例如,通过置寄存器的值为“1”或“0”的方式来发送切换命令。此外,虚拟化管理平台也可以通过向网卡侧的切换模块发送控制信号或控制消息等方式来发送切换命令。

虚拟化管理平台可以通过中断事件或者轮询切换模块发送的消息的方式来了解切换完成事件。此外,虚拟化管理平台也可以通过数据报的状态来了解切换完成事件,例如,当切换模块设于网卡的数据通路的末端时,一旦网络迁移辅助实体接收到第一个数据报时,虚拟化管理平台则认定切换完成。

当得知网卡侧的切换模块切换完成后,虚拟化管理平台才对待迁移的虚拟化实体进行宕机操作,暂时关掉待迁移的虚拟化实体,并进行内存迁移。虚拟化管理平台对虚拟化实体的宕机操作与现有技术相同,本发明对此不再赘述。

切换模块:用于根据切换命令执行切换操作,以将网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向预置的服务于网络迁移辅助实体的热备dma队列。网络迁移辅助实体配置网卡,把本来应流向待迁移的虚拟化实体的网络流量经由热备dma队列无缝导入到自己的缓冲池中。

本发明实施例中,虚拟化管理平台预先为待迁移的虚拟化实体(如虚拟机、容器等)配置了网络迁移辅助实体(或称网络迁移辅助程序),并配置网卡,为每一个服务于待迁移的虚拟化实体的待迁移的dma队列指定热备dma队列,该热备dma队列服务于网络迁移辅助实体,后续热备dma队列中的数据报将传输至网络迁移辅助实体。一个待迁移的dma队列可以对应一个热备dma队列,或者至少两个待迁移dma队列共享同一个热备dma队列。可选地,可以通过将队列号配置到硬件寄存器上的方式来指定热备dma队列,其中队列号可以任意指定。

本发明实施例中,切换模块接收到切换命令后,首先判断当前是否有数据报传输至虚拟化实体;若是,则将当前的数据报作为流向待迁移的虚拟化实体的最后一个数据报,待该数据报全部传输完毕后才执行切换操作,改变硬件状态到切换完成状态;若否,则立即执行切换操作,改变硬件状态到切换完成状态,其中,切换模块可以将切换完成状态记录在硬件寄存器中。从而,防止数据报传输一部分时被打断,保证了数据的完整性。

具体实施时,如果切换模块设于网卡的数据通路的末端,只要当前的数据报全部通过切换模块所在位置,切换模块则判决流向待迁移的虚拟化实体的最后一个数据报传输完毕,执行切换操作。

如果切换模块设于数据通路的中部,当数据报通过切换模块所在位置时,切换模块则记录数据报的标记,根据标记通过待迁移的dma队列跟踪该数据报,当该数据报全部输出数据通路时,判决流向待迁移的虚拟化实体的最后一个数据报传输完毕。所述数据报的标记可以是数据报的一个属性控制位,也可以是附加于该数据报的特征数据报,该特征数据报为内部产生和使用的特征数据报。

当然,切换模块也可以在接收到切换命令后不进行任何判断,直接执行切换操作。

进一步地,当执行完切换操作后,切换模块则及时通知虚拟化管理平台切换完成。可选地,切换模块可以采用中断方式或者发送消息的方式通知虚拟化管理平台。

本发明实施例的dma队列切换系统,通过在网卡侧设置切换模块,并预置服务于网络迁移辅助实体的热备dma队列,由切换模块根据虚拟化管理平台的切换命令执行切换操作,从而将网卡的数据通路中拟传输至待迁移的虚拟化实体的数据报导向预置的热备dma队列,并经由热备dma队列将数据报导向网络迁移辅助实体。从而,即使在数据流不通过虚拟化管理平台的应用场景下,虚拟化管理平台也能在网卡硬件的协助下,将待迁移的虚拟化实体的流量重定向至网络迁移辅助实体,实现虚拟化实体的无缝迁移,使得虚拟化实体的热迁移在网络连接上更加平滑,解决了热迁移过程中网卡中的数据报丢失的问题。

本发明实施例的dma队列切换系统,不受虚拟化实体工作模式的限制,无论是数据流通过/不通过虚拟化管理平台的应用场景,均能实现虚拟化实体的无缝迁移,扩大了适用范围;而且,不需要虚拟化管理平台上的软件参与数据通路,而只需要参与控制,大大节省了cpu的开销;并且,占用硬件逻辑少,实现方式简单,实现成本低。

本领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、cd‐rom、和磁光盘)、rom(read‐onlymemory,只读存储器)、ram(randomaccessmemory,随机存储器)、eprom(erasableprogrammableread‐onlymemory,可擦写可编程只读存储器)、eeprom(electricallyerasableprogrammableread‐onlymemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。

本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。

本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1