CN112906077A - 无状态集群边缘上的有状态服务 - Google Patents

无状态集群边缘上的有状态服务 Download PDF

Info

Publication number
CN112906077A
CN112906077A CN202110183740.3A CN202110183740A CN112906077A CN 112906077 A CN112906077 A CN 112906077A CN 202110183740 A CN202110183740 A CN 202110183740A CN 112906077 A CN112906077 A CN 112906077A
Authority
CN
China
Prior art keywords
node
flow
cluster
edge
nodes
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.)
Pending
Application number
CN202110183740.3A
Other languages
English (en)
Inventor
M·帕尔萨
J·贾殷
洪新华
A·森谷普塔
范凯伟
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.)
Nicira Inc
Original Assignee
Nicira Inc
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
Priority claimed from US14/541,501 external-priority patent/US10044617B2/en
Priority claimed from US14/541,517 external-priority patent/US9866473B2/en
Priority claimed from US14/541,477 external-priority patent/US11533255B2/en
Priority claimed from US14/541,530 external-priority patent/US9876714B2/en
Application filed by Nicira Inc filed Critical Nicira Inc
Publication of CN112906077A publication Critical patent/CN112906077A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based 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/46Cluster building
    • 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
    • H04L45/7453Address table lookup; Address filtering using hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开涉及无状态集群边缘上的有状态服务。为了使得能够在边缘处动态缩放网络服务,提供了使得能够添加新节点或去除现有节点,同时保持通过有状态服务的流的紧密度的新颖系统和方法。该方法提供了可以动态调整大小以操纵和处理利用有状态网络服务的网络流量的网络节点集群。流经边缘的现有流量在集群成员资格更改期间和之后继续工作。集群中的所有节点都以活动‑活动模式操作,即,它们正在接收和处理流量流,从而最大化可用处理能力的利用率。

Description

