CN110419200B - 虚拟过滤平台中的分组处理器 - Google Patents
虚拟过滤平台中的分组处理器 Download PDFInfo
- Publication number
- CN110419200B CN110419200B CN201880017017.4A CN201880017017A CN110419200B CN 110419200 B CN110419200 B CN 110419200B CN 201880017017 A CN201880017017 A CN 201880017017A CN 110419200 B CN110419200 B CN 110419200B
- Authority
- CN
- China
- Prior art keywords
- packet
- flow
- header fields
- action
- rule
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/42—Centralised routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/325—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文中公开了在分布式计算系统中处理分组的计算系统、设备和相关联的操作方法。在一个实施例中,一种方法包括接收具有带有多个报头字段的报头和有效载荷的分组,并且解析所接收的分组的多个报头字段中的一个或多个报头字段。该方法还包括基于多个报头字段中的所解析的一个或多个报头字段,来将所接收的分组与来自多个层对象中的每个层对象的规则对象匹配,该多个层对象分别包含多个规则对象。规则对象具有与分组的一个或多个所解析的报头字段匹配的一个或多个条件以及对应的流动作。该方法还包括通过组合分别与来自多个层对象中的一个层对象的匹配的规则对象中的一个匹配的规则对象对应的流动作来生成复合动作,以及将所生成的复合动作应用于分组。
Description
背景技术
分布式计算系统通常包括路由器、交换机、网桥和互连大量服务器、网络存储设备和其他类型的计算设备的其他物理网络设备。各个服务器可以托管一个或多个虚拟机(“VM”)或其他类型的虚拟化组件。虚拟机可以促进合适应用的执行,以向用户提供期望的云服务或其他合适的计算服务。
发明内容
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也并不旨在用于限制所要求保护的主题的范围。
公共云服务(诸如Amazon Web Microsoft 和GoogleCloud )的兴起已经创建了大规模的数据中心计算。提供公共云服务的数据中心经常涉及数百万的服务器数量。云服务提供商不仅需要向客户提供规模、高密度和高性能的虚拟机,还需要丰富的网络语义,诸如具有客户提供的地址空间的私有虚拟网络、可扩展的负载平衡器、安全组和访问控制列表(“ACL”)、虚拟路由表、带宽计量、服务质量(“QoS”)等。
传统的核心路由器和硬件不能经济地大规模地实现以提供大规模数据中心所需要的网络性能水平。相反,一种方法是在VM主机上以及在将VM连接到计算机网络的虚拟交换机中用软件实现网络策略。由于该实现将集中控制平面与主机上的数据平面分开,因此这种技术可以被认为是软件定义网络(“SDN”)、特别是基于主机的SDN的示例。然而,基于主机的SDN的实现通常假定单个网络控制器,该单个网络控制器全面负责编程虚拟交换机。然而,发明人已经认识到,独立团队经常为不同的应用开发和构建新的网络控制器或代理以提供对应的云计算服务。因此,全面负责编程虚拟交换机的单个网络控制器可能创建复杂的依赖性,对可扩展性产生负面影响,并且显著降低虚拟交换机的可维护性。
所公开的技术的若干实施例涉及用于虚拟交换机的可编程虚拟过滤平台。虚拟过滤平台实现编程模型,该编程模型不仅允许不同的网络控制器(例如,SDN控制器)独立地创建和定义自己的策略和动作,而且还实施所定义的策略与动作之间的分层和边界。例如,具有到其他表的任意GOTO的规则可能不被允许。因此,新的网络控制器可以开发以向虚拟交换机添加功能,而不会影响现有网络控制器创建的策略,反之亦然。
在某些实施例中,编程模型可以包括被组织为层级中的多个网络过滤器对象的匹配动作表(“MAT”)形式的策略和动作。网络控制器可以根据目标SDN策略和动作独立地创建、编程和/或更新网络过滤器对象。按照从顶部到底部层级顺序,这样的网络过滤器对象的示例可以包括端口、层、组和/或规则对象。当处理传入和传出分组时,虚拟交换机可以利用前述网络过滤器对象中的每个,如下面更详细地描述的。在其他示例中,网络过滤器对象可以被组织为单个序列、多个序列或者以其他合适的方式组织。
在某些实现中,端口对象可以是网络过滤策略的基本单元。每个端口对象可以对应于例如由虚拟网络中的IP地址和TCP端口号指定的虚拟交换机中的虚拟端口。每个端口对象可以包括多个MAT,基于这些MAT,虚拟交换机可以充当对应的虚拟端口的入站或出站路径上的一个或多个网络过滤器。通常,网络控制器可以代表虚拟机或虚拟网络接口卡(“VNIC”)对网络策略进行编程。因此,端口对象的分离可以允许网络控制器独立地管理各种虚拟机上的SDN策略。在其他实现中,端口对象可以替换为虚拟网络对象、租户站点对象或其他合适类型的对象。
包括在端口对象中的策略可以进一步划分为以顺序方式布置的多个层对象。每个层对象可以包括一个或多个MAT,网络控制器可以使用这些MAT来指定网络过滤策略。不同的网络控制器可以单独创建、更新或以其他方式管理每个层对象,或者一个网络控制器可以创建多个层对象。每个图层对象可以包含带有入站和出站规则的MAT(被包含在规则对象中),这些规则反映了可以过滤和修改传入和传出分组的对应的策略。在逻辑上,在先前的层对象中执行一个或多个动作之后,分组逐个遍历每个层对象以基于各个分组的状态匹配每个层中的规则。网络控制器可以相对于彼此指定虚拟端口或端口对象的多个层对象的序列,并且在操作期间动态地创建、修改和/或移除层对象。
规则对象可以包括MAT的条目。每个条目(或“规则”)可以定义匹配分组的条件和对应的动作。规则对象可以允许网络控制器表达,同时最小化数据平面中的固定策略。在某些实施例中,规则可以包括与动作耦合的条件列表。条件列表可以包括一个或多个条件,这些条件单独地包括规则类型(例如,源IP地址)、和一个或多个匹配值的列表(例如,IP地址、IP地址范围、IP地址的前缀等)。因此,匹配值可以是单个、范围或前缀。为了使条件匹配分组,任何匹配值都可以匹配,如在OR子句中。为了使规则对象匹配,规则中的所有条件必须匹配,如在AND子句中。该动作可以包含动作类型(例如,分组封装)和特定于该动作类型的数据结构,该数据结构具有用于执行动作的对应的数据(例如,封装报头值)。例如,封装规则可以包括分组封装动作,该动作在封装与规则对象的条件列表匹配的分组时使用源/目的地IP地址的输入数据、源/目的地媒体访问控制(“MAC”)地址、封装格式和/或密钥。
在一些实现中,层对象中的规则对象可以在逻辑上组织成由组对象表示的一个或多个组,以用于管理目的,诸如事务更新。例如,与虚拟网络操作、网络名称转换或访问控制列表操作相关的规则对象可以被分组为与MAT对应的单独的组对象。在对分组进行分类时,可以迭代层对象中的所有组对象以定位例如与该分组匹配的每个组中的单个规则(例如,最高优先级规则)。在某些实施例中,可以选择由最后一组匹配的规则对象。在其他实施例中,规则对象也可以被标记为“终止”以指示如果分组与规则对象匹配,则将立即应用规则对象的动作而不遍历另外的组。组对象也可以具有与规则对象类似的条件。例如,如果分组与与组对象相关联的条件不匹配,则在遍历所有组对象时可以跳过组对象和其中包含的相关规则对象。在其他实施例中,可以省略组对象,并且层对象可以包括不同类型的多个规则。
在操作中,当在虚拟交换机处接收到分组时,虚拟交换机可以迭代每层中的所有组对象中的所有规则以匹配分组。然后,在迭代下一层对象中的所有组对象中的所有规则之前,虚拟交换机可以对分组执行与匹配规则相关联的动作。在一个示例中,虚拟交换机可以依次迭代包含与以下各项相关的策略的层对象:虚拟网络操作(例如,在虚拟网络地址与物理网络地址之间进行转换)、网络地址转换(例如,虚拟IP地址与直接IP地址之间的转换)、访问控制列表操作(例如,确定是否允许、拒绝或审计访问权限)、以及计量操作(例如,分组缓冲和QoS控制)。在其他示例中,虚拟交换机可以基于优先级或其他合适的标准来过滤所接收的分组。
通过实施具有关联的组和/或规则对象的层对象的分层,虚拟交换机可以处理由独立网络控制器开发和创建的所有网络过滤策略。例如,第一网络控制器可以开发和创建与虚拟网络操作的操作相关的第一层对象,而第二网络控制器可以开发和创建与网络地址转换相关的第二层对象。通过将这些过滤策略分离为独立的层对象,可以独立地管理与每个层对象相关的策略,而不会影响其他层对象的操作。例如,第一网络控制器可以利用与虚拟网络操作的操作相关的新策略来更新第一层对象,而不影响第二层对象的操作,因为以累积方式执行任何传入和传出分组的过滤。这样,所公开的技术的若干实施例可以在允许独立开发网络过滤策略而不影响虚拟交换机对其他策略的实施方面具有很大的灵活性。
按顺序处理根据层的分组可以涉及解析分组,根据所选择的规则修改分组,以及将修改后的分组转发到下一层以重复类似操作。这种重复的解析和修改可能降低分组处理性能,因为分组依次遍历每个层。因此,随着层、组和规则数目的增加,NIC或虚拟交换机处的分组处理可能成为虚拟机性能的瓶颈,尤其是当各个主机继续托管越来越多的虚拟机时。
所公开的技术的若干实施例可以经由流动作高速缓存提供高分组处理速率,即使对于大量的层、组或规则也是如此。流通常是指经由例如由IP地址和TCP端口号标识的单个网络连接接收/传输的分组流。在某些实现中,可以基于分组的元数据(例如,某些报头字段的值)来编译跨层或MAT的流动作,以导出流的复合动作(例如,由IP地址和TCP端口号标识),而无需按顺序应用来自各个层的动作。例如,复合动作可以包括网络名称转换和封装/解封装,这些仅在导出复合动作之后应用于分组的有效载荷。复合动作也可以被高速缓存,以对应于由统一流标识符(例如,IP地址和TCP端口号的散列值)标识的流。这样,相同流的后续分组可以与预编译的复合动作匹配,而不必再次遍历层。因此,可以为大量规则和MAT提供快速分组处理。
所公开的技术的若干实施例还涉及一种用于实现将规则或流策略卸载到可编程网络接口卡(“NIC”)以支持单根输入/输出虚拟化而不假定复杂规则处理的有效机制。因此,可编程NIC可以在应用相关策略时直接处理分组和将其转发到虚拟机。然而,随着网络控制器创建更多的MAT和规则,直接卸载大流量表可能需要非常昂贵的硬件资源(例如,大的三元内容可寻址存储器和串联匹配)。因此,代替卸载流表,所公开的技术可以跨层或MAT预编译流动作,并且将预编译的流动作提供给可编程NIC以匹配和应用对应的复合动作。
附图说明
图1是示出根据所公开的技术的实施例的实现虚拟过滤平台的分布式计算系统的示意图。
图2是示出根据所公开的技术的实施例的图1的分布式计算系统的某些硬件/软件组件的示意图。
图3是示出根据所公开的技术的实施例的在分布式计算系统中的主机处实现的虚拟交换机的示意图。
图4是示出根据所公开的技术的实施例的在分布式计算系统中的主机处实现的虚拟交换机中的组织和数据流的示意图。
图5是示出根据所公开的技术的实施例的适合于虚拟交换机的规则对象的示例条件和对应的动作的示意图。
图6是示出根据所公开的技术的实施例的在分布式计算系统中的主机处实现的虚拟交换机中的SDN部署示例的示意图。
图7是示出根据所公开的技术的实施例的适合于在分布式计算系统中的主机处实现的虚拟交换机的示例流表的示意图。
图8A至图8C是示出根据所公开的技术的实施例的在分布式计算系统中的主机处实现的虚拟交换机中的传入和传出数据处理的示意图。
图9A至图9B示出了根据所公开的技术的实施例的分组报头的示例数据模式。
图10A至图10B是示出根据所公开的技术的实施例的用于在虚拟交换机中处理传入/传出分组的过程的流程图。
图11是适合于图1中的分布式计算系统的某些组件的计算设备。
具体实施方式
下面描述用于在数据中心或其他合适的分布式计算系统中的主机处实现的虚拟交换机处过滤分组的系统、设备、组件、模块、例程、数据结构和过程的某些实施例。在以下描述中,包括组件的具体细节以提供对所公开的技术的某些实施例的透彻理解。相关领域的技术人员还应当理解,该技术可以具有其他实施例。该技术也可以在没有下面参考图1至图11描述的实施例的若干细节的情况下实现。
如本文中使用的,术语“分布式计算系统”通常是指具有多个网络节点的互连的计算机网络,这些多个网络节点将多个服务器或主机彼此连接或者连接到外部网络(例如,因特网)。术语“网络节点”通常是指物理网络设备。示例网络节点包括路由器、交换机、集线器、网桥、负载平衡器、安全网关或防火墙。“主机”通常是指被配置为实现例如一个或多个虚拟机或其他合适的虚拟化组件的物理计算设备。例如,主机可以包括具有管理程序的服务器,该管理程序被配置为支持一个或多个虚拟机、虚拟交换机或其他合适类型的虚拟组件。
计算机网络可以在概念上划分为在底层网络上实现的覆盖网络。“覆盖网络”通常是指在底层网络之上实现并且在其上操作的抽象网络。底层网络可以包括彼此互连的多个物理网络节点。覆盖网络可以包括一个或多个虚拟网络。“虚拟网络”通常是指覆盖网络中的底层网络的一部分的抽象。虚拟网络可以包括被称为“租户站点”的一个或多个虚拟端点,这些虚拟端点由用户或“租户”单独使用以访问虚拟网络和相关联的计算、存储或其他合适资源。租户站点可以托管一个或多个租户端点(“TEP”),例如,虚拟机。虚拟网络可以在不同主机上互连多个TEP。覆盖网络中的虚拟网络节点可以通过单独对应于沿着底层网络中的一个或多个物理网络节点的一个或多个网络路由的虚拟链路彼此连接。
如本文中还使用的,“虚拟交换机”通常是指通过在计算设备上执行用于促进与托管在计算设备上的虚拟机的网络通信的软件程序而提供的逻辑交换结构。虚拟交换机可以通过在将分组传递到合适的目的地之前检查分组来智能地指导计算机网络上的通信。在某些实现中,虚拟交换机的软件程序可以嵌入或以其他方式包括在虚拟化组件中,诸如由华盛顿州雷蒙德市的微软公司提供的Hyper-V本机管理程序。在其他实现中,虚拟交换机也可以作为固件组件包括在计算设备的硬件中。
如本文中进一步使用的,匹配动作表(“MAT”)通常是指具有表格式的多个条目的数据结构。每个条目可以包括一个或多个条件和对应的动作。条件可以由网络控制器(例如,SDN控制器)配置以用于匹配分组的一组报头字段。当条件与分组的该组报头字段匹配时,还可以由网络控制器配置该动作以对分组应用操作。示例条件和操作如图5所示。
如本文中进一步使用的,“流”通常是指经由例如由IP地址和TCP端口号标识的两个端点(例如,在虚拟机中执行的服务器、虚拟机或应用)之间的单个网络连接接收/传输的分组流。“流动作”通常是指修改流的分组的至少一部分以便将分组转发到预期目的地的一个或多个动作。下面参考表3描述示例流动作。
很多现代可扩展云网络架构依赖于主机网络来实现VM网络策略。这样的策略的示例可以包括用于虚拟网络的隧穿(tunneling)、用于负载平衡的网络地址转换(“NAT”)、有状态访问控制列表(“ACL”)、服务质量(“QoS”)、以及其他合适类型的过程。所公开的技术的若干实施例涉及可以提供这样的策略以为公共云或其他合适的分布式计算系统供电的可编程虚拟交换机平台。该平台的实施例可以支持多个独立的网络控制器来开发和创策略、建基于连接而不是分组的策略、有效的高速缓存和性能分类、以及有效地将流策略卸载到可编程网络接口卡(“NIC”)。平台的实施例可以部署在运行基础设施即服务(“IaaS”)、平台即服务(“PaaS”)或其他合适类型的工作负载的主机上。
在以下整个说明书中,使用两个示例来说明可编程虚拟交换机平台如何支持策略和动作。第一示例是VL2网络,VL2网络可用于使用主机之间的无状态隧穿在共享硬件上创建虚拟网络(“VNET”)。第二示例是可扩展的第4层负载均衡器,可扩展的第4层负载均衡器通过在端点主机上的虚拟交换机中运行负载均衡NAT来进行扩展,从而使网络内负载均衡器保持无状态和可扩展。尽管以下描述涉及应用于分布式计算系统的虚拟交换机和相关应用程序编程接口(“API”)的设计,但是在其他实施例中,所公开的技术还可以具有应用于其他合适类型的计算系统的其他合适的设计,诸如不支持虚拟机的那些计算系统。
图1是示出根据所公开的技术的实施例的实现虚拟过滤平台的分布式计算系统100的示意图。如图1所示,分布式计算系统100可以包括互连多个主机106的底层网络108、与对应的用户101相关联的多个客户端设备102、以及平台控制器125,这些组件可操作地彼此耦合。尽管图1中示出了分布式计算系统100的特定组件,但是在其他实施例中,分布式计算系统100还可以包括附加的和/或不同的组件或布置。例如,在某些实施例中,分布式计算系统100还可以包括网络存储设备、附加主机和/或其他合适的组件(未示出)。
如图1所示,底层网络108可以包括一个或多个网络节点112,这些网络节点112互连多个主机106和用户101。在某些实施例中,主机106可以被组织成机架、动作区域、组、集或其他合适的划分。例如,在所示实施例中,主机106被分组为分别标识为第一、第二和第三主机组107a-107c的三个主机组。在所示实施例中,主机组107a-107c中的每个分别可操作地耦合到对应的网络节点112a-112c,这些网络节点通常被称为“架顶”或“TOR”网络节点。然后,TOR网络节点112a-112c可以可操作地耦合到附加网络节点112以形成分层、平面、网格或其他合适类型的拓扑的计算机网络。底层网络可以允许主机106、平台控制器125和用户101之间的通信。在其他实施例中,多个主机集107a-107c可以共享单个网络节点112,或者可以具有其他合适的布置。
主机106可以单独地配置为向用户101提供计算、存储和/或其他合适的云服务或其他合适类型的计算服务。例如,如下面参考图2更详细地描述的,根据用户101的请求,主机106中的一个主机可以发起和保持一个或多个虚拟机144(如图2所示)。用户101然后可以利用发起的虚拟机144来执行计算、通信和/或其他合适的任务。在某些实施例中,主机106中的一个主机可以为多个用户101提供虚拟机144。例如,主机106a可以托管分别对应于用户101a-101c中的每个的三个虚拟机144。在其他实施例中,多个主机106可以托管用于用户101a-101c的虚拟机144。
客户端设备102每个可以包括计算设备,该计算设备促进对应的用户101访问由主机106经由底层网络108提供的云服务。例如,在所示实施例中,客户端设备102单独地包括台式计算机。在其他实施例中,客户端设备102还可以包括膝上型计算机、平板计算机、智能电话或其他合适的计算设备。尽管出于说明目的在图1中示出了三个用户101,但是在其他实施例中,分布式计算系统100可以促进任何合适数目的用户101访问由主机106提供的云服务或其他合适类型的计算服务。
平台控制器125可以被配置为管理分布式计算系统100的各种组件的操作。例如,平台控制器125可以被配置为在分布式计算系统100中分配虚拟机144(或其他合适的资源),监测所分配的虚拟机144的操作,或者一旦操作完成,就终止任何分配的虚拟机144。在所示的实现中,平台控制器125被示出为分布式计算系统100的独立硬件/软件组件。在其他实施例中,平台控制器125也可以是数据中心控制器、结构控制器、或其他合适类型的控制器、或者其在一个或多个主机106上实现为计算服务的组件。
图2是示出根据所公开的技术的实施例的分布式计算系统100的某些硬件/软件组件的示意图。特别地,图2示出了可以在图1中的底层网络108上实现的覆盖网络108'。尽管图2中示出了覆盖网络108'的特定配置,但是在其他实施例中,覆盖网络108'也可以按照其他合适的方式而被配置。在图2中,为清楚起见,仅示出了图1的底层网络108的某些组件。
在图2和本文中的其他图中,各个软件组件、对象、类、模块和例程可以是用C、C++、C#、Java和/或其他合适的编程语言被编写为源代码的计算机程序、过程或进程。组件可以包括但不限于一个或多个模块、对象、类、例程、属性、进程、线程、可执行文件、库或其他组件。组件可以是源或二进制形式。组件可以包括编译之前的源代码的各方面(例如,类、属性、过程、例程)、编译的二进制单元(例如,库、可执行文件)、或在运行时实例化和使用的工件(例如,对象、进程、线程)。
系统内的组件可以在系统内采用不同的形式。作为一个示例,系统包括第一组件、第二组件和第三组件,可以但不限于包括其中第一组件是以源代码表示的属性、第二组件是二进制编译库并且第三组件是在运行时创建的线程的系统。计算机程序、过程或进程可以被编译成对象、中间或机器代码并且被呈现以用于由个人计算机、网络服务器、膝上型计算机、智能电话和/或其他合适的计算设备的一个或多个处理器执行。
同样,组件可以包括硬件电路。本领域普通技术人员将认识到,硬件可以被认为是化石软件,并且软件可以被认为是液化硬件。仅作为一个示例,组件中的软件指令可以被刻录到可编程逻辑阵列电路,或者可以被设计为具有适当集成电路的硬件电路。同样,硬件可以用软件来模拟。源、中间和/或目标代码和相关数据的各种实现可以存储在计算机存储器中,该计算机存储器包括只读存储器、随机存取存储器、磁盘存储介质、光存储介质、闪存设备和/或其他合适的计算机可读存储介质,不包括传播信号。
如图2所示,第一主机106a和第二主机106b均可以包括可操作地彼此耦合的处理器132、存储器134和网络接口卡136。处理器132可以包括微处理器、现场可编程门阵列和/或其他合适的逻辑器件。存储器134可以包括易失性和/或非易失性介质(例如,ROM;RAM、磁盘存储介质;光学存储介质;闪存设备和/或其他合适的存储介质)和/或其他类型的计算机可读存储介质,这些介质被配置为存储从处理器132接收的数据以及用于处理器132的指令(例如,用于执行下面参考图4A和4B讨论的方法的指令)。网络接口卡136可以包括网络适配器、LAN适配器、物理网络接口、或将主机106连接到底层网络108(图1)的其他合适类型的硬件组件。在其他实施例中,主机106还可以包括被配置为接受来自操作者和/或自动软件控制器(未示出)的输入并且向其提供输出的输入/输出设备、或者其他合适类型的硬件组件。
第一主机106a和第二主机106b可以单独地包含存储器134中的由处理器132可执行以使得各个处理器132提供管理程序140(分别标识为第一管理程序140a和第二管理程序140b)和虚拟机交换机141(分别标识为第一虚拟交换机141a和第二虚拟交换机141b)的指令。即使管理程序140和虚拟交换机141被示出为单独的组件,但是在其他实施例中,虚拟交换机141可以是管理程序140的一部分(例如,在管理程序140的可扩展交换机之上操作)、在主机106上执行的操作系统(未示出)、或主机106的固件组件。
管理程序140可以被单独配置为生成、监测、终止和/或以其他方式管理被组织到租户站点142中的一个或多个虚拟机144。例如,如图2所示,第一主机106a可以提供分别管理第一租户站点142a和第二租户站点142b的第一管理程序140a。第二主机106b可以提供分别管理第一租户站点142a'和第二租户站点142b'的第二管理程序140b。管理程序140在图2中单独示出为软件组件。然而,在其他实施例中,管理程序140还可以是固件和/或硬件组件。租户站点142每个可以包括用于特定租户(未示出)的多个虚拟机144。例如,第一主机106a和第二主机106b都可以托管第一租户101a(图1)的租户站点142a和142a'。第一主机106a和第二主机106b都可以托管第二租户101b(图1)的租户站点142b和142b'。每个虚拟机144可以执行对应的操作系统、中间件和/或应用。
还如图2所示,分布式计算系统100可以包括覆盖网络108',覆盖网络108'具有跨多个主机106互连租户站点142a和142b的一个或多个虚拟网络146。例如,第一虚拟网络142a在第一主机106a和第二主机106b处互连第一租户站点142a和142a'。第二虚拟网络146b在第一主机106a和第二主机106b处互连第二租户站点142b和142b'。尽管单个虚拟网络146被示出为对应于一个租户站点142,但是在其他实施例中,多个虚拟网络146(未示出)可以被配置为对应于单个租户站点146。
虚拟机144可以被配置为执行一个或多个应用147以向用户101(图1)提供合适的云服务或其他合适类型的计算服务。即使虚拟机144位于不同主机106上,虚拟网络146上的虚拟机144也还可以经由底层网络108(图1)彼此通信。每个虚拟网络146的通信可以与其他虚拟网络146隔离。在某些实施例中,可以允许通信通过安全网关或以其他方式以受控方式从一个虚拟网络146跨越到另一虚拟网络。虚拟网络地址可以对应于特定虚拟网络146中的虚拟机144中的一个虚拟机。因此,不同的虚拟网络146可以使用相同的一个或多个虚拟网络地址。示例虚拟网络地址可以包括IP地址、MAC地址和/或其他合适的地址。
为了促进虚拟机144之间的通信,虚拟交换机141可以被配置为切换或过滤指向不同虚拟机144的分组(未示出)。如下面参考图3至图9A更详细地描述的,虚拟交换机141可以用虚拟过滤平台实现,其中根据所公开的技术的实施例,可以在端口、层、组和规则对象的层级中组织各种网络过滤器对象。通过实施各种网络过滤器对象的分层,不同的网络控制器116(例如,图3所示的SDN控制器)可以用各种策略独立地编程和配置各种网络过滤器对象,而不影响虚拟交换机141对其他策略的实施。
图3是示出根据所公开的技术的实施例的在图1和2的分布式计算系统中的主机106处实现的虚拟交换机141的示意图。如图3所示,虚拟交换机141可以包括一个或多个虚拟端口149(分别标识为第一虚拟端口149'和第二虚拟端口149”)。虚拟端口149每个可以包括数据对象,该数据对象表示支持单根I/O虚拟化的网络接口卡136(图2)上的内部端口。每个虚拟端口149可以对应于虚拟机144中的一个虚拟机。例如,如图3所示,第一虚拟端口149'对应于第一虚拟机144',并且第二虚拟端口149”对应于第二虚拟机144”。例如,虚拟端口149可以连接到虚拟NIC(VNIC)。在其他实施例中,单个虚拟端口149可以通过实现例如虚拟队列(未示出)或其他合适的数据通道而对应于多个虚拟机144。
对于每个虚拟端口149,虚拟交换机141可以被配置为基于一个或多个网络过滤器对象来过滤从VNIC到虚拟交换机141以及从虚拟交换机141到VNIC的传入或传出分组。从具有附接到虚拟端口149的VNIC的虚拟机144的角度来看,到虚拟交换机141的入口业务被认为是来自虚拟机144的“出站”业务,并且来自虚拟交换机141的出口业务被认为是到虚拟机144的“入站”业务。
如本文中使用的,“网络过滤器对象”通常是指软件对象或一组软件对象,这些软件对象单独地包含当分组满足一个或多个条件时指示虚拟交换机141执行一个或多个动作的一个或多个条件、动作或其他合适的信息。在一个示例中,可以提取分组的某些报头字段并且将其与一个或多个条件进行比较。如果分组的报头字段包含与条件匹配的值,则虚拟交换机141可以对分组执行对应的动作。另一方面,如果分组的报头字段不包含与条件匹配的值,则虚拟交换机141可以跳过对分组执行对应的动作。因此,每个网络过滤器对象可以包括一个或多个MAT,基于这些MAT,虚拟交换机141可以充当对应的虚拟端口149的入站或出站路径上的一个或多个虚拟网络过滤器。
在图3所示的实施例中,每个虚拟端口149可以对应于端口对象143,端口对象143又包括多个层对象145(示出为“层1”、“层2”、……、“层N”)。如下面参考图4更详细地讨论的,每个层对象(或“层”)145还可以包括多个组对象(或“组”)146,组对象146又可以包括多个规则对象(或“规则”)148。因此,各种网络过滤器对象的示例层级可以包括:
·端口,作为策略过滤的基本单元;
·层,保持MAT策略的有状态流表;
·组、实体,用于管理和控制层中相关规则集;以及
·规则,将动作表条目与一个或多个条件和动作匹配。
在某些实现中,前述网络过滤器对象可以用优先级值编程,网络过滤器对象可以按照这个顺序通过规则匹配来处理。在其他实现中,网络过滤器对象可以具有相同的优先级并且可以顺序地、随机地或以其他合适的方式处理。
层145可以包括网络控制器116用来指定期望策略的基本MAT。层145可以由不同的网络控制器116单独创建和管理,或者一个网络控制器116可以创建若干层145。每个层145可以包含反映可以过滤和修改分组的对应的策略的入站和出站规则148。在逻辑上,分组一个接一个地经过每个层145,在之前层145中执行动作之后基于分组的状态匹配每个层中的规则148。网络控制器116可以指定层145相对于其他层145的顺序,并且在操作期间动态地创建和移除层145。在其他实施例中,多个虚拟端口149可以对应于单个端口对象143。在另外的实施例中,多个网络过滤器对象可以具有其他合适的数据结构和/或组织。
通过利用基于前述网络过滤器对象的层级的编程模型,单独的网络控制器161(分别示出为第一网络控制器116、第二网络控制器116'和第三网络控制器116”)可以创建和编程以指定期望的SDN策略,如箭头118所示。例如,第一网络控制器116可以被配置为创建和管理用于虚拟网络中的虚拟机144的策略以将业务封装和解封装到隧穿中。第二网络控制器116'可以被配置为创建和管理用于网络名称转换的策略。第三网络控制器116”可以被配置为创建和管理用于访问控制列表、计量或其他合适的网络操作的策略。
在操作中,虚拟交换机141可以基于各种网络过滤器对象过滤传入或传出分组,并且从而对分组执行虚拟网络操作、网络名称转换或其他合适的操作。与在出站业务期间相比,在入站期间,分组可以在相反方向上穿过层145。当处理分组114时,虚拟交换机141可以通过在层145内的规则148的组146中搜索匹配规则148来在每个层145中搜索单个规则148以匹配。然后,对分组114执行匹配的规则148的动作。在某些实施例中,只有一个规则148可以匹配层145中的分组114,其中较低优先级的其他匹配规则148被忽略。在其他实施例中,多于一个规则148可以将层145中的分组114与以累积或其他合适的方式执行的对应的动作匹配。
当网络控制器116在层145的任一侧实现相反的策略时,前述遍历技术给分组提供“分层”效果。例如,NAT网络控制器116可以创建实现网络地址转换的NAT层145。在入站方向上,NAT层145可以对目的地为虚拟IP(“VIP”)的分组执行从VIP到直接IP(“DIP”)的网络名称转换。在出站方向上,NAT层145可以对分组执行从DIP到VIP的网络名称转换。NAT层145因此实现地址空间边界。NAT层145上方的所有分组都在“DIP空间”中,并且NAT层145下方的所有分组都在“VIP空间”中。其他网络控制器116可以在该NAT层145上方或下方创建其他合适的层145,并且可以创建规则148以分别匹配VIP或DIP,而不与NAT网络控制器116协调或参与。一个示例操作序列在下面参考图6A至图6B更详细地说明。
图4是示出根据所公开的技术的实施例的在分布式计算系统100中的主机106处实现的虚拟交换机141中的组织和数据流的示意图。如图4所示,层145可以按顺序布置为“层1”、“层2”、……、“层N”。每层145可以包括多个组146,每个组146又可以包括多个规则148,示出为“规则1”、“规则2”……和“规则X”。还如图4所示,在匹配期间,可以按顺序评估每个层145,如箭头120所示。这样,“层1”可以在“层2”之前进行评估,依此类推。
在每个层145内,可以将规则148组织成逻辑组146以用于管理目的。组146可以是可以事务更新的策略单元。当对分组114进行分类时,虚拟交换机141可以遍历层145中的组146,以找到与分组144匹配的每个组146中的最高优先级规则148,如箭头122所示。在一个实施例中,虚拟交换机141可以选择由层145中的最后的组146匹配的规则148。在其他实施例中,规则148可以被标记为“终止”,以表示如果规则148匹配,则可以立即应用规则148的动作而不用遍历另外的组146。组146可以具有与规则148类似的条件。如果组146的条件不匹配,则虚拟交换机141可以跳过组146。以下是组146如何用于管理一个层145中的不同策略的两个示例:
·通过使用Docker样式容器为虚拟机144设置IP条件,可以基于每个容器创建和管理组146;以及
·对于状态防火墙,基础设施ACL和客户ACL可以在层145中表示为两个组146。可以将两个组146中的块规则标记为终止。因此,如果任一组146阻止访问,则丢弃分组。只有当规则148的两个组146都允许分组时,分组才会通过。
除了基于优先级的匹配之外,各个组146可以是条件类型(例如,目的地IP地址)上的最长前缀匹配以支持路由场景,其可以实现为压缩线索。
如图4所示,在每个组146内,可以如箭头124所示顺序评估规则148。因此,在图4所示的示例中,在评估其他组146、规则148和层145之前,首先评估“层1”中的“组1”的“规则1”。如下面参考图5更详细地描述的,每个规则148可以包括一个或多个条件和动作。匹配条件可以使得虚拟交换机141执行对应的动作。
图5是示出根据所公开的技术的实施例的适合于虚拟交换机141的规则对象148的示例条件和对应的动作的示意图。在某些实施例中,规则对象148可以是对MAT模型中的匹配分组执行动作的实体。当创建规则对象或规则148时,网络控制器116(图3)可以表达,同时减少数据平面中的固定策略。
如图5所示,规则148可以包括包含多个条件155和对应的动作156的条件列表。示例条件155可以包括源/目的地MAC、源/目的地IP、源/目的地TCP端口、源/目的地用户数据报协议(“UDP”)端口、通用路由封装密钥、虚拟可扩展LAN标识符、虚拟LAN ID或来自先前层145的关于分组的有效载荷的其他元数据。条件155可以具有类型(诸如源IP地址)和匹配值列表(每个值可以是单个、范围或前缀)。为了使条件匹配分组,任何匹配值都可以匹配,如在OR子句中。为了使规则148匹配,规则148中的所有条件155都匹配,如在AND子句中。
动作156还可以包含类型和特定于该类型的数据结构,其中该数据结构具有执行动作所需要的数据。例如,封装规则148可以将源/目的地IP地址、源/目的地MAC地址、封装格式和密钥用作输入数据以用于封装分组。如图5所示,示例动作可以包括根据例如ACL、网络名称转换(L3/L4)、封装/解封装、服务质量操作(例如,速率限制、标记差异化服务代码点、计量等)、加密/解密、有状态隧穿和寻路由(例如,等成本多路径路由)来允许/阻止分组。
规则148可以经由回调接口实现,例如,初始化、处理分组和去初始化。如果规则类型支持有状态实例化,则虚拟交换机141(图3)或其他合适类型的进程处理程序可以在层145(图3)中创建一对流。流也可以被键入并且具有与规则148类似的回调接口。有状态规则148可以包括流的生存时间,该时间是在最后的分组匹配之后所创建的流可以保留在流表中的时间段,除非TCP状态机明确过期。除了图5中的示例动作集之外,还可以添加用户定义的动作,以允许网络控制器116使用用于报头字段操纵的语言来创建自己的规则类型。
规则148单独可能不适合于大型映射表。例如,VNET操作通常涉及对出站/入站业务的CA->PA或PA->CA查找。所公开的技术的若干实施例可以实现通用资源的可扩展模型,例如,映射的散列表。“资源”通常是指端口143上的任何规则148可以引用的端口范围的数据结构。另一示例是可以实现动态源NAT规则148的范围列表。
图6是示出根据所公开的技术的实施例的在分布式计算系统100中的主机106处实现的虚拟交换机141中的SDN部署示例的示意图。如图6所示,示例SDN部署可以包括按顺序布置的四个层145。四层145包括依次布置的VNET层146A、NAT层146B、ACL层145c和计量层145d。特别地,VNET层146A可以由对应的网络控制器116(图3)使用用于客户地址(“CA”)的隧穿进行编程,使得分组114可以在由网络节点112(图1)识别的物理地址(“PA”)空间中在虚拟机144之间的路径中遍历底层网络108(图1)。VNET层146A因此通过在出站路径上具有封装规则148(图4)并且在入站路径上具有解封装规则来创建CA/PA边界。NAT层146B可以由不同的网络控制器116编程以实现用于转换VIP和DIP的策略以容纳例如负载平衡器。另外,ACL层145c可以被编程为在NAT层146B上方实现状态防火墙。已经相对于VIP/DIP边界放置ACL层145c的安全网络控制器116可以在CA空间中编程与虚拟机144的DIP匹配的策略。计量层145d可以被实现用于跟踪ACL层145c与虚拟机144之间的使用和/或计费。计量层145d可以实现规则148,规则148可以计量作为虚拟机144的用户101(图1)经历的传入和传出业务。
分层可以是用于实现有状态策略的模型。给定连接上的分组可以在入站和出站路径上处于相同的IP/端口状态,可以通过假定TCP或UDP 5元组(源IP、目标IP、IP协议、源端口、目的地端口)在层145的每一侧是相反的,并且在任一方向上的所有连接的散列表中编码来保持流状态。如图7所示,当匹配有状态规则时,层145可以在对应的层流表152a和152b中创建入站和出站流。规则148的方向上的流或分组业务具有规则148的动作,而相反的方向采取相反的动作以保持分层。这种入站和出站流被认为是成对的,因为它们的动作简单地将分组114(图6)改变为对中的相反流的状态,而不是携带自己的动作上下文。
如图6和7所示根据层145处理分组可以涉及通过解析分组114依次遍历每个层145,根据所选择的规则148修改分组114,以及将修改后的分组114转发到下一层145以用于重复类似的操作。当分组114依次遍历每个层145时,这种重复的解析和修改可能降低分组处理性能。因此,随着层145、组146或规则148数目的增加,虚拟交换机141处的分组处理可能成为虚拟机性能的瓶颈,尤其是当各个主机106(图1)继续托管越来越多的虚拟机144时。所公开的技术的若干实施例可以经由流动作高速缓存提供高分组处理速率,即使对于大量的层145、组146或规则148也是如此,如下面参考图8A至图8C更详细地描述的。
图8A至图8C是示出根据所公开的技术的实施例的在分布式计算系统100中的主机106处实现的虚拟交换机141中的传入和传出数据处理的示意图。如图8A所示,虚拟交换机141可以包括被配置为处理具有报头114a和有效载荷114b的分组114的分组处理器160。报头114a可以包括被配置为包含对应的值的各种报头字段。下面参考图9A和9B更详细地描述报头114a的示例。
如图8A所示,分组处理器160可以包括解析器161、流编译器162、包含统一流表165的高速缓存164,统一流表165具有流列165a和动作列165b。在所示实施例中,分组处理器160还可以包括用于在分组114的有效载荷114b上应用一个或多个动作的分组修改器166。在其他实施例中,分组修改器166可以由网络接口卡136例如通过编程现场可编程门阵列(“FPGA”)或其他可配置硬件电路(为清楚起见而以虚线示出)来提供。
解析器161可以被配置为解析报头114a中的一些或所有报头字段。例如,解析器161可以解析包含用于在上面参考图5所述的条件中匹配的值的报头字段。在某些实施例中,L2/L3/L4报头中的一个报头(例如,如下面的表1所示)可以形成报头组,并且报头组的报头字段可以形成单个流标识(“FlowID”)。分组114中的FlowID的元组可以是作为解析器161的输出的统一FlowID(“UFID”)。在其他实施例中,FlowID的散列值或其他合适的数字可以用作FlowID或UFID。
表1分组报头114a的示例报头字段
然后,解析器161可以将解析的报头字段114a作为例如UFID转发到流编译器162和/或分组修改器166,以执行报头转置(transposition)、分组修改或其他合适类型的进一步处理。
流编译器162可以被配置为执行用报头中的一个或多个报头字段参数化的报头转置。因此,可以经由报头转置将有效流转换为任何其他有效流。如本文中使用的,“报头转置”通常是指改变、移位或以其他方式操纵分组114的一个或多个报头字段。报头转置可以包括一个或多个可参数化报头动作的列表,其中一个动作对应于报头。如下面的表2所示,示例报头动作可以包括压入报头(即,向报头栈添加报头)、修改报头(即,更改报头内的报头字段)、弹出报头(即,从报头栈移除报头)、或忽略报头(即,通过报头)。在其他示例中,报头动作还可以包括对一个或多个报头字段中的值执行的加密、解密或其他合适的动作。
表2示例报头动作
在某些实施例中,报头转置的报头动作可以累积地分组为一组报头的复合动作。例如,下面的表3示出了涉及VL2使用的网络地址转换和封装/解封装的组合的示例报头转置。
表3示例报头转置。
如上面的表3所示,对于网络地址转换,忽略外部以太网报头。然而,对于VL2的封装,报头动作包括用于添加具有源MAC(即,SMAC)和目的地MAC(即,DMAC)的报头的推入动作。因此,作为网络地址转换和封装的组合的结果,结果报头转置是复合动作,其包括用于添加SMAC和DMAC的报头的推入动作。
因此,流编译器162可以被配置为通过组合来自每个层145(图4)中的匹配规则148(图3)的报头转置来为特定UFID生成复合动作。在某些实施例中,流编译器162可以实现为由下面的伪代码表示,其中输出“复合”表示复合动作:
进程(UFID输入,Port端口);
转置动作={0};
对于port.layers中的每个层:
UFID localId=转置(输入,动作);
规则=分类(层,localId);
动作=action.compose(rule.process(localId));
返回复合;
例如,通过示例网络名称转换层和VL2 VNET封装层的分组可以具有复合动作,如上面的表3中的“封装+NAT”列所示。在其他实施例中,还可以实现流编译器162以基于其他合适的启发法生成复合动作。在另外的实施例中,流编译器162还可以被配置为通过将复合动作逻辑地划分为一系列操作(例如,可以由分组修改器166应用的网络名称转换、封装、解封装)来将复合动作应用于分组。
不受理论束缚,据信,与UFID对应的流动作用可以在流的整个寿命期间相对稳定。这样,具有来自流编译器162的所得到的复合动作的UFID可以被高速缓存并且重用,例如,每TCP/UDP流。如图8A所示,UFID和复合动作可以作为统一流表165的条目而存储在高速缓存164中。在所示实施例中,统一流表165可以包括流列(即,“流”)165a和动作列(即,“动作”)165b。因此,统一流表165中的条目可以在流列165a中包含UFID,其中在动作列165b中具有对应的复合动作。在其他实施例中,统一流表165还可以包括生成标识符列、创建的日期/时间列或其他合适的列。基于统一流表165中的条目,通过虚拟交换机141的数据路径可以分成快速路径和慢速路径,如下面参考图8B至图8C更详细地描述的。
某些流动作可以具有超出报头修改的分组操作。这种流动作的示例可以包括计量到全局计数器或者加密有效载荷114b或分组114。对于这些动作,在某些实施例中,流编译器162可以被配置为提供可以经由回调实现合适的逻辑的动作上下文。规则148(图4)可以将动作上下文添加到报头转置操作和所得到的复合动作。因此,即使规则148不是每个分组114匹配,规则148也可以用于扩展流动作。
流编译器162的特征是流编译器162的客户端的透明性。这样,当网络控制器116(图3)改变层145中的规则148时,新规则148可以应用于后续分组114,即使针对UFID的统一流表165中的条目已经存在。在某些实施例中,分组处理器160可以被配置为在每个端口149(图2)上保持全局世代号(generation number)。当在统一流表165中创建流的条目时,用当前世代号标记所创建的条目。在规则更新时,端口生成号可以递增。因此,当匹配世代号小于端口的当前世代号的流时,流编译器162可以基于已更新的规则148重新编译流以确定所得到的复合动作是否已经改变。响应于确定复合动作已经改变,流编译器162可以用已更新的复合动作更新统一流表165中的条目;否则,流编译器162可以将当前复合动作保持在统一流表165中。
在某些实施例中,统一流表165中的条目可以在某个可配置的时间段(例如,30分钟)之后到期。然而,这样的时间段对于短流可能是低效的,并且可能导致在统一流表165中的大量条目空闲。因此,在某些实施例中,流编译器162可以被配置为通过跟踪对应的底层连接的状态来使某些流的条目到期,这包括确定哪个条目与相反方向上的另一条目配对以形成双向连接。
统一流表165中的条目可以是不对称的。例如,如果连接在入站时隧穿连接到虚拟机144,但是在出站时直接返回而没有隧穿连接。所公开的技术的若干实施例涉及在虚拟机144侧配对连接。当通过入站分组114在统一流表165中创建入站条目时,通过在入站动作之后反转分组114的UFID并且模拟通过该端口的出站路径的流,可以创建出站条目以与入站条目配对。对于新的出站条目,分组处理器160可以等待入站分组114尝试创建入站条目。因此,当流编译器162查找入站新条目的反向UFID时,分组处理器160可以寻找现有流以与新的入站条目配对。
一旦建立了统一流表165中的条目配对,就可以在分组处理器160中实现TCP状态机(未示出)以将配对的条目跟踪为连接。例如,可以在试用半开(probationary half-open)状态下创建新流。只有在使用正确的序列号验证三次握手时,新流才能成为完整流。状态机还可以跟踪完成握手和TCP/IP重置标志以使流程提前到期。状态机还可以跟踪TIME_WAIT中的连接,以允许网络名称转换规则确定何时可以安全地重用端口。
如图8A所示,在操作中,解析器161可以在虚拟交换机141处接收到分组114时解析分组114的报头114a。然后,解析器161可以将解析的报头114a转发到分组修改器166以确定统一流表165中是否已经存在分组114所属的流的现有条目。响应于确定统一流表165不包括该流的条目,分组修改器166可以将解析的报头114a转发到流编译器162以进行进一步处理。响应于确定统一流表165确实包括该流的条目,分组修改器166可以执行对应的复合动作,如下面参考图8C更详细地描述的。
图8B示出了根据所公开的技术的实施例的分组114的慢速路径处理。如图8B所示,流编译器162可以通过依次迭代或遍历所有层145中的规则148来编译复合动作,如箭头119所示并且如上面参考图3至图5所述。在编译完成之后,流编译器162可以将所生成的复合动作提供给分组修改器166。分组修改器166又可以将复合动作应用于分组114以生成修改后的分组114'。然后,可以将修改后的分组114'提供给虚拟机144。流编译器162还可以在高速缓存164中的统一流表165中创建一个或多个条目以用于存储UFID和对应的复合动作。基于统一流表165中的条目,分组修改器166可以处理快速路径之后的相同流的后续分组114”,如下面参考图8C所述。
如图8C所示,响应于确定在统一流表165中已经存在分组114”所属的流的条目,分组修改器166可以取回与来自统一流表165的流的对应的复合动作并且直接执行复合动作,而不使用流编译器162重新编译复合动作。这样,附加分组114”的处理可以比处理图8A的分组114更快。在某些实施例中,驻留在虚拟交换机141中的分组处理器160的分组修改器166可以执行分组修改。在其他实施例中,由网络接口卡136提供的分组修改器166(或其至少组件)可以通过访问高速缓存164中的统一流表165来执行分组修改。在另外的实施例中,分组修改器166的组件可以位于虚拟交换机141和网络接口卡136两者处并且协作以执行分组修改。
图9A是示出根据所公开的技术的实施例的适合于分组报头的数据模式180的示意图。如图9A所示,数据模式180可以包括MAC字段181、IP字段182、TCP字段183、TLS字段184、HTTP字段185和数据字段186。MAC字段181、IP字段182和TCP字段183可以被配置为分别包含硬件加速器138(图2)和/或主机106(图2)的MAC地址、IP地址和端口号。TLS字段184可以被配置为包含指示分组中包含的数据的类型的值。TLS字段184的示例值可以包括APPLICATION_DATA、CHANGE_CIPHER_SPEC、ALERT或HANDSHAKE。HTTP字段185可以被配置为根据HTTP协议包含各种参数。例如,这些参数可以包括数据字段186中的数据的内容长度、高速缓存控制等。参考图9B更详细地描述HTTP字段185的示例报头字段。即使示例数据模式180包括HTTP字段185,在其他实施例中,数据模式180也可以包括安全外壳、安全复制、安全FTP或其他合适的报头字段。
图9B是示出根据所公开的技术的实施例的适合于图9A中的HTTP字段185的示例报头字段的示意图。如图9B所示,报头字段可以包括被配置为包含编码标识的内容编码字段187、被配置为以例如字节为单位存储内容或有效载荷长度的内容长度字段188、以及被配置为包含指示与HTTP报头相关联的内容或有效载荷是否有效的数值的状态字段189。在所示示例中,内容编码字段187包含“gzip”作为编码标识符;内容长度字段188包含指示内容或有效载荷的长度为348个字节的“348”;并且状态字段189包含指示内容或有效载荷有效的数值“200”。尽管在图5B中示出了特定字段作为示例,但是在其他实施例中,HTTP报头185还可以包括被配置为包含内容语言、内容位置、内容范围和/或其他合适参数的字段。
图10A至图10B是示出根据所公开的技术的实施例的用于处理虚拟交换机中的传入/传出分组的过程的流程图。尽管下面参考图1和2的分布式计算系统100描述过程的各方面,但是在其他实施例中,过程的各方面也可以在具有附加和/或不同组件的其他合适的计算系统中实现。
如图10A所示,过程200可以包括在阶段202在虚拟交换机处接收分组。分组可以包括具有一个或多个报头字段的报头和有效载荷。然后,过程200可以包括在阶段203确定所接收的分组所属的流的FlowID。在某些实施例中,L2/L3/L4报头中的一个报头(例如,如上面表1所示的那些)可以形成报头组,报头组的报头字段可以形成FlowID。分组114中的FlowID的元组可以是UFID。在其他实施例中,FlowID的散列值或其他合适的数字可以用作FlowID或UFID。然后,过程200可以包括用于确定所确定的FlowID是否对应于在统一流表中具有对应的条目的现有流的决策阶段204。响应于确定FlowID确实对应于在统一流表中具有条目的现有流,过程200可以包括在阶段206应用由统一流表中的条目标识的对应的复合动作。在某些实施例中,应用复合动作可以包括对分组的一个或多个报头字段执行报头修改。在其他实施例中,应用复合动作还可以包括对分组的一个或多个报头字段和/或有效载荷的值进行加密、解密或执行其他合适的动作。
响应于确定FlowID不对应于在统一流表中具有条目的现有流,过程200可以包括在阶段208编译流。在某些实施例中,编译流可以包括遍历由各种网络控制器开发的层、组和规则以确定与流相关的复合动作。在其他实施例中,编译流还可以包括经由动作上下文对分组执行某些操作。下面参考图10B更详细地描述编译流的示例操作。
如图10B所示,编译流的操作可以包括在阶段212解析分组报头。在某些实施例中,解析分组报头可以包括解析包含用于在如上面参考图5所述的条件中匹配规则的值的一个或多个报头字段。示例报头字段可以包括源/目的地MAC、源/目的地IP、源/目的地TCP端口、源/目的地UDP端口、通用路由封装密钥、虚拟可扩展LAN标识符、虚拟LAN ID、或者包含关于分组的有效载荷的元数据的其他合适的报头字段。
操作还可以包括在阶段214在初始层的组中按照规则对分组执行报头转置以确定流动作。上面参考图8A描述了示例报头转置操作。示例流动作可以包括根据例如ACL、网络名称转换(L3/L4)、封装/解封装、服务质量操作(例如,速率限制、标记差异化服务代码点、计量等)、加密/解密、有状态隧穿和寻路由(例如,等成本多路径路由)来允许/阻止分组。
然后,操作可以包括决用于确定除了初始层之外是否还存在其他层的策阶段216。响应于确定除了初始层之外还存在其他层,操作恢复为在另一层的组中按照规则执行报头转置,以生成对基于初始层而确定的流动作累积的复合动作。在阶段218,响应于确定除了当前层之外不存在其他层,操作继续生成复合动作,作为遍历所有层的流动作的累积。然后,操作可以包括在阶段220高速缓存复合动作。在某些实施例中,该条目可以包括与复合动作对应的FlowID。在其他实施例中,条目还可以包括世代号或其他合适的参数。
图11是适合于图1中的分布式计算系统100的某些组件的计算设备300。例如,计算设备300可以适合于图1的主机106、客户端设备102或平台控制器125。在非常基本的配置302中,计算设备300可以包括一个或多个处理器304和系统存储器306。存储器总线308可以用于处理器304与系统存储器306之间的通信。
根据期望的配置,处理器304可以是任何类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任何组合。处理器304可以包括一个或多个级别的高速缓存(诸如一级高速缓存310和二级高速缓存312)、处理器核314和寄存器316。示例处理器核314可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)或其任何组合。示例存储器控制器318也可以与处理器304一起使用,或者在一些实现中,存储器控制器318可以是处理器304的内部部分。
根据期望的配置,系统存储器306可以是任何类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或其任何组合。系统存储器306可以包括操作系统320、一个或多个应用322和程序数据324。如图11所示,操作系统320可以包括用于管理一个或多个虚拟机144的管理程序140。该描述的基本配置302在图8中由内部虚线内的那些组件示出。
计算设备300可以具有附加特征或功能、以及附加接口以促进基本配置302与任何其他设备和接口之间的通信。例如,总线/接口控制器330可以用于促进基本配置302与一个或多个数据存储设备332之间经由存储接口总线334的通信。数据存储设备332可以是可移除存储设备336、不可移除存储设备338或其组合。可移除存储设备和不可移除存储设备的示例包括诸如软盘驱动器和硬盘驱动器(HDD)等磁盘设备、诸如压缩盘(CD)驱动器或数字通用盘(DVD)驱动器等光盘驱动器、固态驱动器(SSD)和磁带驱动器等。示例计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。术语“计算机可读存储介质”或“计算机可读存储设备”不包括传播信号和通信介质。
系统存储器306、可移除存储设备336和不可移除存储设备338是计算机可读存储介质的示例。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字通用盘(DVD)或其他光学存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或者可以用于存储期望的信息并且可以由计算设备300访问的任何其他介质。任何这样的计算机可读存储介质可以是计算设备300的一部分。术语“计算机可读存储介质”不包括传播信号和通信介质。
计算设备300还可以包括接口总线340以用于促进经由总线/接口控制器330从各种接口设备(例如,输出设备342、外围接口344和通信设备346)到基本配置302的通信。示例输出设备342包括可以被配置为经由一个或多个A/V端口352与诸如显示器或扬声器等各种外部设备通信的图形处理单元348和音频处理单元350。示例外围接口344包括可以被配置为经由一个或多个I/O端口358与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其他外围设备(例如,打印机、扫描仪等)等外部设备通信的串行接口控制器354或并行接口控制器356。示例通信设备346包括可以被布置为促进经由一个或多个通信端口364通过网络通信链路与一个或多个其他计算设备362的通信的网络控制器360。
网络通信链路可以是通信介质的一个示例。通信介质通常可以由计算机可读指令、数据结构、程序模块或调制数据信号(诸如载波或其他传输机制)中的其他数据来实施,并且可以包括任何信息传递介质。“调制数据信号”可以是使得能够在信号中对信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质可以包括诸如有线网络或直接有线连接等有线介质、以及诸如声学、射频(RF)、微波、红外(IR)和其他无线介质等无线介质。本文中使用的术语计算机可读介质可以包括存储介质和通信介质。
计算设备300可以被实现为小型便携式(或移动)电子设备的一部分,诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络手表设备、个人耳机设备、专用设备、或包括任何上述功能的混合设备。计算设备300还可以实现为包括膝上型计算机和非膝上型计算机配置的个人计算机。
从前述内容可以理解,本文中已经出于说明的目的描述了本公开的特定实施例,但是,在不脱离本公开内容的情况下,可以进行各种修改。另外,除了或代替其他实施例的元件,一个实施例的很多元件可以与其他实施例组合。因此,除了所附权利要求之外,本技术不受限制。
Claims (20)
1.一种用于在分布式计算系统中促进通信的方法,所述分布式计算系统具有分别支持虚拟交换机和一个或多个虚拟机的主机,所述方法包括:
在由主机提供的所述虚拟交换机处接收分组,所述分组具有带有多个报头字段的报头和有效载荷;以及
在所述虚拟交换机处基于被布置成层级的多个层、组和规则对象来处理所接收的所述分组,在所述层级中,所述多个层对象分别包含一个或多个组对象,所述一个或多个组对象分别包含一个或多个规则对象,所述多个规则对象中的每个规则对象包含一个或多个条件和由所述虚拟交换机对所述分组可执行的对应的动作,其中处理所接收的所述分组包括,
解析所述分组的所述报头字段中的一个或多个报头字段;
将所解析的所述一个或多个报头字段与来自所述层对象中的每个层的所述组对象的所述多个规则对象中的一个规则对象的所述条件匹配;
生成具有多个动作的复合动作,而不对所述分组应用所述多个动作中的任何动作,所述多个动作中的每个动作对应于来自所述层对象中的每个层对象的所匹配的规则对象,所述多个动作彼此累积;以及
随后,将所生成的所述复合动作应用于所述分组。
2.根据权利要求1所述的方法,其中匹配所解析的所述一个或多个报头字段包括:
确定所述分组的所述报头字段中的一个或多个报头字段中的值是否与所述层对象的所述组对象中的所述多个规则对象中的一个规则对象的所述一个或多个条件匹配;
响应于确定所述分组的所述报头字段中的一个或多个报头字段中的所述值与所述层对象的所述组对象中的所述多个规则对象中的一个规则对象的所述一个或多个条件匹配,向所述复合动作添加与所匹配的所述规则对象对应的所述一个或多个动作;以及
基于附加层对象来重复确定操作和添加操作,直到不再存在层对象。
3.根据权利要求1所述的方法,还包括在生成所述复合动作之后,利用流标识符将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合。
4.根据权利要求1所述的方法,其中所述分组是第一分组,并且其中所述方法还包括:
在生成所述复合动作之后,利用流标识符将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;
响应于在所述虚拟交换机处接收到第二分组,
解析所述第二分组的所述报头字段中的一个或多个报头字段;
确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组属于所述相同的流,将基于所述第一分组而被生成的所述复合动作应用于所述第二分组,而不基于所述第二分组来执行匹配操作和生成操作。
5.根据权利要求1所述的方法,其中所述分组是第一分组,并且其中所述方法还包括:
在生成所述复合动作之后,利用流标识符和世代号将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个报头字段中的IP地址和TCP端口号的组合,其中所述世代号对应于与由所述TCP端口号标识的TCP端口相关的所述层中的所述规则的版本;
响应于接收到第二分组,
解析所述第二分组的所述报头字段中的一个或多个报头字段;
确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组属于所述相同的流,
确定所述TCP端口的世代号是否不同于所述流表中的条目的所述世代号;
响应于确定所述TCP端口的所述世代号与所述流表中的所述条目的所述世代号相同,将基于所述第一分组而被生成的所述复合动作应用于所述第二分组,而不基于所述第二分组来执行匹配操作和生成操作;以及
响应于确定所述TCP端口的所述世代号不同于所述流表中的所述条目的所述世代号,基于所述第二分组的所解析的所述一个或多个报头字段来重复匹配操作和生成操作。
6.根据权利要求1所述的方法,其中所述分组是第一分组,并且所述主机包括存储器和可编程网络接口卡,并且其中所述方法还包括:
在生成所述复合动作之后,利用流标识符将所述复合动作高速缓存为所述主机的所述存储器中的流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;
响应于在可编程网络接口卡处接收到第二分组,
利用所述可编程网络接口卡中的硬件电路,
解析所述第二分组的所述报头字段中的一个或多个报头字段;
利用所述流标识符访问所高速缓存的所述复合动作以确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组属于所述相同的流,
从所述流表取回对应的所述复合动作;以及
将基于所述第一分组而被生成的所取回的所述复合动作应用于所述第二分组,而不基于所述第二分组来执行匹配操作和生成操作。
7.根据权利要求1所述的方法,其中所述分组是第一分组,并且其中所述方法还包括:
在生成所述复合动作之后,利用流标识符将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;
响应于在所述虚拟交换机处接收到第二分组,
解析所述第二分组的所述报头字段中的一个或多个报头字段;
确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组不属于所述相同的流,基于所述第二分组的所述报头字段中的所解析的所述一个或多个报头字段来执行匹配操作和生成操作。
8.根据权利要求1所述的方法,其中所述分组是第一分组,并且其中所述方法还包括:
在生成所述复合动作之后,利用流标识符将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;
响应于在所述虚拟交换机处接收到第二分组,
解析所述第二分组的所述报头字段中的一个或多个报头字段;
确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组不属于所述相同的流,基于所述第二分组的所述报头字段中的所解析的所述一个或多个报头字段来执行匹配操作和生成操作以生成另一复合动作,并且利用另一流标识符将所生成的所述另一复合动作高速缓存为所述流表中的另一流。
9.根据权利要求1所述的方法,其中将所生成的所述复合动作应用于所述分组包括将所述复合动作划分为与网络名称转换、封装/解封装、加密/解密、服务质量、有状态隧穿或寻路由中的一项相关的一系列分组操作。
10.一种具有经由计算机网络被彼此连接的多个计算设备的分布式计算系统中的计算设备,包括:
处理器;以及
存储器,所述存储器包含由所述处理器可执行以使得所述计算设备提供虚拟交换机和一个或多个虚拟机的指令,所述存储器还包含附加指令,所述附加指令由所述处理器可执行以使得所述计算设备:
经由所述计算机网络接收分组,所述分组具有带有多个报头字段的报头和有效载荷;以及
解析所接收的所述分组的所述多个报头字段中的一个或多个报头字段;
在虚拟交换机处基于被布置成层级的多个层、组和规则对象来处理所接收的所述分组,在所述层级中,所述多个层对象分别包含一个或多个组对象,所述一个或多个组对象分别包含一个或多个规则对象,所述多个规则对象中的每个规则对象包含一个或多个条件和由所述虚拟交换机对所述分组可执行的对应的动作,以基于所述分组的所述多个报头字段中的所解析的所述一个或多个报头字段来生成具有多个流动作的复合动作,而不对所述分组应用所述多个流动作中的任何流动作,所述多个流动作中的每个流动作对应于来自所述多个层对象中的一个层对象的所匹配的规则对象,所述多个流动作彼此累积;以及
随后,将所生成的所述复合动作应用于所述分组。
11.根据权利要求10所述的计算设备,其中:
所述规则对象包括一个或多个条件和对应的流动作;并且
生成所述复合动作包括,针对所述层对象中的每个层对象:
确定所述分组的所述多个报头字段中的所解析的所述一个或多个报头字段是否与所述规则对象的所述一个或多个条件匹配;以及
响应于确定所述分组的所述多个报头字段中的所解析的所述一个或多个报头字段与所述规则对象的所述一个或多个条件匹配,向所述复合动作添加与所述规则对象对应的流动作。
12.根据权利要求10所述的计算设备,其中所述存储器还包含附加指令,所述附加指令由所述处理器可执行以使得所述计算设备利用流标识符将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合。
13.根据权利要求10所述的计算设备,其中所述分组是第一分组,并且其中所述存储器还包含附加指令,所述附加指令由所述处理器可执行以使得所述计算设备:
利用流标识符将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述第一分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;以及
响应于接收到第二分组,
基于所述第二分组的IP地址和TCP端口号的组合来确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组属于所述相同的流,将基于所述第一分组而被生成的所述复合动作应用于所述第二分组。
14.根据权利要求10所述的计算设备,其中所述分组是第一分组,并且其中所述存储器还包含附加指令,所述附加指令由所述处理器可执行以使得所述计算设备:
利用流标识符将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述第一分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;以及
响应于接收到第二分组,
基于所述第二分组的IP地址和TCP端口号的组合来确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组不属于所述相同的流,基于所述多个层中的所述多个规则对象来生成另一复合动作。
15.根据权利要求10所述的计算设备,其中所述分组是第一分组,并且其中所述存储器还包含附加指令,所述附加指令由所述处理器可执行以使得所述计算设备:
利用流标识符将所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述第一分组的所解析的所述一个或多个报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;以及
响应于接收到第二分组,
基于所述第二分组的IP地址和TCP端口号的组合来确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组不属于所述相同的流,基于所述多个层中的所述多个规则对象来生成另一复合动作,并且利用另一流标识符将所述另一复合动作高速缓存为所述流表中的另一流。
16.一种用于在分布式计算系统中促进通信的方法,所述分布式计算系统具有分别支持虚拟交换机和一个或多个虚拟机的主机,所述方法包括:
经由所述计算机网络接收分组,所述分组具有带有多个报头字段的报头和有效载荷;
解析所接收的所述分组的所述多个报头字段中的一个或多个报头字段;以及
在虚拟交换机处基于被布置成层级的多个层、组和规则对象来处理所接收的所述分组,在所述层级中,所述多个层对象分别包含一个或多个组对象,所述一个或多个组对象分别包含一个或多个规则对象,所述多个规则对象中的每个规则对象包含一个或多个条件和由所述虚拟交换机对所接收的所述分组可执行的对应的动作,其中所述处理包括:
基于所述多个报头字段中的所解析的所述一个或多个报头字段来将所接收的所述分组与来自所述多个层对象中的每个层对象的规则对象匹配;
通过组合多个流动作来生成复合动作,而不对所述分组应用所述多个流动作中的任何流动作,所述多个流动作分别对应于来自所述多个层对象中的每个层对象的所匹配的所述多个规则对象中的一个规则对象,所述多个流动作彼此累积;以及
随后,将所生成的所述复合动作应用于所述分组。
17.根据权利要求16所述的方法,其中匹配所接收的所述分组包括:
确定所述分组的所述报头字段中的一个或多个报头字段中的值是否与所述规则对象的所述一个或多个条件匹配;
响应于确定所述分组的所述报头字段中的一个或多个报头字段中的所述值与所述规则对象的所述一个或多个条件匹配,向所述复合动作添加与所匹配的所述规则对象对应的所述一个或多个动作;以及
基于附加层对象来重复确定操作和添加操作,直到不再存在层对象。
18.根据权利要求16所述的方法,其中所述分组是第一分组,并且其中所述方法还包括:
在生成所述复合动作之后,利用流标识符将所生成的所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个所述报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;
响应于接收到第二分组,
基于所述第二分组的IP地址和TCP端口号的组合来确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组属于所述相同的流,将基于所述第一分组而被生成的所述复合动作应用于所述第二分组,而不基于所述第二分组来执行匹配操作和生成操作。
19.根据权利要求16所述的方法,其中所述分组是第一分组,并且其中所述方法还包括:
在生成所述复合动作之后,利用流标识符将所生成的所述复合动作高速缓存为流表中的流,所述流标识符对应于被包含在所述分组的所解析的所述一个或多个所述报头字段中的因特网协议(“IP”)地址和传输控制协议(“TCP”)端口号的组合;
响应于接收到第二分组,
基于所述第二分组的IP地址和TCP端口号的组合来确定所述第二分组是否与所述第一分组属于相同的流;以及
响应于确定所述第二分组与所述第一分组不属于所述相同的流,基于所述第二分组来执行匹配操作和生成操作以生成另一复合动作,并且将所述复合动作应用于所述第二分组。
20.根据权利要求16所述的方法,其中所述流动作能够分别包括以下各项之一:添加报头、修改报头、移除报头或者从所述分组的所述一个或多个报头字段忽略报头。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762469696P | 2017-03-10 | 2017-03-10 | |
US62/469,696 | 2017-03-10 | ||
US15/639,331 US10715585B2 (en) | 2017-03-10 | 2017-06-30 | Packet processor in virtual filtering platform |
US15/639,331 | 2017-06-30 | ||
PCT/US2018/020991 WO2018165060A1 (en) | 2017-03-10 | 2018-03-06 | Packet processor in virtual filtering platform |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110419200A CN110419200A (zh) | 2019-11-05 |
CN110419200B true CN110419200B (zh) | 2022-01-11 |
Family
ID=63445261
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880017017.4A Active CN110419200B (zh) | 2017-03-10 | 2018-03-06 | 虚拟过滤平台中的分组处理器 |
CN201880017079.5A Active CN110392999B (zh) | 2017-03-10 | 2018-03-06 | 分布式计算系统中的虚拟过滤平台 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880017079.5A Active CN110392999B (zh) | 2017-03-10 | 2018-03-06 | 分布式计算系统中的虚拟过滤平台 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10715585B2 (zh) |
EP (2) | EP3593504B1 (zh) |
CN (2) | CN110419200B (zh) |
WO (2) | WO2018165060A1 (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10715585B2 (en) | 2017-03-10 | 2020-07-14 | Microsoft Technology Licensing, Llc | Packet processor in virtual filtering platform |
US10764179B2 (en) * | 2017-07-19 | 2020-09-01 | Corsa Technology Inc. | Look up table based match action processor for data packets |
JP2019029946A (ja) * | 2017-08-03 | 2019-02-21 | 富士通株式会社 | 通信制御装置、通信制御システム、及び通信制御方法 |
CN109587065B (zh) * | 2017-09-28 | 2021-02-23 | 北京金山云网络技术有限公司 | 转发报文的方法、装置、交换机、设备及存储介质 |
US10715427B2 (en) * | 2018-04-27 | 2020-07-14 | Hewlett Packard Enterprise Development Lp | Determining routing decisions in a software-defined wide area network overlay |
US10979542B2 (en) * | 2018-08-28 | 2021-04-13 | Vmware, Inc. | Flow cache support for crypto operations and offload |
US10996972B2 (en) * | 2018-09-25 | 2021-05-04 | Microsoft Technology Licensing, Llc | Multi-tenant support on virtual machines in cloud computing networks |
US10624148B1 (en) | 2018-11-05 | 2020-04-14 | Microsoft Tehnology Licensing, LLC | Implementation of core cellular networking stack on cloud infrastructure |
US11190628B2 (en) * | 2019-04-03 | 2021-11-30 | National Chiao Tung University | High-speed data-plane packet aggregation and disaggregation method |
US11218512B2 (en) | 2019-04-30 | 2022-01-04 | Palo Alto Networks, Inc. | Security policy enforcement and visibility for network architectures that mask external source addresses |
US11436053B2 (en) | 2019-05-24 | 2022-09-06 | Microsoft Technology Licensing, Llc | Third-party hardware integration in virtual networks |
US11252096B2 (en) | 2019-06-20 | 2022-02-15 | Microsoft Technology Licensing, Llc | Network flow state management for connectionless protocol(s) |
US10944585B1 (en) * | 2019-09-13 | 2021-03-09 | Vmware, Inc. | Migration for network appliances |
TWI727493B (zh) | 2019-11-08 | 2021-05-11 | 瑞昱半導體股份有限公司 | 一種閘道器控制晶片及其網路封包處理方法 |
US20220385550A1 (en) * | 2019-11-11 | 2022-12-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for Dynamically Classifying and Re-Classifying a Data Packet Flow |
US11483246B2 (en) | 2020-01-13 | 2022-10-25 | Vmware, Inc. | Tenant-specific quality of service |
US11599395B2 (en) | 2020-02-19 | 2023-03-07 | Vmware, Inc. | Dynamic core allocation |
US11740919B2 (en) * | 2020-05-18 | 2023-08-29 | Dell Products L.P. | System and method for hardware offloading of nested virtual switches |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
US11539633B2 (en) * | 2020-08-31 | 2022-12-27 | Vmware, Inc. | Determining whether to rate limit traffic |
US11782895B2 (en) | 2020-09-07 | 2023-10-10 | Mellanox Technologies, Ltd. | Cuckoo hashing including accessing hash tables using affinity table |
US11593278B2 (en) | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US11792134B2 (en) | 2020-09-28 | 2023-10-17 | Vmware, Inc. | Configuring PNIC to perform flow processing offload using virtual port identifiers |
US11636053B2 (en) | 2020-09-28 | 2023-04-25 | Vmware, Inc. | Emulating a local storage by accessing an external storage through a shared port of a NIC |
US11875172B2 (en) | 2020-09-28 | 2024-01-16 | VMware LLC | Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC |
US12021759B2 (en) | 2020-09-28 | 2024-06-25 | VMware LLC | Packet processing with hardware offload units |
US11736566B2 (en) | 2020-09-28 | 2023-08-22 | Vmware, Inc. | Using a NIC as a network accelerator to allow VM access to an external storage via a PF module, bus, and VF module |
US11799785B2 (en) | 2021-04-09 | 2023-10-24 | Microsoft Technology Licensing, Llc | Hardware-based packet flow processing |
US11757782B2 (en) * | 2021-04-09 | 2023-09-12 | Microsoft Technology Licensing, Llc | Architectures for disaggregating SDN from the host |
CN117203615A (zh) | 2021-04-09 | 2023-12-08 | 微软技术许可有限责任公司 | 经由分发扩展主机策略 |
US11799784B2 (en) | 2021-06-08 | 2023-10-24 | Vmware, Inc. | Virtualized QoS support in software defined networks |
US11917042B2 (en) * | 2021-08-15 | 2024-02-27 | Mellanox Technologies, Ltd. | Optimizing header-based action selection |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11995024B2 (en) | 2021-12-22 | 2024-05-28 | VMware LLC | State sharing between smart NICs |
US11929837B2 (en) | 2022-02-23 | 2024-03-12 | Mellanox Technologies, Ltd. | Rule compilation schemes for fast packet classification |
US11968285B2 (en) | 2022-02-24 | 2024-04-23 | Mellanox Technologies, Ltd. | Efficient memory utilization for cartesian products of rules |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
US11888737B1 (en) * | 2022-07-29 | 2024-01-30 | Red Hat, Inc. | Implementing network function logic in a virtual switch |
CN117278660B (zh) * | 2023-11-21 | 2024-03-29 | 华信咨询设计研究院有限公司 | 一种基于dpdk技术的流量过滤的协议解析方法 |
CN117714398B (zh) * | 2024-02-05 | 2024-05-10 | 浪潮电子信息产业股份有限公司 | 一种数据传输系统、方法、电子设备及存储介质 |
CN117749865B (zh) * | 2024-02-06 | 2024-08-16 | 苏州元脑智能科技有限公司 | 会话处理方法、系统、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595648A (zh) * | 2012-08-17 | 2014-02-19 | 国际商业机器公司 | 用于在服务器的接收侧进行负载均衡的方法和系统 |
CN106464583A (zh) * | 2014-05-05 | 2017-02-22 | 瑞典爱立信有限公司 | 实现具有开放流数据和控制平面的云计算机中的3g分组核心 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101035111B (zh) * | 2007-04-13 | 2010-10-13 | 北京启明星辰信息技术股份有限公司 | 一种智能协议解析方法及装置 |
CN102158514A (zh) * | 2010-02-11 | 2011-08-17 | 中兴通讯股份有限公司 | 一种通信系统以及关联业务策略信息的方法 |
CN101834785B (zh) * | 2010-04-07 | 2015-06-03 | 中兴通讯股份有限公司 | 一种实现流过滤的方法和装置 |
US8806005B2 (en) * | 2011-09-12 | 2014-08-12 | Microsoft Corporation | Cross-machine event log correlation |
US8930690B2 (en) * | 2012-03-21 | 2015-01-06 | Microsoft Corporation | Offloading packet processing for networking device virtualization |
CN102647325B (zh) * | 2012-03-23 | 2014-11-26 | 杭州华三通信技术有限公司 | 一种实现QinQ终结的方法和装置 |
US10104004B2 (en) | 2012-11-08 | 2018-10-16 | Texas Instruments Incorporated | Openflow match and action pipeline structure |
CN103036761B (zh) * | 2012-12-21 | 2015-08-05 | 浙江宇视科技有限公司 | 一种隧道服务器和客户端装置 |
CN103200123B (zh) * | 2013-03-06 | 2016-01-20 | 深圳市新格林耐特通信技术有限公司 | 一种交换机端口安全控制方法 |
CN104113488A (zh) * | 2013-04-16 | 2014-10-22 | 中兴通讯股份有限公司 | 接口切换方法和装置 |
US9680748B2 (en) | 2013-09-15 | 2017-06-13 | Nicira, Inc. | Tracking prefixes of values associated with different rules to generate flows |
EP3110085A4 (en) * | 2014-02-19 | 2017-10-25 | NEC Corporation | Network control method, network system, device, and program |
US9509809B2 (en) * | 2014-02-25 | 2016-11-29 | Alcatel-Lucent Usa Inc. | Packet classification using multiple processing units |
SG11201705905UA (en) * | 2015-02-09 | 2017-09-28 | Nitto Denko Corp | Method and apparatus for deriving mean arterial pressure of a subject |
US10298489B2 (en) | 2015-07-24 | 2019-05-21 | International Business Machines Corporation | Adding multi-tenant awareness to a network packet processing device on a software defined network (SDN) |
WO2017018989A1 (en) | 2015-07-24 | 2017-02-02 | Hewlett Packard Enterprise Development Lp | Simultaneous processing of flow tables |
US10154009B2 (en) | 2015-08-11 | 2018-12-11 | At&T Intellectual Property I, L.P. | Providing a basic firewall using a virtual networking function |
US10715585B2 (en) | 2017-03-10 | 2020-07-14 | Microsoft Technology Licensing, Llc | Packet processor in virtual filtering platform |
-
2017
- 2017-06-30 US US15/639,331 patent/US10715585B2/en active Active
- 2017-06-30 US US15/639,319 patent/US10516728B2/en active Active
-
2018
- 2018-03-06 EP EP18714885.3A patent/EP3593504B1/en active Active
- 2018-03-06 CN CN201880017017.4A patent/CN110419200B/zh active Active
- 2018-03-06 EP EP18714394.6A patent/EP3593503B1/en active Active
- 2018-03-06 CN CN201880017079.5A patent/CN110392999B/zh active Active
- 2018-03-06 WO PCT/US2018/020991 patent/WO2018165060A1/en active Application Filing
- 2018-03-06 WO PCT/US2018/020990 patent/WO2018165059A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595648A (zh) * | 2012-08-17 | 2014-02-19 | 国际商业机器公司 | 用于在服务器的接收侧进行负载均衡的方法和系统 |
CN106464583A (zh) * | 2014-05-05 | 2017-02-22 | 瑞典爱立信有限公司 | 实现具有开放流数据和控制平面的云计算机中的3g分组核心 |
Also Published As
Publication number | Publication date |
---|---|
EP3593504B1 (en) | 2024-06-26 |
US10516728B2 (en) | 2019-12-24 |
EP3593504A1 (en) | 2020-01-15 |
EP3593503A1 (en) | 2020-01-15 |
WO2018165059A1 (en) | 2018-09-13 |
US10715585B2 (en) | 2020-07-14 |
WO2018165060A1 (en) | 2018-09-13 |
US20180262599A1 (en) | 2018-09-13 |
US20180262556A1 (en) | 2018-09-13 |
CN110392999B (zh) | 2021-10-22 |
CN110419200A (zh) | 2019-11-05 |
CN110392999A (zh) | 2019-10-29 |
EP3593503B1 (en) | 2021-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110419200B (zh) | 虚拟过滤平台中的分组处理器 | |
US10949379B2 (en) | Network traffic routing in distributed computing systems | |
Firestone | {VFP}: A virtual switch platform for host {SDN} in the public cloud | |
US10749805B2 (en) | Statistical collection in a network switch natively configured as a load balancer | |
KR101969194B1 (ko) | 네트워킹 장치 가상화를 위한 패킷 처리 오프로딩 기법 | |
WO2019204023A1 (en) | Cross-regional virtual network peering | |
US10491522B2 (en) | Data plane integration | |
US10284473B1 (en) | Multifunctional network switch | |
US10091112B1 (en) | Highly-scalable virtual IP addresses in a load balancing switch | |
US10536375B2 (en) | Individual network device forwarding plane reset | |
US11343190B2 (en) | TCAM-based load balancing on a switch | |
US12107776B2 (en) | Adjustable bit mask for high-speed native load balancing on a switch | |
US9374308B2 (en) | Openflow switch mode transition processing | |
US20230072491A1 (en) | Network processing using multi-level match action tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |