一种流表处理方法及相关设备与流程

未命名 10-18 阅读:127 评论:0
一种流表处理方法及相关设备1.本技术是分案申请,原申请的申请号是202011206451.2,原申请日是2020年10月31日,原申请的全部内容通过引用结合在本技术中。
技术领域
:2.本发明涉及通信
技术领域
:,尤其涉及一种流表处理方法及相关设备。
背景技术
::3.传统数据中心,一台服务器或物理机或主机运行一个操作系统,物理机与物理交换机相连,由物理交换机实现不同主机之间的数据转发。在计算虚拟化后,一台主机被虚拟化成多台虚拟机(virtualmachine,vm),同一主机内的虚拟机通过虚拟交换机(virtualswitch,vsw),例如通过虚拟交换机实现数据转发。4.每个物理机上的硬件资源至少需要支持运行多个虚拟机和虚拟交换机。每台物理机的硬件资源有限,如果负担了数据交换任务的虚拟交换机占用的硬件资源太多,则容易影响物理机上虚拟机的运行,降低工作效率,降低物理机的可靠性,可能会带来处理速度慢等缺陷,甚至可能会因为物理机负担过大导致系统故障。5.为了减少对物理机硬件资源的占用,虚拟交换机逐步经历了内核态软交换、用户态软交换和硬件卸载交换三个阶段。其中,硬件卸载交换技术目前逐渐得到主流厂商的使用。在硬件卸载交换技术中主机中的一些i/o业务卸载至低成本的异构硬件中执行,如此可以释放主机中中央处理器(centralprocessingunit,cpu)资源,提高cpu的运行效率。举例来说,为了进一步提高报文处理的速度以及释放cpu资源,可以将流表的匹配操作卸载到硬件上,继而将原本在主机执行的流表匹配操作卸载到硬件中实现。这些用于卸载输入/输出(input/output,i/o)业务的异构硬件包括网络接口卡,也可以被称为卸载卡。然而,硬件卸载交换技术中存在跨网络接口卡可靠性问题,即只能实现单一网络接口卡内不同链路的可靠性,如果该网络接口卡故障,那么整个系统就故障了,存在单点故障的风险。技术实现要素:6.本发明实施例提供一种流表处理方法及相关设备,以解决硬件卸载交换技术中存在的跨网络接口卡可靠性的问题。7.第一方面,本发明实施例提供了一种流表处理方法,所述流表处理方法应用于虚拟交换机,所述虚拟交换机连接m个虚拟机和n个网络接口卡,m、n为大于或者等于2的整数,所述流表处理方法可包括:建立所述n个网络接口卡对应的n个逻辑端口的n个端口标识与一目标端口标识之间的映射关系,以将所述n个逻辑端口聚合为第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口;通过所述第一端口将精确流表卸载至所述n个网络接口卡。8.现有技术中仅存在基于虚拟交换机和单一网络接口卡的精确流表卸载方案,因此存在单点故障的风险。然而,即使基于现有技术将虚拟交换机和多个网络接口卡连接也无法实现报文的有效处理。若基于现有技术将虚拟交换机和多个网络接口卡连接,由于不同的网络接口卡对应不同的逻辑端口标识,不同的逻辑端口标识意味着多个网络接口卡对应多个不同的逻辑链路,那么此时在物理交换机和虚拟交换机之间可能会基于多个网络接口卡对应的多个不同的逻辑链路形成数据回环。举例来说,多个网络接口卡中的第一网络接口卡收到一仅能基于虚拟交换机进行处理的广播报文(例如地址解析协议(addressresolutionprotocol,arp)报文)时,该报文可以是虚拟机发送至第一网络接口卡的也可以是其它物理机通过物理交换机发送至该第一网络接口卡的,此类报文由于没有五元组因此其对应的精确流表是不能卸载至网络接口卡,必须基于虚拟交换机进行报文广播,因此第一网络接口卡在接收到arp报文后会将该arp报文上送至虚拟交换机。其中,假如该arp报文是其它物理机经由物理交换机发送至第一网络接口卡的,那么第一网络接口卡在将该arp报文经由第一网络接口卡对应的逻辑链路上送至虚拟交换机后,由于第一网络接口卡和多个网络接口卡中的第二网络接口卡对应不同的逻辑链路,那么虚拟交换机会将该arp报文经过第二网络卡对应的逻辑链路再次广播至物理交换机,至此该arp报文在虚拟交换机和物理交换机之间产生数据回环。假如该报文是其他虚拟机发送至第一网络接口卡的,那么第一网络接口卡在将该arp报文经由第一网络接口卡对应的逻辑链路上送至虚拟交换机后,虚拟交换机会将该报文经过第二网络卡对应的逻辑链路广播至物理交换机,物理交换机接收到该arp报文后会通过第一网络卡对应的逻辑链路再次广播至虚拟交换机,至此该arp报文也会在虚拟交换机和物理交换机之间产生数据回环。物理交换机和虚拟交换机之间数据回环影响系统的性能甚至会导致报文处理异常。9.在本发明实施例中,每个网络接口卡内部的物理端口基于链路汇聚控制协议lacp聚合形成逻辑端口,以形成第一级绑定;其次,虚拟交换机建立所述n个逻辑端口的n个端口标识与所述目标端口标识之间的映射关系,从而将n个网络接口卡对应的n个逻辑端口设置为对应同一个目标端口标识,以形成第二级绑定。一方面,本发明实施例通过上述两级绑定形成的第一端口可以避免n个逻辑端口分别对应不同的端口标识所可能导致的物理交换机和虚拟交换机之间数据回环。本发明实施例中n个逻辑端口的n个端口标识与一相同的目标端口标识对应,那么从交换机侧看,n个网络接口卡对应一条逻辑链路,进而可以避免处理类似arp报文时不同逻辑链路所导致的物理交换机和虚拟交换机之间的数据回环;另一方面,本发明实施例通过上述两级绑定形成的第一端口实现了精确流表的多网络接口卡卸载,即虚拟交换机在确定所述精确流表满足卸载条件的情况下,可以通过第一端口将所述精确流表卸载至所述所有的网络接口卡,从而解决了在将精确流表卸载到单一网络接口卡或基于单一网络接口卡进行报文处理的过程中,该单一网络接口卡故障而导致业务终止的问题,虚拟交换机将精确流表卸载至与主机连接的所有网络接口卡,使得在任一网络接口卡故障时,虚拟交换机可以切换至其它网络接口卡,从而保证报文处理业务的可靠性。10.在一种可能的实现方式中,所述通过所述第一端口将所述精确流表卸载至所述n个网络接口卡之前,所述方法还包括:接收目标网络接口卡发送的消息,所述消息携带所述目标网络接口卡接收到的所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,所述消息是所述目标网络接口卡在接收到所述报文后查询到所述目标网络接口卡中不存在与所述报文对应的卸载流表后发送的,所述目标网络接口卡是所述n个网络接口卡中的其中一个;基于所述报文和所述虚拟功能的标识,确定所述精确流表,所述精确流表用于指示对所述报文的处理。11.在本发明实施例中,目标网络接口卡在接收到目标虚拟机发送的报文且在查询到内部不存在与报文对应的卸载流表后,向虚拟交换机发送消息,虚拟交换机根据该消息确定所述精确流表,并在确定所述精确流表满足卸载条件的情况下,通过所述第一端口将所述精确流表卸载至所述n个网络接口卡,从而,一方面实现虚拟交换机对报文执行软件慢路径规则的学习,支持虚拟交换机的硬件卸载,进而支撑云计算平台丰富的业务功能诉求;另一方面,虚拟交换机将精确流表卸载至与主机连接的所有网络接口卡,使得在任一网络接口卡故障时,虚拟交换机可以切换至其它网络接口卡,从而保证报文处理业务的可靠性。12.在一种可能的实现方式中,所述接收目标网络接口卡发送的消息之前,所述方法还包括:通过第二端口接收目标虚拟机发送的所述报文,所述目标虚拟机是所述m个虚拟机中的任意一个,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能;将所述报文发送至所述目标虚拟功能,以使所述目标虚拟功能对应的所述目标网络接口卡根据所述报文查询是否存在与所述报文对应的卸载流表。13.在本发明实施例中,在虚拟机的虚拟网卡硬直通模式(虚拟机与网络接口卡直接连接)故障时,虚拟机的虚拟网卡的工作模式配置可以被为软直通模式(虚拟机通过虚拟交换机的软直通模块与网络接口卡连接),虚拟机发送的报文可以通过虚拟交换机搬运至目标网络接口卡,从而实现按场景按需求配置虚拟网卡的工作模式,以及在虚拟网卡硬直通故障时,切换至软直通模式继续实现报文的传输,保证业务的可靠性。14.在一种可能的实现方式中,所述通过所述第一端口将所述精确流表卸载至所述n个网络接口卡之前,所述方法还包括:确定所述精确流表满足卸载条件,其中,所述确定所述精确流表满足卸载条件,包括:根据所述精确流表对应的报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或根据所述精确流表对应的报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。15.在本发明实施例中,由于网络接口卡的存储空间有限,难以存储大量的卸载流表。在发送报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或根据报文确定发送报文的虚拟机的流速率大于或等于预设阈值时,虚拟交换机才将所述精确流表卸载至网络接口卡,避免盲目卸载占用网络接口卡的存储空间,降低网络接口卡的报文处理效率。16.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同。17.本发明实施例中,可以根据链表技术将网络接口卡中存储的卸载流表链接到虚拟交换机中的精确流表,当虚拟交换机中的精确流表删除或更改的时候,以及当任一网络接口卡中存储的卸载流表被删除的时候,主机会通知网络接口卡同步删除或者修改卸载流表,实现所有网络接口卡中存储的卸载流表以及主机中存储的精确流表的一致性管理。18.在一种可能的实现方式中,所述方法还包括:在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所述第一网络接口卡中存储的多个卸载流表中的任意一个。19.本发明实施例中,在检测到任意一个网络接口卡中的任一卸载流表被删除时,清理n个网络接口卡中除任意一个网络接口卡外的其它网络接口卡中关联的卸载流表,实现所有网络接口卡中存储的卸载流表的一致性管理。20.在一种可能的实现方式中,所述方法还包括:在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述预设条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。21.本发明实施例中,在检测到目标报文对应的精确流表发生变更时,指示n个网络接口卡更新与目标报文关联的卸载流表,实现精确流表和卸载流表的同步以及所有网络接口卡中存储的卸载流表的一致性管理。22.在一种可能的实现方式中,所述方法还包括:在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。23.本发明实施例中,在检测到任意一个网络接口卡状态异常时,将状态异常的网络接口卡存储的卸载流表标记为无效,解除所述被标记为无效的卸载流表与精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,进而解除所述被标记为无效的卸载流表与其它网络接口卡中存储的卸载流表的关联,实现所有网络接口卡中存储的卸载流表的一致性管理。24.在一种可能的实现方式中,所述方法还包括:当所述第二网络接口卡状态正常时,将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;建立所述第二网络接口卡对应的卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。25.本发明实施例中,在检测到任意一个网络接口卡状态恢复正常时,恢复该网络接口卡对应的虚拟功能链路以及相关卸载流表的设置,从而实现多网络接口卡之间卸载流表的统一管理。26.在一种可能的实现方式中,所述接收目标网络接口卡发送的消息之前,所述方法还包括:通过所述第二端口接收所述目标虚拟机发送的数据流,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表,所述数据流被分为k个队列;将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,其中,k为n的整数倍,所述目标虚拟机的虚拟网卡被配置为k个队列,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。27.本发明实施例中,在虚拟机的虚拟网卡的工作模式配置为软直通模式时,虚拟机发送的报文通过虚拟交换机搬运至所有网络接口卡,且基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系实现报文传输的零拷贝,一方面提升报文的处理效率,另一方面减少主机不必要的拷贝减少,释放cpu资源,减少内存的占用。28.第二方面,本发明实施例提供了一种流表处理方法,所述流表处理方法应用于物理机,所述物理机包含主机和n个网络接口卡,所述主机上运行有虚拟交换机和m个虚拟机,所述n个网络接口卡通过主机接口与主机相连,所述n个网络接口卡通过网络接口与外部网络相连,m、n为大于或者等于2的整数,所述流表处理方法可包括:所述虚拟交换机建立所述n个网络接口卡对应的n个逻辑端口的n个端口标识与目标端口标识之间的映射关系,以将所述n个逻辑端口聚合为所述第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口;目标网络接口卡接收报文,所述报文是与物理机连接的物理交换机发送的或是目标虚拟机发送的报文,所述目标虚拟机是所述m个虚拟机中任意一个,所述目标网络接口卡是所述n个网络接口卡中的其中一个;在所述目标网络接口卡查询到所述目标网络接口卡中不存在与所述报文对应的卸载流表的情况下,所述虚拟交换机通过所述第一端口将所述报文对应的精确流表卸载至所述n个网络接口卡。29.在一种可能的实现方式中,所述方法还包括:所述目标网络接口卡在查询到所述目标网络接口卡中不存在与所述报文对应的卸载流表时,向所述虚拟交换机发送消息,所述消息携带所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识;所述虚拟交换机基于所述报文和所述虚拟功能的标识,确定与所述报文对应的精确流表。30.在一种可能的实现方式中,所述方法还包括:所述目标网络接口卡基于所述卸载的精确流表对所述报文进行处理。31.在一种可能的实现方式中,所述方法还包括:在所述目标网络接口卡查询到所述目标网络接口卡中存在与所述报文对应的卸载流表时,所述目标网络接口卡基于所述卸载流表对所述报文进行处理。32.在一种可能的实现方式中,当所述报文是所述目标虚拟机发送的,所述方法还包括:所述目标虚拟机向所述目标网络接口卡发送报文;所述目标虚拟机包括虚拟网卡,所述虚拟网卡的工作模式包括软直通模式和硬直通模式;33.所述目标虚拟机向目标网络接口卡发送报文,包括:在所述目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,所述目标虚拟机向所述虚拟交换机发送所述报文;所述虚拟交换机通过第二端口接收所述目标虚拟机发送的所述报文,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;所述虚拟交换机从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能;所述虚拟交换机将所述报文发送至所述目标虚拟功能;在所述目标虚拟机的虚拟网卡的工作模式被配置为硬直通模式时,所述目标虚拟机从所述n个网络接口卡对应的n个虚拟功能中确定所述目标虚拟功能;所述目标虚拟机通过第三端口向所述目标虚拟功能发送所述报文,其中,所述第三端口为所述n个虚拟功能在所述目标虚拟机内聚合形成的逻辑端口。34.在一种可能的实现方式中,所述虚拟交换机通过所述第一端口将所述报文对应的精确流表卸载至所述n个网络接口卡之前,所述方法还包括:所述虚拟交换机确定所述报文对应的精确流表满足卸载条件;其中,所述虚拟交换机确定所述报文对应的精确流表满足卸载条件,包括:所述虚拟交换机根据所述报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或所述虚拟交换机根据所述报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。35.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同。36.在一种可能的实现方式中,所述方法还包括:所述虚拟交换机在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所述第一网络接口卡中存储的多个卸载流表中的任意一个。37.在一种可能的实现方式中,所述方法还包括:所述虚拟交换机在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述预设条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。38.在一种可能的实现方式中,所述方法还包括:所述虚拟交换机在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;所述虚拟交换机向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。39.在一种可能的实现方式中,所述方法还包括:当所述第二网络接口卡状态正常时,所述虚拟交换机将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;所述虚拟交换机将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;所述虚拟交换机建立所述第二网络接口卡对应的卸载流表集合与中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。40.在一种可能的实现方式中,在所述目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,所述目标虚拟机向所述目标网络接口卡发送报文,还包括:所述目标虚拟机配置虚拟网卡的队列数为k并将待发送的数据流分为k个队列,其中,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表;所述虚拟交换机通过所述第二端口接收所述目标虚拟机发送的所述数据流;所述虚拟交换机将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,k为n的整数倍,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。41.第三方面,本发明实施例提供了一种流表处理装置,所述流表处理装置应用于虚拟交换机,所述虚拟交换机连接m个虚拟机和n个网络接口卡,m、n为大于或者等于2的整数,其特征在于,所述装置包括:第一接收单元,确定单元和卸载单元。42.建立单元,用于建立所述n个网络接口卡对应的n个逻辑端口的n个端口标识与目标端口标识之间的映射关系,以将所述n个逻辑端口聚合为第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口。卸载单元,用于通过所述第一端口将精确流表卸载至所述n个网络接口卡。43.在一种可能的实现方式中,所述装置还包括:第一接收单元,用于接收目标网络接口卡发送的消息,所述消息携带所述目标网络接口卡接收到的报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,所述消息是所述目标网络接口卡在接收到所述报文后查询到内部不存在与所述报文对应的卸载流表后发送的,所述目标网络接口卡是所述n个网络接口卡中的其中一个;确定单元,用于基于所述报文和所述虚拟功能的标识,确定所述的精确流表,所述精确流表用于指示对所述报文的处理。44.在一种可能的实现方式中,所述装置还包括:第二接收单元,还用于通过第二端口接收目标虚拟机发送的所述报文,所述目标虚拟机是所述m个虚拟机中的任意一个,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;所述确定单元,还用于从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能;发送单元,用于将所述报文发送至所述目标虚拟功能,以使所述目标虚拟功能对应的所述目标网络接口卡根据所述报文查询是否存在与所述报文对应的卸载流表。45.在一种可能的实现方式中,所述卸载单元还用于确定所述精确流表满足卸载条件,其中,在用于确定所述精确流表满足卸载条件时,所述卸载单元具体用于:根据所述精确流表对应的报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或根据所述精确流表对应的报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。46.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同。47.在一种可能的实现方式中,所述装置还包括:第一更新单元,用于在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所述第一网络接口卡中存储的多个卸载流表中的任意一个。48.在一种可能的实现方式中,在所述装置还包括:第二更新单元,用于在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述预设条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。49.在一种可能的实现方式中,所述装置还包括:第三更新单元,用于在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。50.在一种可能的实现方式中,所述第三更新单元,还用于当所述第二网络接口卡状态正常时,将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;建立所述第二网络接口卡对应的卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。51.在一种可能的实现方式中,所述第二接收单元还用于通过所述第二端口接收所述目标虚拟机发送的数据流,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表,所述数据流被分为k个队列;所述发送单元,还用于将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,其中,k为n的整数倍,所述目标虚拟机的虚拟网卡被配置为k个队列,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。52.第四方面,本发明实施例提供了一种物理机,所述物理机包含主机和n个网络接口卡,所述主机上运行有m个虚拟机和上述第一方面任一可能的实现方式所提供的虚拟交换机,所述n个网络接口卡通过主机接口与主机相连,所述n个网络接口卡通过网络接口与外部网络相连,m、n为大于或者等于2的整数,所述m个虚拟机包括目标虚拟机,所述n个网络接口卡包括目标网络接口卡,其中:53.所述虚拟交换机,用于建立所述n个网络接口卡对应的n个逻辑端口的n个端口标识与目标端口标识之间的映射关系,以将所述n个逻辑端口聚合为所述第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口;54.所述目标网络接口卡,用于接收报文,所述报文是与所述物理机连接的物理交换机发送的或是目标虚拟机发送的报文,所述目标虚拟机是所述m个虚拟机中任意一个,所述目标网络接口卡是所述n个网络接口卡中的其中一个;55.所述虚拟交换机,还用于在所述目标网络接口卡查询到所述目标网络接口卡中不存在与所述报文对应的卸载流表的情况下,通过所述第一端口将所述报文对应的精确流表卸载至所述n个网络接口卡。56.在一种可能的实现方式中,所述目标网络接口卡,用于在查询到内部不存在与所述报文对应的卸载流表时,向所述虚拟交换机发送消息,所述消息携带所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识。所述虚拟交换机还用于基于所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,确定与所述报文对应的精确流表。57.在一种可能的实现方式中,所述目标网络接口卡,还用于基于所述卸载的精确流表对所述报文进行处理。58.在一种可能的实现方式中,在所述目标网络接口卡,还用于查询到内部存在与所述报文对应的卸载流表时,基于所述卸载流表对所述报文进行处理。59.在一种可能的实现方式中,所述报文是所述目标虚拟机发送的,所述目标虚拟机包括虚拟网卡,所述虚拟网卡的工作模式包括软直通模式和硬直通模式;所述目标虚拟机,还用于在所述目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,向所述虚拟交换机发送所述报文;所述虚拟交换机,还用于通过第二端口接收所述目标虚拟机发送的所述报文,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;所述虚拟交换机,还用于从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能;所述虚拟交换机,还用于将所述报文发送至所述目标虚拟功能;60.所述目标虚拟机,还用于在所述目标虚拟机的虚拟网卡的工作模式被配置为硬直通模式时,从所述n个网络接口卡对应的n个虚拟功能中确定所述目标虚拟功能;所述目标虚拟机,还用于通过第三端口向所述目标虚拟功能发送所述报文,其中,所述第三端口为所述n个虚拟功能在所述目标虚拟机内聚合形成的逻辑端口。61.在一种可能的实现方式中,所述虚拟交换机还用于确定所述报文对应的精确流表满足卸载条件,其中在用于确定所述报文对应的精确流表满足卸载条件时,所述虚拟交换机具体用于根据所述报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或根据所述报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。62.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同。63.在一种可能的实现方式中,所述虚拟交换机还用于在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所述第一网络接口卡中存储的多个卸载流表中的任意一个。64.在一种可能的实现方式中,所述虚拟交换机还用于在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述预设条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。65.在一种可能的实现方式中,所述虚拟交换机还用于在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。66.在一种可能的实现方式中,所述虚拟交换机还用于,当所述第二网络接口卡状态正常时,所述虚拟交换机将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;建立所述第二网络接口卡对应的卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。67.在一种可能的实现方式中,在所述目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,所述目标虚拟机,还用于配置虚拟网卡的队列数为k并将待发送的数据流分为k个队列,其中,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表;所述虚拟交换机,还用于通过所述第二端口接收所述目标虚拟机发送的所述数据流;所述虚拟交换机,还用于将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,k为n的整数倍,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。68.第五方面,本发明实施例提供一种物理机,该物理机中包括处理器,处理器被配置为支持该虚拟交换机实现第一方面或第二方面提供的流表处理方法中相应的功能。该物理机还可以包括存储器,存储器用于与处理器耦合,其保存该物理机必要的程序指令和数据。该物理机还可以包括通信接口,用于该物理机与其它设备或通信网络通信。69.第六方面,本技术提供了一种芯片系统,该芯片系统包括处理器,用于支持物理机实现上述第一方面或第二方面中所涉及的功能,例如,生成或处理上述流表处理方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其它分立器件。70.第七方面,本发明实施例提供了一种计算机存储介质,用于储存为上述第一方面或第二方面提供的物理机中的处理器中所用的计算机软件指令,其包含用于执行上述方面所设计的程序。71.第八方面,本发明实施例提供了一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行上述第一方面或第二方面提供的物理机中的处理器所执行的流程。附图说明72.为了更清楚地说明本发明实施例或
背景技术
:中的技术方案,下面将对本发明实施例或
背景技术
:中所需要使用的附图进行说明。73.图1是本发明实施例提供的一种虚拟交换机原理示意图。74.图2是本发明实施例提供的一种开放流虚拟交换机卸载方案的系统架构图。75.图3是本发明实施例提供的一种弹性虚拟交换机的系统架构图。76.图4是本发明实施例提供的一种单根输入输出虚拟化绑定方案的系统架构图。77.图5是本发明实施例提供的一种服务器架构示意图。78.图6是本发明实施例提供的一种物理机结构示意图。79.图7是本发明实施例提供的一种流表处理方法的流程示意图。80.图8是本发明实施例提供的一种流表处理方法的流程示意图。81.图9是本发明实施例提供的一种流表处理方法的流程示意图。82.图10是本发明实施例提供的一种流表处理方法的流程示意图。83.图11是本发明实施例提供的一种流表处理方法的流程示意图。84.图12是本发明实施例提供的一种流表处理装置的结构示意图。85.图13是本发明实施例提供的又一种物理机的结构示意图。具体实施方式86.下面将结合本发明实施例中的附图,对本发明实施例进行描述。87.本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。88.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。89.在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。90.首先,分析并提出本技术所具体要解决的技术问题。首先,需要先对本技术实施例所解决的技术问题对应的实际应用场景进行阐述和分析。91.本技术涉及计算机的云计算网络虚拟化
技术领域
:,网络虚拟化中最重要的部件就是虚拟交换机(virtualswitch,vsw),虚拟交换机运行在主机host上,为虚拟机或容器提供网络通信流量交换。图1是虚拟交换机的原理示意图,如图1所示,虚拟交换机从架构上由管控平面和转发平面组成,其中转发平面包含虚拟输入/输出(input/output,i/o),交换平面以及物理i/o三部分。具体地,虚拟交换机由neutron或敏捷控制器(agilecontroller,ac)等配置管理,下发虚拟网卡、物理网络接口卡等对象创建和配置。虚拟机或容器通过前端虚拟网卡驱动与虚拟交换机的虚拟io后端配合,完成报文收发。92.虚拟交换机的发展逐步经历了内核态软交换、用户态软交换和硬件卸载交换三个阶段。在内核态软交换和用户态软交换阶段,数据流通过网络接口卡进入虚拟交换机,当一个新数据流的报文在首次流入虚拟交换机时,虚拟交换机会分析该数据流的报文,并确定如何处理该报文,最后将对该报文的处理过程记录下来并生成相关的精确流表。当该数据流的后续报文流入虚拟交换机时,虚拟交换机会根据报文的信息命中对应的精确流表,继而直接执行流精确流表中指示的行为,以完成对报文的处理,比如对报文封装或解封装后通过网络接口卡转发给其它设备。但是,流表的匹配及流表中行为执行过程直接影响到虚拟交换机的报文处理性能。为了提高报文处理效率,在硬件卸载交换阶段,虚拟交换机将精确流表卸载到网络接口卡上。当报文经过网络接口卡时,网络接口卡直接根据报文的信息命中对应的卸载流表,进而根据命中的卸载流表项对报文进行相应处理,不再将报文转发至虚拟交换机,从而可以提高报文处理效率。硬件卸载交换技术逐渐得到主流厂商的使用,该方法有很多优点,例如性能较高的同时又保证了丰富的功能。但是硬件卸载交换技术由于软硬协同机制复杂存在跨网络接口卡可靠性问题,只能实现单一网络接口卡内不同链路的可靠性,如果该单一的网络接口卡故障,那么整个系统就故障了,因此存在单点故障的风险。93.目前市面上主要存在以下三种基于硬件卸载交换技术的方案,以下进行分别介绍。94.现有技术一95.图2是开放流虚拟交换机(openflowvirtualswitch,ovs)卸载方案的系统架构图,如图2所述,该系统架构包括主机host和智能网络接口卡(smartnetworkinterfacecard,smartnic)。虚拟机和ovs运行在主机中。其中,ovs包括用户空间和内核空间。用户空间包括ovs控制面,ovs控制面进一步包括ovsdb-sever进程和ovsdb-vswitch进程。内核空间包括ovs内核数据路径(datapath,dp)转发库。smartnic这一硬件模块中也包括一嵌入式交换机(embeddedvirtualswitch,evs),该嵌入式虚拟交换机内部包括虚拟交换机卸载(vswitchoffload)模块。96.ovs控制面负责数据库管理,慢路径规则的学习,openflow慢路径的流表(flowtable)规则匹配,以及精确流表的生成与管理。vswitchoffload或ovskerneldp中查找卸载流表或精确流表未命中时,需要ovs控制面协助处理。97.ovskerneldp负责在内核空间完成精确流表的查找与转发,当开启硬件卸载时,配合ovs控制面通过linux内核提供的tcflower工具完成精确流表的生成和卸载。vswitchoffload模块运行在网络接口卡内部,为虚拟机提供快路径转发。具体地,ovs初始化的时候,会向嵌入式交换机下发一条默认的规则。对于一个数据流,第一个报文到达嵌入式交换机时,如果该报文匹配不了任何其它规则,则会被默认规则匹配。这条默认规则对应的行为action就是将报文送到嵌入式交换机的管理主机,即位于内核空间的ovs内核路径转发库。若这个报文是数据流的首包的话,ovs内核路径转发库没有转发信息,并不知道怎么完成转发。接下来ovs内核路径转发库会查询位于用户空间的ovs-vswitchd进程。ovs-vswitchd进程因为存储openflow规则,ovs-vswitchd可以根据openflow规则完成行为匹配操作,也就是从一堆openflow规则里面匹配报文对应的规则,根据这些规则里的行为实现转发。同时,ovs-vswitchd进程会判断当前数据流对应的规则能否卸载(offload)到网络接口卡。如果可以的话,ovs-vswitchd进程会调用通过tc接口将openflow规则卸载至硬件。这样,同一个数据流的后继报文,可以直接在网络接口卡的嵌入式虚拟交换机中完成转发,不需要走到主机操作系统来。98.如图2所示的开放流虚拟交换机卸载方案虽然能够有效实现硬件卸载转发的功能,解决ovs内核路径转发库在操作系统内核空间实现转发所带来的针对网络性能(吞吐量,时延,包转发性能(packetpersecond,pps))的影响。但是现有技术中卸载网络接口卡只能使用一个,只能提供链路级的可靠性,无法提供多网络接口卡的可靠性保障。如果网络接口卡故障,那么整个系统就故障了,存在单点故障的风险。99.现有技术二100.图3是一种弹性虚拟交换机(elasticvirtualswitch,evs)的系统架构图。evs是基于开源ovs扩展改造的虚拟交换机。如图3所示,该系统架构包括主机host和smartnic。虚拟机和弹性虚拟交换机运行在主机中。evs包含evs控制面、核心转发模块和vhostdp软直通模块,核心转发模块包括软件慢路径转发模块和智能卸载引擎模块。smartnic包括数据路径模块。101.evs控制面负责数据库管理和openflow慢路径的流表规则匹配,以及精确流表的生成与管理,还提供了安全规则检查等功能。软件慢路径转发模块集成转发引擎,和硬件卸载引擎模块相互配合,负责将转发路径上的多次表查找和执行动作结果合并归一,形成单次匹配和单次执行的硬件卸载流表,使得更容易在硬件智能卸载网络接口卡内部执行。在虚拟机的虚拟网卡配置为半虚拟化virtio(或软直通模式)时,vhostdp软直通模块负责在网络接口卡和虚拟网卡之间搬运io报文。智能网路接口卡中的数据路径模块运行在硬件网络接口卡内部,利用弹性虚拟交换机下发的卸载流表为虚拟机提供快路径转发。102.如图3所示的弹性虚拟交换机虽然能够有效实现硬件卸载转发的功能,解决性能问题,然而仍然存在硬件卸载网络接口卡只能使用一个,bond技术只能提供链路级的可靠性,无法提供多网络接口卡的可靠性保障。103.现有技术三104.图4是单根输入输出虚拟化(singlerootiinput/outputvirtualization,sr-i/ov)绑定bond方案的系统架构图。该系统是在sr-i/ov虚拟化的基础上引入linuxbond组件,通过pf的lacpbond来控制虚拟机内虚拟功能的bond的工作方式。105.两个网络接口卡均开启sr-i/ov功能。两个网络接口卡各贡献一个虚拟功能给两个虚拟机使用。两个网络接口卡的物理功能pf在host组lacp模式的bond,同时tor侧开启lacp聚合协商功能。在虚拟机内两个网络接口卡贡献的两个虚拟功能组负载均衡模式(非lacp)的bond,按照配置的哈希hash算法选择某个虚拟功能收发流量。当主机的lacpbond聚合状态变更时,通过硬件网络接口卡的链路控制机制知会到虚拟机内的功能和bond,触发链路切换。106.如图4所示的sr-i/ovbond方案能够解决跨网络接口卡可靠性问题,也能提升高性能,然而sr-i/ov方式下网络接口卡转发只能提供简单的二层mac+vlan转发,由于没有虚拟交换机对报文执行软件慢路径规则的学习,不支持虚拟交换机的硬件卸载,因此无法支撑云计算平台丰富的业务功能诉求。107.基于上述提出的技术问题以及本技术中对应的应用场景,也为了便于理解本发明实施例,下面先对本发明实施例所基于的其中一种服务器架构进行描述。图5是本发明实施例提供的一种服务器架构示意图,如图5所示,该服务器架构中包含了至少一个物理机(或称为计算机设备、物理主机或物理计算机)10和物理交换机20。多个物理机10通过物理交换机20相连进而连接到外部网络,实现和外部通信。108.其中,每一个物理机10都有完整的软件环境和硬件环境,物理机的硬件环境至少包括主机和网络接口卡(或称网卡、物理网卡或物理网络接口卡)(networkinterfacecard,nic)105。其中,物理机中除网络接口卡之外的部分称之为主机。可选地,主机包括cpu103和内存104。物理机的软件环境至少包括虚拟交换机102以及至少一台虚拟机101,即虚拟交换机102以及至少一台虚拟机101运行在物理机10的主机中。可选的,物理机的软件环境还包括虚拟机监视器(virtualmachinemonitor,vmm)(图未示),虚拟机监视器又称为虚拟机管理器(virtualmachinemanager)或管理程序(hypervisor),用于管理上述一个或多台虚拟机101。109.通过虚拟化技术,可以在一台物理机上模拟出一台或多台虚拟机。虚拟机可以像物理机一样工作。例如,用户可以在虚拟机上安装操作系统和应用程序;又如,用户可以通过虚拟机访问网络资源。对于用户而言,虚拟机可以看成是运行在物理机上的应用程序,但对于运行在虚拟机中的应用程序而言,虚拟机就像真正的物理机一样为该应用程序提供工作环境。虚拟机包括用户态和内核态,是操作系统的两种运行级别。用户在用户态上发出各种指令,用户发出的指令从虚拟机的用户态生成下发到虚拟机的内核态。物理机模拟出的一个或多个虚拟机一方面需要共享网络接口卡与外界资源通信,另一方面,虚拟机之间也需要通信,虚拟交换机就可以实现同一主机内不同虚拟机之间的相互通信。110.本技术实施例中的网络接口卡为支持单根输入输出虚拟化(singlerootinput/outputvirtualization,sr-i/ov)功能的网络接口卡。sr-i/ov技术允许在多个虚拟机之间高效共享外设部件互连表示(peripheralcomponentinterconnectexpress,pcie)设备(如网络接口卡)。sr-i/ov引入了物理功能(physicalfunction,pf)和虚拟功能(virtualfunction,vf)的概念,以支持网络接口卡的虚拟化。pf是网络接口卡所支持的一项外设部件互连(peripheralcomponentinterconnect,pci)功能,pf可以扩展出若干个虚拟功能。虚拟功能是支持sr-i/ov的网络接口卡所虚拟出的一个“网卡”或者说虚拟出来的一个实例。虚拟功能会以一个独立网络接口卡的形式呈现出来,每个虚拟功能都有自己独享的pci配置区域,网络接口卡中的每个虚拟功能配置有进行数据传输的带宽资源,每个虚拟功能会经由虚拟机监视器分配给主机设备上运行的虚拟机使用。网络接口卡内部也提供了虚拟交换机功能,并能通过物理功能/虚拟功能提供了带宽限制功能。用户(或管理员)可以根据该带宽限制功能为每个虚拟功能分配带宽。一个虚拟功能对应一个虚拟机的一个虚拟网络接口卡(virtualnetworkinterfacecard,vnic,简称虚拟网卡)。在网络接口卡启用sr-i/ov之后,网络接口卡将通过虚拟功能与虚拟机的虚拟功能驱动vfdriver进行数据交互。通过sr-i/ov技术,将单一的网络接口卡虚拟成多个虚拟功能接口,每个虚拟功能接口都有单独的虚拟pcie通道,这些虚拟的pcie通道共用网络接口卡的pcie通道。每个虚拟机可占用一个或多个虚拟功能接口,这样虚拟机就可以直接访问自己的虚拟功能接口,而不需要虚拟机监视器的协调干预,从而大幅提升网络吞吐性能。本技术实施例中,示例性的采用了sr-i/ov的网络接口卡与虚拟机直连的技术,在实际使用中也可以采用其它支持网络接口卡和虚拟机直连的技术。111.本技术实施例中的网络接口卡不局限于商业网络接口卡芯片,即本技术实施例中的网络接口卡可以包括np(networkprocessor,网络处理器)、fpga(field-programmablegatearray,现场可编程门阵列)等可编程器件及商业网络接口卡芯片。具体地,所有能够实现网络接口卡功能的芯片或者设备均可以作为本技术实施例中的网络接口卡,均在本技术的保护范围之内。112.本技术实施例中,虚拟机101与网络接口卡105连接或者虚拟机101通过虚拟交换机与网络接口卡105连接,继而和外部通信。其中,当虚拟机101的虚拟网卡被配置为硬直通模式时,虚拟机101与网络接口卡105直接连接;当虚拟机101的虚拟网卡被配置为软直通模式时,虚拟机101通过虚拟交换机与网络接口卡105连接。其中,本技术实施例中任意一个物理机10都可以作为本技术中的物理机实施本技术实施例所提供的流表处理方法。本技术实施例中,所有的虚拟机都可以与网络接口卡和虚拟交换机连接,实际上也可以只有部分虚拟机(虚拟网卡的工作模式配置为硬直通)与网络接口卡相连,其它部分虚拟机(虚拟网卡的工作模式配置为软直通)与虚拟交换机连接,具体虚拟机的配置方式可以按场景按需配置,并不限定于必须全部都与网络接口卡连接。可以理解的是,图5中的服务器架构只是本发明实施例中的一种示例性的实施方式,本发明实施例中的服务器架构但不仅限于以上服务器架构。113.基于上述服务器架构,本发明实施例提供了一种应用于上述服务器架构中的物理机10。如图6所示,图6是本发明实施例提供的一种物理机的结构示意图,物理机的硬件环境包括主机,第一网络接口卡105-a和第二网络接口卡105-b,在主机中运行有第一虚拟机101-1,第二虚拟机101-2和虚拟交换机102。需要说明的是,本发明实施例中的第一网络接口卡105-a和第二网络接口卡105-b的实质相同,均可以为图5对应的实施例中提供的网络接口卡105,为了便于描述,将物理机包括的两个网络接口卡分别命名为第一网络接口卡和第二网络接口卡。同理,本发明实施例中的第一虚拟机101-1和第二虚拟机101-2均可以为图5对应的实施例中提供的虚拟机101,为了便于描述,将虚拟机所包括的虚拟网卡中工作模式被配置为硬直通模式的虚拟机称为第一虚拟机101-1,将虚拟机所包括的虚拟网卡中工作模式被配置为软直通模式的虚拟机称为第二虚拟机101-2。114.虚拟网卡的工作模式被配置为硬直通模式的第一虚拟机101-1包括虚拟机绑定(vmbond)模块1001和设备对象。其中,针对每个网络接口卡拓展的虚拟功能,虚拟机会产生不同的设备对象,这些不同的设备对象由虚拟机的虚拟功能驱动进行统一管理。虚拟功能驱动,用于在硬直通场景下,通过虚拟功能驱动实现虚拟机与不同网络接口卡对应的不同的虚拟功能之间的数据传输。其中,虚拟功能驱动只加载一次。虚拟网卡的工作模式被配置为软直通模式的第二虚拟机101-2包括半虚拟化驱动vitio-net,第二虚拟机通过半虚拟化驱动与虚拟交换机进行通信。115.vmbond模块1001,本质上属于虚拟的io接口,其用于,当第一虚拟机101-1的虚拟网卡配置成虚拟功能硬直通模式时,在虚拟机内将两个网络接口卡各分配给虚拟机的一个虚拟功能绑定以形成网络接口,从而在虚拟机发送报文时,通过vmbond模块1001基于哈希算法选择其中一个虚拟功能,进而通过该虚拟功能将报文发送至扩展出该虚拟功能的网络接口卡105。具体地,在硬直通场景下,从虚拟交换机侧看,虚拟机侧仅提供一个逻辑口,即vmbond模块1001,报文从虚拟机发出时可以包括多条流,虚拟机基于报文的五元组(即源ip地址(sip)、源端口号(sport)、目的ip地址(dip)、目的端口号(dport)、传输层协议号(iptype))确定一哈希值,并针对第一网络接口卡105-a和第二网络接口卡105-b进行哈希负荷分担,进而确定第一网络接口卡(和或第二网络接口卡)以及第一网络接口卡分配给第一虚拟机101-1的虚拟功能vfa.1(和或第二网络接口卡分配给第一虚拟机101-1的虚拟功能vfb.1)。116.虚拟交换机102包括:核心转发模块1021,虚拟交换机绑定(vsw-bond)模块1022和vhostdp软直通模块1023,其中,核心转发模块1021进一步包括软件慢路径转发模块1024和多网络接口卡智能卸载引擎模块1025。上述各个软件模块的功能描述如下。117.软件慢路径转发模块1024负责虚拟交换机102的流规则管理和报文慢路径的匹配,提供隧道管理、安全规则管理等业务功能。118.多网络接口卡智能卸载引擎模块1025负责收集慢路径转发中报文匹配的多个精确流表以及对应的报文编辑结果,并将这些信息合并归一处理,结合报文对应流速率和状态进行策略管理。最后生成卸载流表,将卸载流表分别下发给第一网络接口卡105-a和第二网络接口卡105-b分别对应的第一硬件数据路径(datapath)模块1051-a和第二硬件数据路径(datapath)模块1051-b。119.vsw-bond模块1022,本质上属于虚拟的io接口,其用于,在每个网络接口卡的多条链路聚合成绑定(bond)后,vsw-bond模块1022将两个网络接口卡的两个绑定(即hwbond–a和hwbond–b)聚合,以形成虚拟交换机的上联(uplink)端口。vsw-bond模块1022监控到hwbond–a和/或hwbond–b的状态变更时会同步知会到vhostdp软直通模块1023中的vfbond模块1026和第一虚拟机101-1中的vmbond模块1001。120.vhostdp软直通模块1023进一步包括vfbond模块1026。当第二虚拟机101的虚拟网卡配置成半虚拟化virtio(即软直通模式)时,虚拟交换机同时从两个网络接口卡上为其各分配一个虚拟功能与虚拟网卡对应。vfbond模块1026,本质上属于虚拟的io接口,其用于,当第二虚拟机101的虚拟网卡配置成软直通模式时,在vhostdp软直通模块1023内将两个网络接口卡各分配给虚拟机的一个虚拟功能绑定,virtio虚拟网卡的后端与这两个虚拟功能的绑定构成端对端(peertopeer)的关系。报文搬运通过vhostdp软直通模块1023完成。在一种可选的实施方式中,物理机还利用多队列机制,将虚拟机的虚拟网卡配置队列数为k(k为偶数)时,第一网络接口卡和第二网络接口卡对应的每个虚拟功能负责其中k/2个队列的流量收发,虚拟网卡的队列和虚拟功能队列建立了一一对应关系,如此,vhostdp软直通模块1023通过零拷贝的方式收发报文。121.网络接口卡包括硬件数据路径datapath模块,bond和至少一个虚拟功能。具体地,如图6所示,第一网络接口卡105-a包括第一硬件datapath模块1051-a,hwbond-a,虚拟功能vfa.1和虚拟功能vfa.2,第二网络接口卡105-b包括第二硬件datapath模块1051-b,hwbond-b,虚拟功能vfb.1和虚拟功能vfb.2。122.上述各个软件模块的功能描述如下。123.第一硬件datapath模块1051-a或第二硬件datapath模块1051-b,具体用于接收从多网络接口卡智能卸载引擎模块1025下发的卸载流表。例如,第一虚拟机101-1或第一虚拟机101-2发送的报文到达第一网络接口卡105-a和第二网络接口卡105-b中的至少一个时,第一网络接口卡105-a(或第二网络接口卡105-b)通过其内部的第一硬件datapath模块1051-a(或第二硬件datapath模块1051-b)查询与报文匹配的卸载流表,如果存在与所述报文匹配的卸载流表,则根据卸载流表实现报文转发;若不存在与所述报文匹配的卸载流表,通过上行调用upcall线程上送到软件慢路径转发模块1024和多网络接口卡智能卸载引擎模块1025进行匹配和学习,以生成报文对应的精确流表,多网络接口卡智能卸载引擎模块1025最终将生成的精确流表卸载至第一硬件datapath模块1051-a和第二硬件datapath模块1051-b。124.bond(如图6所示的hwbond–a或hwbond–b)为每个网络接口卡内部的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口。125.虚拟功能是支持sr-i/ov的网络接口卡所虚拟出的“网卡”或者说虚拟出来的实例,在网络接口卡启用sr-i/ov之后,网络接口卡将通过虚拟功能vf与虚拟机的vfdriver进行数据交互。126.可以理解的是,图6中的物理机的结构只是本发明实施例中的一种示例性的实施方式,本发明实施例中的物理机的结构包括但不仅限于以上结构。127.需要说明的是,图6所示的各个模块可以是运行于物理机中的软件模块或程序,该模块或程序被处理器执行时实现相应的功能。可以理解的是,本技术实施例提供的各个模块还可以以硬件的形式实现,比如实现为处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其它可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合,本技术对此不做限定。128.本技术实施例中,存在三种虚拟io接口,即vmbond模块1001,vfbond模块1026以及vsw-bond模块1022。在虚拟机的虚拟网卡配置为硬直通模式时,报文的慢路径转发基于vmbond模块1001以及vsw-bond模块1022完成,报文的快路径转发基于vmbond模块1001完成。在虚拟机的虚拟网卡配置为软直通模式时,报文的慢路径转发基于vfbond模块1026以及vsw-bond模块1022完成,报文的快路径转发基于vfbond模块1026完成。因此,上述三种虚拟io接口可以实现解除硬件规格限制,按场景按需使用。同时,本技术实施例提供的物理机一方面支持故障检测与自愈,检测到虚拟网卡硬直通故障时自动切换到软直通继续提供服务,另一方面支持多网络接口卡同时卸载,例如采用主网络接口卡和备用网络接口卡方式,主网络接口卡故障时,虚拟交换机自动切换到备用网络接口卡上,自动完成卸载数据同步。129.基于图5提供的服务器架构和图6所提供的物理机,结合本技术中提供的流表处理方法,对本技术中提出的技术问题进行具体分析和解决。130.参见图7,图7是本发明实施例提供的一种流表处理方法的流程示意图,该方法可应用于上述图5中所述的服务器架构中任意一个物理机10中,该方法可应用于上述图6中所述的物理机10中,其中物理机10可以用于支持并执行图7中所示的方法流程步骤s701和步骤s702。所述物理机包含主机和n个网络接口卡,所述主机上运行有虚拟交换机和m个虚拟机,所述n个网络接口卡通过主机接口与主机相连,所述n个网络接口卡通过网络接口与外部网络相连,m、n为大于或者等于2的整数。下面将结合附图5从虚拟机,虚拟交换机以及网络接口卡的交互侧进行描述。131.该方法可以包括以下步骤s701至步骤s703,可选地,还可以包括步骤s704至步骤707,可选地,还可以包括步骤s708。步骤s702可选地可以包括s702a-s702c,还可以包括s702d-s702e。132.s701:虚拟交换机建立所述n个逻辑端口的n个端口标识与所述目标端口标识之间的映射关系,以将所述n个逻辑端口聚合为所述第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口。133.本发明实施例中,所述第一端口为所述n个网络接口卡对应的n个逻辑端口聚合形成的逻辑端口,所述n个逻辑端口被设置为对应目标端口标识。具体地,首先,每个网络接口卡内部的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口,以形成第一级绑定;其次,虚拟交换机建立所述n个逻辑端口的n个端口标识与所述目标端口标识之间的映射关系,从而将n个网络接口卡对应的n个逻辑端口设置为对应目标端口标识,以形成第二级负载均衡绑定。上述两级绑定实现了精确流表的多网络接口卡卸载,与虚拟交换机连接的任意一个网络接口卡故障时,虚拟交换机可以自动切换至其它可用的网络接口卡,从而达到跨网络接口卡可靠性保证的效果。其中,所述n个逻辑端口被设置为对应目标端口标识用以实现n个网络接口卡对应的n个逻辑端口的聚合。此处所述n个逻辑端口被设置为对应目标端口标识的原因是:若不同的网络接口卡对应不同的逻辑端口标识,不同的逻辑端口标识意味着多个网络接口卡对应多个不同的逻辑链路,那么此时在物理交换机和虚拟交换机之间可能会基于多个网络接口卡对应的多个不同的逻辑链路形成数据回环。举例来说,多个网络接口卡中的第一网络接口卡收到一地址解析协议(addressresolutionprotocol,arp)报文,该报文可以是虚拟机发送至第一网络接口卡的也可以是其它物理机通过物理交换机发送至该第一网络接口卡的,由于此类报文对应的精确流表无法卸载至网络接口卡,必须基于虚拟交换机进行报文广播,因此第一网络接口卡会将该arp报文上送至虚拟交换机,以使虚拟交换机针对该arp报文进行广播。其中,假如该arp报文是其它物理机经由物理交换机发送至第一网络接口卡的,那么第一网络接口卡在将该arp报文经由第一网络接口卡对应的逻辑链路上送至虚拟交换机后,由于第一网络接口和多个网络接口卡中的第二网络接口卡对应不同逻辑链路,那么虚拟交换机会将该arp报文经过第二网络卡对应的逻辑链路再次广播至物理交换机,至此该arp报文在虚拟交换机和物理交换机之间产生数据回环。假如该报文是其他虚拟机发送至第一网络接口卡的,那么第一网络接口卡在将该arp报文经由第一网络接口卡对应的逻辑链路上送至虚拟交换机后,虚拟交换机会将该报文经过第二网络卡对应的逻辑链路广播至物理交换机,物理交换机接收到该arp报文后会通过第一网络卡对应的逻辑链路再次广播至虚拟交换机,至此该arp报文也会在虚拟交换机和物理交换机之间产生数据回环。物理交换机和虚拟交换机之间数据回环会影响系统的性能甚至导致报文处理异常。134.步骤s702,目标虚拟机向目标网络接口卡发送报文。135.其中目标网络接口接收的报文可以是目标虚拟机发送的,也可以是其他物理机经由物理交换机发送的。本技术实施例以目标虚拟机向目标网络接口卡发送报文为例进行阐述。136.所述目标虚拟机是所述m个虚拟机中任意一个,所述目标网络接口卡是所述n个网络接口卡中的其中一个。具体地,所述目标虚拟机包括虚拟网卡,虚拟网卡的工作模式包括软直通模式和硬直通模式。当目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,目标虚拟机将报文发送至虚拟交换机的软直通模块,软直通模块通过内部的vfbond模块基于哈希算法选择一虚拟功能,进而确定扩展出该虚拟功能的目标网络接口卡,将报文发送至目标网络接口卡。当目标虚拟机的虚拟网卡的工作模式被配置为硬直通模式时,目标虚拟机将报文通过内部的vmbond模块基于哈希算法选择一虚拟功能,进而确定扩展出该虚拟功能的目标网络接口卡,并将报文通过vmbond模块发送至目标网络接口卡。其中,在vfbond模块内,n个网络接口卡对应的n个虚拟功能发生聚合,在vmbond模块内,n个网络接口卡对应的n个虚拟功能发生聚合。137.由于物理机中包括的n个网络接口卡中存储的卸载流表完全相同,因此,无论软直通模块通过内部的vfbond模块或者目标虚拟机通过内部的vmbond模块选择哪一个网络接口卡的虚拟功能,该虚拟功能均可以实现报文的转发。另外,通过物理交换机发送至主机和虚拟机的方向,物理交换机也可以基于哈希算法选择一网络接口卡,进而由选择的网络接口卡实现数据转发。138.步骤s703,在所述目标网络接口卡查询到所述目标网络接口卡中不存在与所述报文对应的卸载流表的情况下,所述虚拟交换机通过第一端口将所述精确流表卸载至所述n个网络接口卡。139.在本发明实施例中,通过上述两级绑定形成的第一端口一方面可以避免n个逻辑端口分别对应不同的端口标识所可能导致的物理交换机和虚拟交换机之间数据回环,进而影响系统的性能甚至导致报文处理异常的问题;另一方面,实现了精确流表的多网络接口卡卸载,即虚拟交换机可以通过第一端口将所述精确流表卸载至所述所有的网络接口卡,从而解决了在将精确流表卸载到单一网络接口卡或基于单一网络接口卡进行报文处理的过程中,该单一网络接口卡故障而导致业务终止的问题,虚拟交换机将精确流表卸载至与主机连接的所有网络接口卡,使得在任一网络接口卡故障时,虚拟交换机可以切换至其它网络接口卡,从而保证报文处理业务的可靠性。140.在一种可能的实现方式中,所述虚拟交换机在确定所述报文对应的精确流表满足卸载条件的情况下,通过第一端口将所述精确流表卸载至所述n个网络接口卡之前,所述方法还可以包括以下步骤中步骤s704至s707。141.步骤s704,所述目标网络接口卡查询内部是否存在与所述报文对应的卸载流表。142.具体地,报文由匹配信息和载荷(payload)构成。其中,匹配信息用于与流表的匹配域进行匹配。流表(flowtable)是描述何种数据流的报文要经过何种处理的表,用于在软件定义网路(softwaredefinednetwork,sdn)中控制数据流,也可以称为sdn流表,具体可以采用符合openflow协议的流表或符合其它协议的流表。流表按照存储位置不同具体分为卸载流表(也称为硬件流表)和精确流表(也称为软件流表)。存储在网络接口卡中的流表为卸载流表。由虚拟交换机基于报文以及虚拟功能的标识进行慢路径转发学习生成的流表为精确流表(存储在虚拟交换机中)。网络接口卡中存储的卸载流表与位于虚拟交换机中的精确流表保持同步。流表至少包括匹配域和执行域,匹配域用于与报文进行匹配,执行域用于指示匹配上流表的报文应该执行的动作。执行域包括了报文的动作标识,例如转发、丢弃、上送sdn控制器等。其中,报文的匹配信息用于指示报文所属的数据流的特征信息,匹配信息具体可以是报文的报头中携带的某几个字段,这些字段是同属于一条数据流中的所有报文都携带的,即同属于同一数据流的报文具有相同的匹配信息。在一个实施例中,报文的匹配信息可以是源ip地址(sip)、源端口号(sport)、目的ip地址(dip)、目的端口号(dport)、传输层协议号(iptype)和子网标识符,通过这些信息可以唯一确定一条数据流(也可称为“连接”),本技术的实施例不限于此,其它可以唯一确定一条数据流的信息也可以作为报文的匹配信息。其中,数据流(dataflow)指示携带相同匹配信息的一系列报文。具体地,同一数据流中的报文的匹配信息,均可以匹配上该数据流对应的精确流表或卸载流表的匹配域。143.所述目标网络接口卡查询内部是否存在与所述报文对应的卸载流表具体可以为所述目标网络接口卡基于报文的匹配信息查询内部是否存在与报文的匹配信息匹配的匹配域,进而基于匹配域确定对应的卸载流表。144.步骤s705,所述目标网络接口卡在查询到内部不存在与所述报文对应的卸载流表时,向所述虚拟交换机发送消息。145.其中,所述消息携带所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识。具体地,所述目标网络接口卡在查询到内部不存在与所述报文对应的卸载流表时,无法对所述报文进行处理,因此需要将报文和目标网络接口卡的虚拟功能的标识通过upcall线程上送至虚拟交换机,以使虚拟交换机基于报文和目标网络接口卡的虚拟功能的标识确定与所述报文对应的精确流表。其中,所述目标网络接口卡的虚拟功能的标识不仅用于指示报文是从哪一个网络接口卡上送的,而且由于网络接口卡的虚拟功能与虚拟机对应,因此,所述目标网络接口卡的虚拟功能的标识还可以用于指示该报文是哪一个虚拟机发送的。146.可选地,如果在目标网络接口卡查询到内部存在与所述报文对应的卸载流表时,则目标网络接口卡可以直接将报文转发至其它虚拟机或者通过网络接口卡转发至外部网络。147.步骤s706,所述虚拟交换机基于所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,确定与所述报文对应的精确流表。148.具体地,在目标网络接口卡向所述虚拟交换机发送消息后,虚拟交换机通过虚拟网卡的代理端口接收该消息。所述虚拟交换机通过软件慢路径转发模块基于所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识进行报文慢路径的匹配,执行安全检查、状态更新和目的位置查找等逻辑,最终确定与所述报文对应的精确流表。具体地,虚拟交换机通过软件慢路径转发模块基于报文和目标网络接口卡的虚拟功能的标识,分析报文携带的信息,决定如何处理该报文,报文处理完成之后软件慢路径转发模块将处理的过程记录下来并生成报文对应的精确流表,上述软件慢路径转发模块针对报文分析、处理以及生成报文对应的精确流表的过程也可以称为报文的“慢路径转发”。换句话说,经过虚拟交换机的报文处理过程可以称为“慢路径转发”。而在本技术其它实施例中,“快路径转发”指的是不经过虚拟交换机,而直接在网络接口卡基于卸载流表匹配进行报文处理的过程。其中,所述虚拟交换机基于所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识确定与所述报文对应的精确流表,具体可以是根据报文的上面描述的匹配信息和所述虚拟功能的标识确定与所述报文对应的精确流表。149.步骤s707,所述虚拟交换机确定所述报文对应的精确流表是否满足卸载条件。150.具体地,在虚拟交换机通过软件慢路径转发模块确定定与所述报文对应的精确流表后,虚拟机交换机通过多网络接口卡智能卸载引擎模块判断是否可以将报文对应的精确流表卸载至网络接口卡,即判断所述报文对应的精确流表是否满足卸载条件。151.在一种可能的实现方式中,所述虚拟交换机确定所述报文对应的精确流表满足卸载条件,包括:所述虚拟交换机根据所述报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或所述虚拟交换机根据所述报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。由于网络接口卡的存储空间有限,难以存储大量的硬件流表。若发送所述报文的虚拟机与所述虚拟交换机的连接状态不稳定或发送所述报文的虚拟机的流速率小于预设阈值,则无需将报文对应的精确流表卸载至网络接口卡,以避免占用网络接口卡的存储空间,降低网络接口卡的报文处理效率。在所述虚拟交换机确定所述报文对应的精确流表满足卸载条件的情况下,所述虚拟交换机通过第一端口将所述精确流表卸载至所述n个网络接口卡。152.在上述步骤s701至步骤s707对应的实施例中,目标虚拟机向目标网络接口卡发送报文,目标网络接口卡在查询到内部不存在与报文对应的卸载流表时,向虚拟交换机发送消息,虚拟交换机根据该消息确定与报文对应的精确流表,并在确定所述精确流表满足卸载条件的情况下,通过与主机连接的所有网络接口卡聚合形成的第一端口将所述精确流表卸载至所述所有的网络接口卡,从而一方实现了在网络接口卡中完成对报文的处理过程,无需主机来处理,减轻主机的负担,有效利用网络接口卡等硬件资源,提高系统的可靠性,另一方面解决了可能出现的在将精确流表卸载到单一网络接口卡或基于单一网络接口卡进行报文处理的过程中,该网络接口卡故障而导致业务终止的问题,虚拟交换机将精确流表卸载至与主机连接的所有网络接口卡,使得在任一网络接口卡故障时,虚拟交换机可以切换至其它网络接口卡,从而保证报文处理业务的可靠性,同时还可以避免n个逻辑端口分别对应不同的端口标识所可能导致的物理交换机和虚拟交换机之间数据回环,进而影响系统的性能甚至导致报文处理异常的问题。153.如图6所示出的物理机架构示意图所示,目标虚拟机的虚拟网卡的工作模式可包括软直通模式和硬直通模式。当虚拟机的虚拟网卡被配置为硬直通模式时,虚拟机与网络接口卡直接连接;当虚拟机的虚拟网卡被配置为软直通模式时,虚拟机通过虚拟交换机与网络接口卡连接。154.在一种可能的实现方式中,在所述目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,上述步骤s702:目标虚拟机向所述目标网络接口卡发送报文包括以下步骤s702a至s702c。155.s702a,所述目标虚拟机向所述虚拟交换机发送所述报文;所述虚拟交换机通过第二端口接收所述目标虚拟机发送的所述报文,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;s702b,所述虚拟交换机从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能;s702c,所述虚拟交换机将所述报文发送至所述目标虚拟功能;156.在一种可能的实现方式中,在所述目标虚拟机的虚拟网卡的工作模式被配置为硬直通模式时,上述步骤s702:目标虚拟机向所述目标网络接口卡发送所述报文包括以下步骤s702d至s702e:157.s702d,所述目标虚拟机从所述n个网络接口卡对应的n个虚拟功能中确定所述目标虚拟功能;s702e,所述目标虚拟机通过第三端口向所述目标虚拟功能发送所述报文,其中,所述第三端口为所述n个虚拟功能在所述目标虚拟机内聚合形成的逻辑端口。158.具体地,在上述步骤s702a-步骤s702e对应的实施例中,虚拟机的虚拟网卡可以配置为硬直通模式和软直通模式,在检测到硬直通模式(或软直通模式)故障时,可以自动切换到软直通模式(或硬直通模式)继续提供服务,从而解除硬件规格限制,按场景按需使用。159.对于虚拟机的虚拟网卡被配置为硬直通的场景,每个网络接口卡各确定一虚拟功能与虚拟机的虚拟网卡对应,虚拟机将n个网络接口卡对应的n个虚拟功能聚合形成一逻辑端口,即第三端口vmbond模块。对于虚拟机的虚拟网卡被配置为软直通(virtio)的场景,虚拟交换机从n个网络接口卡上各确定一虚拟功能与虚拟机的虚拟网卡对应,虚拟交换机在软直通进程将n个网络接口卡对应的n个虚拟功能聚合形成一逻辑端口,即第二端口vfbond模块。虚拟网卡的后端与第二端口构成端对端(peertopeer)的关系。因此,在虚拟机的虚拟网卡被配置为软直通时,报文的传输就通过软直通进程完成,其中,基于软直通进程完成的报文传输采用零拷贝机制。160.在一种可能的实现方式中,在上述步骤s701-步骤s707执行之后,还可以包括以下步骤s708:所述目标网络接口卡基于所述卸载的精确流表对所述报文进行处理。161.具体地,所述虚拟交换机通过第一端口将所述精确流表卸载至所述n个网络接口卡后,当与所述报文同一数据流的后续报文进入网络接口卡时,网络接口卡会直接根据报文从存储的卸载流表中命中报文对应的卸载流表,继而直接执行卸载流表中指示的行为(或操作),例如向指定端口输出、打上或剥除vlantag、打上或剥除vxlan头、修改数据包头、跳转至其它流表、丢弃以及执行ct行为等,以完成对报文的处理,无需在上报至虚拟交换机,能够更快地被处理,从而提高报文的处理效率。其中,虚拟机确定的与所述报文对应的精确流表可以包括多个,网络接口卡在接收到同一数据流的后继报文后,基于报文关联的卸载的多个精确流表的执行域进行处理。162.在一种可能的实现方式中,在上述步骤s704执行之后,在所述目标网络接口卡查询到内部存在与所述报文对应的卸载流表时,也可以执行步骤s708,所述目标网络接口卡基于所述卸载流表对所述报文进行处理。163.具体地,报文的转发可分为慢路径转发和快路径转发,在目标网络接口卡接收到虚拟机发送的报文后,查询内部是否存在与报文对应的卸载流表。在目标网络接口卡查询到内部存在与报文对应的卸载流表时,执行报文的快路径转发,即目标网络接口卡直接基于内部存储的卸载流表对所述报文进行处理。在目标网络接口卡查询到内部不存在与报文对应的卸载流表时,执行报文的慢路径转发,即将报文和目标网络接口卡接收报文的虚拟功能的标识上送至虚拟交换机,由虚拟交换机针对报文和虚拟功能的标识进行慢路径转发protocol,tcp)连接状态变化中的一种或多种。168.具体地,虚拟交换机在通过多网络接口卡智能卸载引擎模块检测到一报文对应的精确流表变更时,将更新后的精确流表卸载至n个网络接口卡,以指示n个网络接口卡基于新卸载的报文对应的精确流表更新该报文对应原有的卸载流表,以实现多网络接口卡之间卸载流表的统一管理。169.其中,因为网络接口卡的存储空间有限,或者分配给卸载流表的存储空间有限,当目标报文对应的卸载流表或精确流表长时间未被访问时,则启动老化机制,即将一段时间未被访问的卸载流表或精确流表被删除,从而节省存储空间。tcp连接是指客户机和物理机之间建立的网络连接。在客户机和物理机之间建立正常的tcp网络连接时,客户机首先发出一个握手信号,物理机使用syn+ack应答表示接收到了这个消息,最后客户机再以ack消息响应,这样在客户机和物理机之间才能建立起可靠的tcp连接,数据才可以在客户机和物理机之间传递。检测到tcp连接状态可以包括接收到tcp的建链请求和接收到针对tcp删除链路的请求,一旦发现是删除请求,则网络接口卡可以删除该客户发送的报文对应的卸载流表,避免占用空间。170.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同,所述方法还包括:所述虚拟交换机在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;所述虚拟交换机向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。171.具体地,由于虚拟交换机在确定所述报文对应的精确流表满足卸载条件的情况下,将精确流表卸载至主机连接的所有网络接口卡(即n个网络接口卡),因此,针对n个网络接口卡,任意两个网络接口卡中存储的卸载流表相同。卸载至网络接口卡的精确流表成为网络接口卡中存储的卸载流表,网络接口卡中存储的卸载流表组成卸载流表集合,任意两个网络接口卡对应的两个卸载流表集合中相同的卸载流表关联。举例来说,第一网络接口卡和第二网络接口卡连接主机,虚拟交换机内部存储有精确流表集合,精确流表集合中满足卸载条件的精确流表卸载至第一网络接口卡组成第一卸载流表集合,卸载至第二网络接口卡组成第二卸载流表集合,第一卸载流表集合和第二卸载流表集合中包括的卸载流表完全相同,即,第一卸载流表集合包括卸载流表1a,卸载流表1b,卸载流表1c,卸载流表1d,第二卸载流表集合中包括卸载流表2a,卸载流表2b,卸载流表2c,卸载流表2d。其中,卸载流表1a和卸载流表2a相同,卸载流表1b和卸载流表1b相同,卸载流表1c和卸载流表2c相同,卸载流表1d和卸载流表2d相同。虚拟交换机存储的精确流表集合中包括满足卸载条件的精确流表包括:精确流表0a,精确流表0b,精确流表0c,精确流表0d。可选地,主机中还可以包括不满足卸载条件的其它精确流表,不满足卸载条件的其它精确流表未在本发明实施例举例列出。虚拟交换机通过多网络接口卡智能卸载模块将相同的卸载流表1a和卸载流表2a关联至精确流表0a,相同的卸载流表1b和卸载流表2b关联至精确流表0b,相同的卸载流表1c和卸载流表2c关联至精确流表0c,卸载流表1d和卸载流表2d关联至精确流表0d,从而方便虚拟交换机通过多网络接口卡智能卸载模块实现多网络接口卡卸载流表的管理。举例来说,虚拟交换机通过虚拟交换机绑定模块在检测到第二网络接口卡的状态异常时,一方面通过虚拟交换机绑定模块解除第二网络接口卡对应的逻辑端口与第一网络接口卡对应的逻辑端口的聚合,另一方面虚拟交换机向所述第二网络接口卡发送标记指令,以指示第二个网络接口卡将第二卸载流表集合中包括的卸载流表1a,卸载流表1b,卸载流表1c和卸载流表1d标记为无效;并通过多网卡智能卸载引擎模块解除卸载流表1a和精确流表0a的关联,解除卸载流表1b和精确流表0b的关联,解除卸载流表1c和精确流表0c的关联,解除卸载流表1d和精确流表0d的关联。172.其中,被标记为无效的卸载流表被老化线程回收。虚拟交换机通过虚拟交换机绑定模块将状态异常的网络接口卡的虚拟功能链路状态被设置为down,从而触发状态异常的网络接口卡的虚拟功能状态为down,进而通过虚拟交换机绑定模块执行虚拟功能相关链路的切换,切换至与主机连接的其它网络接口卡,由其它网络接口卡完成io通信,保证链路的可靠性。173.在一种可能的实现方式中,所述方法还包括:当所述第二网络接口卡状态正常时,所述虚拟交换机将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;所述虚拟交换机将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;所述虚拟交换机建立所述第二网络接口卡对应的卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。174.具体地,虚拟交换机的虚拟交换机绑定模块在检测到状态异常的网络接口卡恢复正常时,该网络接口卡内部的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口,以形成第一级绑定;虚拟交换机绑定模块将该网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口设置为对应目标端口标识,以恢复该网络接口卡与其它网络接口卡的聚合,即恢复第二级绑定。由于在与主机连接的除恢复正常外的其它网络接口卡中,任意两个网络接口卡中存储的卸载流表相同,因此虚拟交换机通过多网络接口卡智能卸载模块将虚拟交换机内存储的精确流表集合中的精确流表卸载至状态恢复正常的网络接口卡,并建立该网络接口卡对应的卸载流表集合与精确流表集合的映射关系,从而实现所述状态恢复正常的网络接口卡对应的卸载流表集合与精确流表集合以及所述其它网络接口卡对应的卸载流表集合中相同流表关联,从而实现多网络接口卡之间卸载流表的统一管理。175.通过以上实施例,可以实现多网络接口卡卸载流表的管理,即实现多网络接口卡卸载流表的新建,老化,删除等,支持不同网络接口卡之间卸载流表一致性校验。176.在一种可能的实现方式中,在所述目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,所述目标虚拟机向所述目标网络接口卡发送报文,还包括:所述目标虚拟机配置虚拟网卡的队列数为k并将待发送的数据流分为k个队列,其中,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表;所述虚拟交换机通过所述第二端口接收所述目标虚拟机发送的所述数据流;所述虚拟交换机将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,k为n的整数倍,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。177.其中,目标虚拟机向网络接口卡发送报文可以包括目标虚拟机向n个网络接口卡中的目标网络接口卡发送报文,由目标网络接口卡完成报文的处理。目标虚拟机向网络接口卡发送报文还可以包括目标虚拟机向n个网络接口卡中的多个网络接口卡发送报文,由多个网络接口卡共同完成报文的处理,以加快报文的处理效率。在本技术实施例中,以目标虚拟机向n个网络接口卡发送报文,由n个网络接口卡共同完成报文的处理为例,虚拟机的虚拟网卡配置队列数k,在所述目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,目标虚拟机将报文发送虚拟交换机的软直通模块。软直通模块通过零拷贝方式接受目标虚拟机发送的报文。软直通模块将报文通过vfbond模块发送至n个网络接口卡对应的n个虚拟功能。每个虚拟功能负责k/n个队列的报文的转发。虚拟网卡的k个队列和n个网络接口卡对应的n个虚拟功能组成的队列建立了对应的关系。其中,上述“零拷贝”具体指报文由所述目标虚拟机的内存直接拷贝至网络接口卡的内存,所述虚拟交换机通过第二端口接收所述报文以及将所述报文发送至所述虚拟功能时不进行报文的拷贝。具体地,在将报文由虚拟机发送至网络接口卡的过程中,由于在软直通场景下报文需要虚拟交换机进行报文的搬运,因此一般需要报文需要先拷贝至主机的内存,再由主机的内存拷贝至网络接口卡。然后,在本技术实施例中,在软直通场景下,虚拟机虚拟网卡的队列和网络接口卡虚拟功能的队列存在对应关系,在报文由虚拟机发送至网络接口卡时,软直通模块直接将虚拟机的内存映射至网络接口卡的内存,即实现网络接口卡针对虚拟机的内存直接执行直接存储器访问(directmemoryaccess,dma),通过虚拟网卡的队列和硬件网卡vf的队列绑定,实现报文传输的零拷贝。同理,在目标虚拟机接收网络接口卡发送的报文时,报文由网络接口卡的内存直接拷贝至所述目标虚拟机的内存,所述虚拟交换机通过第二端口接收网络接口卡发送的报文以及所述虚拟交换机将所述报文发送至所述目标虚拟机时,所述虚拟交换机不进行报文的拷贝。178.具体地,图7对应的实施例的产品形态可以包含在物理机的软件中,部署在云平台的计算节点上。运行时,图7对应的实施例的程序代码可以运行于物理机的主机内存和网络接口卡的硬件内存中。179.参见图8,图8是本发明实施例提供的另一种流表处理方法的流程示意图,该方法可应用于上述图5中所述的物理机架构中的虚拟交换机102,其中的虚拟交换机102可以用于支持并执行图8中所示的方法流程步骤s801和步骤s802。下面将结合附图8从虚拟交换机单侧进行描述。所述虚拟交换机连接m个虚拟机和n个网络接口卡,m、n为大于或者等于2的整数,该方法可以包括以下步骤s803和步骤s804,可选地,还可以包括步骤s805-步骤s807。180.步骤s801,虚拟交换机建立所述n个逻辑端口的n个端口标识与所述目标端口标识之间的映射关系,以将所述n个逻辑端口聚合为所述第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口。181.步骤s802,虚拟交换机通所述过第一端口将精确流表卸载至所述n个网络接口卡。182.可选地,在上述步骤s802执行之前,还可以包括以下步骤s803和步骤s804。183.步骤s803,虚拟交换机接收目标网络接口卡发送的消息,所述消息携带所述目标网络接口卡接收到的报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,所述消息是所述目标网络接口卡在接收到所述报文后查询到内部不存在与所述报文对应的卸载流表后发送的,所述目标网络接口卡是所述n个网络接口卡中的其中一个。184.步骤s804,虚拟交换机基于所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,确定所述精确流表,所述精确流表用于指示对所述报文的处理。185.可选地,在上述步骤s801-步骤s804执行之前,还可以包括以下步骤s805-步骤s807。186.步骤s805,虚拟交换机通过第二端口接收目标虚拟机发送的所述报文,所述目标虚拟机是所述m个虚拟机中的任意一个,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口。187.步骤s806,虚拟交换机从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能。188.步骤s807,虚拟交换机将所述报文发送至所述目标虚拟功能,以使所述目标虚拟功能对应的所述目标网络接口卡根据所述报文查询是否存在与所述报文对应的卸载流表。189.可选地,在虚拟交换机通过第一端口将所述精确流表卸载至所述n个网络接口卡之前,所述方法还包括如下步骤s808:虚拟交换机确定所述精确流表满足卸载条件。其中,所述确定所述精确流表满足卸载条件,包括:根据所述精确流表对应的报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或根据所述精确流表对应的报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。190.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同,所述方法还包括:虚拟交换机在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所述第一网络接口卡中存储的多个卸载流表中的任意一个。191.在一种可能的实现方式中,所述方法还包括:虚拟交换机在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述预设条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。192.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同,所述方法还包括:在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。193.在一种可能的实现方式中,所述方法还包括:当所述第二网络接口卡状态正常时,将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;建立所述第二网络接口卡对应的卸载流表集合与所述精确流表集合的映射关系。194.在一种可能的实现方式中,所述接收目标网络接口卡发送的消息之前,所述方法还包括:通过所述第二端口接收所述目标虚拟机发送的数据流,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表,所述数据流被分为k个队列;将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,k为n的整数倍,所述目标虚拟机的虚拟网卡被配置为k个队列,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。195.基于上述物理机架构,本发明实施例提供又一种流表处理方法的流程示意图。如图9和图10所示,此处虚拟交换机以evs为例,网络接口卡以hi1822网络接口卡为例,其中,第一虚拟机的虚拟网卡被配置为硬直通模式,第二虚拟机机的虚拟网卡被配置为软直通模式,该流表处理方法包括步骤(1)至(6)。196.(1)物理机创建vsw网络bond拓扑。首先,物理机创建vsw对象,通过在虚拟交换机框架上创建虚拟交换机对象来构建所述虚拟交换机的拓扑结构,并且为所述虚拟交换机添加一个或多个端口以形成所述拓扑结构。其中,创建vsw对象和现有流程保持一致,此处不再赘述。其次,创建跨网络接口卡两级lacpbond。第一级,每个网络接口卡的物理端口基于lacp聚合形成的逻辑端口,即第一网络接口卡和第二网络接口卡各自提供一个链路级的两端口的lacp聚合hwbond-a和hwbond-b,这两个lacp聚合hwbond-a和hwbond-b被设置为对应目标端口标识sysid;第二级,evs在软件层面将两个lacp聚合抽象合并成一个4端口的lacp聚合。其中,物理机交换机也相应地开启动态lacp技术,由于两个网络接口卡对应的两个lacp聚合被设置为对应目标端口标识sysid,因此在物理交换机侧也同样地可以协商出一个4端口的lacp聚合。197.(2)物理机初始化多网络接口卡智能卸载引擎模块。物理机初始化多网络接口卡智能卸载引擎包括:(a)初始化每个网络接口卡的硬件datapath模块,即第一网络接口卡中包括的第一硬件datapath模块和第二网络接口卡中包括的第二硬件datapath模块;(b)为每个网络接口卡分配一个网络接口卡标识,该网络接口卡标识用于指示数据流从哪个网络接口卡收到的以及卸载流表与网络接口卡的关联关系。198.(3)物理机创建虚拟机实例。199.本技术实施例中,网络接口卡通过网络接口卡端口与虚拟机互联,一个网络接口卡端口可以通过sr-i/ov技术与主机上运行的一个虚拟机连接,网络接口卡端口可以为sr-i/ov技术定义的虚拟功能的端口。在本发明实施例中,网络接口卡还可以使用其它技术与虚拟机互联,本发明实施例不对网络接口卡与虚拟机互联的技术进行限定。网络接口卡还可以为支持虚拟机设备队列(virtualmachinedevicequeues,vmdq)功能的网络接口卡。物理机配置虚拟机与网络接口卡互联的端口可以包括以下步骤:200.(a)物理机的主机根据虚拟交换机端口的配置信息,在虚拟交换机上建立至少一个虚拟交换机端口,每个虚拟交换机端口对应该主机上运行的一个虚拟机。举例来说,物理机上运行有第一虚拟机和第二虚拟机,第一虚拟机对应的虚拟网卡为虚拟网卡1,第二虚拟机对应的虚拟网卡为虚拟网卡2,虚拟交换机具有端口1和端口2,那么设置端口1对应虚拟网卡1,设置端口2对应虚拟网卡2,即虚拟交换机不同的端口对应不同的虚拟网卡进而对应不同的虚拟机。201.(b)主机生成网络接口卡端口的配置信息,并将该网络接口卡端口的配置信息发送至物理机的网络接口卡。具体地,该主机获取该虚拟交换机端口的配置信息,将该虚拟交换机端口的配置信息发送至该主机上运行的网络接口卡驱动,该网络接口卡驱动根据该虚拟交换机端口的配置信息,生成网络接口卡端口的配置信息,并发送至该网络接口卡。该虚拟交换机端口的配置信息与该网络接口卡端口的配置信息的功能类似,该网络接口卡驱动将虚拟交换机端口的配置信息转换为网络接口卡端口的配置信息主要为了符合网络接口卡驱动与网络接口卡通信的规范。202.(c)该网络接口卡根据该网络接口卡端口的配置信息,在该网络接口卡上配置至少一个网络接口卡端口,每个网络接口卡端口与该主机上运行的一个虚拟机连接。举例来说,本技术实施例中,物理机从两个网络接口卡各分配一个虚拟功能与虚拟机的虚拟网卡绑定。网络接口卡端口具体可以为sr-i/ov技术定义的虚拟功能的端口。因此,虚拟交换机的每一个端口与网络接口卡的一个虚拟功能相对应,网络接口卡通过虚拟功能与虚拟机互联。203.上述步骤(a)至(c)为可选步骤,且步骤(a)至(c)为该虚拟交换机和该网络接口卡的配置过程,无须每次执行(a)至(c)的后续步骤前都执行一次(a)至(c)。通过该配置过程,主机上运行的虚拟机通过网络接口卡端口与网络接口卡连接。204.可选的,物理机创建虚拟机实例还包括配置该虚拟交换机与该网络接口卡通信的至少一个队列,用于该虚拟交换机将从网络接口卡接收到的数据包返回给该网络接口卡。队列的配置有多种形式,例如,该虚拟交换机与该网络接口卡通过一个队列通信,该虚拟交换机将需要发往该网络接口卡的全部数据包发送至该队列,再例如,该虚拟交换机与该网络接口卡通过k个队列通信,其中k为网络接口卡数量n的整数倍,每一个队列与一个网络接口卡对应。本发明实施例并不限定队列的配置形式。205.虚拟机的虚拟网卡的工作模式包括软直通工作模式和硬直通工作模式。无论虚拟网卡的工作模式被配置为软直通工作模式和硬直通工作模式,报文的转发均可以分为慢路径转发和快路径转发。综合考虑虚拟网卡的工作模式以及报文的转发,将报文的转发路径归纳如图11所示。其中,图5对应的服务器架构中,任意一个虚拟机101都可以作为图11中的源虚拟机将报文发送其它虚拟机101,任意一个虚拟机101也可以作为目的虚拟机接收其它虚拟机发送的报文。任意一个网络接口卡105都可以作为本技术中的第一网络接口卡以及第二网络接口卡。对于virtio软直通场景:将vsw对象上创建虚拟网卡的代理端口信息和以及两个网络接口卡各自对应的一个虚拟功能与虚拟机的虚拟网卡的绑定关系通知virtio软直通模块,创建vfbond与虚拟网卡后端设备执行绑定操作。在一种可选的实施方式中,物理机还利用多队列机制,将虚拟机的虚拟网卡配置队列数为m(建议为偶数)时,软直通内vfbond模块的每个虚拟功能负责其中m/2个队列的流量收发,virtio虚拟网卡和虚拟功能队列建立了一一对应关系,软直通模块通过零拷贝的方式收发报文。对于vf硬直通场景,在虚拟机内创建vmbond作为网络接口。206.(4)物理机执行首包慢路径学习。如图10所示,当虚拟机的虚拟网卡被配置为硬直通工作模式时,第一虚拟机发送报文时,通过内部vmbond基于哈希算法选择某个虚拟功能,到达扩展出该虚拟功能的网络接口卡。可选地,当虚拟机的虚拟网卡被配置为软直通工作模式时,第一虚拟机发送报文时,首先报文到达虚拟交换机的软直通模块,软直通模块通过内部vfbond基于哈希算法选择某个虚拟功能,进而到达扩展出该虚拟功能的硬件网络接口卡,其中,图10仅仅示意了第一虚拟机的虚拟网卡被配置为硬直通工作模式的场景,第一虚拟机的虚拟网卡被配置为软直通工作模式的场景未在图10中示出。在网络接口卡硬件datapath模块内部查找是否存在报文对应的卸载流表,没有命中。硬件网络接口卡产生消息,即硬件upcall。该硬件upcall携带报文、虚拟功能标识,vsw通过对应虚拟网卡代理端口收到该报文。vsw通过软件慢路径模块对报文做软件慢路径转发,执行安全检查、状态更新和目的位置查找等逻辑,结果通知多网络接口卡智能卸载引擎模块。多网络接口卡智能卸载引擎模块根据状态、报文执行action集合和流量大小智能决策是否生成卸载流表,若不满足则放弃本次卸载。若可以安装卸载流表,则多网络接口卡智能卸载引擎模块将报文对应的精确载流表同时下发给与虚拟交换机连接的所有的网络接口卡的硬件datapath模块,并在多网络接口卡智能卸载引擎模块中记录卸载流表与网络接口卡标识的关联关系,以及不同网络接口卡对应的相同的卸载流表之间的关联关系。其中,报文action集合分为两个部分,第一部分用于指示针对报文的报文头进行何种修改,第二部分用于指示网络接口卡报文从哪个端口发出去。207.(5)物理机执行卸载流表快路径转发。208.第一虚拟机发送报文时,当第一虚拟机的虚拟网卡被配置为硬直通工作模式时,如10所示,通过第一虚拟机内部vmbond基于hash算法选择某个虚拟功能,到达扩展出该虚拟功能的网络接口卡。当虚拟机的虚拟网卡被配置为软直通工作模式时,第一虚拟机发送报文时,报文到达虚拟交换机的软直通模块,软直通模块通过内部vfbond基于哈希算法选择某个虚拟功能,进而到达扩展出该虚拟功能的网络接口卡。在网络接口卡硬件datapath模块内部查找卸载流表,基于报文对应的卸载流表,将报文直接转发给其它虚拟机或外部网络。其中,图10仅仅示意了第一虚拟机的虚拟网卡被配置为硬直通工作模式,第二虚拟机的虚拟网卡被配置为软直通工作模式的场景,其它场景未在图10中示出。209.(6)物理机在检测到卸载流表变更和网络接口卡状态变更时,进行卸载流连接和bond状态处理。210.其中,卸载流表变更包括以下触发条件:慢路径转发规则变更、报文连接老化、虚拟机端口删除、tcp连接状态变化等。在多网络接口卡智能卸载引擎模块检测到上述触发条件时,将更新的精确流表卸载至与虚拟交换机连接的网络接口卡。当检测到与虚拟交换机连接的其中一个网络接口卡中某个卸载流表被删除时,同时清理与虚拟交换机连接的除上述网络接口卡外的其它网络接口卡中的关联卸载流表。211.当vsw-bond模块检测到某个网络接口卡状态异常(无法工作)时,将状态异常的网络接口卡从bond中移除,并立即通知多网络接口卡智能卸载引擎模块。多网络接口卡智能卸载引擎模块查找内部保存的精确流表,将状态异常的网络接口卡对应的精确流表标记为无效,并解除与虚拟交换机连接的除状态异常的网络接口卡的其它网络接口卡上相关卸载流表的关联。标记为无效的卸载流表最终由老化线程回收释放。同时将异常的网络接口卡vf链路状态设置为down,从而触发相应网络接口卡的vf状态为down,执行vfbond的相关链路切换。当网络接口卡恢复正常工作时,vsw-bond模块重新将其加入bond,并通知多网卡智能卸载引擎模块。多网卡智能卸载引擎模块将另外一个网络接口卡的卸载流表复制一份,下发给恢复正常工作的网络接口卡,并记录恢复正常工作的网络接口卡的网络接口卡标识与卸载流表的关联关系。212.上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的相关装置。213.请参见图12,图12是本发明实施例提供的一种流表处理装置900的结构示意图,该流表处理装置可以包括建立单元901和卸载单元902,其中,各个单元的详细描述如下。214.建立单元901,用于建立所述n个逻辑端口的n个端口标识与所述目标端口标识之间的映射关系,以将所述n个逻辑端口聚合为所述第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口。215.卸载单元902,用于通过所述第一端口将报文对应的精确流表卸载至所述n个网络接口卡。216.在一种可能的实现方式中,所述装置还包括。217.第一接收单元903,用于接收目标网络接口卡发送的消息,所述消息携带所述目标网络接口卡接收到的报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,所述消息是所述目标网络接口卡在接收到所述报文后查询到内部不存在与所述报文对应的卸载流表后发送的,所述目标网络接口卡是所述n个网络接口卡中的其中一个。218.确定单元904,用于基于所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,确定与所述报文对应的精确流表。219.在一种可能的实现方式中,所述装置还包括:220.第二接收单元905,还用于通过第二端口接收目标虚拟机发送的所述报文,所述目标虚拟机是所述m个虚拟机中的任意一个,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;221.所述确定单元904,还用于从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能;222.所述装置还包括:223.发送单元906,用于将所述报文发送至所述目标虚拟功能,以使所述目标虚拟功能对应的所述目标网络接口卡根据所述报文查询是否存在与所述报文对应的卸载流表。224.在一种可能的实现方式中,所述卸载单元902还用于确定所述报文对应的精确流表满足卸载条件的情况。其中在用于确定所述报文对应的精确流表满足卸载条件时,所述卸载单元902具体用于:根据所述报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或根据所述报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。225.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同,所述装置还包括第一更新单元907,第一更新单元907用于在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所述第一网络接口卡中存储的多个卸载流表中的任意一个。226.在一种可能的实现方式中,所述装置还包括第二更新单元908,第二更新单元908用于在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。227.在一种可能的实现方式中,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同,所述装置还包括第三更新单元909,第三更新单元909用于在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。228.在一种可能的实现方式中,所述第三更新单元909,还用于当所述第二网络接口卡状态正常时,将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;建立所述第二网络接口卡对应的卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。229.在一种可能的实现方式中,所述第二接收单元905还用于通过所述第二端口接收所述目标虚拟机发送的数据流,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表,所述数据流被分为k个队列。所述发送单元906,还用于将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,其中,k为n的整数倍,所述目标虚拟机的虚拟网卡被配置为k个队列,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。230.需要说明的是,本发明实施例中所描述的流表处理装置900中各功能单元的功能可参见上述图7和图8中所述的方法实施例中步骤s701-步骤s708和步骤s801-步骤s808的相关描述,此处不再赘述。231.如图13所示,图13是本发明实施例提供的一种物理机10的结构示意图,该物理机10包括至少一个处理器601,至少一个存储器602、至少一个通信接口603。此外,该设备还可以包括天线等通用部件,在此不再详述。232.处理器601可以是通用中央处理器(cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制以上方案程序执行的集成电路。233.通信接口603,用于与其它设备或通信网络通信,如以太网,无线接入网(ran),核心网,无线局域网(wirelesslocalareanetworks,wlan)等。234.存储器602可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。235.其中,所述存储器602用于存储执行以上方案的应用程序代码,并由处理器601来控制执行。所述处理器601用于执行所述存储器602中存储的应用程序代码。236.存储器602存储的代码可执行以上图5提供的流表处理方法,比如建立所述n个网络接口卡对应的n个逻辑端口的n个端口标识与一目标端口标识之间的映射关系,以将所述n个逻辑端口聚合为第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议lacp聚合形成的逻辑端口;通过所述第一端口将报文对应的精确流表卸载至所述n个网络接口卡。237.需要说明的是,本发明实施例中所描述的物理机10中各功能单元的功能可参见上述图7和图8中所述的方法实施例中步骤s701-步骤s708和步骤s801-步骤s808的相关描述,此处不再赘述。238.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。239.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。240.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。241.上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。242.另外,在本技术各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。243.上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务端或者网络设备等,具体可以是计算机设备中的处理器)执行本技术各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:u盘、移动硬盘、磁碟、光盘、只读存储器(read-onlymemory,缩写:rom)或者随机存取存储器(randomaccessmemory,缩写:ram)等各种可以存储程序代码的介质。244.以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。当前第1页12当前第1页12
技术特征:
1.一种流表处理方法,应用于虚拟交换机,所述虚拟交换机连接n个网络接口卡,n为大于或者等于2的整数,其特征在于,所述方法包括:建立所述n个网络接口卡对应的n个逻辑端口与一目标端口之间的映射关系,以将所述n个逻辑端口聚合为第一端口;其中,每个网络接口卡对应的逻辑端口是基于链路汇聚控制协议lacp聚合形成的;在目标网络接口卡中不存在与所述目标网络接口卡接收到的报文对应的卸载流表的情况下,通过所述第一端口将精确流表卸载至所述n个网络接口卡,所述目标网络接口卡是所述n个网络接口卡中的其中一个。2.根据权利要求1所述的方法,其特征在于,所述通过所述第一端口将所述精确流表卸载至所述n个网络接口卡之前,所述方法还包括:接收目标网络接口卡发送的消息,所述消息携带所述目标网络接口卡接收到的报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,所述消息是所述目标网络接口卡在接收到所述报文后查询到所述目标网络接口卡中不存在与所述报文对应的卸载流表后发送的;基于所述报文和所述虚拟功能的标识,确定所述精确流表,所述精确流表用于指示对所述报文的处理。3.根据权利要求2所述的方法,所述虚拟交换机连接m个虚拟机,m为大于或者等于2的整数,其特征在于,所述在接收目标网络接口卡发送的消息之前,所述方法还包括:通过第二端口接收目标虚拟机发送的所述报文,所述目标虚拟机是所述m个虚拟机中的任意一个,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能;将所述报文发送至所述目标虚拟功能,以使所述目标虚拟功能对应的所述目标网络接口卡根据所述报文查询是否存在与所述报文对应的卸载流表。4.根据权利要求1至3任一项所述的方法,其特征在于,所述通过所述第一端口将所述精确流表卸载至所述n个网络接口卡之前,所述方法还包括:确定所述精确流表满足卸载条件;其中,所述确定所述精确流表满足卸载条件,包括:根据所述精确流表对应的报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或根据所述精确流表对应的报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。5.根据权利要求1所述的方法,其特征在于,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删
除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所述第一网络接口卡中存储的多个卸载流表中的任意一个。7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述预设条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。8.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:当所述第二网络接口卡状态正常时,将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;建立所述第二网络接口卡对应的卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。10.根据权利要求3所述的方法,其特征在于,所述接收目标网络接口卡发送的消息之前,所述方法还包括:通过所述第二端口接收所述目标虚拟机发送的数据流,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表,所述数据流被分为k个队列;将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,k为n的整数倍,所述目标虚拟机的虚拟网卡被配置为k个队列,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。11.一种流表处理方法,应用于物理机,所述物理机包含主机和n个网络接口卡,所述主机上运行有虚拟交换机和m个虚拟机,所述n个网络接口卡通过主机接口与主机相连,所述n个网络接口卡通过网络接口与外部网络相连,m、n为大于或者等于2的整数,所述方法包括:所述虚拟交换机建立所述n个网络接口卡对应的n个逻辑端口与一目标端口之间的映射关系,以将所述n个逻辑端口聚合为第一端口;其中,每个网络接口卡对应的逻辑端口是基于链路汇聚控制协议lacp聚合形成的;
目标网络接口卡接收报文,所述报文是与所述物理机连接的物理交换机发送的或是目标虚拟机发送的报文,所述目标虚拟机是所述m个虚拟机中任意一个,所述目标网络接口卡是所述n个网络接口卡中的其中一个;在所述目标网络接口卡中不存在与所述报文对应的卸载流表的情况下,所述虚拟交换机通过所述第一端口将所述报文对应的精确流表卸载至所述n个网络接口卡。12.根据权利要求11所述的方法,其特征在于,所述方法还包括:所述目标网络接口卡在查询到所述目标网络接口卡中不存在与所述报文对应的卸载流表时,向所述虚拟交换机发送消息,所述消息携带所述报文和所述目标网络接口卡接收所述报文的虚拟功能的标识;所述虚拟交换机基于所述报文和所述虚拟功能的标识,确定与所述报文对应的精确流表。13.根据权利要求11或12所述的方法,其特征在于,所述方法还包括:所述目标网络接口卡基于所述卸载的精确流表对所述报文进行处理。14.根据权利要求11或12所述的方法,其特征在于,所述方法还包括:在所述目标网络接口卡查询到所述目标网络接口卡中存在与所述报文对应的卸载流表时,所述目标网络接口卡基于所述卸载流表对所述报文进行处理。15.根据权利要求11或12所述的方法,其特征在于,当所述报文是所述目标虚拟机发送的,所述方法还包括:所述目标虚拟机向所述目标网络接口卡发送报文;所述目标虚拟机包括虚拟网卡,所述虚拟网卡的工作模式包括软直通模式和硬直通模式;所述目标虚拟机向所述目标网络接口卡发送报文,包括:在所述虚拟网卡的工作模式被配置为软直通模式时,所述目标虚拟机向所述虚拟交换机发送所述报文;所述虚拟交换机通过第二端口接收所述报文,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;所述虚拟交换机从所述n个虚拟功能中确定目标虚拟功能;所述虚拟交换机将所述报文发送至所述目标虚拟功能;在所述目标虚拟机的虚拟网卡的工作模式被配置为硬直通模式时,所述目标虚拟机从n个虚拟功能中确定所述目标虚拟功能;所述目标虚拟机通过第三端口向所述目标虚拟功能发送所述报文,其中,所述第三端口为所述n个虚拟功能在所述目标虚拟机内聚合形成的逻辑端口。16.根据权利要求11或12所述的方法,其特征在于,所述虚拟交换机通过所述第一端口将所述报文对应的精确流表卸载至所述n个网络接口卡之前,所述方法还包括:所述虚拟交换机确定所述报文对应的精确流表满足卸载条件;其中,所述虚拟交换机确定所述报文对应的精确流表满足卸载条件,包括:所述虚拟交换机根据所述报文确定所述目标虚拟机与所述虚拟交换机的连接状态稳定;和/或所述虚拟交换机根据所述报文确定所述目标虚拟机的流速率大于或等于预设阈值。17.根据权利要求11所述的方法,其特征在于,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精
确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同。18.根据权利要求17所述的方法,其特征在于,所述方法还包括:所述虚拟交换机在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所述第一网络接口卡中存储的多个卸载流表中的任意一个。19.根据权利要求17或18所述的方法,其特征在于,所述方法还包括:所述虚拟交换机在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述预设条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。20.根据权利要求17或18所述的方法,其特征在于,所述方法还包括:所述虚拟交换机在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;所述虚拟交换机向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。21.根据权利要求20所述的方法,其特征在于,所述方法还包括:当所述第二网络接口卡状态正常时,所述虚拟交换机将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;所述虚拟交换机将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;所述虚拟交换机建立所述第二网络接口卡对应的卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。22.根据权利要求14所述的方法,其特征在于,在所述目标虚拟机的虚拟网卡的工作模式被配置为软直通模式时,所述目标虚拟机向目标网络接口卡发送报文,还包括:所述目标虚拟机配置虚拟网卡的队列数为k并将待发送的数据流分为k个队列,其中,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表;所述虚拟交换机通过第二端口接收所述目标虚拟机发送的所述数据流;所述虚拟交换机将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,k为n的整数倍,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。
23.一种流表处理装置,应用于虚拟交换机,所述虚拟交换机连接n个网络接口卡,n为大于或者等于2的整数,其特征在于,所述装置包括:建立单元,用于建立所述n个网络接口卡对应的n个逻辑端口与目标端口之间的映射关系,以将所述n个逻辑端口聚合为第一端口;其中,每个网络接口卡对应的逻辑端口是基于链路汇聚控制协议lacp聚合形成的;卸载单元,用于在目标网络接口卡中不存在与所述目标网络接口卡接收到的报文对应的卸载流表的情况下,通过所述第一端口将精确流表卸载至所述n个网络接口卡,所述目标网络接口卡是所述n个网络接口卡中的其中一个。24.根据权利要求23所述的装置,其特征在于,所述装置还包括:第一接收单元,用于接收目标网络接口卡发送的消息,所述消息携带所述目标网络接口卡接收到的报文和所述目标网络接口卡接收所述报文的虚拟功能的标识,所述消息是所述目标网络接口卡在接收到所述报文后查询到所述目标网络接口卡中不存在与所述报文对应的卸载流表后发送的;确定单元,用于基于所述报文和所述虚拟功能的标识,确定所述精确流表,所述精确流表用于指示对所述报文的处理。25.根据权利要求24所述的装置,其特征在于,所述虚拟交换机连接m个虚拟机,m为大于或者等于2的整数,所述装置还包括:第二接收单元,用于通过第二端口接收目标虚拟机发送的所述报文,所述目标虚拟机是所述m个虚拟机中的任意一个,所述第二端口为所述n个网络接口卡对应的n个虚拟功能在所述虚拟交换机内聚合形成的逻辑端口;所述确定单元,还用于从所述n个网络接口卡对应的n个虚拟功能中确定目标虚拟功能;所述装置还包括:发送单元,用于将所述报文发送至所述目标虚拟功能,以使所述目标虚拟功能对应的所述目标网络接口卡根据所述报文查询是否存在与所述报文对应的卸载流表。26.根据权利要求23至25任一项所述的装置,其特征在于,所述卸载单元还用于确定所述精确流表满足卸载条件;其中,在用于确定所述精确流表满足卸载条件时,所述卸载单元具体用于:根据所述精确流表对应的报文确定发送所述报文的虚拟机与所述虚拟交换机的连接状态稳定;和/或根据所述精确流表对应的报文确定发送所述报文的虚拟机的流速率大于或等于预设阈值。27.根据权利要求23所述的装置,其特征在于,所述虚拟交换机存储的精确流表组成一精确流表集合,所述n个网络接口卡中每个网络接口卡存储的卸载流表组成一卸载流表集合,每个卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表一一对应,n个卸载流表集合中与同一精确流表对应的n个卸载流表相同。28.根据权利要求27所述的装置,其特征在于,所述装置还包括:第一更新单元,用于在检测到所述n个网络接口卡中的第一网络接口卡中存储的目标卸载流表被删除时,向所述n个网络接口卡除所述第一网络接口卡外的其它网络接口卡发送删除指令,所述删除指令用于指示删除存储的与所述目标卸载流表相同的卸载流表,所述第一网络接口卡为所述n个网络接口卡中任意一个网络接口卡,所述目标卸载流表是所
述第一网络接口卡中存储的多个卸载流表中的任意一个。29.根据权利要求27或28所述的装置,其特征在于,所述装置还包括:第二更新单元,用于在检测到预设条件时,向所述n个网络接口卡发送更新指令,所述更新指令用于指示所述n个网络接口卡更新与目标报文关联的卸载流表,所述预设条件包括所述目标报文对应的慢路径转发规则发生变更、所述目标报文连接老化、虚拟机端口删除和传输控制协议tcp连接状态变化中的一种或多种。30.根据权利要求27或28所述的装置,其特征在于,所述装置还包括:第三更新单元,用于在检测到所述n个网络接口卡中第二网络接口卡的状态异常时,解除所述第二网络接口卡对应的逻辑端口与所述n个网络接口卡中除所述第二网络接口卡外的其它网络接口卡对应的逻辑端口的聚合,所述第二网络接口卡为所述n个网络接口卡中任意一个网络接口卡;向所述第二网络接口卡发送标记指令,并解除所述第二网络接口卡中存储的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系,其中,所述标记指令用于指示所述第二网络接口卡将存储的卸载流表标记为无效。31.根据权利要求30所述的装置,其特征在于,所述第三更新单元,还用于当所述第二网络接口卡状态正常时,将所述第二网络接口卡对应的逻辑端口与所述其它网络接口卡对应的逻辑端口聚合;将所述精确流表集合中的精确流表卸载至所述第二网络接口卡,其中,卸载到所述第二网络接口卡的精确流表组成所述第二网络接口卡对应的卸载流表集合;建立所述第二网络接口卡对应的卸载流表集合中包括的卸载流表与所述精确流表集合中包括的满足卸载条件的精确流表的一一对应关系。32.根据权利要求25所述的装置,其特征在于,所述第二接收单元,还用于通过所述第二端口接收所述目标虚拟机发送的数据流,所述数据流包括所述报文,所述数据流中包括的报文匹配同一卸载流表,所述数据流被分为k个队列;所述发送单元,还用于将所述数据流发送至所述n个网络接口卡对应的n个虚拟功能,其中,每个虚拟功能负责k/n个队列的数据流的接收,以使所述目标网络接口卡根据k/n个队列的数据流查询是否存在与所述报文对应的卸载流表,其中,k为n的整数倍,所述目标虚拟机的虚拟网卡被配置为k个队列,所述数据流基于所述虚拟网卡的k个队列与所述n个虚拟功能之间的对应关系由目标虚拟机的内存直接拷贝至所述n个网络接口卡的内存以实现所述数据流由所述目标虚拟机至所述n个网络接口卡之间的零拷贝传输。33.一种物理机,物理机包含主机和n个网络接口卡,所述主机上运行有m个虚拟机和包括根据权利要求23至32任一项所述的流表处理装置的虚拟交换机,所述n个网络接口卡通过主机接口与主机相连,所述n个网络接口卡通过网络接口与外部网络相连,m、n为大于或者等于2的整数,所述m个虚拟机包括目标虚拟机,所述n个网络接口卡包括目标网络接口卡,其中:所述虚拟交换机,用于建立所述n个网络接口卡对应的n个逻辑端口与目标端口之间的映射关系,以将所述n个逻辑端口聚合为所述第一端口;其中,每个网络接口卡对应的逻辑端口是基于链路汇聚控制协议lacp聚合形成的;所述目标网络接口卡,用于接收报文,所述报文是与所述物理机连接的物理交换机发送的或是目标虚拟机发送的报文,所述目标虚拟机是所述m个虚拟机中任意一个,所述目标
网络接口卡是所述n个网络接口卡中的其中一个;所述虚拟交换机,还用于在所述目标网络接口卡中不存在与所述报文对应的卸载流表的情况下,通过所述第一端口将所述报文对应的精确流表卸载至所述n个网络接口卡。34.一种流表处理装置,应用于目标网络接口卡,所述目标网络接口卡是n个网络接口卡中的其中一个,所述n个网络接口卡与虚拟交换机连接,n为大于或者等于2的整数,其特征在于,所述装置包括:发送单元,用于在所述目标网络接口卡中不存在与所述目标网络接口卡接收到的报文对应的卸载流表的情况下,向所述虚拟交换机发送消息,所述消息携带所述目标网络接口卡接收到的报文和所述目标网络接口卡接收所述报文的虚拟功能的标识。35.一种物理机,其特征在于,包括处理器、存储器以及通信接口,其中,所述存储器用于存储流表处理程序代码,所述处理器用于调用所述流表处理识别程序代码来执行权利要求1至10任一项所述的方法或权利要求11至22任一项所述的方法。36.一种芯片系统,其特征在于,所述芯片系统包括至少一个处理器、存储器和接口电路,所述存储器、所述接口电路和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述处理器执行时,权利要求1至10中任意一项所述的方法或权利要求11至22中任意一项所述的方法得以实现。37.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求1至10任意一项所述的方法或权利要求11至22中任意一项所述的方法。

技术总结
本发明实施例公开了一种流表处理方法及相关设备,该方法应用于虚拟交换机,该虚拟交换机连接M个虚拟机和N个网络接口卡,该方法可包括:建立所述N个网络接口卡对应的N个逻辑端口的N个端口标识与一目标端口标识之间的映射关系,以将所述N个逻辑端口聚合为第一端口;其中,每个网络接口卡对应的逻辑端口是每个网络接口卡的物理端口基于链路汇聚控制协议LACP聚合形成的逻辑端口;通过所述第一端口将精确流表卸载至所述N个网络接口卡。采用本发明实施例可以实现多网络接口卡的转发与卸载,提高系统的可靠性。系统的可靠性。系统的可靠性。


技术研发人员:李力军 周敬滨 李晓
受保护的技术使用者:华为技术有限公司
技术研发日:2020.10.31
技术公布日:2023/10/11
版权声明

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

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

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

航空之家

看飞机、选飞机、买飞机、用飞机、都回航空之家

相关推荐