无状态集群边缘上的有状态服务
本申请是申请日为2014年12月30日、申请号为 201480083356.4、发明名称为“无状态集群边缘上的有状态服务”的发明专利申请的分案申请。
技术领域
本发明公开通常涉及无状态集群边缘上的有状态服务。
背景技术
诸如防火墙和NAT的有状态网络服务在流量流进和流出的网络边缘处是常见的。它提供基本的安全能力,诸如网络安全网关服务和用于性能和可用性的Web负载平衡。随着网络流量的增加,对边缘服务的需求也增加,从而需要为边缘服务分配附加的资源。
发明内容
为了使得能够在边缘处动态缩放网络服务,一些实施例提供能够添加新节点或去除现有节点,同时保持通过有状态服务的流的紧密度 (affinity)的系统和方法。一些实施例提供了可以动态调整大小以操纵和处理利用有状态网络服务的网络流量的网络节点集群。流经边缘的现有流量在集群成员资格(membership)更改期间和之后继续工作。在一些实施例中,集群中的所有节点都以活动-活动模式操作,即,它们正在接收和处理流量流,从而最大化可用处理能力的利用率。
为了创建在网络(或网络段)边缘处执行有状态服务的动态可扩展的节点集群,一些实施例将流分发到集群的不同节点,使得集群的所有节点都在主动参与有状态服务。在一些实施例中,流通过一致性散列函数散列到集群的节点中。一致性散列函数是在集群的节点之上(或基于集群的成员资格),使得不同的流将被几乎均匀地分发到集群的不同节点。在这些实施例中的一些实施例中,通过一致性散列函数产生的每个可能的散列值都被映射到集群中的节点,并且每个节点被映射到至少一个可能的散列值。因此,集群的每个节点都在主动处理至少一个流的有状态服务。为了确保为每个流正确执行有状态服务,在流的生命周期期间,将每个流分配给集群中的节点。分配给流的节点管理和维护与流相关的状态信息。在一些实施例中,流的标识符用于将属于该流的分组引导到所分配的节点。
在从ECMP过程接收到分组之后,在一些实施例中,节点识别流的所有者节点,并将分组转发到识别出的所有者节点。在一些实施例中,边缘集群中的每个节点对分组中的流标识符(例如,源(IP) 地址、源端口、目的地(IP)地址、目的地端口、传输协议的五元组) 执行一致性散列,以便识别流的所有者节点。
在一些实施例中,由特定流的一致性散列识别出的所有者节点不是对流执行有状态服务最合适的边缘节点。当通过一致性散列识别出的流的所有者节点不具有正确处理流所需的必要状态信息,而是这种状态信息被保持在集群中的另一个节点处时,情况就是这样。该另一个节点可以是流的前所有者节点,或者可以是需要其状态信息来正确处理该流的相关流的所有者节点,为了提供一致性有状态服务,在一些实施例中,通过一致性散列识别出的所有者节点将分组委派给其中保持状态信息的节点。
一些实施例允许集群中的异构服务支持。在这些实施例中的一些实施例中,一致性散列函数是基于被调用以服务流的服务的类型。具体而言,在一些实施例中,不同的节点集合用于不同的服务,即,不同的服务基于不同的节点集合具有不同的一致性散列函数。
在一些实施例中,流委派是基于驻留在边缘集群的节点中的固定流(pinnedflow)表和间接表。间接表和固定流表中的每个条目对应于流。每个间接表条目指示其边缘节点根据条目转发或委派属于流的分组。用于流的固定流表中的每个条目指示其边缘节点本地处理流(因此固定或锚定流)并且为流提供有状态服务,而不管节点是否是流的所有者节点。不是所有者节点将分组转发到流的状态信息所保持处的委派节点,而是一些实施例将状态信息转发给所有者节点。
在一些实施例中,所有者节点的标识符不仅基于所使用的散列函数,而且还基于集群中的边缘节点的成员资格。换句话说,确定哪个边缘节点是给定流的所有者节点部分地基于多少边缘节点在能够提供有状态服务的边缘集群中。因此,边缘集群中的成员资格的任何变化将更改一致性散列的结果。边缘集群的大小可以被改变以添加新节点或去除现有节点。一些实施例允许这种动态地,即,在边缘集群正在主动处理利用有状态网络服务的网络流量的同时,调整边缘集群的大小。流经边缘的现有流量在集群的成员资格改变期间和之后继续被处理。为了通过调整边缘集群的大小不间断地提供有状态服务,一些实施例在其原始所有者节点处为现有流锚定有状态服务,直到这些现有流完成。在一些实施例中,边缘集群中的节点将属于现有流的分组转发到其原始所有者节点,其原始所有者节点仍然维持有状态服务所需的现有流的状态信息。
在一些实施例中,边缘节点的去除在不中断由边缘集群提供的有状态服务的情况下优雅地完成。对于这些实施例中的一些实施例,现有流的有状态处理在节点去除过程期间被保持在其原始所有者节点上。
在一些实施例中,当驻留在第一节点上的第一流的状态信息是分配给第二节点的第二流的必要状态信息时,流的委派也是必需的。在一些实施例中,第一流和第二流是通过一致性散列分配给不同所有者节点的相关流。在一些实施例中,当相同过程的控制流和数据流被分配给不同所有者节点时,会发生这种情况,因为它们具有不同的流标识符。为了确保相关流在相同节点上维护的相同状态信息集合中操作,一些实施例使用流委派来强制相关流被同一节点有状态地进行处理,即使这两个相关流通过一致性散列被散列到不同的所有者节点。
在一些实施例中,根据原始地址的流的所有者节点根据转换的 DNAT地址将间接消息推送到流的所有者节点,以便将流的分组保持在同一节点上。结果,由转换的DNAT地址识别出的所有者节点具有用于将流的分组委派给通过原始地址识别出的所有者节点的间接表条目,其具有固定流表条目,以基于DNAT地址接收和处理具有流标识符的分组。在一些其它实施例中,不是进行流委派,而是执行 DNAT的边缘集群在不使用可以被转换的目的地地址的情况下确定所有者节点。换句话说,集群只对不受DNAT影响的字段(例如,源地址字段、源端口字段、协议字段)应用一致性散列。
在SNAT的情况下,集群中的边缘节点改变传出南向分组的源地址。分组的SNAT在通过其流的所有者节点路由之后发生。在一些实施例中,边缘集群中的每个节点在执行地址转换时使用其自己的唯一SNAT地址。返回北向流量基于源地址字段中的那些唯一SNAT地址被转发到相同的所有者节点。所有者节点然后在维护有状态 SNAT过程的状态的同时应用逆NAT。
前面的发明内容旨在用作对本发明的一些实施例的简要介绍。它并不意味着是对本文档中公开的所有发明性主题的介绍或概述。以下的具体实施方式和在具体实施方式中提及的附图将进一步描述在本发明内容中描述的实施例以及其它实施例。相应地,为了理解本文档描述的所有实施例,需要对发明内容、具体实施方式和附图进行全面地审查。此外,所要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制,而是要由所附权利要求来限定,因为所要求保护的主题可以在不脱离本主题的精神的情况下以其它特定形式来体现。
附图说明
本发明的新颖特征在所附权利要求中阐述。但是,为了解释的目的,在以下图中阐述了本发明的若干实施例。
图1概念性地示出了网络中的节点集群,其中网络流量被分发到用于执行有状态服务的集群中的节点。
图2a-b示出了包括用于处理和/或过滤进出网络的流量的多个边缘节点的边缘集群。
图3概念性地示出了基于网络中的流的一致性散列将有状态服务分发到节点集群。
图4示出了基于一致性散列和ECMP在集群中的节点之间转发分组。
图5示出了网络中属于相同流的北向和南向流量的有状态处理。
图6a-b概念性地示出了其中基于所提供的服务流被分配给不同的节点集合的集群。
图7概念性地示出了用于确保使用流的所有者节点一致性地执行流的有状态过程的过程。
图8示出了将分组从流的所有者节点委派给边缘集群内的另一个节点。
图9概念性地示出了用于确定边缘节点是否应该转发接收到的分组或者对接收到的分组执行有状态过程的过程。
图10示出了将状态信息转发到通过一致性散列识别出的所有者节点。
图11示出了边缘集群的成员资格的变化如何改变一致性散列将流分配给边缘节点。
图12a-b示出了由于向边缘集群添加新节点而导致的分组的转发。
图13概念性地示出了在新添加的节点的学习模式期间和之后用于边缘集群的ECMP过程。
图14示出了网络管理器和边缘节点之间的控制消息的示例序列。
图15概念性地示出了用于在集群调整大小期间在边缘节点处管理这些表的过程。
图16-17概念性地示出了用于基于固定流表、间接表和新流表在集群中的边缘节点之间进行分组委派的过程。
图18概念性地示出了其中现有流被锚定到其原始所有者节点的示例节点去除操作。
图19示出了在用于去除节点的学习模式期间和之后的边缘集群的操作。
图20示出了使用流委派在同一节点处处理相关流。
图21概念性地示出了用于建立流委派以便在边缘节点的集群中有状态地处理相关流的过程。
图22a概念性地示出了由边缘集群执行的示例DNAT服务。
图22b示出了由边缘集群使用流委派来提供有状态DNAT服务。
图23a-b示出了当执行DNAT时不使用目的地地址字段用于节点分配的边缘集群。
图24a-b示出了边缘集群中的节点如何提供有状态的SNAT服务。
图25示出了具有被分组成集群或部分的主机机器的数据中心。
图26示出了数据中心,数据中心包括主机机器的集群或部分,其主要托管用作用于其它集群中的计算VM的边缘节点的边缘服务 VM。
图27示出了用于不同租户的逻辑网络,其中每个租户由用作逻辑网络的边缘服务集群的一组边缘服务VM服务。
图28示出了正在操作虚拟化软件的示例主机机器。
图29示出了正在主机机器中运行的边缘服务VM。
图30概念性地示出了实现本发明的一些实施例的电子系统。
具体实施方式
在以下描述中,出于解释的目的阐述了许多细节。但是,本领域普通技术人员将认识到,本发明可以在不使用这些具体细节的情况下进行实践。在其它情况下,众所周知的结构和设备以框图的形式示出,以便防止用不必要的细节模糊本发明的描述。
为了使得能够在边缘处动态缩放网络服务,一些实施例提供能够添加新节点或去除现有节点,同时保持通过有状态服务的流的紧密度 (affinity)的系统和方法。一些实施例提供可以动态调整大小以操纵和处理利用有状态网络服务的网络流量的网络节点集群。流经边缘的现有流量在集群成员资格更改期间和之后继续工作。在一些实施例中,集群中的所有节点以活动-活动模式操作,即,它们正在接收和处理流量流,从而最大化可用处理能力的利用率。
为了创建在网络(或网络段)边缘处执行有状态服务的动态可扩展的节点集群,一些实施例将流分发到集群的不同节点,使得集群的所有节点都在主动参与有状态服务。在一些实施例中,流通过一致性散列函数散列到集群的节点中。一致性散列函数是在集群的节点之上 (或基于集群的成员资格),使得不同的流将被几乎均匀地分发到集群的不同节点。在这些实施例中的一些实施例中,通过一致性散列函数产生的每个可能的散列值都被映射到集群中的节点,并且每个节点被映射到至少一个可能的散列值。因此,集群的每个节点都在主动处理至少一个流的有状态服务。
为了确保为每个流正确执行有状态服务,在流的生命周期期间,将每个流分配给集群中的节点。分配给流的节点管理和维护与流相关的状态信息。在一些实施例中,流的标识符用于将属于该流的分组引导到所分配的节点。对于一些实施例,图1概念性地示出了网络100 中的节点集群110,其中网络流量被分发到用于执行有状态服务的集群中的节点。集群中的流量分发通过使用流标识符支持流与其分配的节点之间的紧密度或对应关系。
如图所示,网络100包括服务集群110,其包括能够向网络提供服务的处理节点111-113。在一些实施例中,由集群110提供的服务包括网络地址转换(NAT)和防火墙。在一些实施例中,这些服务在网络的边缘处实现,用于处理和/或过滤进出网络的流量。因此,这些服务有时被称为边缘服务,并且集群110中执行这些边缘服务的节点被称为边缘节点。在一些实施例中,由集群110中的节点提供的服务是关于流的有状态服务。换句话说,其任务是提供流的有状态服务的节点需要维护和管理流的状态。
一些实施例中的流涉及属于传输层(即,层4或L4)连接或会话的分组集合。在一些实施例中,处理流的节点包括有状态引擎,以跟踪在传输层连接上发生的协议交换,以便提供有状态服务(例如,根据一组规则做出防火墙评估)。在一些实施例中,传输层连接基于传输控制协议(TCP),并且因此L4或传输层连接被称为TCP连接。
如图所示,集群110正在接收包括分组150的网络流量,分组 150包括用于L2、L3和L4层的报头。在一些实施例中,分组的L2 报头包括源和目的地MAC(媒体访问控制)地址,L3报头包括源和目的地IP地址,并且L4报头包括源端口、目的地端口以及传输协议标识符。在一些实施例中,源IP地址、目的地IP地址、源端口、目的地端口和协议共同形成用于唯一识别流的标识符元组(例如,五元组传输连接标识符)。
如所提到的,在一些实施例中,每个流被分配给节点,使得流的状态信息由该节点维护和管理。在一些实施例中,被分配操纵特定流的节点被称为流的所有者节点。为了确保属于流的分组由集群中的相同节点(即,流的所有者节点)处理,一些实施例使用分组中的流标识符来决定服务集群中的哪个节点应该用于处理分组。如图所示,流“x1”、“x2”和“x3”分别基于流x1、x2和x3的流标识符分配给 111(节点A)。流“yl”、“y2”和“y3”分别基于流y1、y2和y3 的流标识符分配给112(节点B)。基于流z1、z2和z3分别基于流“z1”、“z2”和“z3”的流标识符分配给113(节点C)。这种分配操作通过集群110中的基于流的节点分配模块160概念上示出。在一些实施例中,这种分配操作由实现节点集群的计算设备或由各个节点111-113自身执行。
节点是计算设备或在计算设备上运行的软件,其基于网络分组中的数据执行操作。一些网络节点接收和/或转发分组。一些网络节点基于数据分组中的数据执行计算或其它应用(例如,计算节点)。在一些实施例中,节点由独立的物理路由器实现。在一些实施例中,节点是在运行管理程序以用作其主机机器的计算设备上实现的虚拟机。在一些实施例中,一个计算设备托管作为网络中的节点的多个虚拟机。节点111-113是在网络100和外部世界(例如,互联网或网络的其它部分)之间的分组上提供服务操作(例如,NAT或防火墙)的边缘服务节点。
节点111-113中的每一个还能够为属于分配给节点的流的分组提供所需的有状态服务。对于有状态服务,在一些实施例中,节点将为其处理的每个流创建状态。因此,每个流的状态由一个节点(即,流的所有者节点)一致性地维护。如图所示,节点111(节点A)是流x1、x2和x3的所有者节点并且维护其状态信息用于有状态处理。同样,节点112(节点B)是流y1、y2和y3的所有者节点并且维护其状态,以及节点113(节点C)是流z1、z2和z3的所有者节点并且维护其状态。在一些实施例中,相同集群的节点(例如,集群110的节点111-113)属于相同的L2段,并且可以通过L2级协议向彼此转发分组。
在一些实施例中,边缘集群110由包括一组节点的容器定义。在一些实施例中,在一些实施例中,节点容器(以及因此对应的边缘集群)在一些实施例中由网络管理器使用VM模板来定义。网络管理员发送和接收到容器中的节点的事件。网络管理器还管理容器中节点的生命周期。在一些实施例中,为集群面向“北”(与计算节点)的接口定义了“北”容器,以便促进用于南向流量的资源(例如,边缘节点的地址)的配置。同样,为集群面向“南”(与外部世界或互联网)的接口定义了“南”容器,以便促进用于北向流量的资源的配置。
下面描述了本发明的若干更详细的实施例。第I部分进一步描述其中基于流的有状态网络服务在集群中的边缘服务节点之间分布的系统。第II部分描述用于动态调整边缘服务节点集群大小的方法。第 III部分描述边缘服务节点集群对相关流的处理。第IV部分描述当将有状态服务分发到边缘节点集群时的地址转换处理。第V部分描述被实现为由计算设备托管的虚拟机的边缘服务节点。第VI部分描述用作边缘节点VM的主机机器的示例计算设备。最后,第IV部分描述实现本发明的一些实施例的电子系统。
I.将有状态服务分发到边缘节点
a.ECMP
如所提到的,集群110是在网络100和外部世界之间提供边缘服务的边缘集群。在一些实施例中,来自外部的传入流量使用ECMP (等成本多路径路由)分发给任何数量的边缘节点。在一些实施例中,边缘节点通过BGP(边界网关协议)或OSPF(开放最短路径优先)路由的通告与相邻路由器一起参与ECMP。进入到外部世界中的传出流量同样可以分发给参与ECMP过程的任何边缘节点。
图2a-b示出了边缘集群210,其包括用于处理和/或过滤进出网络(或网络段)200的流量的多个边缘节点211-214。网络(或网络段)200是互联的计算和通信资源的集合,其与外部世界290(例如,互联网或其它网段)的通信流量被逻辑上位于与外部世界接口的网络 200的“边缘”处的边缘集群210控制、监视或过滤。
一些实施例涉及作为南向流量从外部世界进入网络的网络流量和作为北向流量离开网络进入到外部世界中的流量。如图所示,网络包括通过边缘集群210接收来自外部世界290的网络流量并且因此用作北向流量的终点的多个计算节点211-214。计算节点还生成通过边缘集群210去往外部世界290的流量(或转发流量),并且因此是南向流量的起源。
图2a示出了通过边缘集群210进入到计算节点221-224中从外部世界290(例如,互联网或其它网络段)进入到网络200中的向北流量。如图所示,北向流量由ECMP路由器240分发给边缘集群 210中的边缘节点211-214进行有状态处理。经处理的北向流量然后通过L2交换或L3路由被转发到计算节点221-224。图2b示出了来自计算节点221-224通过边缘集群210到外部世界290的南向流量。南向流量由ECMP路由器240(或网络200中的另一个ECMP路由器)分发到边缘集群210中的边缘节点211-214进行有状态处理。经处理的南向流量然后被转发到外部世界290(例如,互联网或其它网段)。
b.所有者节点
在一些实施例中,流的两个方向上的流量被分配为由同一节点操纵,以便确保有状态网络服务正确工作。一些实施例基于流标识符将分组分配给边缘节点。在一些实施例中,ECMP是独立于流标识的操作。不能保证ECMP会一致性地将相同流的分组分发到同一边缘节点进行有状态处理。因此,一些实施例将无状态一致性散列函数应用到每个分组的流标识符,以便识别其流的所有者节点。对于每个给定的流,一致性散列为流的所有分组产生一致性散列值。这确保了属于相同流的分组始终由同一节点(即,流的所有者节点)进行有状态地处理,即使使用了ECMP来分发分组。
图3概念性地示出了基于网络300中的流的一致性散列将有状态服务分发到节点的集群310。集群300包括节点311-314。如图所示,网络300中的分组350基于ECMP过程320被分发到节点311。但是,这些分组350所属的流根据一致性散列函数330被分配给四个节点311-314。如图所示,流F1被散列到节点311、流F2被散列到节点312、流F3被散列到节点313并且流F4被散列到节点314。但是,在一些实施例中,不能保证ECMP过程320将把分组路由到分组的流被散列到的节点。例如,即使一致性散列330将把流F2散列到节点312,也不能保证属于流F2的分组被ECMP 320路由到节点312。
在从ECMP过程接收到分组时,在一些实施例中,节点识别流的所有者节点,并将分组转发到识别出的所有者节点。在一些实施例中,边缘集群中的每个节点对分组中的流标识符执行一致性散列(例如,源(IP)地址、源端口、目的地(IP)地址、目的地端口、传输协议的五元组)以便识别流的所有者节点。图4示出了在ECMP路由之后根据流的一致性散列来转发分组。
图4示出了基于一致性散列和ECMP在集群310中的节点311- 314之间转发分组。节点311-314分别是流F1、F2、F3和F4的所有者节点。ECMP将分组451-454分发到集群310的节点。在四个阶段401-404中,该图分别示出了分组451-454的转发。
在第一阶段401,ECMP过程将分组451路由到节点311(节点 A)。分组451属于流F2。节点311对分组451的流标识符执行一致性散列,并且确定流F2的所有者节点是节点312(节点B)。基于该确定,节点311将分组451转发到节点312进行有状态处理,其中流F2的状态被保持。如图所示,在节点312处保持的流F2的状态变为“S1”。
在第二阶段402,ECMP过程将分组452路由到节点312(节点 B)。分组451也属于流F2。节点312对分组452的流标识符执行一致性散列,并确定流F2的所有者节点是节点312本身。基于该确定,节点312保持分组452用于有状态处理。如图所示,由于分组452的有状态处理,流F2在节点312处的状态已被更新为“S2”。
在第三阶段403,ECMP过程将分组453路由到节点313(节点 C)。分组453属于流程F4。节点313对分组453的流标识符执行一致性散列,并确定流F4的所有者节点是节点314(节点D)。基于该确定,节点313将分组453转发到节点314进行有状态处理,其中流F4的状态被保持。如图所示,保持在节点312处的流F4的状态变为“S1”。另一方面,流F2的状态在节点312处仍然保持为“S2”。
在第四阶段404,ECMP过程将分组454路由到节点314(节点 D)。分组454属于流F2。节点314对分组454的流标识符执行一致性散列,并确定流F2的所有者节点是节点312。基于该确定,节点 314将分组454转发到节点432进行有状态处理,其中F2的状态被保持。如图所示,流F2的状态已变为“S3”。
如所提到的,在一些实施例中,边缘集群操纵进入到网络中的北向流量以及离开网络的南向流量。不管流量的方向和所采用的 ECMP过程如何,都使用一致性散列来一致性地识别流的所有者节点。换句话说,不管流量的方向如何,属于同一流的分组将在同一所有者节点处被有状态地进行处理。
图5示出了属于网络300中的相同流的北向和南向流量的有状态处理。图5示出了北向分组551的转发路径和南向分组552的转发路径。分组551和552两者都属于流F2,其所有者节点是节点B 312。
如图所示,北向分组551由ECMP路由到节点C 313。节点C 又通过一致性散列将北向分组551转发到节点B 312。南向分组552 由ECMP路由到节点A 311。节点A 311然后通过一致性散列将分组552转发到节点B 312。通过使用一致性散列,即使分组551和 552是不同的方向,节点C和节点A两者也识别流F2的同一所有者节点(节点B 312)。
一些实施例允许集群中的异构服务支持。在这些实施例中的一些实施例中,一致性散列函数是基于被调用以服务流的服务的类型。具体而言,在一些实施例中,不同的节点集合用于不同的服务,即,不同的服务基于不同的节点集合具有不同的一致性散列函数。例如,一些实施例具有用于ALG的第一节点集合、用于NAT的第二节点集合和用于防火墙的第三节点集合。因此当分组到达时,节点将分组的流映射到服务,比如NAT,并且使用(为NAT供给的)输入节点集进行一致性散列、照顾NAT服务、并且根据散列结果将分组转发到所有者节点。在一些实施例中,基于例如服务是“慢路径”服务(例如,ALG)还是“快路径”服务(例如,防火墙),不同的服务在集群中被分配不同的节点集合。
图6a-b概念性地示出了其中基于所提供的服务流该分配给不同的节点集合的集群600。具体而言,传入分组的流的所有者节点由特定于所提供的服务的一致性散列来识别。如图6a所示,使用第一一致性散列函数621将流分配到集群600中用于第一边缘服务(例如, ALG)的节点,而使用第二一致性散列函数622将流分配到集群600 中用于第二边缘服务(例如,防火墙)的节点。
集群600具有节点611-617(节点A至G)。如图所示,第一一致性散列函数621是在节点611、612、614和615(节点A、B、C、 E)上的散列函数。第二一致函数622是在节点612、613、615、616、617(节点B、C、E、F、G)上的散列函数。换句话说,使用第一边缘服务的流只分配给节点A、B、C和E,并且使用第二边缘服务的流只分配给节点B、C、E、F和G。因此,如图6b所示,节点A、 B、D和E正在维护使用第一边缘服务的流的状态,而节点B、C、 E、F和G正在维护使用第二边服务的流的状态。在一些实施例中,集群中的一些节点可以提供多种不同的边缘服务。例如,节点612和 615(B和E)向第一边缘服务和第二边缘服务两者提供有状态的边缘服务,并且因此可以通过第一一致性散列函数621或第二一致性散列函数622来选择。在未示出的一些实施例中,集群中的每个节点只能提供一种类型的边缘服务。
对于一些实施例,图7概念性地示出了用于确保使用流的所有者节点一致性地执行流的有状态过程,而不管流的分组最初(例如,由 ECMP)路由到哪里的过程700。在一些实施例中,过程700由边缘服务集群中的边缘节点执行。过程700在当它在网络边缘处接收到或者南向离开到外部世界或者北向进入到网络中的分组时开始。在一些实施例中,该分组最初由ECMP分发给边缘节点。
该过程识别(在710处)传入分组的流。在一些实施例中,这种识别是基于分组中的流标识符,诸如源/目的地地址、源/目的地端口和在分组的L3和L4报头中的协议字段。
然后,该过程通过例如将流标识符散列成一致性散列值来计算 (在720处)识别出的流的一致性散列。在一些实施例中,不同的一致性散列函数用于不同的服务,如以上参考图6描述的。在这些实施例中的一些实施例中,该过程使用传入分组的流标识符来识别特定的边缘服务,并且然后对识别出的边缘服务应用对应的一致性散列函数。
然后,该过程映射(在730处)一致性散列值,以识别流的所有者节点。接下来,该过程确定(在740处)运行过程700的边缘节点是否是流的所有者节点。如果边缘节点本身是流的所有者节点,则过程进行到750,以基于流来本地执行对分组的有状态服务。如果边缘节点本身不是流的所有者节点,则过程进行到760,以将分组转发到识别出的所有者节点,使得所有者节点可以基于流执行有状态服务。然后过程700结束。
c.委派流
在一些实施例中,由特定流的一致性散列识别出的所有者节点不是对流执行有状态服务最合适的边缘节点。当通过一致性散列识别出的流的所有者节点不具有正确处理流所需的必要状态信息,而是这种状态信息被保持在集群中的另一个节点处时,情况就是这样。该另一个节点可以是流的前所有者节点,或者可以是需要其状态信息来正确处理该流的相关流的所有者节点,为了提供一致性有状态服务,在一些实施例中,通过一致性散列识别出的所有者节点将分组委派给其中保持状态信息的节点。
在一些实施例中,流委派是基于驻留在边缘集群的节点中的固定流表和间接表。间接表和固定流表中的每个条目对应于流。每个间接表条目指示其边缘节点根据条目转发或委派属于流的分组。用于流的固定流表中的每个条目指示其边缘节点本地处理流(因此固定或锚定流)并且为流提供有状态服务,而不管节点是否是流的所有者节点。
图8示出了将分组从流的所有者节点委派给边缘集群810内的另一个节点。边缘集群包括边缘节点811-814(分别为节点A、B、C 和D),每个节点可以在边缘处为流提供有状态服务。边缘节点812 (节点B)通过一致性散列被分配作为流“F2”的所有者节点。但是,所有者节点B 812已经将流F2委派给作为被委派节点的节点D 814,使得节点D而不是节点B将处理流F2的有状态处理。
如图所示,流F2的委派是根据分别在所有者节点B(流F2的所有者节点)和节点D(被委派节点)中实现的间接表820和固定流表830完成的。节点B的间接表820具有指向节点D的用于流F2的条目821。该条目821指示节点B将属于流F2的分组转发到节点D。节点D的固定流表830具有指示节点D对属于流F2的分组执行有状态服务的条目831,即使节点D不是F2的所有者节点。节点D(814) 还具有跟踪其正在处理的流(包括固定流F2)的状态的本地流表 840。在一些实施例(未示出)中,本地流表和固定流表被实现为一个表,使得边缘节点可以使用本地流表中的条目来确定哪些流被固定到节点。
图8还示出了边缘集群810中的示例分组转发和流委派操作。该示例示出了属于流“F2”的分组851的转发。
如图所示,ECMP过程851将分组851转发到节点C(813)。但是,节点C既不是流F2的所有者节点,也不是具有作为固定流的 F2的节点。由于节点B是根据一致性散列的F2的所有者节点,所以分组851被转发到节点B。但是,节点B的间接表820具有指向节点D的用于流F2的条目821,因此节点B将分组851转发到节点 D。节点D虽然根据一致性散列不是F2的所有者节点,但是仍然接受和执行对分组851的有状态服务。这是因为节点D的固定流表830具有用于流F2的条目831。(虽然未示出,但是如果ECMP过程直接将F2分组路由到节点D,则节点D将基于其用于F2的固定流表条目立即执行有状态服务,而不是基于一致性散列来转发分组。)
对于一些实施例,图9概念性地示出了用于确定边缘节点是否应该转发接收到的分组或者对接收到的分组执行有状态过程的过程900。当边缘节点接收到传入的分组时,过程900开始。这种分组可以是进入到网络中的北向流量或离开到外部世界(例如,互联网、数据中心的其它部分或网络的其它段)的南向流量的一部分。
该过程识别(在910处)传入分组所属的流。在一些实施例中,分组的流可从分组的L2-L4报头中的地址/端口字段识别(例如,五元组)。然后,该过程确定(在915处)识别出的流是否在边缘节点的固定流表中。固定流表中的对应条目向边缘节点指示该流要在本地进行有状态地处理,而不管一致性散列。如果识别出的流是在固定流表中(即,具有对应的条目),则该过程进行到950,以对传入的分组执行有状态服务。否则,该过程进行到920。
在920处,该过程执行一致性散列并计算用于流的散列值。然后使用计算出的散列值来确定或识别流的所有者节点。一致性散列只限于边缘集群中的节点,因此每个流将映射到集群中的仅一个节点。
然后,该过程(在930处)确定执行该过程的边缘节点本身是否是识别出的流的所有者节点。如果是,则该过程进行到940。如果该边缘节点不是识别出的流的所有者,则该过程进行到970。
在940处,该过程确定识别出的流是否在边缘节点的间接表中。在该操作中,该过程已经确定运行该过程的边缘节点是通过一致性散列识别出的流的所有者节点。但是,间接表中的对应条目将向边缘节点指示流必须被转发到别处进行有状态处理。如果识别出的流在间接表中具有对应的条目,则该过程进行到960。否则,该过程进行到 950,以作为识别出的流的所有者节点对传入分组执行有状态服务。
在950处,该过程对分组执行所需的有状态服务(例如,防火墙、 NAT)。在一些实施例中,该操作是基于由边缘节点维护的状态信息。然后,基于分组(例如,在TCP连接开始时的SYN、ACK分组)的内容或类型,维护的状态信息被相应地更新。然后过程900结束。
在960处,该过程将分组转发到集群中的被委派节点进行有状态处理(即使运行该过程的边缘节点是流的所有者节点)。在一些实施例中,被委派节点由用于识别出的流的间接表中的条目(例如,识别用于F2的节点D的间接表820中的条目821)来识别。然后过程 900结束。
在970处,该过程将分组转发到流的所有者节点。在一些实施例中,集群的节点处于相同的L2段中,使得该转发基于L2协议。然后过程900结束。
d.传送状态信息
如上所述,在一些实施例中,通过一致性散列被确定为流的所有者节点的节点不具有必要的状态信息来正确处理流。以上部分I.c描述了其中所有者节点将属于流的分组委派给正在维护必要的状态信息的节点(例如,先前的所有者节点)的方法。不是所有者节点将分组转发到保持流的状态信息的委派节点,而是一些实施例将状态信息转发到所有者节点。
对于一些实施例,图10示出了将状态信息转发到通过一致性散列识别出的所有者节点。该图示出了在三个阶段1001-1003中在边缘集群810中转发状态信息。
第一阶段1001示出了在其原始所有者节点814(节点D)处维护的流F4的状态信息。因为节点814已经为流F4执行有状态服务,因此它具有用于该流的状态信息。
第二阶段1002示出了通过一致性散列选择不同的节点,即节点 B(812)作为流F4的所有者节点。所有者节点分配中的这种改变可以由于边缘集群的成员资格的变化(例如,节点添加或去除)或由于所有者节点分配覆盖(例如,相关流)而发生。但是,用于F4的状态信息仍然被保持在节点D处,因此节点B不能在没有状态信息的情况下向流F4正确提供有状态服务。
第三阶段1003示出了用于流F4的状态信息的转发。在一些实施例中,这种转发是通过集群中的节点之间的控制平面消息,或者通过利用网络管理器的控制消息。F4的状态信息从节点D传送(或复制)到节点B,因此该信息将可用于节点B为流F4提供有状态服务。
II.动态调整边缘节点集群的大小
在一些实施例中,所有者节点的标识不仅基于所使用的散列函数,而且还基于集群中的边缘节点的成员资格。换句话说,确定哪个边缘节点是给定流的所有者节点部分地基于边缘集群中有多少边缘节点能够提供有状态服务。因此,边缘集群中的成员资格的任何变化将更改一致性散列的结果。例如,当边缘集群中存在M个节点时,一致性散列将识别第一节点作为流的所有者节点,但是当集群中存在N个节点时,将标识不同的第二节点作为流的所有者节点。
如上所述,边缘集群的大小可以被改变以添加新节点或去除现有节点。一些实施例允许这种动态地,即,在边缘集群正在主动处理利用有状态网络服务的网络流量的同时,调整边缘集群的大小。流经边缘的现有流量在集群的成员资格改变期间和之后继续被处理。为了通过调整边缘集群的大小不间断地提供有状态服务,一些实施例在其原始所有者节点处为现有流锚定有状态服务,直到这些现有流完成。在一些实施例中,边缘集群中的节点将属于现有流的分组转发到其原始所有者节点,其原始所有者节点仍然维护有状态服务所需的现有流的状态信息。
a.添加边缘节点
图11示出了边缘集群810的成员资格的变化如何改变一致性散列将流分配给边缘节点。具体而言,该图示出了在两个阶段1101- 1102中将新的第五节点E(815)添加到图8的集群810的效果。边缘集群810最初具有四个节点811-814(节点A、B、C、D)。
第一阶段1101示出了在添加节点E之前通过一致性散列的所有者节点的分配。如图所示,在添加节点E之前,流的一致性散列是在节点A、B、C和D之上以便从这四个节点当中识别所有者节点。在这种一致性散列函数下,流F1和F5被分配给节点A(811),流 F2和F6被分配给节点B(812),流F3和F7被分配给节点C (813),并且流F4和F8被分配给节点D(814)。对于该示例,假定流F1-F8是由节点A、B、C和D有状态处理的活动的、正在进行的流。
第二阶段1101示出了新节点E的添加及其对一致性散列的影响。随着添加节点E,一致性散列在节点A、B、C、D和E之上,以便从这五个节点当中识别所有者节点。因此,流F1-F8中的一些被重新分配给不同的所有者节点。在这个示例中,除F8之外的每个流都通过一致性散列分配不同的所有者节点。节点A现在是F3的所有者节点,节点B现在是Fl的所有者节点,节点C现在是F4和F6的所有者节点,并且节点D现在是F7和F8的所有者节点。新添加的节点被分配为F2和F5的所有者节点。
虽然新节点的添加已经使现有流(F1-F8)被分配给新的所有者节点,但是现有流的状态信息仍然被保持在其原始所有者节点处。为了对这些流正确继续有状态服务,一些实施例使用间接表和固定流表来委派分组,因此属于现有流的分组用正确的状态信息被处理。
图12a-b示出了由于将新节点815添加到边缘集群810而导致的分组的转发。这种添加发生在节点B(812)仍然为流F2执行有状态服务的同时,在添加新节点之前,节点B是流F2的原始所有者节点。该图示出了在四个阶段1201-1204中对节点添加的处理。
第一阶段1201示出了在添加节点E(815)之前边缘集群810的状态。如图所示,节点B 812是通过一致性散列的流F2的所有者节点。它正在维护与F2相关的状态信息,并且即使当ECMP最初将分组路由到其它地方,属于F2的分组也被转发到节点B进行有状态处理。
第二阶段1202示出了在添加新节点(节点E 815)之后立即由集群810处理流F2。节点815(节点E)的添加使得一致性散列将新节点815识别为流F2的所有者,而不是节点B 812(F2的原始所有者节点)。但是,用于F2的状态信息仍然被保持在节点B处。节点 E 815(通过一致性散列的F2的新所有者节点)因此将流F2中的分组转发到节点B 812(F2的原始所有者节点)用于有状态服务,而不是自身执行有状态服务。
如图所示,节点E具有间接表1220,其具有用于F2的指向节点 B的条目1221。到达节点E处属于F2的任何分组(无论是通过 ECMP还是通过一致性散列)都将根据该间接表条目被转发/委派给节点B。此外,节点B具有固定流表1230,其具有用于流F2的条目 1231。该条目指示节点B保持属于F2的任何分组用于处理,而不是将其转发到其它地方,即使它不再是通过一致性散列的所有者节点。
第三阶段1203示出了在添加节点E期间新流F9的处理。新流 (例如,F9)是在调整集群大小之后开始的流。这样的流没有原始所有者节点,并且它没有正确的有状态处理所需的现有状态信息。因此,新流可以由其所有者节点在没有委派的情况下根据一致性散列进行处理。在一些实施例中,每个节点保持新的流表(例如,1240)以跟踪在调整集群大小期间被添加的新流。这是必要的,因为在一些实施例中,新添加的节点不被ECMP过程识别,并且不能直接从 ECMP接收分组。从ECMP接收分组的节点可以参考新的流表,并且直接将分组转发到所有者节点,即使该所有者节点是新添加的节点。在该示例中,节点C(813)从ECMP接收分组1253,并且基于节点C的新流表1240将分组直接转发到节点E,其中新流表1240具有对应于新流F9的条目1241。虽然节点E是集群中的新节点,但是它能够作为F9的所有者节点立即处理流F9,因为F9是可以在不考虑现有状态信息的情况下进行处理的新流。
第四阶段1204示出了由节点B完成流F2。由于F2是自从添加节点E之前的现有流,因此其完成还使得节点E不必基于其间接表 1220将F2分组委派给节点B。节点B同样也不必在其用于F2的固定流表1230中保持条目。因此,新节点的添加被认为是完整的。但是,新流F9将继续由节点E处理直到其完成。但是,在一些实施例中,当F9的所有者节点(节点E)加入ECMP并且因此不再被认为是新节点时,集群中的新流表(例如,节点C中的新流表1240)将清除其与F9相关的条目。
在添加新节点之后,边缘集群被认为处于新节点的学习模式,直到新节点已加入ECMP过程并开始直接从ECMP接收分组。一旦出现这种情况,新的流表就不再需要,因为集群中的节点(包括新添加的节点)可以接收ECMP分组,并且可以基于集群中所有节点上的一致性散列将分组转发到其流的合法所有者节点。固定流表和间接表可以保持操作,直到那些预先存在的流(在节点添加之前的流)完成其操作。图13概念性地示出了在新添加的节点的学习模式期间和之后用于边缘集群810的ECMP过程。该图示出了在四个阶段1301- 1304中添加节点E。
在集群被调整大小之前(即,稳定状态,图中未示出),节点A 正在为流F1和F5提供有状态服务,而节点B正在为流F2提供有状态服务,这是因为根据节点A、B、C和D上的一致性散列,节点A 和B是F1、F5和F2的所有者节点。ECMP过程正在将分组分发到集群中的所有四个节点。
第一阶段1301示出了紧接着在添加节点E之后的边缘节点,即,集群810刚刚进入节点E的学习模式。在节点A、B、C、D和E上的新一致性散列下,流F1的新所有者是节点B,而流F2和F5的新所有者是节点E。作为在添加节点E之前开始的现有流,流F1、F2 和F5通过固定流表和间接表被锚定到其原始所有者节点。ECMP过程同时继续将分组分发到仅节点A、B、C和D。新节点E在学习模式期间将不会直接从ECMP过程接收分组。
第二阶段1302示出由节点A完成流F5。这意味着节点A不再需要将F5作为固定流处理,并且节点E不再需要根据其间接表将 F5的分组委派给节点A。
第三阶段1303示出了新流F9的添加,其所有者节点是新添加的节点E。如图所示,在该阶段的ECMP过程仍然不向新添加的节点E分发分组,因此集群中的其它节点(节点A、B、C、D)将必须基于新流表中用于F9的条目将F9的ECMP分组转发到节点E进行有状态处理。
第四阶段1304示出了在节点E的学习模式已经完成之后新稳定状态下的集群810。ECMP过程现在包括节点E,使得传入分组可以被分发到集群中的所有节点,包括新添加的节点E。新流F9还继续由节点E处理,但是集群810中的新流表中的F9的条目不再需要并且因此被清除。诸如F1和F2的固定流(即,在添加节点E之前预先存在的流)继续通过间接表和固定流表在其原始所有者节点中被有状态地服务,直到那些流完成。
在一些实施例中,将新节点添加到集群中由网络管理器控制。在一些实施例中,网络管理器通过与边缘集群中的节点交换控制平面消息来控制边缘集群的调整大小。图14示出了用于将新节点815(节点E)添加到边缘集群810中的、在网络管理器1499与边缘节点811-815(节点A、B、C、D和E)之间的控制消息1401-1414的示例序列。在消息交换序列之前,在集群810中只有节点811-814(节点A、B、C和D)是活动的。
管理器1499分别将消息1401-1404发送到节点811-814,向这些节点通知新节点(节点E)要被添加到集群。管理器1499还将消息 1405发送到新添加的节点815(节点E)。它用于向新节点(节点E) 通知哪些节点在集群中,哪个将包括节点A、B、C、D和E。
接下来,节点A向节点E发送消息1406,指示节点E将流F5 中的分组转发到节点A(例如,通过在其间接表中创建条目)。另一方面,节点B向节点E发送消息1407,指示节点E将流F2中的分组转发到节点B。生成消息1406和1407是因为新节点E的添加已使得流F5和F2的所有者节点分配从节点A和B转移到节点E,如参考以上图11-13的示例所讨论的。节点A和B然后继续将F5和 F2作为固定流处理。
当节点A已经完成固定流F5时,它向管理器1499发送消息 1408以指示它已经完成固定流F5。同样,当节点B已经完成固定流 F2时,它向管理器1499发送消息1409以指示它已经完成固定流F2。由于流F2和F5是其所有者节点是新添加的节点(节点E)的固定流,因此管理器将理解节点E的学习模式是完整的,并且节点E可以参与ECMP。因此,管理器1499将消息1410发送到节点E,通知它开始ECMP过程。
在这个示例(即,图11-13的示例)中,新的流F9在学习模式期间被散列到新节点(节点E),并且因此当新流被散列到新节点时,每个现有节点具有用于流F9的新流表条目。在节点E的学习模式完成之后,管理器1499分别向节点811-814发送消息1411-1414,以清除其新流表中用于流F9的任何条目。
如所提到的,通过调整边缘集群的大小,活动流的连续、不间断的有状态服务依赖于在被选择作为那些流的所有者节点的节点和仍然保持那些流的状态信息的节点之间的分组的委派。在一些实施例中,这些分组转发操作依赖于一组表,诸如间接表、固定流表和新流表,如以上参考图8和12所讨论的。对于一些实施例,图15概念性地示出了用于在集群调整大小期间在边缘节点处管理这些表的过程1500。
当过程1500检测到(在1510处)边缘集群中的成员资格的变化时,过程1500开始。成员资格的这种改变导致经由一致性散列的流到节点分配的变化。在一些实施例中,边缘节点知道这样的改变,因为它已经从网络控制器接收到新节点已被添加到集群的控制平面消息 (例如,消息1401-1405)。
然后,该过程识别(在1520处)在该边缘节点中不完整(即,仍然活动)但由于一致性散列变化而被分配给其它节点的活动流。接下来,该过程将识别出的流作为条目添加(在1530处)到其固定流表。这通知边缘节点对识别出的流的分组执行有状态服务,即使它不再是流的所有者节点。然后,该过程向识别出的流的所有者节点发送间接消息(在1540处),使得所有者节点将知道把该流委派给这个边缘节点。
接下来,该过程识别(在1550处)不完整(即,在其它节点中仍然活动)但是被散列到该节点的活动流。在一些实施例中,这是基于接收到的间接消息(例如,图14的消息1406和1407),间接消息由边缘节点生成,边缘节点具有已经被重新分配给该边缘节点的不完整流。然后,该过程将这些标识出的流作为条目添加(在1560处) 到间接表。运行该过程的边缘节点将必须根据间接表中的那些条目委派这些流的分组。
随着固定流表和间接表被更新,该过程接下来通过参考间接表、固定流表和新流表中的条目转发(在1570处)分组或者对分组执行有状态服务。在一些实施例中,当边缘节点遇到新开始的流时,新流表中的条目被更新。新流表的管理将在下面参考图16进一步描述。该过程然后报告(在1580处)完成的固定流,并且在固定流表和间接表中去除(在1590处)用于那些已完成流的对应条目。在一些实施例中,完成固定流的边缘节点通过控制平面消息报告流完成,因此在其间接表中具有对应条目的边缘节点将知道去除那些条目并停止委派那些流。一些实施例包括在对应流不活动一段时间之后自动去除间接表和固定流表中的条目的超时机制。然后过程1500结束。
图16-17概念性地示出了用于基于固定流表、间接表和新流表在集群中的边缘节点之间进行分组委派的过程1600和1700。图16的过程1600在新添加的节点的学习模式期间由现有边缘节点执行,而图17的过程1700在对应的学习模式期间由新添加的节点执行。
图16的过程1600通过识别(在1610处)传入分组的流开始。在一些实施例中,分组的流可从分组的L2-L4报头中的地址/端口字段识别(例如,五元组)。然后,该过程确定(在1615处)识别出的流是否在边缘节点的固定流表中。固定流表中的对应条目向边缘节点指示流要在本地进行有状态地处理,而不管一致性散列。如果识别出的流在固定流表中(即,具有对应的条目),则该过程进行到 1650以对传入分组执行有状态服务。否则,该过程进行到1620。
在1620处,该过程执行一致性散列并产生用于流的散列值。然后使用计算出的散列值来确定或识别流的所有者节点。一致性散列包括新添加的节点,因此散列结果可以包括新添加的节点。
然后,该过程确定(在1630处)执行该过程的边缘节点本身是否是识别出的流的所有者节点。如果是,则该过程进行到1640。如果该边缘节点不是识别出的流的所有者,则该过程进行到1670。
在1640处,该过程确定识别出的流是否在边缘节点的间接表中。在这个操作中,该过程已经确定运行该过程的边缘节点是通过一致性散列识别出的流的所有者节点。但是,间接表中的对应条目将向边缘节点指示流必须被转发到其它地方进行有状态处理。如果识别出的流在间接表中具有对应的条目,则该过程进行到1660。否则,该过程进行到1650,以作为识别出的流的所有者节点对传入分组执行有状态服务。
在1650处,该过程对分组执行所需的有状态服务(例如,防火墙、NAT)。在一些实施例中,这种操作是基于由边缘节点维护的状态信息。所维护的状态信息然后基于分组的内容相应地更新。然后过程1600结束。
在1660处,该过程将分组转发到集群中的被委派节点进行有状态处理(即使运行该过程的边缘节点是流的所有者节点)。在一些实施例中,被委派节点由用于识别出的流的间接表中的条目来识别。然后过程1600结束。
在1670处,该过程确定基于一致性散列的所有者节点是否是新添加的节点。如果所有者节点是新添加的节点,则处理进行到1680。否则,过程1600进行到1675以将分组转发到流的所有者节点。
在1680处,该过程确定流是否是分配给新节点的新流。与具有存储在其原始所有者节点中的现有状态信息的现有流不同,新流没有原始所有者节点或预先存在的状态信息,并且因此可以随便在其所有者节点处开始有状态处理,无论是新添加的节点还是现有节点。在一些实施例中,该过程通过检查其新流表中的条目来确定流是否为新流。如果分组的流是新添加的流,则该过程进行到1685。如果流不是新添加的流(即,预先存在的流),则该过程进行到1690。
在1685处,该过程更新边缘节点处的新流表,即,如果新流表中没有用于该流的条目,则该过程将对应的条目添加到新流表中。然后,该过程进行到1675以将分组转发到新流的所有者节点。
在1675处,该过程将分组转发到流的所有者节点,所有者节点是根据包括新添加的节点的一致性散列识别出的节点。然后过程 1600结束。
在1690处,该过程仅计算现有节点上的流的散列(即,通过排除新添加的节点)。该散列产生流的原始所有者节点。如果流是现有流并且边缘节点在其间接表中还没有对应的条目,则需要此操作。因此,该过程必须基于集群中的现有节点(不包括新添加的节点)来计算散列值,以便确定/重构哪个节点是流的原始所有者。然后,该过程基于该计算出的散列将分组转发到这个原始所有者。然后过程 1600结束。
图17的过程1700通过识别(在1710处)传入分组的流开始。在一些实施例中,分组的流可从分组的L2-L4报头中的地址/端口字段识别(例如,五元组)。
在1720处,该过程执行一致性散列并计算用于流的散列值。然后使用计算出的散列值来确定或识别流的所有者节点。一致性散列包括新添加的节点,因此散列结果可以包括新添加的节点。然后,该过程确定(在1730处)新添加的节点自身是否是识别出的流的所有者节点。如果是,则该过程进行到1740。如果该新添加的节点不是识别出的流的所有者,则过程1700结束,因为这是错误状况。新添加的节点不应该接收新添加的节点不是其所有者的流的任何分组。
在1740处,该过程确定流是否是分配给新节点的新流。与具有存储在其原始所有者节点中的现有状态信息的现有流不同,新流没有原始所有者节点或预先存在的状态信息,并且因此可以随便在其所有者节点处开始有状态处理,无论是新添加的节点还是现有节点。在一些实施例中,该过程通过检查其新流表中的条目来确定流是否为新流。如果分组的流是新添加的流,则该过程进行到1745。如果流不是新添加的流(即,预先存在的流),则该过程进行到1750。
在1750处,该过程确定识别出的流是否在边缘节点的间接表中。在这个操作中,该过程已经确定运行该过程的新添加的节点是通过一致性散列识别出的流的所有者节点。但是,间接表中的对应条目将向新添加的节点指示流必须被转发到其它地方进行有状态处理。如果识别出的流在间接表中具有对应的条目,则该过程进行到1755。否则,过程1700结束,因为新添加的节点不应该在间接表中没有对应条目的情况下接收现有流的分组。
在1755处,该过程将分组转发到集群中的被委派节点进行有状态处理(即使运行该过程的新添加的节点是流的所有者节点)。然后过程1700结束。
一些实施例允许将多个边缘节点同时添加到集群。在这些实施例中的一些实施例中,集群立即进入多个边缘节点的学习模式,同时固定流表和间接表同样用于委派锚定/固定到其原始所有者节点的流的分组。一些实施例通过每次添加一个边缘节点将多个边缘节点添加到集群,其中使用多轮学习模式来添加多个新的边缘节点。
b.去除边缘节点
在一些实施例中,边缘节点的去除在不中断由边缘集群提供的有状态服务的情况下优雅地完成。对于这些实施例中的一些实施例,以上部分II.a中描述的用于添加新节点的方法也适用于通过去除现有节点来动态调整边缘集群的大小,即,在节点去除过程期间在其原始所有者节点上保持现有流的有状态处理。如所提到的,边缘集群中的成员资格的变化导致通过一致性散列的流到节点的分配的变化。因此,节点的去除导致现有流改变所有者节点,就像节点的添加一样。因此,一些实施例也在节点去除过程期间在其原始所有者节点处锚定现有流。
图18概念性地示出了其中现有流被锚定到其原始所有者节点的示例节点去除操作。如图所示,边缘集群810最初具有节点811-814 (节点A、B、C和D),并且流的所有者节点的分配基于所有这四个节点的一致性散列。该图示出了用于在两个阶段1801和1802从集群810中去除节点C(813)的过程。
第一阶段1801示出了在去除节点C之前通过一致性散列的所有者节点的分配。如图所示,在去除节点C之前,流的一致性散列是在节点A、B、C和D之上以便从这四个节点当中识别所有者节点。在这种一致性散列函数下,流F1和F5被分配给节点A(811),流 F2和F6被分配给节点B(812),流F3和F7被分配给节点C (813),并且流F4和F8被分配给节点D(814)。对于该示例,假定流F1-F8是在阶段1801期间由节点A、B、C和D有状态处理的活动的、正在进行的流。
第二阶段1802示出了新节点C的去除以及该去除对通过一致性散列的所有者节点分配的影响。随着去除节点C,一致性散列仅在节点A、B和D之上,以便从这三个节点当中识别所有者节点。因此,流F1-F8中的一些或全部被重新分配给不同的所有者节点。在这个示例中,除F5和F6之外的所有流都通过一致性散列分配给不同的所有者节点。节点A现在是F3、F5和F8的所有者节点。节点B现在是F1、F4和F6的所有者节点。节点D现在是F2和F7的所有者节点。去除的节点(节点C)不是任何流的所有者节点。
由于流F1-F8是正在由边缘集群处理的活动的、正在进行的流,因此这些节点必须被锚定到其原始所有者节点,以便用正确的状态信息对流进行有状态地处理。因此,流F1被固定到节点A,流F2被固定到节点B,流F3和F7被固定到节点C,并且流F4和F8被固定到节点D。被固定或锚定到其原始所有者节点的流将在那里进行有状态地处理,直到那些流完成。这也适用于去除节点C,其中出于处理固定到节点C的流(F3和F7)的目的,节点C仍将保持活动状态,即使节点C不能再是任何流的所有者节点。
另一方面,现有流的新所有者节点使用其间接表中的条目将这些流委派给其原始所有者。以上的部分II.a描述了通过间接表和固定流表来委派流。在这个示例中,节点A分别将流F3和F8委派给节点 C和D(F5在节点A处被本地处理),节点B分别将流F1和F4委派给节点A和D(F6在节点B处被本地处理),并且节点D分别将 F2和F7委派给节点B和C。
如所提到的,去除节点在其完成先前分配给它的流的处理之前不会离线。这确保了在不中断由边缘集群810提供的有状态服务的情况下优雅地去除或关闭节点。在一些实施例中,边缘集群被认为处于用于去除集群中的边缘节点的学习模式。在一些实施例中,用于去除边缘节点的学习模式在去除节点完成其所有固定流并可安全离线(因此将不会中断有状态过程)之前不会结束。
在一些实施例中,一旦节点被标记为去除,它就停止参与 ECMP。图19示出了在用于去除节点813的学习模式(即,学习节点C要被去除)期间和之后的边缘集群810的操作。去除节点813 一旦被标记为去除,它就停止参与ECMP,但是在所有固定到去除节点的流完成之前,该节点不会离线。该图示出了在四个阶段1901- 1904中的节点去除过程。
第一阶段1901示出了在去除节点C(813)之前的边缘集群810。如图所示,边缘集群810具有正在参与ECMP过程并提供有状态服务的四个节点811-814(节点A、B、C和D)。如图所示,节点813 是通过一致性散列的F3和F7的所有者节点,并且正在维护这些流的状态信息。
第二阶段1902示出了紧接着节点C(813)被标记为去除之后的边缘集群810。一旦节点C被标记为去除,ECMP过程就停止向其分发分组。此外,一致性散列不再将节点C包括在其散列函数中,并且节点A(811)变为流F3的新所有者节点,并且节点D变为F7 的新所有者节点。但是,F3和F7也被固定或锚定到节点C(813),因为它们被节点C主动地处理,并且它们的状态信息被节点C保持。节点A在其间接表(图中未示出)中具有用于将流F3的分组委派给节点C的条目,并且节点D在其间接表(图中未示出)中具有用于将流F7的分组委派给节点C的条目。
第三阶段803示出了固定流(即,F3和F7)的完成。当这些流完成时,去除节点C(813)可以离线。最后的阶段804示出了处于新稳定状态的集群810,其中节点C在不中断任何有状态服务的情况下被优雅地去除。
III.相关流
当必要状态信息不在通过一致性散列的流的所有者节点中时,流的委派(或状态信息的传送)是必需的。如以上部分II中所描述的,当边缘集群中存在改变所有者节点分配的成员资格变化(例如,节点的添加或去除)时,是这样。在一些实施例中,当驻留在第一节点上的第一流的状态信息是分配给第二节点的第二流的必要状态信息时,也需要流的委派。在一些实施例中,第一流和第二流是通过一致性散列分配给不同所有者节点的相关流。在一些实施例中,当相同过程的控制流和数据流由于它们具有不同的流标识符而被分配给不同的所有者节点时,会发生这种情况。为了确保相关流在相同节点上维护的相同的一组状态信息上操作,一些实施例使用流委派来强制相关流被相同节点(有状态地)处理,即使这两个相关流通过一致性散列被散列到不同的所有者节点。
存在需要ALG支持以通过防火墙和NAT功能工作的、诸如 FTP、SIP或RTSP的协议。这些协议使用多个流,并且相同的节点通常应该处理相关流,因为它们经常共享状态。因此,节点的数据平面需要查看应用协议来确定相关流。在集群服务中,在协议中使用的相关流必须由同一节点一致性地和高效地操纵。对于FTP(文件传输协议),在一些实施例中,首先建立控制流程。关于数据流的信息经由控制流传送。因此,必须监视控制流以了解数据流信息(即,控制流上的PORT或PASV命令)。
图20示出了使用流委派来在同一节点处处理相关流。如图所示,集群810的节点813(节点C)和节点814(节点D)分别通过一致性散列被分配流F15和F16。流F15和F16是相关流(例如,相同传输层交换的控制流和数据流)。该图示出了在两个阶段2001和 2002中的集群810中的相关流委派。
第一阶段2001示出了通过一致性散列的F15和F16的原始分配。作为F15的所有者节点的节点C将具有流F15的状态信息,而作为 F16的所有者节点的节点D将具有流F16的状态信息。但是,F15和 F16是相关流。在一些实施例中,相关流是共享同一组状态信息的流。在一些实施例中,相关流是必须被依次处理的流。例如,F16的有状态服务需要流F15的最终状态信息,并且F16是在F15之后的流,使得流F16的分组仅在流F15完成之后才出现。
第二阶段2002示出了用于处理相关流的分组的委派流。如图所示,流F15仍然由其所有者节点(节点C)处理,但是流F16的分组由节点D(F16的所有者节点)委派给节点C。节点D基于间接表 2040的条目2041将F16的分组转发到节点C,该条目对应于指向节点C的流F16。节点C基于固定流表2030的条目2031接受流F16 的委派分组。换句话说,即使节点D是F16的所有者节点,流F16 也已成为节点D处的间接/委派流。即使节点C永远都不是F16的所有者节点,流F16也已成为固定/锚定到节点C的流。因此,流F15 和F16两者都由同一节点(节点C)有状态地处理。
对于一些实施例,图21概念性地示出了用于建立流委派以便在边缘节点的集群中有状态地处理相关流的过程2100。在一些实施例中,该过程由边缘集群中的节点执行。该过程通过确定(在2110处) 这个边缘节点(运行过程2100的边缘节点)上当前活动的流是否具有相关流开始。例如,FTP的控制流具有相关的数据流,因此处理 FTP的控制流的边缘节点将知道有即将到来的相关数据流。如果在该边缘节点上主动运行的流都没有相关流,则过程2100结束。如果在该边缘节点中运行的流中至少一个流具有相关流,则该过程识别 (在2120处)相关流和相关流的所有者节点。在一些实施例中,边缘节点基于由网络管理器或其它边缘节点经由控制平面消息提供的信息来识别相关流。
接下来,该过程在自己的固定表中为相关流创建(在2130处) 条目,并且向相关流的所有者节点发送(在2140处)消息,以在其间接表中创建条目。在图20的示例中,节点C是正在处理流F15的边缘节点,流F15具有其所有者节点是节点D的相关流F16。因此,节点C在其固定流表(2030)中为流F16创建了固定流入口 (2031)。节点C还向节点D发送消息,因此节点D将在其间接表 (2040)中为流F16创建间接条目(2041)。
在发送消息以建立间接条目之后,过程2100结束,并且集群中的边缘节点基于间接表和固定流表继续处理相关流的传入分组。
IV.地址转换
在一些实施例中,由边缘集群提供的有状态服务包括网络地址转换(NAT)。NAT是当互联网协议(IP)数据报分组报头跨流量路由设备传输时,为了将一个IP地址空间重新映射到另一个IP地址空间而修改它们中的网络地址信息的方法。在DNAT的情况下,目的地地址(例如,经常是VIP地址/端口)被替换为南向地址和端口。这创建与DNAT服务相关联的两个流:一个使用原始目的地地址,并且一个使用转换地址。这两个流实际上是相同的流,但是它们仍然具有不同的流标识符,并且将被散列到不同的边缘节点。换句话说,每个流具有两个所有者节点,一个通过流的原始目的地地址识别,另一个通过流的转换地址识别。
在一些实施例中,根据原始地址的流的所有者节点根据转换的 DNAT地址将间接消息推送到流的所有者节点,以便将流的分组保持在同一节点上。结果,由转换的DNAT地址识别出的所有者节点具有用于将流的分组委派给通过原始地址识别出的所有者节点的间接表条目,其具有基于DNAT地址接受并处理具有流标识符的分组的固定流表条目。(相反,在一些其它实施例中,由DNAT地址识别出的所有者节点将间接消息推送到由原始地址识别出的所有者节点,因此由原始地址识别出的所有者节点将流的分组委派给由DNAT地址识别出的所有者节点)。换句话说,在一些实施例中,如由其原始地址识别出的流和如由其DNAT地址识别出的流作为相关流被边缘集群处理。
图22a概念性地示出了由边缘集群810执行的示例DNAT服务。该图示出了具有不同流标识符的四个示例流F1-F4。由边缘集群810 执行的DNAT将南向流的目的地地址从其原始地址转换为DNAT地址。例如,边缘集群810将南向F1的目的地地址从“2.2.10.10”转换为“1.2.3.4”,并且将南向F2的目的地地址从“3.2.10.11”转换为“5.6.7.8”,等等。
DNAT还对北向流量执行逆DNAT服务。逆DNAT服务将北向流的DNAT地址转换回其原始地址。例如,边缘集群810将北向F1 的目的地地址从“1.2.3.4”转换为“2.2.10.10”,将北向F2的目的地地址从“5.6.7.8”转换为“3.2.10.11”,等等。虽然北向流和南向流是相同的流,但是它们具有不同的流标识符,并且将通过一致性散列被散列到集群810内的不同边缘节点。
图22b示出了当边缘集群810中的节点正在执行DNAT服务时边缘集群810如何分配所有者节点。如图所示,对于其中流标识符是基于原始地址的南向流量,流F1-F4被分别散列到节点A、B、C和D(节点811-814)。但是,对于其中流标识符是基于转换的DNAT 地址(即,DNAT(F1)、DNAT(F2)、DNAT(F3)和DNAT(F4))的北向流量,流F1被散列到节点D,流F2被散列到节点B,流F3被散列到节点A,并且流F4被散列到节点C。在该图中,“散列(F1)”表示基于具有原始目的地地址的流标识符对F1进行散列,而“散列 (DNAT(F1))”表示基于具有转换的目的地地址的流标识符对F1 进行散列。
图22b还示出了由边缘集群810使用流委派来提供有状态 DNAT服务。如图所示,节点A向节点D发送用于DNAT(F1)的间接消息,通知节点D基于DNAT(F1)将具有流标识符的分组委派给节点A。节点C向节点A发送用于DNAT(F3)的间接消息,通知节点 A基于DNAT(F3)将具有流标识符的分组委派给节点C。节点D向节点C发送用于DNAT(F4)的间接消息,通知节点C基于DNAT(F4) 将具有流标识符的分组委派给节点D。F2和DNAT(F2)两者都被散列到节点B,因此节点B不向外发送间接消息。
因此,节点A接收具有DNAT(F1)的委派分组,因此节点A可以有状态地处理流F1的所有分组,既包括北向分组又包括南向分组。同样,节点C接收具有DNAT(F3)的委派分组以有状态地处理流F3 的所有分组,并且节点D接收具有DNAT(F4)的委派分组以有状态地处理流F4的所有分组。(在这个示例中,节点B已经接收到F2和 DNAT(F2)两者的分组)。
在一些其它实施例中,代替流委派,执行DNAT的边缘集群在不使用可以被转换的目的地地址的情况下确定所有者节点。换句话说,集群仅对不受DNAT影响的字段(例如,源地址字段、源端口字段、协议字段)应用一致性散列。图23a-b示出了当执行DNAT时不使用目的地地址字段用于节点分配的边缘集群。
图23a示出了其中目的地地址是从其原始地址DNAT到该转换地址的南向流量。南向分组2311是流F1的分组,分组2312是流F2 的分组,分组2313是流F3的分组,分组2314是流F4的分组。分组2311-2314分别被散列到边缘集群810的节点811-814。散列仅基于分组的源地址和源端口。当应用一致性散列来确定流的所有者节点时,不使用那些分组的目的地地址。边缘集群810中的节点对那些分组执行DNAT服务以产生分组2321-2324。这些分组具有相同的原始源地址,但是其目的地地址是从DNAT转换的地址。
图23b示出了其中目的地地址从其转换的地址返回到其原始地址的北向流量。北向分组2331-2334分别是流F1-F4的分组。这些北向分组的目的地地址是由DNAT转换的地址,但是其源地址和端口是不受DNAT影响的原始地址。分组2331-2334基于那些未受影响的源端口和地址被散列到节点A、B、C和D。因此,流F1-F4的分组仍然分别被节点A、B、C和D处理,并且该DNAT对所有者节点分配没有影响。因此,无论目的地地址字段是转换的还是原始的,每个流都被相同的节点有状态地处理。
在SNAT的情况下,集群中的边缘节点改变传出南向分组的源地址。分组的SNAT在通过其流的所有者节点路由之后发生。在一些实施例中,边缘集群中的每个节点在执行地址转换时使用其自己的唯一SNAT地址。基于源地址字段中的那些唯一SNAT地址,返回的北向流量被转发到相同的所有者节点。所有者节点然后在维护有状态SNAT过程的状态的同时应用逆NAT。如果有防火墙服务,则在SNAT反向映射之后,流状态通过元组识别。
图24a-b示出了边缘集群中的节点如何为一些实施例提供有状态 SNAT服务。如图所示,集群810的边缘节点811-814(节点A、B、C和D)正在提供SNAT服务,其中当执行SNAT时,每个节点具有其自己的唯一源地址。具体而言,节点A的SNAT地址是“1.1.1.1”,节点B的SNAT地址是“2.2.2.2”,节点C的SNAT 地址是“3.3.3.3”,并且节点D的SNAT地址是“4.4.4.4”。
图24a示出了分别属于流F1、F2、F3和F4的南向流量分组 2411-2414。流F1-F4的分组根据分组的流标识符的一致性散列被散列到节点A、B、C和D中。节点A依次对属于Fl的分组执行 SNAT,并将源地址转换为其自己的SNAT地址“1.1.1.1”。类似地,节点B对F2分组执行SNAT,并将源地址转换为其自己的“2.2.2.2”,节点C对F3分组执行SNAT,并将源地址转换为其自己的“3.3.3.3”,并且节点D对F4分组执行SNAT,并将源地址转换为其自己的“4.4.4.4”。
图24b示出了将北向流量返回到集群2410。如图所示,北向流量中的每个分组基于源地址字段中的唯一SNAT地址找到其返回执行SNAT的边缘节点的路径。具体而言,F1的北向分组2431基于源地址“1.1.1.1”到达节点A,F2的北向分组2432基于源地址“2.2.2.2”到达节点B,F3的北向分组2433基于源地址“3.3.3.3”到达节点C,并且F4的北向分组2434基于源地址“4.4.4.4”到达节点D。每个节点又通过识别分组的流并将节点的唯一SNAT地址转换回流的原始源地址对北向分组执行逆SNAT。因此,流F1-F4的分组始终分别由节点A、B、C和D处理,并且SNAT对所有者节点分配没有影响。无论源地址字段是转换的还是原始的,每个流都被相同的节点有状态地处理。
V.作为边缘节点的虚拟机
如所提到的,在一些实施例中,边缘集群中的边缘节点中的一些或全部被实现为由运行虚拟化软件或管理程序的计算设备托管的虚拟机。在一些实施例中,这些计算设备(或主机机器)位于容纳许多这样的主机机器的数据中心中。图25示出了具有被分组成集群或部分(集群2510、2520、2530和2540)的主机机器的数据中心2500。每个集群包括正在托管虚拟机的一个或多个主机机器。虚拟机中的一些是为数据中心的客户端或租户执行计算任务的计算VM。虚拟机中的一些是提供诸如NAT或防火墙的边缘服务的边缘VM。虚拟机中的一些是向数据中心中的其它VM/主机机器提供控制的管理VM。一些主机机器托管不同类型的VM。例如,主机机器2511托管计算 VM和管理VM,以及主机机器2512托管计算VM和边缘VM。
在一些实施例中,每个VM的集群或部分具有用作其边缘集群的其自己的边缘服务VM集合,边缘集群以以上部分I-IV中描述的方式提供有状态服务。
在一些实施例中,数据中心具有专门的集群或部分,诸如计算集群或管理集群。在一些实施例中,数据中心包括主机机器的集群或部分,其主要托管用作用于其它集群中的计算VM的边缘节点的边缘服务VM。图26示出了包括边缘集群2610、若干计算集群2651-2652和管理集群2680的数据中心2600。边缘集群2610托管用作用于计算集群2651-2652中的VM的边缘节点的VM。管理集群2680 中的VM执行控制和管理功能。
不管VM的物理拓扑和实际物理放置如何,在一些实施例中,计算VM在逻辑上被组织成用于不同租户的不同逻辑网络,并且边缘服务VM在逻辑上被组织成用于不同逻辑网络的边缘服务集群。图27示出了用于不同租户的逻辑网络,其中每个租户由用作逻辑网络的边缘服务集群的一组边缘服务VM服务。该图分别示出了用于租户1、2和3的逻辑网络2701-2703。逻辑网络2701使用边缘服务集群2711,逻辑网络2702使用边缘服务集群2712,并且逻辑网络 2703使用边缘服务集群2713。每个边缘服务集群包括多个边缘服务 VM作为边缘节点。在一些实施例中,边缘集群的边缘节点处于相同的L2段中,使得边缘集群的分组转发和流委派操作通过L2层流量进行(即,相同边缘集群通信中的边缘节点可通过L2 MAC地址彼此寻址)。
VI.计算设备
如前面所提到的,本发明的一些实施例由在用作主机机器的计算设备上运行的虚拟化软件或管理程序实现。对于一些实施例,图28 示出了操作虚拟化软件2805的示例主机机器2800。虚拟化软件2805 允许主机机器托管虚拟机2811-2814以及将虚拟机连接到物理网络 2890。该物理网络2890可以跨越一个或更多数据中心,并且包括各种物理交换机和路由器。
如图所示,主机2800能够通过物理NIC(PNIC)2895访问物理网络2890。虚拟化软件2805用作托管的VM 2811-2814与物理 NIC 2895(以及其它物理资源,诸如处理器和存储器)之间的接口。每个VM包括用于通过虚拟化软件2805访问网络的虚拟NIC (VNIC)。VM中的每个VNIC负责在VM和虚拟化软件2805之间交换分组。在一些实施例中,VNIC是由虚拟NIC仿真器实现的物理NIC的软件抽象。
虚拟化软件2805管理VM 2811-2814的操作,并且包括用于管理VM对物理网络的访问(在一些实施例中通过实现VM连接到其的逻辑网络)的若干组件。如图所示,虚拟化软件2805包括物理交换元件2820、物理路由元件2830、控制器接口2840、上行链路模块 2870。
控制器接口2840从控制器或控制器集群2860接收控制平面消息。在一些实施例中,这些控制平面消息包括用于配置虚拟化软件和/或虚拟机的各种组件(诸如物理交换元件2820和物理路由元件2830) 的配置数据。在一些实施例中,控制平面消息还包括来自中央网络管理器或本地网络管理器的用于动态调整边缘集群大小的消息。
物理交换元件2820(或受管理的物理交换元件MPSE)向和从与物理网络2890接口的物理NIC 2895传递网络数据。物理交换元件还包括多个虚拟端口(vPorts),其将物理NIC与VM 2811-2814、物理路由元件2830和控制器接口2840通信地互连。在一些实施例中,每个虚拟端口与唯一的L2 MAC地址相关联。物理交换元件在连接到其虚拟端口的任何两个网络元件之间执行L2链路层分组转发。物理交换元件还在连接到其虚拟端口中的任何一个端口的任何网络元件与物理网络2890上可达的L2网络元件(例如,在另一个主机上运行的另一个VM)之间执行L2链路层分组转发。
物理路由元件2830(或受管理的物理路由元件MPRE)对从物理交换元件2820上的虚拟端口接收到的数据分组执行L3路由(例如,通过执行L3 IP地址到L2 MAC地址解析)。在一些实施例中,物理路由元件2830附接到其的虚拟端口是宿端口(sink port)。然后,每个路由数据分组被发送回到物理交换单元2820,以根据解析的L2 MAC地址转发到其目的地。该目的地可以是连接到物理交换元件2820上的虚拟端口的另一个VM,或物理网络2890上可达的 L2网络元件(例如,在另一个主机上运行的另一个VM、物理非虚拟化机器等)。
上行链路模块2870在物理交换元件2820和物理NIC 2895之间中继数据。在一些实施例中,上行链路模块2870允许主机机器2800 用作诸如VXLAN和VLAN之类的封装覆盖网络的隧道端点。 VXLAN是覆盖网络封装协议。由VXLAN封装创建的覆盖网络有时被称为VXLAN网络,或简称为VXLAN。当主机2800上的VM将数据分组(例如,以太网帧)发送到相同VXLAN网络中但在不同主机上的另一个VM时,在将分组发送到物理网络之前,上行链路模块2870使用VXLAN网络的VNI和VTEP的网络地址来封装数据分组。分组通过物理网络(即,封装使得底层分组对于中间网络元件透明)被隧道化到目的地主机。上行链路模块2870还对传入的VXLAN分组进行解封装,并只将原始的内部数据分组转发到目的地 VM。
图29示出了在主机机器2800中运行的边缘服务VM 2900(例如,作为VM 2811-2814之一)。边缘VM 2900与物理交换元件 2820交换数据平面分组以及与控制器接口2840交换控制平面消息。如图所示,边缘服务VM 2900包括有状态服务引擎2910、分组转发引擎2920、一致性散列引擎2930以及流信息存储2940。
有状态边缘服务引擎2910是用于基于来自物理交换分组的传入分组以及存储在流信息存储2940中的流的状态来提供有状态边缘服务(例如,防火墙、NAT)。在一些实施例中,有状态服务引擎 2910向到转发引擎2920的分组提供必要的数据。
转发引擎2920经由物理交换元件2820接收和转发网络分组。在一些实施例中,转发引擎基于由有状态边缘服务引擎2910提供的信息、诸如地址转换或防火墙决定的信息做出其转发决定或更改分组。在一些实施例中,转发引擎2920将每个传入分组的流标识符发送到一致性散列引擎2930,以便确定其所有者节点。转发引擎2920还使用流信息存储2940中的信息来决定是否转发分组或将分组转发到哪里。在一些实施例中,转发引擎2920执行诸如700、900、1500、 1600和1700的过程。
一致性散列引擎2930对分组的流标识符执行一致性散列函数,以便识别其所有者节点。在一些实施例中,散列结果还基于由网络管理器经由控制器接口2830提供的边缘集群的成员资格(例如,集群中边缘节点的数量)。
在一些实施例中,流信息存储2940存储用于实现流委派所需的表,诸如固定流表2950和间接表2955。在一些实施例中,流信息存储2940还包括本地流表2960,其维护边缘VM正在处理的流的状态信息。在一些实施例中,固定流表2950和本地流表2960被实现为跟踪边缘VM 2900正在处理的所有流的一个表。存储的状态被提供给有状态服务引擎2910用于执行有状态服务。
在本文档中,术语“分组”是指跨网络发送的特定格式的位集合。本领域普通技术人员将认识到,术语分组在本文中可以用于指可跨网络发送的各种格式化的位集合,诸如以太网帧、TCP段、UDP数据报、IP分组等。
贯穿本说明书提到包括虚拟机(VM)的计算和网络环境。但是,虚拟机只是数据计算节点(DCN)或数据计算端节点(也被称为可寻址节点)的一个示例。DCN可以包括非虚拟化物理主机、虚拟机、在主机操作系统之上运行而不需要管理程序或单独的操作系统的容器、以及管理程序内核网络接口模块。
在一些实施例中,VM使用由虚拟化软件(例如,管理程序、虚拟机监视器等)虚拟化的主机的资源与在主机上其自己的客户操作系统一起操作。租户(即VM的所有者)可以选择在客户操作系统之上要操作哪些应用。另一方面,一些容器是在主机操作系统之上运行而不需要管理程序或单独的客户操作系统的结构。在一些实施例中,主机操作系统使用名称空间将容器彼此隔离,并且因此提供在不同容器内操作的不同应用组的操作系统级隔离。这种隔离类似于在虚拟化系统硬件的管理程序虚拟化环境中提供的VM隔离,并且因此可以被视为隔离在不同容器中操作的不同应用组的一种虚拟化形式。这种容器比VM更轻巧。
在一些实施例中,管理程序内核网络接口模块是包括具有管理程序内核网络接口和接收/发送线程的网络堆栈的非-VM DCN。管理程序内核网络接口模块的一个示例是作为VMware公司的ESXiTM管理程序的一部分的vmknic模块。
本领域普通技术人员将认识到,虽然本说明书提到VM,但是给出的示例可以是任何类型的DCN,包括物理主机、VM、非-VM容器和管理程序内核网络接口模块。事实上,在一些实施例中,示例网络可以包括不同类型的DCN的组合。
VII.电子系统
许多上述特征和应用被实现为软件过程,其被指定为记录在计算机可读存储介质(也被称为计算机可读介质)上的一组指令。当这些指令被一个或多个处理单元(例如,一个或多个处理器、处理器核心、或其它处理单元)执行时,它们使得该(一个或多个)处理单元执行在指令中指示的动作。计算机可读介质的示例包括,但不限于,CD- ROM、闪存驱动器、RAM芯片、硬盘驱动器、EPROM等。计算机可读介质不包括无线或通过有线连接传递的载波和电子信号。
在本说明书中,术语“软件”是指包括驻留在只读存储器中的固件或者可以被读入到存储器中用于被处理器处理的存储在磁存储中的应用。此外,在一些实施例中,若干软件发明可以被实现为更大程序的子部分,同时保持明显的软件发明。在一些实施例中,若干软件发明也可以被实现为单独的程序。最后,一起实现本文所描述的软件发明的单独程序的任意组合是在本发明的范围之内。在一些实施例中,当软件程序被安装,以在一个或多个电子系统上操作时,软件程序定义执行该软件程序的操作的一个或多个特定的机器实现。
图30概念性地示出了实现本发明的一些实施例的电子系统3000。电子系统3000可以用于执行任何控制、虚拟化或上述操作系统应用。电子系统3000可以是计算机(例如,台式计算机、个人计算机、平板计算机、服务器计算机、大型机、刀片计算机等)、电话、PDA 或任何其它种类的电子设备。这种电子系统包括用于各种其它类型的计算机可读介质的各种类型的计算机可读介质和接口。电子系统 3000包括总线3005、(一个或多个)处理单元3010、系统存储器 3025、只读存储器3030、永久存储设备3035、输入设备3040、以及输出设备3045。
总线3005统一地表示通信连接电子系统3000的众多内部设备的所有系统、外设和芯片组总线。例如,总线3005将(一个或多个) 处理单元3010与只读存储器3030、系统存储器3025、永久存储设备 3035通信地连接。
从这些各种存储器单元中,(一个或多个)处理单元3010检索要执行的指令和要处理的数据,以便执行本发明的过程。(一个或多个)处理单元在不同实施例中可以是单个处理器或多核心处理器。
只读存储器(ROM)3030存储由(一个或多个)处理单元3010 和电子系统的其它模块所需的静态数据和指令。另一方面,永久存储设备3035是读和写存储器设备。这个设备是即使当电子系统3000关闭时也存储指令和数据的非易失性存储单元。本发明的一些实施例使用大容量存储设备(诸如磁或光盘及其对应的盘驱动器)作为永久存储设备3035。
其它实施例使用可移除存储设备(诸如软盘、闪存驱动器等)作为永久存储设备。与永久存储设备3035一样,系统存储器3025是读和写存储器设备。但是,与存储设备3035不同,系统存储器是易失性读和写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时需要的一些指令和数据。在一些实施例中,本发明的过程被存储在系统存储器3025、永久存储设备3035和/或只读存储器3030中。从这些各种存储器单元中,(一个或多个)处理单元3010检索要执行的指令和要处理的数据,以便执行一些实施例的过程。
总线3005还连接到输入和输出设备3040和3045。输入设备使用户能够传递信息和选择到电子系统的命令。输入设备3040包括字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备 3045显示由电子系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(CRT)或液晶显示器(LCD)。一些实施例包括诸如用作输入和输出设备两者的触摸屏的设备。
最后,如在图30中所示,总线3005还通过网络适配器(未示出) 将电子系统3000耦合到网络3065。以这种方式,计算机可以是计算机的网络(诸如局域网(“LAN”)、广域网(“WAN”)、或内联网、或诸如互联网的网络的网络)的一部分。电子系统3000的任何或所有组件可以与本发明结合使用。
一些实施例包括电子组件,诸如微处理器、在机器可读或计算机可读介质(可替代地称为计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令的存储设备和存储器。这种计算机可读介质的一些示例包括RAM、ROM、只读压缩盘(CD-ROM)、可记录压缩盘(CD-R)、可重写压缩盘(CD-RW)、只读数字多功能盘(例如,DVD-ROM,双层DVD-ROM)、各种可记录/可重写DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、闪存存储器(例如,SD卡、小型SD卡、微型SD卡等)、磁和/或固态硬盘驱动器、只读和可记录
Figure BDA0002942194580000441
盘、超密度光盘、任何其它光或磁介质、以及软盘。计算机可读介质可以存储可由至少一个处理单元执行的并且包括用于执行各种操作的指令集的计算机程序。计算机程序或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子组件、或利用解释器的微处理器执行的更高级代码的文件。
虽然以上讨论主要指执行软件的微处理器或多核处理器,但是一些实施例通过一个或多个集成电路来执行,诸如专用集成电路 (ASIC)或现场可编程门阵列(FPGA)。在一些实施例中,这种集成电路执行在该电路自身上存储的指令。
如在本说明书中所使用的,术语“计算机”、“服务器”、“处理器”、以及“存储器”都是指电子或其它技术设备。这些术语不包括人或人群。为了本说明书的目的,术语显示或正在显示意味着在电子设备上显示。如本说明书中所使用的,术语“计算机可读介质”、“多个计算机可读介质”和“机器可读介质”被完全限制为以由计算机可读的形式存储信息的、有形的、物理的对象。这些术语不包括任何无线信号、有线下载信号、以及任何其它短暂信号。
虽然本发明已经参考许多特定细节进行了描述,但是本领域普通技术人员将认识到,在不脱离本发明的精神的情况下,本发明可以以其它特定形式体现。此外,多个图(包括图7、9、15、16、17) 概念性地示出了过程。这些过程的特定操作可能没有以与所示出和描述的确切顺序执行。特定操作可能没有在一系列连续的操作中执行,并且不同的特定操作可能在不同的实施例中执行。此外,过程可以利用几个子过程来实现,或者作为较大的宏过程的一部分来实现。因此,本领域普通技术人员将理解,本发明不受上述说明性细节的限制,而是由所附权利要求来限定。

Claims (35)

1.一种用于为包括多个主机计算机的网络执行有状态服务的方法,每个主机计算机执行一组虚拟机(VM),其中不同主机上的不同组VM通过不同的逻辑网络连接,所述方法包括:
在为逻辑网络指定的边缘服务节点群集的第一边缘服务节点处:
执行有状态服务,所述有状态服务需要用于进入或离开逻辑网络的特定流的状态信息,其中基于特定流的标识符的第一散列,从边缘服务节点集群中选择第一边缘服务节点;
从第二边缘服务节点接收属于特定流的分组,其中在将至少一个边缘服务节点添加到所述集群或将其从所述集群中去除之后,从所述集群中选择第二边缘服务节点,所述选择基于特定流的标识符的第二散列;和
对在第一边缘服务节点处接收到的分组执行有状态服务。
2.根据权利要求1所述的方法,其中,所述集群中的特定边缘服务节点在与作为所述特定流的源或目的地的VM相同的主机计算机上执行。
3.根据权利要求1所述的方法,其中:
在添加或去除至少一个边缘服务节点之前,第一映射将所述第一散列的可能值映射到所述集群中的边缘服务节点;
在添加或去除至少一个边缘服务节点之后,第二映射将第二散列的可能值映射到所述集群中的边缘服务节点;和
第二映射不同于第一映射。
4.根据权利要求1所述的方法,其中,所述第一边缘服务节点维护所述特定流的状态信息,所述状态信息是基于在所述第一边缘服务节点处对所述特定流的先前分组执行有状态服务而为所述特定流维护的。
5.根据权利要求1所述的方法,其中,所述边缘服务节点集群在所述特定逻辑网络的南北边界处提供有状态服务。
6.根据权利要求1所述的方法,其中:
基于第二边缘服务节点的间接表中的条目从第二边缘服务节点接收分组,所述条目将特定流与第一边缘服务节点关联;和
第一边缘服务节点具有固定流表,所述固定流表包括与特定流相对应的条目,该条目用于防止第一边缘服务节点将属于特定流的分组转发给所述集群中的其他边缘服务节点。
7.根据权利要求7所述的方法,还包括:当特定流的有状态处理完成时,从固定流表中去除所述条目。
8.一种用于为包括多个主机计算机的网络执行有状态服务的方法,每个主机计算机执行一组虚拟机(VM),其中不同主机上的不同组VM通过不同的逻辑网络连接,所述方法包括:
在边缘服务节点的集群处执行有状态服务,所述有状态服务需要进入或离开特定逻辑网络的流的状态信息,其中特定流的状态由所述集群中的第一边缘服务节点维护;
在所述集群为特定流执行有状态服务的同时,向所述集群添加边缘服务节点;
在通过在添加边缘服务节点之后经由由集群中的每个节点使用的边缘服务节点的集群的特定流的流标识符的一致性散列函数初始识别第二边缘服务节点以执行有状态服务时,将属于特定流的分组从第二边缘服务节点转发到第一边缘服务节点;和
在第一边缘服务节点处对转发的分组执行有状态服务。
9.根据权利要求8所述的方法,其中,通过在添加边缘服务节点之前经由由集群中的每个节点使用的边缘服务节点的集群的特定流的流标识符的不同的一致性散列函数识别第一边缘服务节点以执行有状态服务。
10.根据权利要求8所述的方法,其中,向边缘服务节点的集群添加边缘服务节点还包括:
向第二边缘服务节点中的间接表添加用于特定流的条目,其中间接表中添加的条目用于指示第二边缘服务节点将属于该特定流的分组转发到第一边缘服务节点;和
将用于特定流的条目添加到第一边缘服务节点中的固定流表,其中添加到固定流表的用于特定流的条目用于在第一边缘服务节点处锚定特定流的分组。
11.根据权利要求8所述的方法,其中,所述第二边缘服务节点是添加到所述集群的边缘服务节点。
12.一种用于在包括第一和第二节点的节点集群中有状态地执行服务的方法,所述方法包括:
在第一节点处:
基于第一流的第一组流标识符,接收第一流的第一分组;
对第一分组执行服务并存储状态信息;
从第二节点接收第二流的第二分组,所述第二流是与第一流的一个连接会话的一部分,其中第二节点基于第二流的第二组流标识符初始接收第二分组,然后在第一节点先前处理作为与第二流相同的连接会话的一部分的第一流时转发所述第二分组到第一节点;和
通过将在第一节点处存储的状态信息用于该连接会话来对第二分组执行服务。
13.根据权利要求12所述的方法,其中,为所述第一流执行的服务是网络地址转换(NAT)处理。
14.根据权利要求13所述的方法,其中,所述NAT处理将所述第一流的第一组流标识符转换成所述第二流的第二组流标识符。
15.如权利要求12所述的方法,其中,所述第一节点由所述第一组流标识符的散列来标识,而所述第二节点由所述第二组流标识符的散列来标识。
16.根据权利要求12所述的方法,其中,所述第二节点存储具有用于将具有所述第二组流标识符的分组从所述第二节点转发到所述第一节点的条目的间接表,所述方法还包括:使用具有用于在第一节点处保持和处理具有第二组流标识符的分组的条目的固定流表。
17.根据权利要求12所述的方法,其中,流标识符的散列初始标识所述流的所有者节点,其中根据所述第一组流标识符的散列,所述第一节点是所述特定流的所有者节点,并且根据所述第二组流标识符的散列,所述第二节点是特定流的所有者节点。
18.一种用于在包括多个节点的节点集群处有状态地执行服务的方法,所述方法包括:
在第一节点处:
基于离开逻辑网段的多个外发分组的报头中的原始源地址,
接收所述多个外发分组;
对每个外发分组执行服务;以及
对于每个外发分组,将外发分组的报头中的原始源地址转换为与第一节点唯一关联的转换源地址,以确保响应于多个外发分组而进入逻辑网段的进入分组由第一节点基于转换源地址接收,而不是由节点群集中的另一节点接收。
19.根据权利要求18所述的方法,还包括:对每个进入分组执行逆源网络地址转换(SNAT)以将所述转换源地址替换为所述流的原始源地址。
20.根据权利要求18所述的方法,还包括:维护用于所述进入分组的状态信息。
21.一种用于为包括多个主机计算机的网络执行有状态服务的方法,所述方法包括:
在为对应的多个逻辑覆盖网络提供服务的多个服务虚拟机(SVM)边缘集群中的每一个集群处:
对属于从对应逻辑覆盖网络外部的源计算节点到逻辑覆盖网络内部的目的地虚拟机的流的分组执行一组有状态服务,其中与逻辑覆盖网络相关联的每个流都分配有SVM边缘集群中的对应于相关联的逻辑覆盖网络的一个SVM,所分配的SVM用于基于与在所分配的SVM处维护的流的状态有关的状态信息来执行所述一组有状态服务;以及
在对每个分组执行一组有状态服务之后,将分组提供给用于所述流的目的地虚拟机。
22.根据权利要求21所述的方法,其中:
至少一个SVM在与作为至少一个流的目的地的虚拟机相同的主机计算机上执行;以及
SVM在其上执行的每个主机计算机还执行受管理的物理交换元件(MPSE)和受管理的物理路由元件(MPRE),其与其他主机计算机上执行的MPSE和MPRE一起实现至少一个逻辑覆盖网络。
23.根据权利要求21所述的方法,其中,基于(i)基于所述分组中的一组流标识符来识别所述分组所属的流,以及(ii)基于一组流标识符计算散列值,将每个分组分配给所述集群中的SVM。
24.根据权利要求23所述的方法,其中,每个可能的散列值被映射到所述集群中的SVM。
25.根据权利要求21所述的方法,其中,所述一组有状态服务包括网络地址转换(NAT)和用于有状态防火墙的防火墙处理中的至少一个。
26.根据权利要求21所述的方法,其中,所述集群中的每个SVM是由在所述多个主机计算机中的主机计算机中执行的虚拟化软件提供的虚拟机。
27.一种用于基于状态信息为多个流提供多个有状态服务的方法,所述状态信息与包括多个主机计算机的网络的每个流的状态有关,所述方法包括:
在用于逻辑覆盖网络的服务虚拟机(SVM)的边缘群集处提供多个有状态服务,其中第一服务由所述群集中的第一组SVM提供,并且第二服务由所述集群中的第二组SVM提供;
根据第一一致性散列函数,将第一组流分配给第一组SVM,所述第一组流在逻辑覆盖网络外部的第一组计算节点与在逻辑覆盖网络中的第一组虚拟机之间,并且需要第一服务,其中根据第一一致性散列函数将所述第一组流中的特定流的状态信息维护在所述流被分配到的第一SVM处;以及
根据第二一致性散列函数,将第二组流分配给第二组SVM,所述第二组流在逻辑覆盖网络外部的第二组计算节点与逻辑覆盖网络中的第二组虚拟机之间,并且需要第二服务。
28.根据权利要求27所述的方法,其中将所述第一组流分配给所述第一组SVM包括:(i)识别属于所述第一组流的进入分组;以及(ii)将所述第一一致性散列函数应用于被识别为属于第一组流的分组的流标识符。
29.根据权利要求28所述的方法,其中,应用于第一流的第一一致性散列函数产生散列值,所述散列值标识给其分配了所述第一流的第一组SVM中的第一SVM,其中应用于第二流的第二一致散列产生散列值,所述散列值标识给其分配了第二流的第二组SVM中的第二SVM,其中给其分配了特定流的SVM维护该特定流的状态。
30.根据权利要求27所述的方法,其中,所述第一一致性散列的每个可能的散列值被映射到所述第一组SVM中的SVM,并且所述第二一致性散列的每个可能的散列值被映射到所述第二组SVM中的SVM。
31.根据权利要求27所述的方法,其中,所述第一服务是网络地址转换(NAT),并且所述第二服务是防火墙。
32.一种存储程序的机器可读介质,所述程序在由至少一个处理单元实施时实施根据权利要求1-31中任一项的方法。
33.一种电子设备,包括:
一组处理单元;和
存储程序的机器可读介质,所述程序在由处理单元中的至少一个实施时实现根据权利要求1-31中任一项的方法。
34.一种系统,包括用于实施根据权利要求1-31中任一项所述的方法的装置。
35.一种计算机程序产品,包括指令,所述指令在由计算机执行时,使所述计算机执行根据权利要求1-31中任一项所述的方法。
CN202110183740.3A 2014-11-14 2014-12-30 无状态集群边缘上的有状态服务 Pending CN112906077A (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US14/541,501 US10044617B2 (en) 2014-11-14 2014-11-14 Stateful services on stateless clustered edge
US14/541,477 2014-11-14
US14/541,517 2014-11-14
US14/541,517 US9866473B2 (en) 2014-11-14 2014-11-14 Stateful services on stateless clustered edge
US14/541,477 US11533255B2 (en) 2014-11-14 2014-11-14 Stateful services on stateless clustered edge
US14/541,530 US9876714B2 (en) 2014-11-14 2014-11-14 Stateful services on stateless clustered edge
US14/541,501 2014-11-14
US14/541,530 2014-11-14
CN201480083356.4A CN107077579B (zh) 2014-11-14 2014-12-30 在无状态集群边缘上提供有状态服务的方法、设备和介质

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480083356.4A Division CN107077579B (zh) 2014-11-14 2014-12-30 在无状态集群边缘上提供有状态服务的方法、设备和介质

Publications (1)

Publication Number Publication Date
CN112906077A true CN112906077A (zh) 2021-06-04

Family

ID=52737380

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110183740.3A Pending CN112906077A (zh) 2014-11-14 2014-12-30 无状态集群边缘上的有状态服务
CN201480083356.4A Active CN107077579B (zh) 2014-11-14 2014-12-30 在无状态集群边缘上提供有状态服务的方法、设备和介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201480083356.4A Active CN107077579B (zh) 2014-11-14 2014-12-30 在无状态集群边缘上提供有状态服务的方法、设备和介质

Country Status (3)

Country Link
EP (1) EP3219058B1 (zh)
CN (2) CN112906077A (zh)
WO (1) WO2016076900A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9866473B2 (en) 2014-11-14 2018-01-09 Nicira, Inc. Stateful services on stateless clustered edge
US11533255B2 (en) 2014-11-14 2022-12-20 Nicira, Inc. Stateful services on stateless clustered edge
US10044617B2 (en) 2014-11-14 2018-08-07 Nicira, Inc. Stateful services on stateless clustered edge
US9876714B2 (en) 2014-11-14 2018-01-23 Nicira, Inc. Stateful services on stateless clustered edge
US10397136B2 (en) 2016-08-27 2019-08-27 Nicira, Inc. Managed forwarding element executing in separate namespace of public cloud data compute node than workload application
US11570092B2 (en) 2017-07-31 2023-01-31 Nicira, Inc. Methods for active-active stateful network service cluster
US11296984B2 (en) 2017-07-31 2022-04-05 Nicira, Inc. Use of hypervisor for active-active stateful network service cluster
US10951584B2 (en) 2017-07-31 2021-03-16 Nicira, Inc. Methods for active-active stateful network service cluster
CN117499305A (zh) * 2017-08-24 2024-02-02 Nicira股份有限公司 在云中通过覆盖网络和底层网络访问服务端点
US11153122B2 (en) 2018-02-19 2021-10-19 Nicira, Inc. Providing stateful services deployed in redundant gateways connected to asymmetric network
US11895087B2 (en) 2018-08-21 2024-02-06 International Business Machines Corporation Adjusting firewall parameters based on node characteristics
US11411777B2 (en) * 2020-01-14 2022-08-09 Vmware, Inc. Port mapping for bonded interfaces of ECMP group
EP3991368A1 (en) * 2020-01-14 2022-05-04 VMware, Inc. Transparent demilitarized zone providing stateful service between physical and logical networks
US20220413925A1 (en) * 2021-06-25 2022-12-29 International Business Machines Corporation Dynamic clustering of edge cluster resources
US11799761B2 (en) 2022-01-07 2023-10-24 Vmware, Inc. Scaling edge services with minimal disruption
US11962564B2 (en) 2022-02-15 2024-04-16 VMware LLC Anycast address for network address translation at edge

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091396A1 (en) * 2003-08-05 2005-04-28 Chandrasekharan Nilakantan Method and apparatus for achieving dynamic capacity and high availability in multi-stage data networks using adaptive flow-based routing
CN103593259A (zh) * 2013-10-16 2014-02-19 北京航空航天大学 虚拟集群内存快照方法和装置
CN104011687A (zh) * 2011-12-16 2014-08-27 思科技术公司 用于网络环境中的服务器的无中断管理的系统和方法
US20140297964A1 (en) * 2013-03-29 2014-10-02 Toshiba Solutions Corporation Storage system, storage controller, and method for managing mapping between local address and physical address
US20140304399A1 (en) * 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods for providing monitoring in a cluster system
US20140301388A1 (en) * 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods to cache packet steering decisions for a cluster of load balancers

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1890438A1 (en) * 2003-08-05 2008-02-20 Scalent Systems, Inc. Method and apparatus for achieving dynamic capacity and high availability in multi-stage data networks using adaptive flow-based routing
US7765312B2 (en) * 2007-03-12 2010-07-27 Telefonaktiebolaget L M Ericsson (Publ) Applying policies for managing a service flow
US9141437B2 (en) * 2008-01-29 2015-09-22 International Business Machines Corporation Methods and systems for migrating network resources to improve network utilization
US8711703B2 (en) * 2010-10-29 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Load balancing in shortest-path-bridging networks
EP2748716B1 (en) * 2011-11-15 2018-05-16 Nicira Inc. Network control system for configuring middleboxes
CN104022891B (zh) * 2013-02-28 2018-06-19 新华三技术有限公司 一种全局负载均衡设备业务协调方法及装置
CN103647656B (zh) * 2013-12-09 2017-04-12 华为软件技术有限公司 计费节点负载控制方法、数据访问控制方法及节点
CN103701900B (zh) * 2013-12-26 2017-02-08 清华大学 基于异构集群的数据分布方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091396A1 (en) * 2003-08-05 2005-04-28 Chandrasekharan Nilakantan Method and apparatus for achieving dynamic capacity and high availability in multi-stage data networks using adaptive flow-based routing
CN104011687A (zh) * 2011-12-16 2014-08-27 思科技术公司 用于网络环境中的服务器的无中断管理的系统和方法
US20140297964A1 (en) * 2013-03-29 2014-10-02 Toshiba Solutions Corporation Storage system, storage controller, and method for managing mapping between local address and physical address
US20140304399A1 (en) * 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods for providing monitoring in a cluster system
US20140301388A1 (en) * 2013-04-06 2014-10-09 Citrix Systems, Inc. Systems and methods to cache packet steering decisions for a cluster of load balancers
CN103593259A (zh) * 2013-10-16 2014-02-19 北京航空航天大学 虚拟集群内存快照方法和装置

Also Published As

Publication number Publication date
CN107077579B (zh) 2021-02-26
EP3219058B1 (en) 2020-11-18
CN107077579A (zh) 2017-08-18
WO2016076900A1 (en) 2016-05-19
EP3219058A1 (en) 2017-09-20

Similar Documents

Publication Publication Date Title
CN107077579B (zh) 在无状态集群边缘上提供有状态服务的方法、设备和介质
US10601705B2 (en) Failover of centralized routers in public cloud logical networks
US10862753B2 (en) High availability for stateful services in public cloud logical networks
US20230124797A1 (en) Stateful services on stateless clustered edge
US10044617B2 (en) Stateful services on stateless clustered edge
US11811680B2 (en) Provisioning network services in a software defined data center
US11595250B2 (en) Service insertion at logical network gateway
CN112929219B (zh) 多数据中心环境中的逻辑路由器和交换机
US9876714B2 (en) Stateful services on stateless clustered edge
EP3669504B1 (en) High availability for stateful services in public cloud logical networks
US9866473B2 (en) Stateful services on stateless clustered edge
US10637800B2 (en) Replacement of logical network addresses with physical network addresses
US20220038310A1 (en) Method for providing distributed gateway service at host computer
US11153122B2 (en) Providing stateful services deployed in redundant gateways connected to asymmetric network
US20190312812A1 (en) Anycast edge service gateways
US10681000B2 (en) Assignment of unique physical network addresses for logical network addresses
CN114726786A (zh) 受管理网关的路由通告
US11895030B2 (en) Scalable overlay multicast routing
US10491483B2 (en) Using application programming interface calls for communication between network functions
US11962564B2 (en) Anycast address for network address translation at edge

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