为联网设备虚拟化卸载分组处理的制作方法

文档序号:6533371阅读:167来源:国知局
为联网设备虚拟化卸载分组处理的制作方法
【专利摘要】本发明涉及用于为联网设备虚拟化而卸载分组处理的方法、系统和计算机程序产品。主机维护用于虚拟机的规则集,并且物理网络接口卡(NIC)维护用于该虚拟机的流表。该物理NIC接收并处理与该虚拟机相关联的网络分组。处理该网络分组包括该物理NIC将该网络分组与该物理NIC处的流表相比较。当该网络分组与该物理NIC处的流表中的流相匹配时,该物理NIC基于该匹配流对该网络分组执行动作。或者,当该网络分组不与该物理NIC处的流表中的流相匹配时,该物理NIC将该网络分组传递至该主分区以对照该规则集进行处理。
【专利说明】为联网设备虚拟化卸载分组处理
[0001]背景
[0002]1.背景和相关技术
[0003]计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算环境中。
[0004]一些计算机系统被配置成提供用于托管(host) —个或多个虚拟机的虚拟化环境。例如,并行虚拟化执行环境包括管理程序(hypervisor)。管理程序提供父分区和一个或多个子分区(即虚拟机)。父分区被配置成运行主操作系统并管理虚拟栈。每个子分区被配置成运行相应的客操作系统。管理程序还提供使子分区能够通过客操作系统内运行的虚拟设备(驱动器)访问物理设备的软件接口。
[0005]虚拟化中的一个常见场景是管理虚拟化主机计算机系统处执行的虚拟机间的网络分组,以及管理这些虚拟机以及在主机计算机系统远程的计算机系统之间流动的网络分组。如此,主操作系统处的虚拟化栈可包括联网虚拟栈或虚拟交换机。虚拟交换机被配置成截取、检查以及操纵在各虚拟机间的连接中通信的网络分组。然而,这样做可能是低效的,因为这导致主操作系统和客操作系统之间的频繁而昂贵(例如,在CPU使用方面)的上下文切换。
[0006]虚拟化的最近的发展已经是单根(single-root) I/O虚拟化(SR1V)。SR1V是外围组件互连快速(PCIe)总线体系结构的扩展,其使PCIe设备能够直接与父分区和子分区通信。如此,SR1V使得PCIe设备能够将其自身直接暴露于虚拟机(通过管理程序)。例如,遵循SR1V的物理网络接口卡(NIC)可向主分区呈现一物理功能并向相应的子分区呈现一个或多个虚拟功能。主操作系统随后可包括与物理功能通信的物理功能驱动器,且每个客操作系统可执行与相应的虚拟功能通信的虚拟功能驱动器。物理NIC随后可直接与客操作系统传递网络分组(绕过主操作系统),这可以大大改善网络性能。
[0007]尽管SR1V带来了优点,然而在虚拟化环境中的网络分组处理领域中仍存在某些低效。
[0008]简要概述
[0009]本发明涉及用于为网络设备虚拟化卸载分组处理的方法、系统和计算机程序产品。例如,本发明的实施例提供一种通用网络分组规则和流模型,其使在虚拟机主机处的网络分组处理的一部分能够从主机卸载到物理NIC。具体而言,本发明的实施例使得父分区(即,主操作系统)处的一个或多个流表中的所有或部分能够被卸载到物理NIC。这样做使得物理NIC能够根据定义的规则执行分组处理,同时提高虚拟机环境中的网络分组处理的性能。
[0010]在一些实施例中,一种用于在计算机系统处执行的虚拟机处理网络分组的方法包括主分区维护用于虚拟机的一个或多个规则集。该方法还包括物理NIC维护用于该虚拟机的一个或多个流表。物理NIC接收与该虚拟机相关联的网络分组,并且为该虚拟机处理该网络分组。处理该网络分组包括该物理NIC将该网络分组与该一个或多个流表相比较。当该网络分组与该一个或多个流表中的流相匹配时,该物理NIC基于匹配流对该网络分组执行动作。替代地,当该网络分组不与该一个或多个流表中的流相匹配时,该物理NIC将该网络分组传递到主分区以对照该一个或多个规则集进行处理。
[0011]在其他实施例,一种用于为在该计算机系统处执行的虚拟机处理网络分组的方法包括虚拟交换机维护用于虚拟机的一个或多个规则集并且还维护用于该虚拟机的一个或多个流表。该虚拟交换机将该一个或多个流表的至少一部分卸载到该物理NIC。该虚拟交换机为该虚拟机处理网络分组。处理网络分组包括该虚拟交换机从该虚拟机或该物理NIC之一接收该网络分组,且该虚拟机将该网络分组与该一个或多个规则集中的规则相匹配。基于将该网络分组与该规则相匹配,该虚拟交换机在该一个或多个流表中创建流并且将该流卸载到该物理NIC。
[0012]提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
[0013]本发明的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些以及其它特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本发明的实践而获知。
[0014]附图简述
[0015]为了描述可获得本发明的上述和其他优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中:
[0016]图1图解促进为联网设备虚拟化而将分组处理卸载到物理NIC的示例计算机体系结构。
[0017]图2图解用于为在该计算机系统处执行的虚拟机处理网络分组的示例方法的流程图。
[0018]图3图解用于为在该计算机系统处执行的虚拟机处理网络分组的替代示例方法的流程图。
[0019]图4图解促进为联网设备虚拟化而将分组处理卸载到物理NIC的替代计算机体系结构。
[0020]图5图解包括示例多层虚拟交换机的层的示例计算机体系结构。
[0021]详细描述
[0022]本发明涉及用于为联网设备虚拟化而卸载分组处理的方法、系统和计算机程序产品。例如,本发明的实施例提供一种通用网络分组规则和流模型,其使在虚拟机主机处的网络分组处理的一部分能够从主机卸载到物理NIC。具体而言,本发明的实施例使得父分区(即,主操作系统)处的一个或多个流表中的所有或部分能够被卸载到物理NIC。这样做使得物理NIC能够根据定义的规则执行分组处理,同时提高虚拟机环境中的网络分组处理的性能。
[0023]在一些实施例中,一种用于在计算机系统处执行的虚拟机处理网络分组的方法包括主分区维护用于虚拟机的一个或多个规则集。该方法还包括物理NIC维护用于该虚拟机的一个或多个流表。物理NIC接收与该虚拟机相关联的网络分组,并且为该虚拟机处理该网络分组。处理该网络分组包括该物理NIC将该网络分组与该一个或多个流表相比较。当该网络分组与该一个或多个流表中的流相匹配时,该物理NIC基于匹配流对该网络分组执行动作。替代地,当该网络分组不与该一个或多个流表中的流相匹配时,该物理NIC将该网络分组传递到主分区以对照该一个或多个规则集进行处理。
[0024]在其他实施例,一种用于为在该计算机系统处执行的虚拟机处理网络分组的方法包括虚拟交换机维护用于虚拟机的一个或多个规则集并且还维护用于该虚拟机的一个或多个流表。该虚拟交换机将该一个或多个流表的至少一部分卸载到该物理NIC。该虚拟交换机为该虚拟机处理网络分组。处理网络分组包括该虚拟交换机从该虚拟机或该物理NIC接收该网络分组,且该虚拟机将该网络分组与该一个或多个规则集中的规则相匹配。基于将该网络分组与该规则相匹配,该虚拟交换机在该一个或多个流表中创建流并且将该流卸载到该物理NIC。
[0025]本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的各实施例可包括至少两种明显不同种类的计算机可读介质:计算机存储介质(设备)和传输介质。
[0026]计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(SSD)(如基于RAM)、闪存、相变存储器(PCM)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
[0027]“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置并可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。
[0028]此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用(甚至主要利用)传输介质的计算机系统组件中。
[0029]计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。更具体而言,上述特征和动作是作为实现权利要求的示例形式而公开的。
[0030]本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。在一些实施例中,本发明可结合遵循SR1V的物理NIC来实现,然而,本发明的范围延伸至SR1V之外。
[0031]本发明的实施例结合执行一个或多个虚拟机的主机(例如,根分区)来操作。该主机包括虚拟交换机,该虚拟交换机执行被该虚拟机发送和/或接收的网络分组的分组处理(例如,检查以及可能的操纵)。例如,本发明的实施例可以处理网际协议(IP)分组、收敛以太网上的RDMA(R0CE)分组、以太网上的光纤信道(FCoE)分组等。此外,本发明的实施例提供了通用规则和流模型,其允许分组处理的至少一部分被从主机卸载到物理NIC,诸如以太网NIC、无线宽带NIC或其他类型的物理光纤。本发明的实施例因此允许以通用方式进行分组处理,由此消除了为不同类型的分组处理开发不同虚拟交换机模块的需要。
[0032]具体而言,实施例包括将一个或多个流表(或其部分)卸载到物理NIC (诸如遵循SR1V的物理NIC)。如此,使得物理NIC处的虚拟桥能够执行分组处理,类似于主机处的虚拟交换机。例如,如果在物理NIC处接收到分组,则该虚拟桥可将该分组匹配到卸载的流。该物理NIC处的虚拟桥可为该流采取适当动作而不涉及主机。这样做消除了与在主机处进行所有规则/流分组处理相关联的低效。
[0033]现在参考图1,图1图解促进为联网设备虚拟化而将分组处理卸载到物理NIC的示例计算机体系结构100。如图所示,计算机体系结构100包括主机102、虚拟机108以及物理 NIC 110。
[0034]主机102提供虚拟化环境。例如,主机102可包括父分区(其执行主操作系统)和一个或多个子分区。每个子分区可被视为提供用于执行相应的虚拟机(诸如虚拟机108)的虚拟化硬件环境。在一些实施例中,主机102被用作向承租人提供虚拟机的云计算环境的一部分。
[0035]每个虚拟机(包括虚拟机108)执行一个或多个虚拟化应用,诸如操作系统、应用软件等。如图所示,虚拟机108包括网络栈108a (例如,TCP/IP栈)、虚拟NIC驱动器108b、以及虚拟功能驱动器108c。使用网络栈108a、虚拟NIC驱动器108b和虚拟功能驱动器108c,虚拟机108能够通过主机102在虚拟总线106上和/或通过物理NIC 110在数据路径114上发送和/或接收网络分组和其他信息。
[0036]物理NIC 110包括能够被虚拟化并且使用一个或多个外部接口(例如,所示物理接口 126)连接到其他计算机系统和/或网络的物理硬件。尽管只示出了一个物理NIC,然而计算机体系结构可包括任何数量的物理NIC。物理NIC 110包括虚拟桥112。虚拟桥112桥接物理NIC 110处的虚拟功能和物理功能并且执行分组检查和操纵。虚拟桥112与主机102处的虚拟交换机104—起工作以调节网络通信,如稍后更详细地描述的。如此,物理NIC110可将一个或多个虚拟功能展示给托管在主机102处的一个或多个虚拟机。此外,物理NIC 110可将一个或多个物理功能展示给主机102。
[0037]例如,图1示出物理NIC 110将物理功能122呈现给主机102。图1还示出,主机102包括相应的物理功能驱动器124,并且数据路径118将物理NIC 110处的物理功能122和主机102处的物理功能驱动器124相连接。如此,物理功能122和物理功能驱动器124可操作以在物理NIC 110和主机102之间交换网络分组。例如,物理功能驱动器124可与主机102处的虚拟交换机104通信,且物理功能122可与物理NIC 110处的虚拟桥112通?目。
[0038]图1还示出物理NIC 110将虚拟功能120呈现给虚拟机108,该虚拟机对应于虚拟功能驱动器108c。数据路径114将物理NIC 110处的虚拟功能120和虚拟机108处的虚拟功能驱动器108c相连接。物理NIC 110可将多于一个虚拟功能呈现给虚拟机108,和/或可呈现附加虚拟功能给附加虚拟机。一般而言,每个虚拟机可直接访问所分配的虚拟功能。例如,虚拟机可使用其虚拟功能驱动器来与物理NICllO处的所分配的虚拟功能传递网络分组而无需来自主机102的干预。这样做可减少处理器使用和网络等待时间。例如,虚拟机108和物理NIC 110可使用虚拟功能120和虚拟功能108c通过数据路径114直接通?目。
[0039]如先前指示的,在一些实施例中,物理NIC 110可包括遵循SR1V的PCIe硬件。在此类实施例中,虚拟功能120或物理功能122中的一者或多者可包括PCIe功能。然而,应当领会,本文描述的原理可应用于各种硬件设备,而不限于遵循SR1V的设备或PCIe设备。
[0040]在一些实施例中,托管在主机102处的一个或多个虚拟机可根据通用规则/流模型与规则(传入和/或传出)以及有可能与流(传入和/或传出)相关联。如图所示,主机102包括虚拟交换机104。虚拟交换机104被配置成根据通用规则/流模型检查和操纵被任何托管的虚拟机发送和接收的网络分组。例如,基于定义的规则和流,虚拟交换机104可允许分组、阻挡分组、重新路由分组、执行NAT、或执行适用于所使用的联网技术和设备的任何其他分组检查/操纵。
[0041]如此处所使用的,规则定义基于一个或多个规则条件和一个或多个规则动作的分组流策略(或其一部分)。在一些实施例中,规则因具体虚拟机而异。规则可由管理员定义,或可由更高层系统来定义。在一些实施例中,规则是静态或相对静态的。在一些实施例中,规则被存储在规则集中并且被配置用于线性匹配。
[0042]规则条件可使用元组来定义,元组包括字段和匹配的值。元组可包括适于所使用的网络协议和硬件设备的任何字段组合。元组可包括例如源和/或目的地网络地址(例如,当使用IP时的IP地址)、源和/或目的地端口、协议(例如,传输控制协议(TCP)、用户数据报协议(UDP))、源和/或目的地硬件地址(例如,以太网MAC地址)或其组合。例如,示例性规则条件可根据五元组来定义,诸如‘ 192.168.0.*,*,*,*,TCP,,其将匹配192.168.0.*网络上的具有任何源IP地址、任何源端口、任何目的地IP地址、任何目的地端口、以及使用TCP协议的任何网络分组。在一些实施例中,元组可不仅与流相关,而且与分组条件相关。例如,元组可包括与IP服务类型(ToS)相关的字段。本领域的技术人员将意识到,其他元组也是可能的,包括与尚未开发的联网技术有关的元组。
[0043]规则动作可包括任何适当的分组路由和/或操纵操作。例如,某些示例性规则动作可包括拒绝、允许、网络地址翻译(NAT)、映射、计量、解封装、封装等。本领域的技术人员将意识到,各种其他规则动作也是可能的,包括与尚未开发的联网技术有关的动作。
[0044]规则可被用来定义丰富的分组处理策略集合。例如,使用规则条件(元组)和规则动作,规则可指定来自特定IP地址的UDP分组被允许。在另一示例中,规则可指定被发送给具有指定端口的任何目的地的TCP分组经受NAT。将上面的示例性五元组示例与“允许”云力作相组合,示例性规则可被定义为‘allow 192.168.0.*,*,*,*,TCP,,意味着192.168.0.*网络上具有任何源IP地址、任何源端口、任何目的地IP地址、任何目的地端口并使用TCP协议的任何网络分组都应当被允许。
[0045]如本文使用的,流是基于规则创建的动态状态。例如,当网络分组与规则匹配时,可基于该规则创建流。如此,类似于规则,流也可按照条件(元组)和动作来定义。流存储关于网络连接的上下文,并可用于确定如何基于流或上下文中的先前分组来处理流或上下文中的当前分组。流可经受超时。在一些实施例中,流被存储在一个或多个流表中,诸如传入流表和/或传出流表。例如,当网络分组与示例性‘192.168.0.*,*,*,*,TCP,规则相匹配时,可在一个或多个适当流表中创建相应的流。在一些实施例中,基于流的元组(例如,使用一个或多个散列)来索引流。
[0046]沿着这些线,图1示出虚拟交换机包括用于虚拟机108的状态106,所述状态可包括各种类型的状态,诸如所示的传出规则集106a、传入规则集106b、传出流表106c以及传入流表106d。传出规则集106a定义适用于正由虚拟机108发送的分组的一个或多个规则,而传入规则集106b定义适用于正代表虚拟机108接收的分组的一个或多个规则。当分组与相应规则集中的规则相匹配时,可在传出流表106c和/或传入流表106d中创建流。应当领会,在一些情况下,状态106可包括所示状态的子集。
[0047]作为示例,当虚拟交换机104 (例如,从物理NIC 110或从托管的虚拟机)接收到与虚拟机108相关联的不与适当流表(106c、106d)中的流相匹配的网络分组时,虚拟交换机104可检查该适当规则集(即,用于正代表虚拟机108接收的分组的传入规则集或用于正由虚拟机108发送的分组的传出规则集106a)来寻找匹配规则。如果虚拟交换机104找到匹配规则,则虚拟交换机104可对该分组采取由该规则所定义的动作(例如,允许/阻挡/NAT 等)。
[0048]如果虚拟交换机104找到了匹配的规则,虚拟交换机104还可在传出流表106c和/或传入流表106d中创建流(或流对)以在处理该流/上下文中的后续分组时使用。例如,当分组匹配传出规则集106a中的规则时,虚拟交换机104可在传出流表106c和/或传入流表106d中创建流(如由连接传出规则集106a和流表106c、106d的箭头所示)。或者,当分组匹配传入规则集106b中的规则时,虚拟交换机104可在传出流表106c和/或传入流表106d中创建流(如由传入规则集106b和流表106c、106d之间的箭头所示)。应当领会,通过在相反方向的流表中创建流,虚拟交换机可实现有状态的防火墙。
[0049]虚拟交换机104还可将流状态卸载到物理NIC 110的虚拟桥112处的传出流高速缓存112a和/或传入流高速缓存112b,如由传出流表106c和传出流高速缓存112a之间的虚线箭头以及传入流表106d和传入流高速缓存112b之间的虚线箭头所示。例如,虚拟交换机104可通过数据路径118将请求在流高速缓存112a、112b处创建流的一个或多个请求发送到物理NIC 100。在一些情况下,将流状态卸载到物理NIC 110使得虚拟桥112能够与虚拟交换机104分开执行分组处理,由此减少主机102处的处理器使用。例如,在流被卸载到物理NIC 110之后,物理NIC 110可接收同一流的后续分组(例如,通过数据路径114从虚拟机108或者通过外部接口 126从另一计算机系统)。在此情况下,虚拟桥112可将该后续分组与该适当流高速缓存112a、112b中的流状态相匹配,并且执行该流自身中所定义的动作,而不首先将该分组发送给虚拟交换机104。
[0050]使用前述配置,虚拟机108可使用虚拟功能驱动器108c来通过数据路径114将传出网络分组发送给物理NIC 110的虚拟功能120。在接收到该网络分组后,虚拟桥112搜索传出流高速缓存112a以寻找匹配流。如果虚拟桥112在传出流高速缓存112a中找到匹配流,则虚拟桥112采取该流中定义的动作。例如,虚拟桥112可执行分组操纵操作和/或可将该网络分组转发到目的地虚拟机或通过外部接口 126转发到另一计算机系统。
[0051]否则,如果虚拟桥112没有在传出流高速缓存112a中找到匹配流,则两个替代动作可发生。在第一实施例中,虚拟桥112拒绝至虚拟机108的网络分组(例如,通过数据路径114)。虚拟机108随后通过虚拟总线116将该网络分组转发至虚拟交换机104。在第二实施例中,虚拟桥112使用物理功能122来将该网络分组通过数据路径118发送给物理功能驱动器124。物理功能驱动器124进而将该网络分组路由至虚拟交换机104。在任一实施例中,在虚拟交换机104接收到该网络分组后,虚拟交换机104尝试将该网络分组与传出流表106c中的流相匹配。如果该网络分组不与传出流表106c中的流相匹配,则虚拟交换机104尝试将该网络分组与传出规则集106a中的规则相匹配。如果在传出规则集106a中找到了匹配规则,则虚拟交换机104采取由该匹配规则所定义的适当动作(例如,允许/阻挡/NAT等)并且可在流表106c/106d之一或两者处创建一个或多个流,并且有可能在流高速缓存112a/112b之一或两者处创建一个一个或多个流。
[0052]同样使用前述配置,物理NIC 110可代表虚拟机108接收传入网络分组(例如,通过相应虚拟功能从另一虚拟机或通过外部接口 126从另一计算机系统)。在接收到该网络分组后,虚拟桥112搜索传入流高速缓存112b以寻找匹配流。如果虚拟桥112在传入流高速缓存112b中找到匹配流,则虚拟桥112采取该流中定义的适当动作(例如,允许/阻挡/NAT等)。例如,虚拟桥112可使用虚拟功能120和数据路径114来将该分组转发至虚拟机108处的虚拟功能驱动器108c。如果虚拟桥112没有在传入流高速缓存112b中找到匹配流,则虚拟桥112使用物理功能122和数据路径118或虚拟功能120和数据路径114将该分组转发至主机120处的虚拟交换机104。虚拟交换机104随后如上面在传出网络分组的上下文中所描述的那样处理该分组。
[0053]应当领会,传出流高速缓存112a和传入流高速缓存112a可仅代表完整流表(即,传出流表106c和传入流表106d)的一部分或一子集。例如,物理NIC 110可由于成本或其他设计约束而具有有限的存储器。如此,在流高速缓存112a/112b中仅存储流表106c/106d的一部分减少了将流表卸载到物理NIC 110所需的存储器的量。因为传出流高速缓存112a和传入流高速缓存112a可能不包括完整流状态数据,所以当在虚拟桥112处处理分组时高速缓存未中可能发生。当高速缓存未中发生时,虚拟桥112将该分组转发到虚拟交换机104以进行附加处理。应当领会,可采用其他类型的高速缓存替换/刷新策略。例如,流状态可在高速缓存未中发生之后被放置在物理NIC 110上,条目可在预定不活动量之后从物理NIC 110过期等。
[0054]此外,在一些实施例中,仅有某些类型的流被存储在物理NIC 110处。例如,虚拟桥112可仅支持执行有限类型的操作/动作。如此,仅与虚拟桥112支持的操作/动作有关的流可被存储在物理NIC 110处。在这些实施例中,任何其他的操作/动作在虚拟交换机104处被处置。
[0055]图2图解用于为在该计算机系统处执行的虚拟机处理网络分组的示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。
[0056]方法200包括主分区中的虚拟交换机维护用于虚拟机的一个或多个规则集的动作(动作202)。例如,主机102处的虚拟交换机104可维护用于虚拟机108的状态106。状态106可包括用于虚拟机108的传出规则集106a或用于虚拟机108的传入规则集106b之一或两者。状态106还可包括用于虚拟机108的一个或多个流表,诸如传出流表106c和传入流表106d。尽管未示出,虚拟交换机104可存储用于其他附加虚拟机的状态(例如,规则集、流表等)O
[0057]方法200还包括物理NIC维护用于该虚拟机的一个或多个流表的动作(动作204)。例如,物理NIC 110可存储用于虚拟机208的传出流高速缓存112a和/或传入流高速缓存112b。流高速缓存可存储主机102处的任何流表的全部或仅一部分。尽管未示出,然而物理NIC 110可存储用于其他附加虚拟机的流表。
[0058]方法200还包括物理NIC接收与该虚拟机相关联的网络分组的动作(动作206)。例如,物理NIC可通过外部接口 126接收来自另一计算机系统的网络分组,可通过虚拟功能120接收来自虚拟机108的网络分组,或可通过与主机220处的另一虚拟机相关联的另一虚拟功能接收来自该虚拟机的网络分组。
[0059]方法200还包括为该虚拟机处理网络分组的动作(动作208)。例如,虚拟桥112可处理从虚拟机108接收的网络分组或代表虚拟机108接收的网络分组(即,正被虚拟机108接收的网络分组)。
[0060]动作208包括该物理NIC将该网络分组与该一个或多个流表相比较的动作(动作210)。例如,如果该分组正由虚拟机108发送,则虚拟桥112可将该网络分组与传出流高速缓存112a相比较,或者如果正代表虚拟机108接收该分组,则虚拟桥112可将该网络分组与传入流高速缓存112b相比较。
[0061]动作208还包括,在该网络分组与该一个或多个流表中的流相匹配时,该物理NIC基于该匹配流对该网络分组执行动作的动作(动作212)。例如,如果该网络分组与传出流高速缓存112a或传入流高速缓存112b中的流相匹配,则虚拟桥112可执行在该流中指定的动作(例如,允许、拒绝、NAT等)。
[0062]动作208还包括,在该网络分组不与该一个或多个流表中的流相匹配时,该物理NIC将该网络分组传递至该主机以对照该一个或多个规则集进行处理的动作(动作214)。例如,如果网络分组不与传出流高速缓存112a或传入流高速缓存112b中的流相匹配,则虚拟桥112可将该分组发送至主机102处的虚拟交换机104以供附加处理。在一些实施例中,虚拟桥112使用物理功能122和数据路径118将该网络分组直接发送至主机102。在其他实施例中,虚拟桥112使用虚拟功能120和数据路径114将该网络分组间接发送至主机102 (即,通过虚拟机108并通过虚拟总线116)。
[0063]在被接收时,主机102可将该网络分组传递至虚拟交换机104。虚拟交换机104进而可将该网络分组与状态106(即,流表、规则集)相比较并采取适当动作。例如,如果该网络分组与主机102处的流相匹配,则虚拟交换机104可采取适当动作(例如,允许、拒绝、NAT等)并可能更新物理NIC 110处的流高速缓存。如果网络分组不与主机102处的流相匹配(或者如果不存在适当的流),则虚拟交换机104可将该网络分组与适当规则集相比较、采取任何匹配规则中所指定的适当动作、以及可能创建一个或多个新流(例如,在状态206和物理NIC 110处)。
[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之一或两者。
[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)从物理NIC 110接收网络分组。
[0070]动作308还包括该虚拟交换机将该网络分组与该一个或多个规则集中的规则相匹配的动作(动作312)。例如,如果该网络分组正被虚拟机108发送,则虚拟交换机104可将该分组对照传出规则集106a进行匹配。替代地,如果正代表虚拟机108接收该网络分组,则虚拟交换机104可将该分组对照传入规则集106b进行匹配。
[0071]动作308还包括,基于将该网络分组与该规则相匹配,该虚拟交换机在该一个或多个流表中创建流的动作(动作314)。例如,在将该网络分组对照传出规则集106a或传入规则集106b之一中的规则进行匹配之后,虚拟交换机可基于传出流表106c和/或传入流表106d中的规则创建一个或多个流。
[0072]动作308还包括,基于将该网络分组与该规则相匹配,该虚拟交换机将该流卸载到该物理NIC的动作(动作316)。例如,基于匹配规则,虚拟交换机104可将流卸载到传出流高速缓存112a和/或传入流高速缓存112b。
[0073]图4图解促进为联网设备虚拟化而将分组处理卸载到物理NIC并且相对于计算机体系结构100提供一项或多项潜在优化的替代计算机体系结构400。在一些实施例中,计算机体系结构400可与计算机体系结构100相组合。如图所示,计算机体系结构400包括类似于计算机体系结构100的组件,诸如主机402、虚拟机408以及物理NIC 410。然而,在计算机体系结构400中,虚拟机408处的虚拟NIC驱动器408b包括传出流列表408d。从而,虚拟NIC驱动器408b维护关于该传出流中的部分或全部的信息。如此,甚至在用虚拟功能驱动器408c将网络分组发送至虚拟功能420之前,虚拟NIC驱动器408b可基于传出流列表408d确定该网络分组是否与传出流相匹配。如果找到匹配,则该网络分组也可匹配传出流高速缓存412a中的流(如果该流已经被卸载到物理NIC 410的话)。当基于传出流列表408d该分组不与流相匹配时,虚拟NIC驱动器408b可将该分组直接转发至虚拟交换机404,而不首先将该分组发送至物理NIC 410。
[0074]在一些情形下,虚拟机408可以是不受信实体。因此,是否能够将该分组最终发送至目的地仍旧由物理NIC 410处的虚拟桥412和/或虚拟交换机404来确定。例如,即使在传出流列表408d中存在流且虚拟机408将网络分组发送至物理NIC 410,虚拟桥412仍旧对照传出流高速缓存412来验证该分组。
[0075]在一些实施例中,可能期望在传出流列表408d中仅存储传出流的一部分。例如,传出流中的一些信息可能是保密的(例如,将被用于NAT的IP地址)并且如前所述,虚拟机408可能是不受信实体。如此,传出流列表408d可包含不带动作信息的流列表(即,用于将分组匹配到流的条件信息)。传出流列表408d因此可仅提供足以使虚拟NIC驱动器408b做出将该分组传送至物理NIC 410还是主机402的决定的信息。
[0076]图5图解包括示例多层虚拟交换机的各层的示例计算机体系结构500。例如,虚拟交换机104包括针对每个虚拟机的规则和流的各层。所示出的每一层包括独立的规则集和流表的集合。如图所示,例如,这些层可包括层502和层504。网络分组基于该网络分组正被发送还是接收来在两个方向之一中横穿这些层。例如,当正代表虚拟机接收网络分组时,该分组可从底层向上地横穿这些层(即,从层504到层502,如箭头506所示)。相对地,当网络分组正被从虚拟机发送时,该分组可从顶层向下地横穿这些层(即,从层502到层504,如箭头508所示)。
[0077]在一些实施例中,每一层在将该分组转发至下一层之前将网络分组与其自己的流/规则集相匹配并且采取任何适当动作。例如,分组可在层504处被解封装并随后在层502处经受NAT操作。在一些实施例中,如果采取“阻挡”动作,则该分组停止横穿这些层并且被丢弃。尽管虚拟交换机104可包括多层流表,然而这些流在卸载到物理NIC 110时通常按扁平方式存储。
[0078]相应地,本发明提供了使得流能够被卸载到物理NIC的通用规则和流模型。将流卸载使得某些分组处理能够在物理NIC处执行,并消除了将某些分组发送至主机的虚拟交换机来进行处理的需要。如此,本发明能够减少与为虚拟机处理网络分组相关联的CPU使用和等待时间。
[0079]本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
【权利要求】
1.在包括一个或多个处理器和系统存储器的计算机系统处,所述计算机系统还包括物理网络接口卡(NIC)并执行主分区,一种用于为在所述计算机系统处执行的虚拟机处理网络分组的方法,所述方法包括: 所述主分区维护用于虚拟机的一个或多个规则集的动作; 所述物理NIC维护用于所述虚拟机的一个或多个流表的动作;以及 所述物理NIC接收与所述虚拟机相关联的网络分组的动作; 为所述虚拟机处理所述网络分组的动作,包括: 所述物理NIC将所述网络分组与所述一个或多个流表相比较的动作,以及在所述网络分组与所述一个或多个流表中的流相匹配时,所述物理NIC基于匹配流对所述网络分组执行动作的动作,或者 在所述网络分组不与所述一个或多个流表中的流相匹配时,所述物理NIC将所述网络分组传递至所述主分区以对照所述一个或多个规则集进行处理的动作。
2.如权利要求1所述的方法,其特征在于,还包括,当所述网络分组不与所述一个或多个流表中的流相匹配时,所述主分区将所述网络分组与所述一个或多个规则集相比较的动作。
3.如权利要求2所述的方法,其特征在于,在所述网络分组与所述一个或多个规则集中的规则相匹配时,所述主分区基于匹配规则对所述网络分组执行动作的动作。
4.如权利要求3所述的方法,其特征在于,在所述网络分组与所述一个或多个规则集中的规则相匹配时,所述主分区在所述一个或多个流表中在所述物理NIC处创建一个或多个流的动作。
5.如权利要求1所述的方法,其特征在于,还包括所述主分区维护用于所述虚拟机的一个或多个流表的动作,并且其中在所述物理NIC处维护的所述一个或多个流表包括在所述主分区处维护的所述一个或多个流表的子集。
6.一种计算机程序产品,所述计算机程序产品包括上面存储了计算机可执行指令的一个或多个计算机存储介质,所述计算机可执行指令在被计算机系统的一个或多个处理器执行时,致使所述计算机系统实现一种用于为在所述计算机系统处执行的虚拟机处理网络分组的方法,所述方法包括: 虚拟交换机维护用于虚拟机的一个或多个规则集的动作; 所述虚拟交换机维护用于所述虚拟机的一个或多个流表的动作; 所述虚拟交换机将所述一个或多个流表的至少一部分卸载至所述物理NIC的动作;以及 所述虚拟交换机为所述虚拟机处理网络分组的动作,包括: 所述虚拟交换机从所述虚拟机或所述物理NIC之一接收所述网络分组; 所述虚拟交换机将所述网络分组与所述一个或多个规则集中的规则相匹配;以及 基于将所述网络分组与所述规则相匹配: 所述虚拟交换机在所述一个或多个流表中创建流;以及 所述虚拟交换机将所述流卸载到所述物理NIC。
7.如权利要求6所述的计算机程序产品,其特征在于,维护用于虚拟机的一个或多个规则集的动作包括维护传入规则集和传出规则集的动作。
8.如权利要求6所述的计算机程序产品,其特征在于,所述虚拟交换机为所述虚拟机处理网络分组的动作还包括: 所述虚拟交换机基于所述规则对所述网络分组执行至少一个动作。
9.如权利要求8所述的计算机程序产品,其特征在于,所述至少一个动作包括分组检查或分组操纵操作中的一个或多个。
10.一种计算机系统,包括: 一个或多个处理器; 系统存储器; 物理网络接口卡(NIC);以及 上面存储有计算机可执行指令的一个或多个计算机存储介质,所述计算机可执行指令在被所述一个或多个处理器执行时执行虚拟交换机,所述虚拟交换机被配置成: 在所述计算机系统的主分区内执行; 维护用于虚拟机的传入规则集和传出规则集; 维护用于该虚拟机的传入流表和传出流表; 将所述传入流表或所述传出流表中的一个或多个的至少一部分卸载到所述物理NIC的虚拟桥;以及 为所述虚拟机处理网络分组,包括: 从所述虚拟机或所述物理NIC中的一者或多者接收所述网络分组; 将所述网络分组与所述传入规则集或所述传出规则集之一中的规则相匹配;以及 基于将所述网络分组与所述规则相匹配: 在所述虚拟交换机处的所述传入流表或所述传出流表中的一者或多者中创建流;以及 将所述流卸载到所述物理NIC的所述虚拟桥处的所述传入流表或所述传出流表中的一者或多者。
【文档编号】G06F13/14GK104205080SQ201380015731
【公开日】2014年12月10日 申请日期:2013年3月6日 优先权日:2012年3月21日
【发明者】Y·左, D·M·弗尔斯通, A·G·格林伯格, H·乔, Y·邓, B·W·塔特尔, P·加格 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1