CN110392999A - 分布式计算系统中的虚拟过滤平台 - Google Patents

分布式计算系统中的虚拟过滤平台 Download PDF

Info

Publication number
CN110392999A
CN110392999A CN201880017079.5A CN201880017079A CN110392999A CN 110392999 A CN110392999 A CN 110392999A CN 201880017079 A CN201880017079 A CN 201880017079A CN 110392999 A CN110392999 A CN 110392999A
Authority
CN
China
Prior art keywords
grouping
layer
objects
rule
virtual
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.)
Granted
Application number
CN201880017079.5A
Other languages
English (en)
Other versions
CN110392999B (zh
Inventor
D·菲利斯通
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN110392999A publication Critical patent/CN110392999A/zh
Application granted granted Critical
Publication of CN110392999B publication Critical patent/CN110392999B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/325Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Abstract

本文中公开了在被实现在分布式计算系统中的主机处的虚拟交换机处过滤分组的计算系统、设备和相关联的操作方法。在一个实施例中,一种方法包括在虚拟交换机处接收具有报头和有效载荷的分组,以及在虚拟交换机处基于被布置成层级的多个匹配动作表来处理所接收的分组,在该层级中,第一层和第二层分别包含一个或多个匹配操作表,这些表分别包含一个或多个条目,每个条目包含条件和对应的处理动作。

Description

分布式计算系统中的虚拟过滤平台
背景技术
分布式计算系统通常包括路由器、交换机、网桥和互连大量服务器、网络存储设备和其他类型的计算设备的其他物理网络设备。各个服务器可以托管一个或多个虚拟机(“VM”)或其他类型的虚拟化组件。虚拟机可以促进合适应用的执行,以向用户提供期望的云服务或其他合适的计算服务。
发明内容
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也并不旨在用于限制所要求保护的主题的范围。
公共云服务(诸如Amazon WebMicrosoft和Google Cloud)的兴起已经创建了大规模的数据中心计算。提供公共云服务的数据中心经常涉及数百万的服务器数量。云服务提供商不仅需要向客户提供规模、高密度和高性能的虚拟机,还需要丰富的网络语义,诸如具有客户提供的地址空间的私有虚拟网络、可扩展的负载平衡器、安全组和访问控制列表(“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控制)。在其他示例中,虚拟交换机可以基于优先级或其他合适的标准来过滤所接收的分组。
通过实施具有关联的组和/或规则对象的层对象的分层,虚拟交换机可以处理由独立网络控制器开发和创建的所有网络过滤策略。例如,第一网络控制器可以开发和创建与虚拟网络操作的操作相关的第一层对象,而第二网络控制器可以开发和创建与网络地址转换相关的第二层对象。通过将这些过滤策略分离为独立的层对象,可以独立地管理与每个层对象相关的策略,而不会影响其他层对象的操作。例如,第一网络控制器可以利用与虚拟网络操作的操作相关的新策略来更新第一层对象,而不影响第二层对象的操作,因为以累积方式执行任何传入和传出分组的过滤。这样,所公开的技术的若干实施例可以在允许独立开发网络过滤策略而不影响虚拟交换机对其他策略的实施方面具有很大的灵活性。
附图说明
图1是示出根据所公开的技术的实施例的实现虚拟过滤平台的分布式计算系统的示意图。
图2是示出根据所公开的技术的实施例的图1的分布式计算系统的某些硬件/软件组件的示意图。
图3是示出根据所公开的技术的实施例的在分布式计算系统中的主机处实现的虚拟交换机的示意图。
图4是示出根据所公开的技术的实施例的在分布式计算系统中的主机处实现的虚拟交换机中的组织和数据流的示意图。
图5是示出根据所公开的技术的实施例的适合于虚拟交换机的规则对象的示例条件和对应的动作的示意图。
图6A至图6B是示出根据所公开的技术的实施例的在分布式计算系统中的主机处实现的虚拟交换机中的传入和传出数据处理的示意图。
图7是示出根据所公开的技术的实施例的在分布式计算系统中的主机处实现的虚拟交换机中的示例分组处理工作流的示意图。
图8是示出了根据所公开的技术的实施例的适合于在分布式计算系统中的主机处实现的虚拟交换机的示例流表的示意图。
图9A至图9B是示出根据所公开的技术的实施例的用于在虚拟交换机中处理传入/传出分组的过程的流程图。
图10是适合于图1中的分布式计算系统的某些组件的计算设备。
具体实施方式
下面描述用于在数据中心或其他合适的分布式计算系统中的主机处实现的虚拟交换机处过滤分组的系统、设备、组件、模块、例程、数据结构和过程的某些实施例。在以下描述中,包括组件的具体细节以提供对所公开的技术的某些实施例的透彻理解。相关领域的技术人员还应当理解,该技术可以具有其他实施例。该技术也可以在没有下面参考图1至图10描述的实施例的若干细节的情况下实现。
如本文中使用的,术语“分布式计算系统”通常是指具有多个网络节点的互连的计算机网络,这些多个网络节点将多个服务器或主机彼此连接或者连接到外部网络(例如,因特网)。术语“网络节点”通常是指物理网络设备。示例网络节点包括路由器、交换机、集线器、网桥、负载平衡器、安全网关或防火墙。“主机”通常是指被配置为实现例如一个或多个虚拟机或其他合适的虚拟化组件的物理计算设备。例如,主机可以包括具有管理程序的服务器,该管理程序被配置为支持一个或多个虚拟机、虚拟交换机或其他合适类型的虚拟组件。
计算机网络可以在概念上划分为在底层网络上实现的覆盖网络。“覆盖网络”通常是指在底层网络之上实现并且在其上操作的抽象网络。底层网络可以包括彼此互连的多个物理网络节点。覆盖网络可以包括一个或多个虚拟网络。“虚拟网络”通常是指覆盖网络中的底层网络的一部分的抽象。虚拟网络可以包括被称为“租户站点”的一个或多个虚拟端点,这些虚拟端点由用户或“租户”分别使用以访问虚拟网络和相关联的计算、存储或其他合适资源。租户站点可以托管一个或多个租户端点(“TEP”),例如,虚拟机。虚拟网络可以在不同主机上互连多个TEP。覆盖网络中的虚拟网络节点可以通过分别对应于沿着底层网络中的一个或多个物理网络节点的一个或多个网络路由的虚拟链路彼此连接。
如本文中还使用的,“虚拟交换机”通常是指通过在计算设备上执行用于促进与托管在计算设备上的虚拟机的网络通信的软件程序而提供的逻辑交换结构。虚拟交换机可以通过在将分组传递到合适的目的地之前检查分组来智能地指导计算机网络上的通信。在某些实现中,虚拟交换机的软件程序可以嵌入或以其他方式包括在虚拟化组件中,诸如由华盛顿州雷蒙德市的微软公司提供的Hyper-V本机管理程序。在其他实现中,虚拟交换机也可以作为固件组件包括在计算设备的硬件中。
如本文中进一步使用的,匹配动作表(“MAT”)通常是指具有表格式的多个条目的数据结构。每个条目可以包括一个或多个条件和对应的动作。条件可以由网络控制器(例如,SDN控制器)配置以用于匹配分组的一组报头字段。当条件与分组的该组报头字段匹配时,还可以由网络控制器配置该动作以对分组应用操作。示例条件和操作如图5所示。
很多现代可扩展云网络架构依赖于主机网络来实现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可以具有类型(诸如源IP地址)和匹配值列表(每个值可以是单个、范围或前缀)。为了使条件匹配分组,任何匹配值都可以匹配,如在OR子句中。为了使规则148匹配,规则148中的所有条件155都匹配,如在AND子句中。动作156还可以包含类型和特定于该类型的数据结构,其中该数据结构具有执行动作所需要的数据。例如,封装规则148可以将源/目的地IP地址、源/目的地MAC地址、封装格式和密钥用作输入数据以用于封装分组。
规则148可以经由回调接口实现,例如,初始化、处理分组和去初始化。如果规则类型支持有状态实例化,则虚拟交换机141(图3)或其他合适类型的进程处理程序可以在层145(图3)中创建一对流。流也可以被键入并且具有与规则148类似的回调接口。有状态规则148可以包括流的生存时间,该时间是在最后的分组匹配之后所创建的流可以保留在流表中的时间段,除非TCP状态机明确过期。除了图5中的示例动作集之外,还可以添加用户定义的动作,以允许网络控制器116使用用于报头字段操纵的语言来创建自己的规则类型。
规则148分别可能不适合于大型映射表。例如,VNET操作通常涉及对出站/入站业务的CA->PA或PA->CA查找。所公开的技术的若干实施例可以实现通用资源的可扩展模型,例如,映射的散列表。“资源”通常是指端口143上的任何规则148可以引用的端口范围的数据结构。另一示例是可以实现动态源NAT规则148的范围列表。
图6A至图6B是示出根据所公开的技术的实施例的在分布式计算系统100中的主机106处实现的虚拟交换机141中的传入和传出数据处理的示意图。特别地,图6A示出了处理传入分组,而图6B示出了在相反方向上处理传出分组。如图6A所示,虚拟交换机141可以接收传入分组114。通过根据端口对象143'评估分组114的某些报头字段,虚拟交换机141可以确定分组114去往第一虚拟机器144'。因此,虚拟交换机141将分组114引导到第一端口149'(图3)。然后,虚拟交换机141可以基于第一端口对象143'中的各种层、组或规则对象145、146和148处理分组114(以反向对比示出以用于说明),如箭头119所示,并且在上面参考图3和4讨论。一旦所有层、组和规则145、146和148被迭代,则经处理的分组114'可以被转发给第一虚拟机144'。如图6B所示,第一虚拟机144'还可以生成另一分组114”并且将所生成的数据包114”转发给虚拟交换机141。作为响应,虚拟交换机141可以通过在相反方向上迭代各种层、组和规则145、146和148来处理所接收的分组114”,如箭头119'所示,然后将分组114”转发给例如图2中的网络接口卡136,以便传输到分布式计算系统100中的合适的目的地。
图7是示出根据所公开的技术的实施例的在分布式计算系统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的每一侧是相反的,并且在任一方向上的所有连接的散列表中编码来保持流状态。如图8所示,当匹配有状态规则时,层145可以在对应的层流表152a和152b中创建入站和出站流。规则148的方向上的流或分组业务具有规则148的动作,而相反的方向采取相反的动作以保持分层。这种入站和出站流被认为是成对的,因为它们的动作简单地将分组114(图6)改变为对中的相反流的状态,而不是携带自己的动作上下文。
图9A至图9B是示出根据所公开的技术的实施例的用于处理虚拟交换机中的传入/传出分组的某些过程的流程图。尽管下面参考图1和2的分布式计算系统100描述过程的各方面,但是在其他实施例中,过程也可以在具有附加和/或不同组件的其他合适的计算系统中实现。
如图9A所示,过程200可以包括在阶段202在虚拟交换机处接收分组。该分组可以包括具有多个报头字段的报头,报头字段包含诸如源/目的地IP地址、源/目的地端口、和/或其他合适的信息等值。然后,过程200可以包括基于以层级布置的多个层、组和规则对象145、146和148(图4)来处理所接收的分组。多个层对象分别包含一个或多个组对象,这些对象分别包含一个或多个规则对象。每个规则对象可以包含一个或多个条件和由虚拟交换机对分组执行的相应动作。下面参考图9B描述适合于这种处理的示例操作。然后,过程200可以包括用于确定是否接收到附加分组的决策阶段206。响应于确定接收到附加分组,过程200在阶段202处恢复到在虚拟交换机处接收分组。否则,过程200继续到阶段208处的终止操作。
如图9B所示,处理分组可以包括在阶段212在层处检查分组。该层可以包括多个组。因此,操作可以包括在阶段214迭代组。每个组可以包括多个规则。因此,操作可以包括在阶段216迭代每个组中的规则。迭代规则可以包括确定分组的一个或多个报头字段中的值是否匹配层的组中的规则之一的一个或多个条件。响应于确定存在匹配,将规则的动作应用于分组。然后,操作可以包括用于确定是否存在附加层的决策阶段216。响应于确定存在附加层,操作包括在阶段212将具有所应用的动作的分组传递到下一层。否则,操作可以包括在阶段220将经处理的分组转发给例如虚拟机或网络接口卡。
图10是适合于图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。如图8所示,操作系统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 (10)

1.一种用于在分布式计算系统中促进通信的方法,所述分布式计算系统具有分别支持虚拟交换机和一个或多个虚拟机的主机,所述方法包括:
在所述虚拟交换机处接收分组,所述分组具有带有多个报头字段的报头和有效载荷;
在所述虚拟交换机处基于被布置成层级的多个层、组和规则对象来处理所接收的所述分组,在所述层级中,所述多个层对象分别包含一个或多个组对象,所述一个或多个组对象分别包含一个或多个规则对象,所述规则对象中的每个规则对象包含一个或多个条件和由所述虚拟交换机对所述分组可执行的对应的动作,其中针对所述层对象中的一个层对象,处理所接收的所述分组包括,
确定所述分组的所述报头字段中的一个或多个报头字段中的值是否与所述层对象的所述组对象中的所述规则对象中的一个规则对象的所述一个或多个条件匹配;
响应于确定所述分组的所述报头字段中的一个或多个报头字段中的所述值与所述层对象的所述组对象中的所述规则对象中的一个规则对象的所述一个或多个条件匹配,将所述规则对象的所述动作应用于所述分组;以及
将带有所应用的所述动作的所述分组传递给所述层对象中的下一层对象,并且根据所述层对象中的所述下一层对象中的规则对象重复确定操作和应用操作。
2.根据权利要求1所述的方法,其中处理所接收的所述分组包括根据所述层级处理所接收的所述分组,所述层级还包含端口对象作为与所述多个层对象相比的更高级别对象,所述端口对象与所述虚拟交换机的被连接到所述虚拟机中的一个虚拟机的虚拟端口相关联,并且其中所述方法还包括:
确定所述分组是否去往被连接到所述虚拟端口的所述虚拟机中的所述一个虚拟机;以及
响应于确定所述分组去往被连接到所述虚拟端口的所述虚拟机中的所述一个虚拟机,根据所述端口对象中的所述多个层、组和规则对象处理所接收的所述分组。
3.根据权利要求1所述的方法,其中:
所述层对象在所述层级中以相同级别按顺序被独立地布置;并且
处理所接收的所述分组包括以独立地布置的所述顺序针对所述层对象中的每个层对象执行确定操作、应用操作和传递操作。
4.根据权利要求1所述的方法,其中:
所述层对象被独立地编程以对所接收的所述分组实现不同的处理策略;并且
所述方法还包括在所述动作被应用于所接收的所述分组之后,基于所述分组的状态来根据所述层对象中的另一层对象处理从所述层对象中的所述一个层对象传递的所述分组。
5.根据权利要求1所述的方法,其中:
所述层对象被独立地编程以按顺序对所接收的所述分组实现不同的处理策略;
所接收的所述分组是传入分组;
处理所接收的所述分组包括按所述顺序根据所述层对象处理所接收的所述分组;并且
所述方法还包括:
在所述虚拟交换机处接收传出分组;以及
按照所述顺序的相反次序,根据所述层对象处理所接收的所述传出分组。
6.根据权利要求1所述的方法,其中将所述规则对象的所述动作应用于所述分组包括以下中的一项:
利用附加报头封装或解封装所接收的所述分组;
将所接收的所述分组的虚拟IP地址转换为直接IP地址;
基于访问控制列表来阻止或允许所接收的所述分组转发给所述虚拟机;或者
调节反映从所述虚拟机接收或向所述虚拟机传输的分组的数目的计数器。
7.根据权利要求1所述的方法,其中所述层对象中的所述一个层对象包括第一组对象和第二组对象,并且其中处理所接收的所述分组包括:
确定所述分组的所述报头字段中的一个或多个报头字段中的所述值是否与所述第一组对象中的所述规则对象中的一个规则对象的所述一个或多个条件匹配;
响应于确定所述分组的所述报头字段中的一个或多个报头字段中的所述值与所述第一组对象中的所述规则对象中的一个规则对象的所述一个或多个条件匹配,
确定所述第一组对象是否被标记为终止;以及
响应于确定所述第一组对象被标记为终止,将所述规则对象的所述动作应用于所述分组,而不根据所述第二组对象中的所述规则对象处理所接收的所述分组。
8.根据权利要求1所述的方法,其中所述层对象中的所述一个层对象包括第一组对象和第二组对象,并且其中处理所接收的所述分组包括:
确定所述分组的所述报头字段中的一个或多个报头字段中的所述值是否与所述第一组对象中的所述规则对象中的一个规则对象的所述一个或多个条件匹配;
响应于确定所述分组的所述报头字段中的一个或多个报头字段中的所述值与所述第一组对象中的所述规则对象中的一个规则对象的所述一个或多个条件匹配,
确定所述第一组对象是否被标记为终止;以及
响应于确定所述第一组对象未被标记为终止,根据所述第二组对象中的所述规则对象处理所接收的所述分组,而不应用所述第一组对象中的所述规则对象的所述动作。
9.根据权利要求1所述的方法,还包括在根据所述层对象中的所有层对象处理所接收的所述分组之后,利用累积地应用的动作将经处理的所述分组转发给所述虚拟机中的一个虚拟机。
10.一种分布式计算系统中的计算设备,所述分布式计算系统具有分别支持虚拟交换机和一个或多个虚拟机的主机,所述计算设备包括:
处理器;以及
存储器,所述存储器包含指令,所述指令由所述处理器可执行以提供虚拟交换机并且使得所述计算设备:
接收具有报头和有效载荷的分组;以及
响应于接收到所述分组,在所述虚拟交换机处基于被布置成层级的多个匹配动作表来处理所接收的所述分组,在所述层级中,多个层对象分别包含一个或多个组,所述一个或多个组分别包含一个或多个规则,所述规则中的每个规则包含具有条件和动作的所述匹配动作表中的一个匹配动作表中的条目,其中处理所接收的所述分组包括,
选择所述层中的每个层中的所述规则中的一个规则作为匹配所接收的所述分组;以及
将来自所述多个层的所选择的所述规则的所述动作累积地应用于所接收的所述分组。
CN201880017079.5A 2017-03-10 2018-03-06 分布式计算系统中的虚拟过滤平台 Active CN110392999B (zh)

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,319 2017-06-30
US15/639,319 US10516728B2 (en) 2017-03-10 2017-06-30 Virtual filtering platform in distributed computing systems
PCT/US2018/020990 WO2018165059A1 (en) 2017-03-10 2018-03-06 Virtual filtering platform in distributed computing systems

Publications (2)

Publication Number Publication Date
CN110392999A true CN110392999A (zh) 2019-10-29
CN110392999B CN110392999B (zh) 2021-10-22

Family

ID=63445261

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201880017079.5A Active CN110392999B (zh) 2017-03-10 2018-03-06 分布式计算系统中的虚拟过滤平台
CN201880017017.4A Active CN110419200B (zh) 2017-03-10 2018-03-06 虚拟过滤平台中的分组处理器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201880017017.4A Active CN110419200B (zh) 2017-03-10 2018-03-06 虚拟过滤平台中的分组处理器

Country Status (4)

Country Link
US (2) US10715585B2 (zh)
EP (2) EP3593503B1 (zh)
CN (2) CN110392999B (zh)
WO (2) WO2018165059A1 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
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 瑞昱半導體股份有限公司 一種閘道器控制晶片及其網路封包處理方法
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
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
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
US11829793B2 (en) 2020-09-28 2023-11-28 Vmware, Inc. Unified management of virtual machines and bare metal computers
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
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
US11799785B2 (en) 2021-04-09 2023-10-24 Microsoft Technology Licensing, Llc Hardware-based packet flow processing
CN117203615A (zh) 2021-04-09 2023-12-08 微软技术许可有限责任公司 经由分发扩展主机策略
US11757782B2 (en) * 2021-04-09 2023-09-12 Microsoft Technology Licensing, Llc Architectures for disaggregating SDN from the host
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
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
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
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
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技术的流量过滤的协议解析方法
CN117749865A (zh) * 2024-02-06 2024-03-22 苏州元脑智能科技有限公司 会话处理方法、系统、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101834785A (zh) * 2010-04-07 2010-09-15 中兴通讯股份有限公司 一种实现流过滤的方法和装置
CN102158514A (zh) * 2010-02-11 2011-08-17 中兴通讯股份有限公司 一种通信系统以及关联业务策略信息的方法
CN102647325A (zh) * 2012-03-23 2012-08-22 杭州华三通信技术有限公司 一种实现QinQ终结的方法和装置
US20130067067A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Cross-Machine Event Log Correlation
CN103036761A (zh) * 2012-12-21 2013-04-10 浙江宇视科技有限公司 一种隧道服务器和客户端装置
US20150244842A1 (en) * 2014-02-25 2015-08-27 Alcatel-Lucent Usa Inc. Packet classification using multiple processing units

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101035111B (zh) * 2007-04-13 2010-10-13 北京启明星辰信息技术股份有限公司 一种智能协议解析方法及装置
US8930690B2 (en) * 2012-03-21 2015-01-06 Microsoft Corporation Offloading packet processing for networking device virtualization
US9172557B2 (en) * 2012-08-17 2015-10-27 International Business Machines Corporation Load balancing overlay network traffic using a teamed set of network interface cards
US10104004B2 (en) 2012-11-08 2018-10-16 Texas Instruments Incorporated Openflow match and action pipeline structure
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
KR20160124161A (ko) 2014-02-19 2016-10-26 닛본 덴끼 가부시끼가이샤 네트워크 제어 방법, 네트워크 시스템, 장치, 및 프로그램
BR112016025264B1 (pt) * 2014-05-05 2022-02-01 Telefonaktiebolaget Lm Ericsson (Publ) Dispositivo de plano de controle em um sistema de computação em nuvem para executar uma pluralidade de máquinas virtuais para implantar a virtualização de função de rede
US11172891B2 (en) * 2015-02-09 2021-11-16 Nitto Denko Corporation 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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102158514A (zh) * 2010-02-11 2011-08-17 中兴通讯股份有限公司 一种通信系统以及关联业务策略信息的方法
CN101834785A (zh) * 2010-04-07 2010-09-15 中兴通讯股份有限公司 一种实现流过滤的方法和装置
US20130067067A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Cross-Machine Event Log Correlation
CN102647325A (zh) * 2012-03-23 2012-08-22 杭州华三通信技术有限公司 一种实现QinQ终结的方法和装置
CN103036761A (zh) * 2012-12-21 2013-04-10 浙江宇视科技有限公司 一种隧道服务器和客户端装置
US20150244842A1 (en) * 2014-02-25 2015-08-27 Alcatel-Lucent Usa Inc. Packet classification using multiple processing units

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HTTPS://WWW.OPENNETWORKING.ORG: "OpenFlow Switch Specification Version 1.2", 《OPEN NETWORKING FOUNDATION》 *

Also Published As

Publication number Publication date
EP3593503A1 (en) 2020-01-15
US10516728B2 (en) 2019-12-24
EP3593504A1 (en) 2020-01-15
CN110392999B (zh) 2021-10-22
US10715585B2 (en) 2020-07-14
US20180262599A1 (en) 2018-09-13
WO2018165059A1 (en) 2018-09-13
CN110419200A (zh) 2019-11-05
EP3593503B1 (en) 2021-09-15
US20180262556A1 (en) 2018-09-13
WO2018165060A1 (en) 2018-09-13
CN110419200B (zh) 2022-01-11

Similar Documents

Publication Publication Date Title
CN110392999A (zh) 分布式计算系统中的虚拟过滤平台
US11595240B2 (en) Dynamic service chaining and late binding
Reich et al. Modular sdn programming with pyretic
Trois et al. A survey on SDN programming languages: Toward a taxonomy
CN105074692B (zh) 使用基于逻辑多维标签的策略模型的分布式网络管理系统
Costa et al. {NaaS}:{Network-as-a-Service} in the Cloud
Moshref et al. {vCRIB}: Virtualized Rule Management in the Cloud
Banikazemi et al. Meridian: an SDN platform for cloud network services
Morreale et al. Software defined networking: Design and deployment
CN104718723B (zh) 用于虚拟网络中的联网和安全服务的框架
CN107852368A (zh) 用于网络服务的高度可用的服务链
CN105684357A (zh) 虚拟机中地址的管理
CN103930882A (zh) 具有中间盒的网络架构
US20170147708A1 (en) Efficient graph database traversal
Bremler-Barr et al. Openbox: Enabling innovation in middlebox applications
Wang et al. Enabling automatic composition and verification of service function chain
Gadre et al. Centralized approaches for virtual network function placement in SDN-enabled networks
Cao et al. A study on application-towards bandwidth guarantee based on SDN
Voellmy Programmable and scalable software-defined networking controllers
Alvarado-Unamuno et al. Design and Implementation of Traffic Balancer over Overlay Networks with Vxlan Tunneling
Antonova et al. Traffic Management System in Promising Mobile Networks Based on SDN/NFV Technologies
Paul Software Defined Application Delivery Networking
Sagkriotis Accelerating orchestration with in-network offloading
Abdu Jyothi Network flow optimization for distributed clouds
Laracy et al. Towards a Rigorous Software Architecture Documentation Process: A Demonstration with the Real-time Immersive Network Simulation Environment (RINSE)

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