《为联网设备虚拟化卸载分组处理.pdf》由会员分享,可在线阅读,更多相关《为联网设备虚拟化卸载分组处理.pdf(19页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104205080A43申请公布日20141210CN104205080A21申请号201380015731722申请日2013030661/613,82420120321US13/551,06420120717USG06F13/14200601G06F9/4420060171申请人微软公司地址美国华盛顿州72发明人Y左DM弗尔斯通AG格林伯格H乔Y邓BW塔特尔P加格74专利代理机构上海专利商标事务所有限公司31100代理人段登新54发明名称为联网设备虚拟化卸载分组处理57摘要本发明涉及用于为联网设备虚拟化而卸载分组处理的方法、系统和计算机程序产品。主机维护用于虚拟机的规则集。
2、,并且物理网络接口卡NIC维护用于该虚拟机的流表。该物理NIC接收并处理与该虚拟机相关联的网络分组。处理该网络分组包括该物理NIC将该网络分组与该物理NIC处的流表相比较。当该网络分组与该物理NIC处的流表中的流相匹配时,该物理NIC基于该匹配流对该网络分组执行动作。或者,当该网络分组不与该物理NIC处的流表中的流相匹配时,该物理NIC将该网络分组传递至该主分区以对照该规则集进行处理。30优先权数据85PCT国际申请进入国家阶段日2014092286PCT国际申请的申请数据PCT/US2013/0292222013030687PCT国际申请的公布数据WO2013/142041EN2013092。
3、651INTCL权利要求书2页说明书11页附图5页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书11页附图5页10申请公布号CN104205080ACN104205080A1/2页21在包括一个或多个处理器和系统存储器的计算机系统处,所述计算机系统还包括物理网络接口卡NIC并执行主分区,一种用于为在所述计算机系统处执行的虚拟机处理网络分组的方法,所述方法包括所述主分区维护用于虚拟机的一个或多个规则集的动作;所述物理NIC维护用于所述虚拟机的一个或多个流表的动作;以及所述物理NIC接收与所述虚拟机相关联的网络分组的动作;为所述虚拟机处理所述网络分组的动作,包括所述物理NIC。
4、将所述网络分组与所述一个或多个流表相比较的动作,以及在所述网络分组与所述一个或多个流表中的流相匹配时,所述物理NIC基于匹配流对所述网络分组执行动作的动作,或者在所述网络分组不与所述一个或多个流表中的流相匹配时,所述物理NIC将所述网络分组传递至所述主分区以对照所述一个或多个规则集进行处理的动作。2如权利要求1所述的方法,其特征在于,还包括,当所述网络分组不与所述一个或多个流表中的流相匹配时,所述主分区将所述网络分组与所述一个或多个规则集相比较的动作。3如权利要求2所述的方法,其特征在于,在所述网络分组与所述一个或多个规则集中的规则相匹配时,所述主分区基于匹配规则对所述网络分组执行动作的动作。。
5、4如权利要求3所述的方法,其特征在于,在所述网络分组与所述一个或多个规则集中的规则相匹配时,所述主分区在所述一个或多个流表中在所述物理NIC处创建一个或多个流的动作。5如权利要求1所述的方法,其特征在于,还包括所述主分区维护用于所述虚拟机的一个或多个流表的动作,并且其中在所述物理NIC处维护的所述一个或多个流表包括在所述主分区处维护的所述一个或多个流表的子集。6一种计算机程序产品,所述计算机程序产品包括上面存储了计算机可执行指令的一个或多个计算机存储介质,所述计算机可执行指令在被计算机系统的一个或多个处理器执行时,致使所述计算机系统实现一种用于为在所述计算机系统处执行的虚拟机处理网络分组的方法。
6、,所述方法包括虚拟交换机维护用于虚拟机的一个或多个规则集的动作;所述虚拟交换机维护用于所述虚拟机的一个或多个流表的动作;所述虚拟交换机将所述一个或多个流表的至少一部分卸载至所述物理NIC的动作;以及所述虚拟交换机为所述虚拟机处理网络分组的动作,包括所述虚拟交换机从所述虚拟机或所述物理NIC之一接收所述网络分组;所述虚拟交换机将所述网络分组与所述一个或多个规则集中的规则相匹配;以及基于将所述网络分组与所述规则相匹配所述虚拟交换机在所述一个或多个流表中创建流;以及所述虚拟交换机将所述流卸载到所述物理NIC。7如权利要求6所述的计算机程序产品,其特征在于,维护用于虚拟机的一个或多个规则集的动作包括维。
7、护传入规则集和传出规则集的动作。权利要求书CN104205080A2/2页38如权利要求6所述的计算机程序产品,其特征在于,所述虚拟交换机为所述虚拟机处理网络分组的动作还包括所述虚拟交换机基于所述规则对所述网络分组执行至少一个动作。9如权利要求8所述的计算机程序产品,其特征在于,所述至少一个动作包括分组检查或分组操纵操作中的一个或多个。10一种计算机系统,包括一个或多个处理器;系统存储器;物理网络接口卡NIC;以及上面存储有计算机可执行指令的一个或多个计算机存储介质,所述计算机可执行指令在被所述一个或多个处理器执行时执行虚拟交换机,所述虚拟交换机被配置成在所述计算机系统的主分区内执行;维护用于。
8、虚拟机的传入规则集和传出规则集;维护用于该虚拟机的传入流表和传出流表;将所述传入流表或所述传出流表中的一个或多个的至少一部分卸载到所述物理NIC的虚拟桥;以及为所述虚拟机处理网络分组,包括从所述虚拟机或所述物理NIC中的一者或多者接收所述网络分组;将所述网络分组与所述传入规则集或所述传出规则集之一中的规则相匹配;以及基于将所述网络分组与所述规则相匹配在所述虚拟交换机处的所述传入流表或所述传出流表中的一者或多者中创建流;以及将所述流卸载到所述物理NIC的所述虚拟桥处的所述传入流表或所述传出流表中的一者或多者。权利要求书CN104205080A1/11页4为联网设备虚拟化卸载分组处理0001背景0。
9、0021背景和相关技术0003计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前手动执行的许多任务例如,文字处理、日程安排、帐目管理等。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算环境中。0004一些计算机系统被配置成提供用于托管HOST一个或多个虚拟机的虚拟化环境。例如,并行虚拟化执行环境包括管理程序HYPERVISOR。管理程序提供父分区和一个或多个子分区。
10、即虚拟机。父分区被配置成运行主操作系统并管理虚拟栈。每个子分区被配置成运行相应的客操作系统。管理程序还提供使子分区能够通过客操作系统内运行的虚拟设备驱动器访问物理设备的软件接口。0005虚拟化中的一个常见场景是管理虚拟化主机计算机系统处执行的虚拟机间的网络分组,以及管理这些虚拟机以及在主机计算机系统远程的计算机系统之间流动的网络分组。如此,主操作系统处的虚拟化栈可包括联网虚拟栈或虚拟交换机。虚拟交换机被配置成截取、检查以及操纵在各虚拟机间的连接中通信的网络分组。然而,这样做可能是低效的,因为这导致主操作系统和客操作系统之间的频繁而昂贵例如,在CPU使用方面的上下文切换。0006虚拟化的最近的发。
11、展已经是单根SINGLEROOTI/O虚拟化SRIOV。SRIOV是外围组件互连快速PCIE总线体系结构的扩展,其使PCIE设备能够直接与父分区和子分区通信。如此,SRIOV使得PCIE设备能够将其自身直接暴露于虚拟机通过管理程序。例如,遵循SRIOV的物理网络接口卡NIC可向主分区呈现一物理功能并向相应的子分区呈现一个或多个虚拟功能。主操作系统随后可包括与物理功能通信的物理功能驱动器,且每个客操作系统可执行与相应的虚拟功能通信的虚拟功能驱动器。物理NIC随后可直接与客操作系统传递网络分组绕过主操作系统,这可以大大改善网络性能。0007尽管SRIOV带来了优点,然而在虚拟化环境中的网络分组处理。
12、领域中仍存在某些低效。0008简要概述0009本发明涉及用于为网络设备虚拟化卸载分组处理的方法、系统和计算机程序产品。例如,本发明的实施例提供一种通用网络分组规则和流模型,其使在虚拟机主机处的网络分组处理的一部分能够从主机卸载到物理NIC。具体而言,本发明的实施例使得父分区即,主操作系统处的一个或多个流表中的所有或部分能够被卸载到物理NIC。这样做使得物理NIC能够根据定义的规则执行分组处理,同时提高虚拟机环境中的网络分组处理的性能。0010在一些实施例中,一种用于在计算机系统处执行的虚拟机处理网络分组的方法包说明书CN104205080A2/11页5括主分区维护用于虚拟机的一个或多个规则集。。
13、该方法还包括物理NIC维护用于该虚拟机的一个或多个流表。物理NIC接收与该虚拟机相关联的网络分组,并且为该虚拟机处理该网络分组。处理该网络分组包括该物理NIC将该网络分组与该一个或多个流表相比较。当该网络分组与该一个或多个流表中的流相匹配时,该物理NIC基于匹配流对该网络分组执行动作。替代地,当该网络分组不与该一个或多个流表中的流相匹配时,该物理NIC将该网络分组传递到主分区以对照该一个或多个规则集进行处理。0011在其他实施例,一种用于为在该计算机系统处执行的虚拟机处理网络分组的方法包括虚拟交换机维护用于虚拟机的一个或多个规则集并且还维护用于该虚拟机的一个或多个流表。该虚拟交换机将该一个或多。
14、个流表的至少一部分卸载到该物理NIC。该虚拟交换机为该虚拟机处理网络分组。处理网络分组包括该虚拟交换机从该虚拟机或该物理NIC之一接收该网络分组,且该虚拟机将该网络分组与该一个或多个规则集中的规则相匹配。基于将该网络分组与该规则相匹配,该虚拟交换机在该一个或多个流表中创建流并且将该流卸载到该物理NIC。0012提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。0013本发明的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本发明的实践来获。
15、知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些以及其它特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本发明的实践而获知。0014附图简述0015为了描述可获得本发明的上述和其他优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中0016图1图解促进为联网设备虚拟化而将分组处理卸载到物理NIC的示例计算机体系结构。0017图2图解用于为。
16、在该计算机系统处执行的虚拟机处理网络分组的示例方法的流程图。0018图3图解用于为在该计算机系统处执行的虚拟机处理网络分组的替代示例方法的流程图。0019图4图解促进为联网设备虚拟化而将分组处理卸载到物理NIC的替代计算机体系结构。0020图5图解包括示例多层虚拟交换机的层的示例计算机体系结构。0021详细描述0022本发明涉及用于为联网设备虚拟化而卸载分组处理的方法、系统和计算机程序产品。例如,本发明的实施例提供一种通用网络分组规则和流模型,其使在虚拟机主机处的网络分组处理的一部分能够从主机卸载到物理NIC。具体而言,本发明的实施例使得父分区说明书CN104205080A3/11页6即,主操。
17、作系统处的一个或多个流表中的所有或部分能够被卸载到物理NIC。这样做使得物理NIC能够根据定义的规则执行分组处理,同时提高虚拟机环境中的网络分组处理的性能。0023在一些实施例中,一种用于在计算机系统处执行的虚拟机处理网络分组的方法包括主分区维护用于虚拟机的一个或多个规则集。该方法还包括物理NIC维护用于该虚拟机的一个或多个流表。物理NIC接收与该虚拟机相关联的网络分组,并且为该虚拟机处理该网络分组。处理该网络分组包括该物理NIC将该网络分组与该一个或多个流表相比较。当该网络分组与该一个或多个流表中的流相匹配时,该物理NIC基于匹配流对该网络分组执行动作。替代地,当该网络分组不与该一个或多个流。
18、表中的流相匹配时,该物理NIC将该网络分组传递到主分区以对照该一个或多个规则集进行处理。0024在其他实施例,一种用于为在该计算机系统处执行的虚拟机处理网络分组的方法包括虚拟交换机维护用于虚拟机的一个或多个规则集并且还维护用于该虚拟机的一个或多个流表。该虚拟交换机将该一个或多个流表的至少一部分卸载到该物理NIC。该虚拟交换机为该虚拟机处理网络分组。处理网络分组包括该虚拟交换机从该虚拟机或该物理NIC接收该网络分组,且该虚拟机将该网络分组与该一个或多个规则集中的规则相匹配。基于将该网络分组与该规则相匹配,该虚拟交换机在该一个或多个流表中创建流并且将该流卸载到该物理NIC。0025本发明的各实施例。
19、可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质设备。承载计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的各实施例可包括至少两种明显不同种类的计算机可读介质计算机存储介质设备和传输介质。0026计算机存储介质设备包括RAM、ROM、EEPROM、CDROM、固态驱动器SS。
20、D如基于RAM、闪存、相变存储器PCM、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。0027“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接硬连线、无线、或者硬连线或无线的组合传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置并可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。。
21、0028此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质设备或反之亦然。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块例如,“NIC”内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质设备。因而,应当理解,计算机存储介质设备可被包括在还利用说明书CN104205080A4/11页7甚至主要利用传输介质的计算机系统组件中。0029计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机。
22、可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。更具体而言,上述特征和动作是作为实现权利要求的示例形式而公开的。0030本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接或。
23、者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。在一些实施例中,本发明可结合遵循SRIOV的物理NIC来实现,然而,本发明的范围延伸至SRIOV之外。0031本发明的实施例结合执行一个或多个虚拟机的主机例如,根分区来操作。该主机包括虚拟交换机,该虚拟交换机执行被该虚拟机发送和/或接收的网络分组的分组处理例如,检查以及可能的操纵。例如,本发明的实施例可以处理网际协议IP分组、收敛以太网上的RDMAROCE分组、以太网上的光纤信道FCOE分组等。此外。
24、,本发明的实施例提供了通用规则和流模型,其允许分组处理的至少一部分被从主机卸载到物理NIC,诸如以太网NIC、无线宽带NIC或其他类型的物理光纤。本发明的实施例因此允许以通用方式进行分组处理,由此消除了为不同类型的分组处理开发不同虚拟交换机模块的需要。0032具体而言,实施例包括将一个或多个流表或其部分卸载到物理NIC诸如遵循SRIOV的物理NIC。如此,使得物理NIC处的虚拟桥能够执行分组处理,类似于主机处的虚拟交换机。例如,如果在物理NIC处接收到分组,则该虚拟桥可将该分组匹配到卸载的流。该物理NIC处的虚拟桥可为该流采取适当动作而不涉及主机。这样做消除了与在主机处进行所有规则/流分组处理。
25、相关联的低效。0033现在参考图1,图1图解促进为联网设备虚拟化而将分组处理卸载到物理NIC的示例计算机体系结构100。如图所示,计算机体系结构100包括主机102、虚拟机108以及物理NIC110。0034主机102提供虚拟化环境。例如,主机102可包括父分区其执行主操作系统和一个或多个子分区。每个子分区可被视为提供用于执行相应的虚拟机诸如虚拟机108的虚拟化硬件环境。在一些实施例中,主机102被用作向承租人提供虚拟机的云计算环境的一部分。0035每个虚拟机包括虚拟机108执行一个或多个虚拟化应用,诸如操作系统、应用软件等。如图所示,虚拟机108包括网络栈108A例如,TCP/IP栈、虚拟N。
26、IC驱动器108B、以及虚拟功能驱动器108C。使用网络栈108A、虚拟NIC驱动器108B和虚拟功能驱动器108C,虚拟机108能够通过主机102在虚拟总线106上和/或通过物理NIC110在数据路径114上发送和/或接收网络分组和其他信息。0036物理NIC110包括能够被虚拟化并且使用一个或多个外部接口例如,所示物理说明书CN104205080A5/11页8接口126连接到其他计算机系统和/或网络的物理硬件。尽管只示出了一个物理NIC,然而计算机体系结构可包括任何数量的物理NIC。物理NIC110包括虚拟桥112。虚拟桥112桥接物理NIC110处的虚拟功能和物理功能并且执行分组检查和操。
27、纵。虚拟桥112与主机102处的虚拟交换机104一起工作以调节网络通信,如稍后更详细地描述的。如此,物理NIC110可将一个或多个虚拟功能展示给托管在主机102处的一个或多个虚拟机。此外,物理NIC110可将一个或多个物理功能展示给主机102。0037例如,图1示出物理NIC110将物理功能122呈现给主机102。图1还示出,主机102包括相应的物理功能驱动器124,并且数据路径118将物理NIC110处的物理功能122和主机102处的物理功能驱动器124相连接。如此,物理功能122和物理功能驱动器124可操作以在物理NIC110和主机102之间交换网络分组。例如,物理功能驱动器124可与主机。
28、102处的虚拟交换机104通信,且物理功能122可与物理NIC110处的虚拟桥112通信。0038图1还示出物理NIC110将虚拟功能120呈现给虚拟机108,该虚拟机对应于虚拟功能驱动器108C。数据路径114将物理NIC110处的虚拟功能120和虚拟机108处的虚拟功能驱动器108C相连接。物理NIC110可将多于一个虚拟功能呈现给虚拟机108,和/或可呈现附加虚拟功能给附加虚拟机。一般而言,每个虚拟机可直接访问所分配的虚拟功能。例如,虚拟机可使用其虚拟功能驱动器来与物理NIC110处的所分配的虚拟功能传递网络分组而无需来自主机102的干预。这样做可减少处理器使用和网络等待时间。例如,虚拟。
29、机108和物理NIC110可使用虚拟功能120和虚拟功能108C通过数据路径114直接通信。0039如先前指示的,在一些实施例中,物理NIC110可包括遵循SRIOV的PCIE硬件。在此类实施例中,虚拟功能120或物理功能122中的一者或多者可包括PCIE功能。然而,应当领会,本文描述的原理可应用于各种硬件设备,而不限于遵循SRIOV的设备或PCIE设备。0040在一些实施例中,托管在主机102处的一个或多个虚拟机可根据通用规则/流模型与规则传入和/或传出以及有可能与流传入和/或传出相关联。如图所示,主机102包括虚拟交换机104。虚拟交换机104被配置成根据通用规则/流模型检查和操纵被任何托。
30、管的虚拟机发送和接收的网络分组。例如,基于定义的规则和流,虚拟交换机104可允许分组、阻挡分组、重新路由分组、执行NAT、或执行适用于所使用的联网技术和设备的任何其他分组检查/操纵。0041如此处所使用的,规则定义基于一个或多个规则条件和一个或多个规则动作的分组流策略或其一部分。在一些实施例中,规则因具体虚拟机而异。规则可由管理员定义,或可由更高层系统来定义。在一些实施例中,规则是静态或相对静态的。在一些实施例中,规则被存储在规则集中并且被配置用于线性匹配。0042规则条件可使用元组来定义,元组包括字段和匹配的值。元组可包括适于所使用的网络协议和硬件设备的任何字段组合。元组可包括例如源和/或目。
31、的地网络地址例如,当使用IP时的IP地址、源和/或目的地端口、协议例如,传输控制协议TCP、用户数据报协议UDP、源和/或目的地硬件地址例如,以太网MAC地址或其组合。例如,示例性规则条件可根据五元组来定义,诸如1921680,TCP,其将匹配1921680网络上的具有任何源IP地址、任何源端口、任何目的地IP地址、任何目的地端口、以及使用说明书CN104205080A6/11页9TCP协议的任何网络分组。在一些实施例中,元组可不仅与流相关,而且与分组条件相关。例如,元组可包括与IP服务类型TOS相关的字段。本领域的技术人员将意识到,其他元组也是可能的,包括与尚未开发的联网技术有关的元组。00。
32、43规则动作可包括任何适当的分组路由和/或操纵操作。例如,某些示例性规则动作可包括拒绝、允许、网络地址翻译NAT、映射、计量、解封装、封装等。本领域的技术人员将意识到,各种其他规则动作也是可能的,包括与尚未开发的联网技术有关的动作。0044规则可被用来定义丰富的分组处理策略集合。例如,使用规则条件元组和规则动作,规则可指定来自特定IP地址的UDP分组被允许。在另一示例中,规则可指定被发送给具有指定端口的任何目的地的TCP分组经受NAT。将上面的示例性五元组示例与“允许”动作相组合,示例性规则可被定义为ALLOW1921680,TCP,意味着1921680网络上具有任何源IP地址、任何源端口、任。
33、何目的地IP地址、任何目的地端口并使用TCP协议的任何网络分组都应当被允许。0045如本文使用的,流是基于规则创建的动态状态。例如,当网络分组与规则匹配时,可基于该规则创建流。如此,类似于规则,流也可按照条件元组和动作来定义。流存储关于网络连接的上下文,并可用于确定如何基于流或上下文中的先前分组来处理流或上下文中的当前分组。流可经受超时。在一些实施例中,流被存储在一个或多个流表中,诸如传入流表和/或传出流表。例如,当网络分组与示例性1921680,TCP规则相匹配时,可在一个或多个适当流表中创建相应的流。在一些实施例中,基于流的元组例如,使用一个或多个散列来索引流。0046沿着这些线,图1示出。
34、虚拟交换机包括用于虚拟机108的状态106,所述状态可包括各种类型的状态,诸如所示的传出规则集106A、传入规则集106B、传出流表106C以及传入流表106D。传出规则集106A定义适用于正由虚拟机108发送的分组的一个或多个规则,而传入规则集106B定义适用于正代表虚拟机108接收的分组的一个或多个规则。当分组与相应规则集中的规则相匹配时,可在传出流表106C和/或传入流表106D中创建流。应当领会,在一些情况下,状态106可包括所示状态的子集。0047作为示例,当虚拟交换机104例如,从物理NIC110或从托管的虚拟机接收到与虚拟机108相关联的不与适当流表106C、106D中的流相匹配。
35、的网络分组时,虚拟交换机104可检查该适当规则集即,用于正代表虚拟机108接收的分组的传入规则集或用于正由虚拟机108发送的分组的传出规则集106A来寻找匹配规则。如果虚拟交换机104找到匹配规则,则虚拟交换机104可对该分组采取由该规则所定义的动作例如,允许/阻挡/NAT等。0048如果虚拟交换机104找到了匹配的规则,虚拟交换机104还可在传出流表106C和/或传入流表106D中创建流或流对以在处理该流/上下文中的后续分组时使用。例如,当分组匹配传出规则集106A中的规则时,虚拟交换机104可在传出流表106C和/或传入流表106D中创建流如由连接传出规则集106A和流表106C、106D。
36、的箭头所示。或者,当分组匹配传入规则集106B中的规则时,虚拟交换机104可在传出流表106C和/或传入流表106D中创建流如由传入规则集106B和流表106C、106D之间的箭头所示。应当领会,通过在相反方向的流表中创建流,虚拟交换机可实现有状态的防火墙。0049虚拟交换机104还可将流状态卸载到物理NIC110的虚拟桥112处的传出流高速说明书CN104205080A7/11页10缓存112A和/或传入流高速缓存112B,如由传出流表106C和传出流高速缓存112A之间的虚线箭头以及传入流表106D和传入流高速缓存112B之间的虚线箭头所示。例如,虚拟交换机104可通过数据路径118将请求。
37、在流高速缓存112A、112B处创建流的一个或多个请求发送到物理NIC100。在一些情况下,将流状态卸载到物理NIC110使得虚拟桥112能够与虚拟交换机104分开执行分组处理,由此减少主机102处的处理器使用。例如,在流被卸载到物理NIC110之后,物理NIC110可接收同一流的后续分组例如,通过数据路径114从虚拟机108或者通过外部接口126从另一计算机系统。在此情况下,虚拟桥112可将该后续分组与该适当流高速缓存112A、112B中的流状态相匹配,并且执行该流自身中所定义的动作,而不首先将该分组发送给虚拟交换机104。0050使用前述配置,虚拟机108可使用虚拟功能驱动器108C来通过。
38、数据路径114将传出网络分组发送给物理NIC110的虚拟功能120。在接收到该网络分组后,虚拟桥112搜索传出流高速缓存112A以寻找匹配流。如果虚拟桥112在传出流高速缓存112A中找到匹配流,则虚拟桥112采取该流中定义的动作。例如,虚拟桥112可执行分组操纵操作和/或可将该网络分组转发到目的地虚拟机或通过外部接口126转发到另一计算机系统。0051否则,如果虚拟桥112没有在传出流高速缓存112A中找到匹配流,则两个替代动作可发生。在第一实施例中,虚拟桥112拒绝至虚拟机108的网络分组例如,通过数据路径114。虚拟机108随后通过虚拟总线116将该网络分组转发至虚拟交换机104。在第二。
39、实施例中,虚拟桥112使用物理功能122来将该网络分组通过数据路径118发送给物理功能驱动器124。物理功能驱动器124进而将该网络分组路由至虚拟交换机104。在任一实施例中,在虚拟交换机104接收到该网络分组后,虚拟交换机104尝试将该网络分组与传出流表106C中的流相匹配。如果该网络分组不与传出流表106C中的流相匹配,则虚拟交换机104尝试将该网络分组与传出规则集106A中的规则相匹配。如果在传出规则集106A中找到了匹配规则,则虚拟交换机104采取由该匹配规则所定义的适当动作例如,允许/阻挡/NAT等并且可在流表106C/106D之一或两者处创建一个或多个流,并且有可能在流高速缓存11。
40、2A/112B之一或两者处创建一个一个或多个流。0052同样使用前述配置,物理NIC110可代表虚拟机108接收传入网络分组例如,通过相应虚拟功能从另一虚拟机或通过外部接口126从另一计算机系统。在接收到该网络分组后,虚拟桥112搜索传入流高速缓存112B以寻找匹配流。如果虚拟桥112在传入流高速缓存112B中找到匹配流,则虚拟桥112采取该流中定义的适当动作例如,允许/阻挡/NAT等。例如,虚拟桥112可使用虚拟功能120和数据路径114来将该分组转发至虚拟机108处的虚拟功能驱动器108C。如果虚拟桥112没有在传入流高速缓存112B中找到匹配流,则虚拟桥112使用物理功能122和数据路径。
41、118或虚拟功能120和数据路径114将该分组转发至主机120处的虚拟交换机104。虚拟交换机104随后如上面在传出网络分组的上下文中所描述的那样处理该分组。0053应当领会,传出流高速缓存112A和传入流高速缓存112A可仅代表完整流表即,传出流表106C和传入流表106D的一部分或一子集。例如,物理NIC110可由于成本或其他设计约束而具有有限的存储器。如此,在流高速缓存112A/112B中仅存储流表106C/106D的一部分减少了将流表卸载到物理NIC110所需的存储器的量。因为传出流高速缓存112A和传入流高速缓存112A可能不包括完整流状态数据,所以当在虚拟桥112处处理分组时说明书。
42、CN104205080A108/11页11高速缓存未中可能发生。当高速缓存未中发生时,虚拟桥112将该分组转发到虚拟交换机104以进行附加处理。应当领会,可采用其他类型的高速缓存替换/刷新策略。例如,流状态可在高速缓存未中发生之后被放置在物理NIC110上,条目可在预定不活动量之后从物理NIC110过期等。0054此外,在一些实施例中,仅有某些类型的流被存储在物理NIC110处。例如,虚拟桥112可仅支持执行有限类型的操作/动作。如此,仅与虚拟桥112支持的操作/动作有关的流可被存储在物理NIC110处。在这些实施例中,任何其他的操作/动作在虚拟交换机104处被处置。0055图2图解用于为在该。
43、计算机系统处执行的虚拟机处理网络分组的示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。0056方法200包括主分区中的虚拟交换机维护用于虚拟机的一个或多个规则集的动作动作202。例如,主机102处的虚拟交换机104可维护用于虚拟机108的状态106。状态106可包括用于虚拟机108的传出规则集106A或用于虚拟机108的传入规则集106B之一或两者。状态106还可包括用于虚拟机108的一个或多个流表,诸如传出流表106C和传入流表106D。尽管未示出,虚拟交换机104可存储用于其他附加虚拟机的状态例如,规则集、流表等。0057方法200还包括物理NIC维护用于该虚拟。
44、机的一个或多个流表的动作动作204。例如,物理NIC110可存储用于虚拟机208的传出流高速缓存112A和/或传入流高速缓存112B。流高速缓存可存储主机102处的任何流表的全部或仅一部分。尽管未示出,然而物理NIC110可存储用于其他附加虚拟机的流表。0058方法200还包括物理NIC接收与该虚拟机相关联的网络分组的动作动作206。例如,物理NIC可通过外部接口126接收来自另一计算机系统的网络分组,可通过虚拟功能120接收来自虚拟机108的网络分组,或可通过与主机220处的另一虚拟机相关联的另一虚拟功能接收来自该虚拟机的网络分组。0059方法200还包括为该虚拟机处理网络分组的动作动作20。
45、8。例如,虚拟桥112可处理从虚拟机108接收的网络分组或代表虚拟机108接收的网络分组即,正被虚拟机108接收的网络分组。0060动作208包括该物理NIC将该网络分组与该一个或多个流表相比较的动作动作210。例如,如果该分组正由虚拟机108发送,则虚拟桥112可将该网络分组与传出流高速缓存112A相比较,或者如果正代表虚拟机108接收该分组,则虚拟桥112可将该网络分组与传入流高速缓存112B相比较。0061动作208还包括,在该网络分组与该一个或多个流表中的流相匹配时,该物理NIC基于该匹配流对该网络分组执行动作的动作动作212。例如,如果该网络分组与传出流高速缓存112A或传入流高速缓。
46、存112B中的流相匹配,则虚拟桥112可执行在该流中指定的动作例如,允许、拒绝、NAT等。0062动作208还包括,在该网络分组不与该一个或多个流表中的流相匹配时,该物理NIC将该网络分组传递至该主机以对照该一个或多个规则集进行处理的动作动作214。例如,如果网络分组不与传出流高速缓存112A或传入流高速缓存112B中的流相匹配,则虚拟桥112可将该分组发送至主机102处的虚拟交换机104以供附加处理。在一些实施例说明书CN104205080A119/11页12中,虚拟桥112使用物理功能122和数据路径118将该网络分组直接发送至主机102。在其他实施例中,虚拟桥112使用虚拟功能120和数。
47、据路径114将该网络分组间接发送至主机102即,通过虚拟机108并通过虚拟总线116。0063在被接收时,主机102可将该网络分组传递至虚拟交换机104。虚拟交换机104进而可将该网络分组与状态106即,流表、规则集相比较并采取适当动作。例如,如果该网络分组与主机102处的流相匹配,则虚拟交换机104可采取适当动作例如,允许、拒绝、NAT等并可能更新物理NIC110处的流高速缓存。如果网络分组不与主机102处的流相匹配或者如果不存在适当的流,则虚拟交换机104可将该网络分组与适当规则集相比较、采取任何匹配规则中所指定的适当动作、以及可能创建一个或多个新流例如,在状态206和物理NIC110处。。
48、0064图3图解用于为在计算机系统处执行的虚拟机处理网络分组的附加示例方法300的流程图。方法300将参考计算机架构100的组件和数据来描述。0065方法300包括主分区中的虚拟交换机维护用于虚拟机的一个或多个规则集的动作的动作动作302。例如,主机102处的虚拟交换机104可维护用于虚拟机108的状态106。状态106可包括用于虚拟机108的传出规则集106A或用于虚拟机108的传入规则集106B之一或两者。0066方法300还包括该虚拟交换机维护用于该虚拟机的一个或多个流表的动作的动作动作304。例如,状态106可包括用于虚拟机108的传出流表106C或用于虚拟机108的传入流表106D之。
49、一或两者。0067方法300还包括该虚拟交换机将该一个或多个流表的至少一部分卸载至该物理NIC的动作动作306。例如,虚拟交换机104可将一个或多个流从传出流表106C卸载至传出流高速缓存112A。附加地或替代地,虚拟交换机104可将一个或多个流从传入流表106D卸载至传入流高速缓存112B。0068方法300还包括该虚拟交换机为该虚拟机处理网络分组的动作动作308。例如,虚拟交换机104可处理从虚拟机108接收或代表虚拟机108接收的网络分组。0069动作308包括该虚拟交换机接收来自该虚拟机或该物理NIC之一的网络分组的动作动作310。例如,虚拟交换机104可通过虚拟总线216从虚拟机108或者通过数据路径118以及物理功能驱动器124从物理NIC110接收网络分组。0070动作308还包括该虚拟交换机将该网络分组与该一个或多个规则集中的规则相匹配的动作动作312。例如,如果该网络分组正被虚拟机108发送,则虚拟交换机104可将该分组对照传出规则集106A进行匹配。替代地,如果正代表虚拟机108接收该网络分组,则虚拟交换机104可将该分组对照传入规则集106B进行匹配。0071动作308还包括,基于将该网络分组与该规则相匹配,该虚拟交换机在该一个或多个流表中创建流的动作动作314。例如,在将该网络分组对照传出规则集106A或传入规则集106B之一中。