CN114342342A - 跨多个云的分布式服务链 - Google Patents
跨多个云的分布式服务链 Download PDFInfo
- Publication number
- CN114342342A CN114342342A CN202080060199.0A CN202080060199A CN114342342A CN 114342342 A CN114342342 A CN 114342342A CN 202080060199 A CN202080060199 A CN 202080060199A CN 114342342 A CN114342342 A CN 114342342A
- Authority
- CN
- China
- Prior art keywords
- service
- data message
- container
- chain
- forwarding
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 109
- 238000012545 processing Methods 0.000 claims description 37
- 230000009471 action Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 80
- 239000003795 chemical substances by application Substances 0.000 description 79
- 239000010410 layer Substances 0.000 description 21
- 238000005538 encapsulation Methods 0.000 description 14
- 238000011144 upstream manufacturing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- RJKFOVLPORLFTN-LEKSSAKUSA-N Progesterone Chemical compound C1CC2=CC(=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H](C(=O)C)[C@@]1(C)CC2 RJKFOVLPORLFTN-LEKSSAKUSA-N 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 229920003245 polyoctenamer Polymers 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/66—Layer 2 routing, e.g. in Ethernet based MAN's
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的一些实施例提供了用于对穿过连接一个或多个数据中心(诸如软件定义的数据中心(SDDC))的网络的数据消息执行服务的新颖方法。一些实施例的方法使用在主机计算机上执行的服务容器来对不同的数据消息流执行不同的服务链(例如,有序序列)。对于在主机计算机处接收或生成的特定数据消息流的数据消息,在一些实施例中该方法使用在主机计算机上执行的服务分类器来识别指定要对数据消息执行的若干服务的服务链。对于识别出的服务链中的每个服务,服务分类器识别用于执行该服务的服务容器。服务分类器然后将数据消息转发到服务转发元件以转发该数据消息穿过为识别出的服务链识别出的服务容器。服务分类器和服务转发元件在一些实施例中被实现为进程,这些进程被定义为服务容器在其上执行的主机计算机的操作系统(例如,Linux操作系统)的虚拟接口端点(例如,虚拟以太网端口)中的钩子。
Description
今天的数据中心使用静态的、配置密集的方式在不同的应用层之间以及向不同的服务层分发数据消息。当今的一种常见方法是将虚拟机配置为将分组(packet)发送到虚拟IP地址,然后用转发规则来配置数据中心中的转发元件和负载平衡器,转发规则指示它们将VIP寻址的分组转发到适当的应用和/或服务层。现有消息分发方案的另一问题是,当今的负载平衡器常常是分布式流量的阻塞点。因而,本领域需要新的方法来在数据中心中在不同应用和/或服务层之间无缝地分发数据消息。理想情况下,这种新方法将允许轻松地修改分发方案,而无需对传输数据消息的服务器进行重新配置。
发明内容
本发明的一些实施例提供了用于对穿过网络的数据消息执行服务的新颖方法,该网络连接一个或多个数据中心,诸如软件定义的数据中心(SDDC)。一些实施例的方法使用在主机计算机上执行的服务容器(service container)来对不同的数据消息流(datamessage flow)执行不同的服务链(例如,有序序列)。对于在主机计算机处接收或生成的特定数据消息流中的数据消息,一些实施例中的方法使用在该主机计算机上执行的服务分类器(service classifier)来识别服务链,该服务链指定要对该数据消息执行的若干服务。
对于识别出的服务链中的每个服务,服务分类器识别用于执行该服务的服务节点。在一些实施例中,服务链中的服务节点中的一些或全部是服务容器。服务分类器然后将数据消息转发到服务转发元件,以通过为识别出的服务链识别出的服务节点来转发该数据消息。如下文进一步描述的,服务分类器和服务转发元件在一些实施例中被实现为进程,这些进程被定义为服务容器在其上执行的主机计算机的操作系统(例如,Linux操作系统)的虚拟接口端点(例如,虚拟以太网端口)当中的钩子(hook)。
对于特定的数据消息流,在一些实施例中,服务分类器通过执行负载平衡操作以从用于服务的两个或更多个候选服务容器的集合中选择特定服务容器,来识别用于识别出的服务链中的至少一个服务的服务容器。在一些实施例中,服务分类器执行此负载平衡操作以从用于识别出的服务链中的服务中的两个或更多个(例如,全部)服务的多个候选服务容器中选择一个服务容器。
对于特定服务,在一些实施例中,服务分类器通过引导针对特定服务所指定的负载平衡器从用于该特定服务的候选服务容器的集合中选择容器来执行负载平衡操作。在一些实施例中,负载平衡操作使用与由候选容器集合中的每个容器处理的数据消息有关的统计数据来从该集合中为特定数据消息流选择一个特定容器。
对于特定数据消息流,在一些实施例中,服务分类器指定服务路径标识符(SPI),该服务路径标识符识别路径,该路径穿过被选择用于实现识别出的服务链的容器,并且服务分类器将此服务路径标识符提供给要使用的服务转发元件,以执行其分类操作从而转发此流的数据消息。在其它实施例中,服务转发元件不使用服务路径标识符来转发特定数据消息流的数据消息,而是使用MAC重定向(redirect)来指定转发规则,这些转发规则用于在服务路径中的相继服务容器之间引导此流的数据消息。
结合这些转发方法中的任一种,一些实施例使用指定的服务路径标识符来为响应于特定数据消息流而发送(例如,由该特定数据消息流的目的地发送)的反向数据消息流选择服务路径。这种方法确保在这些实施例中同一服务容器集合既检查正向方向的初始数据消息流又检查反向方向的响应数据消息流。
在使用MAC重定向方法将数据消息转发到服务路径中的不同服务容器的一些实施例中,服务转发元件由以下实现:(1)OS命名空间中被用于定义OS中的虚拟转发元件(例如,虚拟交换机或虚拟网桥)的虚拟接口端点,以及(2)每个服务容器的容器命名空间中的虚拟接口端点。这些虚拟接口端点被配置为执行实现MAC重定向转发所需的匹配-动作转发(match-action forwarding)操作。
在一些实施例中,这些匹配-动作操作包括匹配分类(match classfication)操作,匹配分类操作将数据消息的层2(L2)源和/或目的地网络地址以及数据消息的层3(L3)源和/或目的网络地址与转发规则的选择准则进行比较。L3源和/或目的地网络地址在一些实施例中被用于将离开子网的出口数据消息与进入子网的入口数据消息进行区分。在一些实施例中,匹配-动作操作包括动作操作,该动作操作修改数据消息的L2目的地MAC地址,因为这些实施例使用MAC重定向来将数据消息转发到相继的服务容器。
一些实施例的服务分类器将服务链的所有服务容器选择为位于该服务分类器的主机计算机上。在其它实施例中,服务链的不同服务容器可以在不同的主机计算机上操作。在这些实施例中的一些当中,不同的服务容器可以在不同数据中心中的主机计算机上执行。为了促进在不同数据中心之间转发数据消息以进行服务处理,一些实施例在数据中心中部署服务转发代理(service forwarding proxy)。
当数据消息的服务处理在第一数据中心中开始并继续到第二数据中心时,第一数据中心中的服务转发代理将数据消息与封装报头封装在一起,并存储识别针对第二数据中心的服务路径的服务路径标识符。在一些实施例中,此SPI是全局唯一的SPI,其唯一地识别在服务路径上具有服务容器的每个数据中心中的服务路径。在一些实施例中,全局唯一的SPI包括用于每个服务的UUID(通用唯一ID)以及用于每个数据中心中的每个服务UUID或每个服务UUID集合的数据中心ID。
在接收到封装的数据消息后,第二数据中心中的服务转发代理对该数据消息进行解封装(从数据消息中移除封装报头),移除嵌入在被移除的报头中的SPI,并使用该SPI来识别服务路径中应当在第二数据中心中处理该数据消息的下一跳(next hop)服务容器。
除了SPI之外,在一些实施例中,封装报头还包括下一跳服务标识符,服务转发代理可以使用该下一跳服务标识符来识别服务路径中的应当处理该数据消息的下一个服务容器。例如,当全局SPI具有每个服务容器的UUID时,下一跳服务标识符在一些实施例中是对全局SPI中的服务容器UUID位置的引用,或者在其它实施例中,下一跳服务标识符被设置为此容器的UUID。在其它实施例中,封装报头不包括下一跳服务标识符,因为第二数据中心中的服务转发代理被配置为仅从接收到的SPI识别下一跳服务节点。
在其它实施例中,代替使用SPI来识别下一跳服务容器,第二数据中心中的服务转发代理将SPI传递到要使用的第二数据中心中的服务转发元件来识别下一跳服务容器。在一些实施例中,该转发元件是在执行下一跳服务容器的主机计算机上执行的服务转发元件。
在一些实施例中,两个数据中心中的两个服务转发代理可以被用来在这两个数据中心之间转发许多数据消息流以进行服务处理。而且,在一些实施例中,数据中心中的服务转发代理可以将数据消息转发到多个其它数据中心中的多个其它服务转发代理并从多个其它数据中心中的多个其它服务转发代理接收数据消息,以实现跨越不同数据中心集合的服务链。在一些实施例中,每个服务转发代理包括(1)转发代理,用于封装数据消息并将封装的数据消息发送到另一数据中心的另一服务转发代理,以及(2)接收代理,用于从另一数据中心的另一服务转发代理接收封装的数据消息,并对接收到的数据消息进行解封装以在该接收代理的数据中心进行处理。
在一些实施例中,数据中心具有(1)若干服务主机计算机,它们执行服务容器的集合,以对在该数据中心处接收的数据消息流执行相同的服务链,以及(2)一个或多个转发元件(例如,前端负载平衡器)的集合,它们随机地或确定性地将数据消息流分发到这些主机计算机。然后每个服务主机计算机对该服务主机计算机接收的每个数据消息流执行服务分类操作,以确定该服务主机计算机是应当处理该数据消息流,还是它应当将该数据消息流重定向到另一服务主机计算机。
例如,在接收到第一数据消息流后,第一服务主机计算机使用该流的属性集合(例如,流的五元组标识符)来执行第一服务分类操作,该第一服务分类操作识别要对数据消息执行的第一服务集合。基于用于第一服务集合的标识符,第一服务主机计算机确定在第二主机上执行的服务机器集合必须对第一数据消息流执行第一服务集合。然后第一服务主机计算机将第一数据消息流的数据消息转发到第二服务主机计算机。
另一方面,在接收到第二数据消息流后,第一服务主机计算机使用该流的属性集合(例如,流的五元组标识符)来执行第二服务分类操作,该第二服务分类操作识别要对数据消息执行的第二服务集合。基于用于第二服务集合的标识符,第一服务主机计算机确定在第一服务主机计算机上执行的服务机器集合必须对第二数据消息流执行第二服务集合。然后,第一服务主机计算机将第二数据消息流的数据消息转发到第一服务主机计算机上的该服务机器集合当中必须对第二数据消息流执行第二服务集合中的服务的每个服务机器。
前面的发明内容旨在用作对本发明的一些实施例的简要介绍。这并不意味着是对本文档中公开的所有发明性主题的介绍或概述。以下的具体实施方式和在具体实施方式中提及的附图将进一步描述在本发明内容中描述的实施例以及其它实施例。因此,为了理解由本文档描述的所有实施例,需要对发明内容、具体实施方式、附图和权利要求书进行全面审阅。而且,所要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制。
附图说明
本发明的新颖特征在所附权利要求中阐述。然而,为了解释的目的,在以下图中阐述了本发明的若干实施例。
图1图示了软件定义的数据中心(SDDC),其使用一些实施例的服务-执行方法来处理源自SDDC和/或在SDDC处接收的数据消息。
图2图示了一些实施例如何在主机计算机的Linux操作系统(OS)内实现服务转发元件和服务分类器。
图3图示了在一些实施例中服务分类器执行的过程。
图4图示了一些实施例的服务分类器与若干其它模块交互以执行服务分类。
图5呈现了概念性地图示服务转发元件在转发数据消息穿过由服务分类器识别的服务路径时的操作的过程。
图6图示了在接收到第一数据消息流后第一服务主机计算机的Linux OS的虚拟接口端点将数据消息传递到在OS的回调(callback)机制中注册为钩子的服务分类器。
图7图示了第二数据消息流的处理,架顶式交换机初始地将该第二数据消息流转发到第一服务主机计算机。
图8图示了在一些实施例中服务主机计算机执行的过程,以便对接收到的数据消息流执行服务操作,或将数据消息重定向到另一服务主机计算机以进行服务处理。
图9进一步图示了图6和7的分布式服务链分类和转发体系架构。
图10呈现了图示此类服务转发代理的使用的示例。
图11图示了一些实施例中的服务转发代理的附加属性。
图12呈现了概念性地图示使用不同数据中心中的服务容器来对数据消息执行与服务链相关联的服务的过程。
图13概念性地图示了利用其实现本发明的一些实施例的计算机系统。
具体实施方式
在本发明的以下详细描述中,阐述和描述了本发明的许多细节、示例和实施例。然而,对于本领域技术人员将清楚和清晰的是,本发明不限于所阐述的实施例,并且本发明可以在没有所讨论的一些具体细节和示例的情况下实践。
本发明的一些实施例提供了用于对通过网络(该网络连接一个或多个数据中心(诸如软件定义的数据中心(SDDC))中的机器)的数据消息执行服务的新颖方法。一些实施例的方法使用在主机计算机上执行的服务容器来对不同的数据消息流执行不同的服务链。服务链包括一个或多个服务节点,每个服务节点执行服务链中的服务。在一些实施例中,服务节点中的一些或全部是服务容器。
在一些实施例中,容器是在主机计算机的操作系统(OS)之上运行的构造。在一些实施例中,主机操作系统使用命名空间来将容器彼此隔离,并因此提供在不同容器内操作的不同组的应用的操作系统级隔离。容器的示例包括Docker容器、rkt容器、以及在管理程序(诸如ESXi)之上执行的容器。
如在本文档中使用的,数据消息是指跨网络发送的特定格式的位(bit)集合。本领域普通技术人员将认识到的是,术语“数据消息”在本文中可以用于指代可以跨网络发送的各种格式的位集合,诸如以太网帧、IP分组、TCP段、UDP数据报等。同样,如本文档中所使用的,对L2、L3、L4和L7层(或层2、层3、层4、层7)的引用分别是对OSI(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层的引用。
图1图示了SDDC 100,其使用一些实施例的服务-执行方法来处理源自SDDC和/或在SDDC处接收的数据消息。在一些实施例中,SDDC是电信网络(例如,5G电信网络)的一部分,可以为该电信网络定义多个网络切片(slice)。数据消息流可以与网络切片相关联,并且可以为每个网络切片定义一个或多个服务链。在一些实施例中,每个服务链指定要对与该链的网络切片相关联的数据消息流执行的服务操作(例如,计算操作、转发操作和/或中间盒服务操作等)的一个或多个有序序列。
在5G电信网络中,服务操作包括对数据消息执行的虚拟网络功能(VNF)。用于5G电信网络的网络切片的示例包括用于处理宽带数据的移动宽带切片、用于处理IoT(物联网)数据的IoT切片、用于处理遥测数据的遥测切片、用于IP数据上的语音的VOIP(IP语音)切片、用于处理视频会议数据的视频会议切片、用于处理导航数据的设备导航切片等。
如图所示,SDDC 100包括主机计算机105、管理服务器110、入口网关115和出口网关120。入口/出口网关115和120允许数据消息进入和离开数据中心。在一些实施例中,同一网关集合可以充当入口和出口网关,因为它们将SDDC连接到外部网络(诸如互联网)。在其它实施例中,入口网关和出口网关不同,因为入口网关将SDDC连接到一个网络(例如,专用电信网络),而出口网关将SDDC连接到另一网络(例如,连接到互联网)。而且,在一些实施例中,这些网关(例如,入口网关或出口网关)集合中的一个或两者连接到两个或更多个网络(例如,MPLS网络和互联网)。
如进一步所示,主机计算机执行操作系统130、服务容器135和软件转发元件140。在一些实施例中,操作系统(OS)130是Linux。在一些实施例中,此OS在管理程序之上执行,而在其它实施例中,它在主机计算机上本地执行(没有管理程序)。服务容器135和软件转发元件140由管理服务器110部署和配置以实现服务操作的链。
在一些实施例中,管理服务器110包括可以通过其来定义和管理服务链的管理器,以及可以通过其来配置服务容器135和软件转发元件140的控制器。在其它实施例中,由公共的服务器集合执行管理操作和控制操作两者。为了操作服务链,在一些实施例中,管理服务器110配置每个主机计算机105及其软件转发元件以实现服务分类器155和服务转发元件160。
对于在主机计算机处接收的特定数据消息流中的数据消息,在主机计算机105上执行的服务分类器155识别服务链,该服务链指定要对该数据消息执行的若干服务。接收到的数据消息在一些情况下源自于在该主机计算机上执行的源机器,而在其它实施例中是由在该主机计算机以外操作的转发元件(例如,前端负载平衡器)转发的。
对于识别出的服务链中的每个服务,服务分类器155识别执行该服务的服务容器135。在一些实施例中,一个主机计算机的服务分类器155将服务链的所有服务容器识别为位于该服务分类器155的主机计算机上。在其它实施例中,服务分类器可以选择不同主机上的服务容器以执行识别出的服务链的服务操作中的一些或全部。为实现服务链而识别出的服务容器集合表示穿过网络的服务路径。
在识别出服务链和实现该服务链的服务容器之后(例如,在识别出服务路径之后),服务分类器155将数据消息传递到服务转发元件160以将数据消息转发给为已识别出的服务链识别出的服务容器。在一些实施例中,服务转发元件160在服务分类器的主机计算机上执行。在识别出的服务路径中的服务容器可以位于不同的主机计算机上的其它实施例中,服务转发元件160是分布式转发元件(例如,逻辑转发元件),其跨越执行该服务路径的服务容器的多个主机。
在一些实施例中,服务转发元件160用L2 MAC重定向动作操作来执行L2匹配操作,以将数据消息转发到服务路径中的不同服务容器。在其它实施例中,服务转发元件使用服务路径标识符(其识别服务路径)来执行其匹配操作,如下面进一步描述的。
图1图示了服务分类器155为两个不同的数据消息流146和148选择两个不同的服务路径142和144,并且服务转发元件160沿着每个路径中的服务容器转发这些数据消息流。服务转发元件沿着用于服务路径142的服务容器SC1、SC2和SC3转发数据消息流146,同时沿着用于服务路径144的服务容器SC4和SC5转发数据消息流148。然后,服务转发元件将这两个数据消息流转发出SDDC 100。一旦数据消息被服务链的服务容器处理,在一些实施例中,服务转发元件就还可以将该数据消息转发到另一主机计算机或另一机器、在同一主机计算机或SDDC中不同主机计算机上操作的应用或中间盒服务。
图2图示了一些实施例如何在主机计算机的Linux OS 230内实现服务转发元件和服务分类器。如图所示,在一些实施例中,服务分类器155被实现为Linux OS 230的入口侧虚拟接口端点204(例如,以太网端口)中的钩子函数。在一些实施例中,此端口204用作与主机计算机的网络接口控制器(NIC)的接口。在一些实施例中,服务转发元件160部分地由其根命名空间215内的Linux网桥240实现,并且在另一部分中由服务容器235的虚拟接口端点206(例如,以太网端口)中和在Linux命名空间中定义的虚拟接口端点208中的钩子函数实现。
图3图示了在一些实施例中服务分类器155执行的过程300。分类器每次接收到数据消息时都会执行此过程。为了执行此过程,服务分类器155与在其主机计算机上执行的几个其它模块进行交互。如图4中所示,在一些实施例中,这些其它模块包括容器选择器404和SPI生成器406。
如图所示,当服务分类器155接收到要处理的数据消息时,过程300开始(在305处)。在310处,服务分类器155确定服务分类器155先前是否已经处理过与接收到的数据消息处于同一流中的另一数据消息。如果是,那么它过渡到330以将接收到的数据消息传递给第一服务容器,该第一服务容器是通过一记录而被识别的,该记录由服务分类器先前针对已处理的该流创建并存储在连接跟踪器410中,如下文进一步描述的。
在一些实施例中,先前在连接跟踪器中创建的记录可能用于反向方向上的相关流。具体而言,在一些实施例中,服务分类器针对第一方向上的第一数据消息流(例如,离开SDDC的流)所创建的记录被服务分类器用于处理第二方向上的、响应于第一数据消息流而接收的第二数据消息流(例如,进入SDDC的流),如下文进一步描述的。
服务分类器这样做是为了使用相同的服务路径(例如,相同的服务容器集合)来处理反向的第二流,就像它对初始的第一流所做的那样。在这些实施例中,连接跟踪器记录被用于双向流,而不仅仅是用于单向流。在其它实施例中,服务分类器在处理第一数据消息流时创建两个记录,一个用于正向方向,另一用于反向方向,因为正向和反向方向的连接跟踪器记录是相关的但不完全相同。
当服务分类器155(在310处)确定它之前没有处理过与接收到的数据消息相同的流中的另一数据消息时,它(在315处)使用接收到的数据消息的属性集合(例如,它的报头值)来执行分类操作,以识别用于必须对该数据消息的流执行的服务链的服务链标识符。在一些实施例中,用于该分类匹配操作的数据消息的属性集合是数据消息流的五元组标识符(例如,源和目的地IP、源和目的地端口,以及协议),或者是其七元组标识符(即,它的五元组标识符加上源和目的地MAC地址)。
图4示出了服务分类器155通过参考存储在分类规则存储装置455中的服务分类规则450来执行其服务分类操作。如图所示,每个分类规则包括匹配元组457和动作元组459。匹配元组包括一个或多个报头值(例如,五元组或七元组标识符),而动作元组459包括服务链标识符(SCI)。
在将数据消息的属性集合与服务分类规则450的匹配元组457匹配之后,服务容器155(在320处)从所匹配的服务分类规则的动作元组459中检索SCI并使用检索出的SCI来识别SCI属性存储装置460中的记录465。SCI属性存储装置中的每个记录465将SCI与由该SCI识别出的服务链的服务的有序列表444以及用于选择执行该链中的服务的容器的容器选择器404的列表446相关联。
在320处,在一些实施例中,服务分类器155通过使用为识别出的SCI记录中的服务指定的容器选择器404来为存储装置460中识别出的SCI记录465中指定的每个服务选择服务容器。当存在用于执行一个服务的多个候选服务容器时,在一些实施例中,用于该服务的指定的容器选择器执行负载平衡操作以选择一个特定候选服务容器用于接收到的数据消息流。
在一些实施例中,这种负载平衡操作使用关于由每个候选服务容器处理的数据消息的统计信息(其被存储在容器统计信息存储装置424中)来选择该特定服务容器。如下文进一步描述的,在每次处理数据消息时,服务分类器更新用于与服务路径相关联的容器的统计信息。在一些实施例中,容器选择器的负载平衡操作被设计为跨候选服务容器均匀地分布消息负载,或者基于加权分布方案而不均匀地分布数据消息负载。
而且,在一些实施例中,用于服务链中不同服务的容器选择器协同工作以选择服务路径中的容器,例如,在以下实施例中,即,为服务路径中的第一服务选择了第一服务容器使得必然要为服务路径中的第二服务选择第二服务容器。在一些实施例中,当一个服务容器不能是两个不同服务路径的一部分时(即,当两个服务路径不能重叠时),也是这种情况。
一些实施例将容器分组为荚(pod),每个荚包括被确保共同位于同一主机计算机上的一个或多个服务容器。在一些实施例中,每个荚由一个虚拟机实现。在一些实施例中,用于服务路径的服务容器中的两个或更多个(例如,用于服务路径的所有服务容器)在同一个荚中,并且该两个或更多个荚是用于实现同一服务链的候选。在这些实施例中的一些当中,容器选择器404是负载平衡荚选择器,其从作为用于实现由服务分类器155识别出的服务链的服务路径的候选的若干个荚中选择一个荚。
接下来,在325处,服务分类器为在320处选择的容器指定的服务路径生成SPI,并将生成的SPI存储在用于接收到的数据消息的流标识符(例如,其五元组或七元组标识符)的连接跟踪器410中。为了生成SPI,服务分类器使用SPI生成器406。在一些实施例中,SPI生成器406使用一组规则来基于与在320处选择的容器相关联的标识符而定义用于服务路径的SPI。例如,SPI在一些实施例中被定义为服务路径容器的UUID(通用唯一ID)的级联。在一些实施例中,UUID按照服务容器在服务路径中的次序而级联。
服务分类器(在325处)将生成的SPI存储在针对接收到的数据消息的流标识符的连接跟踪器410中,以便它稍后可以使用此SPI来(在SPI属性存储装置415中)识别用于与当前所处理的数据消息在同一流中的后续数据消息的服务路径。为此,服务分类器将该后续数据消息的流ID(例如,其五元组或七元组标识符)与连接跟踪器410中的记录494的匹配元组492中的流ID进行匹配,然后检索由具有匹配的流ID的记录的操作元组496所指定的SPI。
如上面所提到的,在一些实施例中,服务分类器使用连接跟踪器410中的SPI记录来处理对当前所处理的数据消息的流进行响应的流当中的数据消息。在一些实施例中,服务分类器对正向流和反向流使用相同的SPI记录。在其它实施例中,服务分类器为正向流和反向流创建不同的连接跟踪器流。一些实施例对反向流使用相同的SPI,以便确保由同一服务容器集合来检查正向方向的初始数据消息流和反向方向的响应性数据消息流二者。
在将(一个或多个)记录存储在连接跟踪器410中之后,服务分类器过渡到330。当确定它先前已经处理过接收到的数据消息的流时,过程也从310过渡到330,从连接跟踪器中识别用于此流的SPI,然后使用此SPI来识别服务路径中用于数据消息的服务容器。
在330处,服务分类器将数据消息传递给服务转发元件以转发给第一服务容器。在一些实施例中,服务分类器将指定的服务路径标识符提供给要使用的服务转发元件以执行其分类操作从而转发此流的数据消息。在其它实施例中,服务转发元件不使用服务路径标识符来转发特定数据消息流的数据消息,而是使用MAC重定向方法。
在一些实施例中,服务分类器将数据消息的目的地MAC地址指定为第一服务容器的MAC地址,并将此数据消息提供给服务转发元件以转发到第一服务容器。在其它实施例中,服务分类器将数据消息的目的地MAC指定为与服务转发元件相关联的MAC地址,该服务转发元件使用数据消息的源MAC地址来执行其服务转发操作,如下文进一步描述的。在这些实施例中的一些当中,服务分类器将源MAC地址指定为与特定服务路径的开端相关联的MAC地址,从而允许服务转发元件识别用于服务路径的第一个服务容器。
在330之后,服务分类器对识别出的服务路径中的服务容器的统计信息进行递增。如上面所提到的,服务分类器在统计信息存储装置424中维护这些统计信息。在不同的实施例中维护不同的统计信息。此类统计信息的示例包括数据消息的数量、转发的有效载荷字节中的字节的数量等。因此,在一些实施例中,服务分类器通过将每个服务容器的消息计数递增一和/或将已处理消息的有效载荷尺寸加到服务路径中每个服务容器的字节计数来对统计信息进行递增。在330之后,过程300结束。
图5呈现了过程500,过程500概念性地图示了服务转发元件160在转发数据消息穿过由服务分类器155识别出的服务路径时的操作。此转发操作使用MAC重定向,并且部分地由其根命名空间215内的Linux网桥240实现,并且在另一部分中由服务容器的虚拟接口端点(例如,以太网端口206)和在虚拟Linux命名空间中定义的接口端点(例如,以太网端口208)中的钩子函数实现。这些虚拟接口端点被配置为执行用于实现MAC重定向转发所需的匹配-动作转发操作。
如图所示,过程500在其接收到要转发而穿过服务路径的数据消息时(在505处)开始。接下来,在510处,该过程执行分类操作以识别与第一服务节点相关联的Linux网桥的虚拟接口端点。如上面所提到的,在一些实施例中,服务分类器将此目的地MAC定义为连接到第一服务容器的虚拟接口端点的目的地MAC。在这些实施例中的一些当中,分类操作(在510处)将数据消息的目的地MAC与查找表中的转发规则(其将不同的目的地MAC地址与不同虚拟接口端点标识符相关联)的匹配准则进行比较。在这种方法下,该过程从如下转发规则中检索到用于下一跳虚拟接口端点的标识符,即,该转发规则将该数据消息的目的地MAC作为其匹配准则。
在其它实施例中,过程500以不同方式来执行分类操作。例如,在一些实施例中,过程500使用下述三个分类操作525-535,这些操作首先识别服务流的方向,然后使用数据消息的源MAC来识别第一服务节点的目的地MAC,并且最后使用识别出的目的地MAC来识别虚拟接口端点。在这些实施例中的一些当中,服务分类器不将数据消息的目的地MAC地址设置为第一服务节点的MAC地址,而是将此地址设置为网桥的目的地MAC地址。
接下来,在515处,该过程通过识别出的虚拟接口端点将数据消息转发到下一个服务容器。该服务容器对数据消息执行其服务操作(例如,中间盒服务操作等),然后(在520处)将数据消息提供回服务转发元件。在一些实施例中,服务容器235、其相关联的以太网端口206或相关联的网桥接口端点208将数据消息的源MAC地址改变为与该服务容器相关联的MAC地址(例如,与其以太网端口206相关联),因为服务转发元件使用源MAC地址来执行下一跳服务的确定。
过程500然后在525、530和535处执行三个分类操作,这在上面简要地提到过。第一分类操作(在525处)将数据消息的L3源和/或目的地网络地址与被定义为区分出口数据消息与入口数据消息的分类规则进行比较。例如,在一些实施例中,一个分类规则确定数据消息的源L3地址是否在SDDC子网的CIDR中,以便确定该数据消息是否是离开子网的向上游的流的一部分,而另一分类规则确定数据消息的目的地L3地址是否在SDDC子网的CIDR中,以便确定该数据消息是否是进入子网的向下游的流的一部分。
在一些实施例中,这些分类规则中的每一个识别用于在530处执行第二分类操作的不同查找表。因此,在525处在第一分类操作中识别出数据消息的流的方向(向上游的或向下游的)之后,过程500使用通过第一分类操作而识别出的查找表在530执行第二查找,这一次是基于数据消息的当前源MAC地址。在一些实施例中,此第二分类规则将数据消息的当前源MAC地址与一个分类规则的匹配准则(该匹配准则是关于源MAC而被指定的)进行匹配,该分类规则在其动作元组中提供沿服务路径的下一跳的目的地MAC。源MAC识别服务链中的针对在525处识别出的方向(例如,在525处识别出的表中)的先前服务节点,并且因此可以被用于识别服务链中的下一个服务节点。
在一些实施例中,第二分类操作(在530处)将数据消息的目的地MAC地址改变为服务路径中的下一跳的MAC地址。当服务路径尚未完成时(即,最后一个服务容器还没有处理数据消息时),服务路径中的下一跳是另一服务容器。另一方面,当服务路径完成时(即,当最后一个服务容器已处理完数据消息时),服务路径中的下一跳是已经为服务路径定义的出口目的地MAC。在一些实施例中,此出口目的地MAC是与将数据消息转发到SDDC中的另一目的地的交换机或路由器相关联的MAC地址,或者是与将数据消息转发出SDDC或SDDC子网的网关相关联的MAC地址。
在530处重新定义数据消息的目的地MAC之后,该过程(在535处)执行第三分类操作以识别与数据消息的目的地MAC相关联的Linux网桥的虚拟接口端点。在一些实施例中,此分类操作将数据消息的目的地MAC与查找表中的转发规则(其将不同的目的地MAC地址与不同的虚拟接口端点标识符相关联)的匹配准则进行比较。在这种方法下,该过程从如下转发规则中检索出用于下一跳虚拟接口端点的标识符,即,该转发规则将数据消息的目的地MAC作为其匹配准则。
在535之后,过程500(在540处)确定在535处识别出的识别出的虚拟接口端点是否是另一服务容器。当识别出的虚拟接口端点不是另一服务容器时,服务路径已经完成。在一些实施例中,操作540实际上不是由服务转发元件执行,但是它被包括进来,仅仅是为了在图5中说明服务路径的结束。
当在535处识别出的识别出的虚拟接口端点是另一服务容器时,过程500的服务路径转发还没有完成。因此,该过程返回到515以通过其识别出的虚拟接口端点将数据消息转发到路径上的下一个服务容器。否则,服务路径转发过程500结束。如上面所提到的,当服务路径完成时,在通过530的最后一次迭代中所定义的目的地MAC地址识别的是为服务路径定义的出口端口的虚拟接口端点。因此,在这些实施例中服务路径的末端处,Linux网桥将该数据消息转发到该虚拟接口端点,该数据消息将从该虚拟接口端点被转发到其下一个目的地。
参考图2的主机计算机的以下示例进一步说明了一些实施例的服务转发元件的MAC重定向转发。在此示例中,服务路径包括服务容器235a,其后是用于向上游的数据消息的服务容器235b,在数据消息离开SDDC的路径上必须对该数据消息执行两个服务操作。当Linux网桥240接收到此向上游的数据消息时,该数据消息具有该网桥的vethx接口的目的地MAC地址,因为它需要首先被服务容器235a处理。
因此,网桥将数据消息传递到vethx接口,vethx接口进而通过服务容器235a的etho接口206将其转发到服务容器235a。服务容器对数据消息执行其服务,并通过该etho接口将其传递回vethx接口。在将数据消息传递回vethx接口时,服务容器或其相关联的etho接口将数据消息的源MAC地址指定为该etho接口的源MAC地址。
vethx接口然后执行第一分类操作,基于数据消息的L3源地址位于入口CIDR中,该操作导致确定数据消息是沿着向上游的方向。基于此确定,vethx接口对上游查找表执行第二分类操作,该查找表将当前源MAC地址与识别下一跳目的地MAC地址的下一跳转发规则进行匹配。在vethx接口识别出下一跳地址是vethy接口的MAC地址之后,网桥将数据消息提供给vethy接口。vethy接口通过服务容器235b的etho接口206将数据消息转发到服务容器235b。该服务容器对数据消息执行其服务,并通过etho接口将其传递回vethy接口。再一次地,数据消息的源MAC地址被改变为服务容器235b的etho接口的源MAC地址。
vethy接口然后执行第一分类操作,基于数据消息的L3源地址位于入口CIDR中,该操作导致确定数据消息沿着向上游的方向。基于此确定,vethy接口对上游查找表执行第二分类操作,该查找表将当前源MAC地址与识别下一跳的目的地MAC地址的下一跳转发规则进行匹配。在这种情况下,下一跳地址是网桥的出口L2地址。因此,在vethy接口识别出下一跳地址是网桥的出口MAC地址之后,网桥将数据消息提供给其出口接口,以便转发出主机计算机。
在其它实施例中,服务转发元件160使用其它转发方法。例如,在一些实施例中,服务转发元件使用用于识别出的服务路径的SPI以及当前跳计数(hop count)来执行其转发操作。在一些实施例中,SPI和当前跳计数是服务分类器初始地创建并存储在主机计算机上的值。对于每个服务跳,服务转发元件将SPI和当前跳计数与下一跳转发规则的匹配准则进行比较,这些转发规则具有操作元组,这些操作元组提供连接到下一跳的虚拟接口的虚拟端点接口标识符。当服务转发元件转发数据消息以穿过其相继的服务跳时,它调整(例如,递减)其当前跳计数,以与服务路径中的下一个服务容器位置对应。
在一些实施例中,当服务容器在不同的主机计算机上执行和/或在不同的数据中心中执行时,服务转发元件使用SPI/跳计数方法。在一些此类实施例中,SPI/跳计数信息被嵌入隧道报头中,随着数据消息在不同的主机计算机和/或不同的数据中心之间被转发,隧道报头对数据消息进行封装。
如上面所提到的,在一些实施例中,SDDC 100具有若干主机计算机,这些主机计算机执行服务容器集以对在数据中心接收的数据消息流执行相同的服务链。在一些此类实施例中,主机计算机仅执行实施与服务链相关联的操作的服务容器,而不执行任何其它数据计算端节点(即,作为数据消息流的源或目的地机器的任何其它容器或虚拟机)。因此,这些主机计算机在下文中将被称为服务主机计算机。在这些实施例中,由SDDC 1000中的其它主机计算机来执行作为计算端节点的机器。
在一些实施例中,服务分类、转发和操作分布在这些服务主机计算机之间以分布服务负载并在一个或多个服务主机计算机发生故障的情况下提供容错。一个或多个前端转发元件(例如,负载平衡器)的集合随机地或确定性地将数据消息流分发到这些服务主机计算机,然后这些服务主机计算机对它们接收到的数据消息流执行服务分类操作,以确定它们是应当服务处理数据消息流,还是应当将数据消息流重定向到其它服务主机以进行服务处理。
图6和图7图示了执行一些实施例的分布式服务分类和转发操作的三个服务主机计算机605、607和609的示例。在一些实施例中,这些服务主机中的每一个执行两个服务容器集群以执行两个不同的服务。此示例中的每个集群包括多于一个容器。如下面参考图9进一步描述的,服务分类和转发操作分布在服务主机605、607和609之间,使得这些计算机对于在它们上执行的相似服务容器实现相同的服务分类和转发操作(例如,处理相同的服务分类和转发规则)。
在图6和图7的示例中,架顶式(top-of-rack,TOR)交换机615选择第一服务主机计算机605来处理两个不同的数据消息流,作为其执行负载平衡操作(以跨执行服务容器的不同主机计算机分发负载)的一部分,这些服务容器执行服务操作。此TOR是为三个服务主机计算机605、607和609的集群680执行此类前端负载平衡操作的两个或更多个TOR的集群中的一部分。这些前端负载平衡操作在一些实施例中是确定性的(例如,基于流标识符散列和散列表查找),而在其它实施例中是随机的。
图6图示了在接收到第一数据消息流622后,第一服务主机计算机605的Linux OS614的虚拟接口端点612将该数据消息传递到服务分类器655,服务分类器655已经注册为此OS的XDP(快速数据路径)回调机制中的钩子。第一服务主机计算机605的服务分类器655使用流的属性集合(例如,五元组或七元组标识符)来执行第一服务分类操作,该第一服务分类操作识别第一服务链,该第一服务链指定要对数据消息执行的服务集合。
基于第一服务链的标识符,第一服务主机计算机的服务分类器确定在第一主机605上执行的服务容器必须对第一数据消息流622执行第一服务链的服务集合。例如,在一些实施例中,服务分类器根据服务链标识符计算散列值,然后在散列查找表中查找此散列值,该查找表将散列范围与不同的服务主机计算机标识符相关联。一些实施例基于其它参数结合或代替服务链标识符来计算散列值。此类其它参数的示例包括源网络地址(例如,源IP地址)、源端口、SPI等。
在其散列查找将第一主机计算机605识别为应当处理接收到的数据消息流的服务主机计算机之后,第一服务主机计算机605的服务分类器655选择第一主机计算机上的服务容器632和634来实现执行识别出的服务链中的服务的服务路径。然后,服务分类器将数据消息流622移交给在第一主机计算机605上执行的服务转发元件642,以将第一数据消息流的数据消息顺序地转发到第一主机计算机605上的两个识别出的服务容器632和634,使得这些服务容器可以对这些数据消息执行它们的服务操作。在服务处理之后,数据消息被转发到它们的下一跳目的地(例如,转发到由它们的原始层3和层4报头值所识别的目的地)。
图7图示了第二数据消息流724的处理,TOR 615最初也将第二数据消息流724转发到第一服务主机计算机605。在虚拟接口端点612处接收到第二数据消息流724的数据消息后,数据消息再次被转发到服务分类器655,因为它被注册为用于此接口的钩子函数。服务分类器655然后使用该流的属性集合(例如,五元组或七元组标识符)来执行第二服务分类操作,该第二服务分类操作识别第二服务链,第二服务链指定要对数据消息执行的第二服务集合。
基于第二服务链的标识符,第一主机计算机605确定第二主机计算机607上的服务容器必须对第二数据消息流724执行第二服务集合。再一次地,在一些实施例中,服务分类器根据服务链标识符和/或其它参数(诸如源IP地址、源端口地址、SPI等)计算散列值,然后在散列查找表中查找此散列值,该散列查找表将散列范围与不同的服务主机计算机标识符相关联。图7中的散列查找将第二主机计算机607识别为应当处理接收到的数据消息流的服务主机计算机。
因此,在图7中,服务分类器655将第二流724的数据消息交回给虚拟接口端点612以转发到第二主机计算机607。一旦在第二主机上的此虚拟接口端点处接收到第二流的数据消息,它就被传递到在此主机上执行的服务分类器755,该服务分类器然后执行分类操作以识别用于此数据消息的第二服务链的标识符。
基于第二服务链的标识符(例如,此标识符的散列),第二主机计算机607上的服务分类器755确定第二主机计算机607上的服务容器必须对接收到的数据消息及其流724执行第二服务集合。然后,服务分类器识别其主机上的两个服务容器736和738,这两个服务容器736和738必须实现执行识别出的服务链中的服务的服务路径。然后,它将接收到的第二流724的数据消息移交给在第二主机607上执行的服务转发元件742,以顺序地转发到第二主机607上的两个服务容器736和738中的每一个,使得这些服务容器可以对这些数据消息执行其服务操作。在服务处理之后,数据消息被转发到它们的下一跳目的地(例如,转发到由它们的原始层3和层4报头值所识别出的目的地)。
图8图示了在一些实施例中每个服务主机计算机(例如,计算机605、607和609)执行的过程800,以便对接收到的数据消息流执行服务操作,或者将数据消息重定向到另一服务主机计算机以用于服务处理。如图所示,当服务主机计算机的服务分类器155从其OS的虚拟接口端点612接收到要处理的数据消息时,过程800(在805处)开始。该过程然后(在810处)执行分类操作,该分类操作将接收到的数据消息的属性集合(例如,其五元组或七元组标识符)与服务分类规则的匹配准则进行匹配并从匹配的规则的动作元组中检索SCI。
然后服务分类器(在815处)使用检索到的SCI来确定在其主机计算机上执行的服务容器是否应当执行由SCI识别出的服务链的服务操作。为此,在一些实施例中,服务分类器根据SCI和与数据消息或识别出的服务链相关联的一个或多个其它参数(例如,源IP地址、源端口、SPI等)计算散列值,然后在散列查找表中查找此散列值,该查找表将散列范围与不同的服务主机计算机标识符相关联。在一些实施例中,当服务主机计算机发生故障时,与该服务主机计算机相关联的散列范围被自动指派给一个或多个其它服务主机计算机,这允许该服务主机计算机的服务分类和转发操作是容错的。
当服务分类器(在815处)确定其主机的服务容器应当执行识别出的服务链的服务操作时,服务分类器(在825处)执行过程300的操作320-335。另一方面,当它(在815处)确定另一主机的服务容器应当执行识别出的服务链的服务操作时,服务分类器(在820处)将数据消息交回给其主机OS的虚拟接口端点以转发到该另一主机计算机。在820和825之后,过程800结束。
在一些实施例中,过程800在每次对新的数据消息流执行分类操作时配置一个或多个前端转发元件(例如,前端负载平衡TOR 615)。具体而言,在810处执行其分类操作之后,过程800发送带内或带外数据消息(通过数据路径或通过控制路径发送消息),这些消息将数据消息的流标识符(例如,五元组或七元组标识符)与该过程(在810处)识别出的对数据消息流执行服务链的服务主机计算机的标识符进行关联。接收这种消息的前端转发元件在其连接跟踪器中创建记录,该记录将接收到的流标识符与接收到的主机标识符相关联,然后使用此记录来处理它在创建该记录之后所接收到的流中的后续数据消息。
图9进一步图示了图6和图7的分布式服务链分类和转发体系架构。该体系架构通过在执行服务容器(例如,在5G电信网络中实现VNF的服务容器)的服务主机计算机605、607和609上用分布式服务分类逻辑和转发来替换服务链分类器和服务转发元件从而消除了分立的服务链分类器和服务转发元件。服务主机计算机在本文档中也称为后端服务器。
如图所示,服务器集合110向服务主机计算机605、607和609中的每一个提供服务分类规则和服务转发规则的相同集合,并且配置这些计算机上的虚拟接口端点以使用这些规则。通过向这些服务主机计算机中的每个服务主机计算机提供服务分类规则和转发规则的相同集合,该服务器集合将这些主机计算机配置为实现分布式的服务分类和转发操作,如图9中分布式服务分类器955和分布式转发元件960的名称所描绘的那样。这些分类和转发操作是分布式的,因为它们基于服务主机计算机605、607和609上完全相同的分类和转发规则集而在服务主机计算机605、607和609上完全相同地执行。
在一些实施例中,每个服务主机计算机(后端服务器)从服务器集合110获得:(1)服务分类规则,其将流标识符与服务链标识符相关联,(2)每个服务链标识符的服务标识符的列表,(3)容器标识符的列表,其识别作为用于实现服务标识符的列表上所识别出的每个服务的候选的服务容器,(4)容器标识符的列表上识别出的每个服务容器的MAC地址,(5)用于接收重定向的数据消息流流量的其它服务主机计算机的列表,(6)这些其它服务主机计算机中的每一个的MAC地址,(7)用于为接收到的数据消息生成散列值的散列函数,以及(8)散列查找表,其将散列值与服务主机计算机的标识符相关联。
在一些实施例中,服务器集合110收集由服务主机计算机上的服务分类器955生成的统计信息。在一些实施例中,这些统计信息从服务主机计算机被推送(发布)到服务器集合,同时它们由服务器集合110从服务主机计算机拉取(检索)。服务器集合分析这些统计信息并基于此分析,为执行一个或多个服务链的集群添加或移除服务主机计算机。而且,在一些实施例中,服务器集合部署并配置服务主机计算机的多个集群,并为服务链的不同集合使用不同的服务主机计算机集群。在一些此类实施例中,服务器集合可以将一个服务链从一个服务主机计算机集群移到另一服务主机计算机集群。
一些实施例的服务分类器将用于服务链的所有服务容器选择为位于该服务分类器的主机上。在其它实施例中,用于服务链的不同服务容器可以在不同的主机计算机上操作。在这些实施例中的一些当中,不同的服务容器可以在不同数据中心中的主机计算机上执行。为了促进在不同数据中心之间转发数据消息以进行服务处理,一些实施例在数据中心中部署服务转发代理。在一些实施例中,服务代理是服务链中的另一服务节点,服务代理的操作涉及将数据消息转发到后续数据中心中的另一服务代理或从先前数据中心中的另一服务代理接收数据消息。
图10呈现了图示此类服务转发代理的使用的示例。具体而言,此图图示了由两个服务容器1020和1022执行的服务链的逻辑视图1005。它还图示了服务链的多云实施方式1010,其中第一服务容器1020在第一数据中心1040中的第一服务主机计算机1030上执行,并且第二服务容器1022在第二数据中心1042中的第二服务主机计算机1032上执行。如下文进一步描述的,这种多云实施方式1010使用第一和第二数据中心1040和1042中的服务转发代理1050和1052将数据消息从第一数据中心1040中的第一服务容器1020传递到第二数据中心1042中的第二服务容器1022。
在图10的示例中,数据消息1056的服务处理在第一数据中心1040中开始并且在第二数据中心1042中结束。在第一数据中心中,在第一服务主机计算机1030上执行的服务分类器1090识别用于该数据消息的服务链和实现此服务链的服务容器。然后它生成识别包括识别出的服务容器的服务路径的SPI,然后将SPI存储在第一主机计算机的存储器中以供服务代理1050以后使用。
在服务分类器1090识别出服务路径之后,它然后通过在第一主机计算机1030上执行的服务转发元件1070将数据消息传递到第一服务容器1020。第一服务容器1020然后执行其操作并将消息传递回服务转发元件1070。基于其转发规则,服务转发元件然后确定服务链中的下一个服务节点是用于将数据消息转发到另一数据中心的服务转发代理1050。在一些实施例中,服务转发代理被实现为容器。在其它实施例中,服务转发代理被实现为OS中的功能(就像服务分类器和服务转发元件),并且服务转发元件通过共享存储器将数据消息传递给服务转发代理。
服务转发代理1050然后用封装报头来封装数据消息并存储识别用于第二数据中心的服务路径的服务路径标识符(SPI)。在一些实施例中,此SPI是全局唯一SPI,其唯一地识别在服务路径上具有服务容器的每个数据中心中的服务路径。在图10的示例中,SPI唯一地识别第一和第二数据中心1040和1042中的服务路径。
在一些实施例中,服务转发代理1050执行一个或多个分类操作以识别用于后续数据中心1042中的服务转发代理1052的全局SPI和目的地地址。服务转发代理1050利用封装报头对数据消息进行封装,封装报头包括全局SPI和服务转发代理1052的网络地址(例如,代理1052的层3网络地址),然后将数据消息传递给中间网络以转发到服务转发代理1052。
在一些实施例中,全局唯一SPI包括用于每个服务的UUID(唯一通用标识符)和用于每个服务UUID的数据中心ID。在一些实施例中,全局唯一SPI由第一数据中心1040的服务分类器1090生成。在其它实施例中,服务分类器1090为第一数据中心1040生成局部SPI,并且服务转发代理1050将此局部SPI转换成全局唯一SPI。
利用全局SPI,在一些实施例中,服务转发代理1050在封装报头中包括下一服务跳标识符,该标识符识别用来处理数据消息的下一个服务或下一个服务容器。例如,当全局SPI具有每个服务容器的UUID时,在一些实施例中,下一服务跳标识符是对全局SPI中的服务容器UUID位置的引用,或者在其它实施例中,下一服务跳标识符被设置为此容器的UUID。在还有其它实施例中,服务转发代理1050在封装报头中不包括下一服务跳标识符。
在接收到封装的数据消息后,第二数据中心1042中的服务转发代理1052对数据消息进行解封装(从数据消息中移除封装报头),从被移除的报头中提取嵌入的SPI和下一跳标识符,并且使用SPI和下一跳标识符来识别服务路径中的应当在第二数据中心中处理数据消息的下一跳服务容器。然后它查找识别出的服务容器在第二数据中心中的网络地址(例如,MAC地址),然后将数据消息提供给在第二服务主机计算机1032上执行的服务转发元件1072以转发给服务容器1022。
在其它实施例中,服务转发代理1052不需要下一跳标识符,因为它被配置为基于它从封装报头中提取的全局SPI来识别服务链中的下一个服务节点。在这些实施例中的一些当中,服务转发代理1052基于提取的全局SPI执行分类操作以便识别下一跳容器。在其它实施例中,服务转发代理1052不使用提取的SPI来识别下一跳服务容器,而是代替地将SPI(以及下一跳标识符(如果提供有下一跳标识符的话))传递给服务转发元件1072以用于识别下一跳服务容器。在这些实施例中,服务转发元件1070和1072基于SPI(以及下一跳标识符(如果提供有下一跳标识符的话))执行它们的下一跳查找。
一旦服务容器1022处理了数据消息,服务路径的服务处理就完成了。在一些实施例中,服务转发元件1072设置目的地MAC地址以识别为服务路径定义的出口端口的虚拟接口端点。例如,在这些实施例中的服务路径的末端处,Linux网桥将该数据消息转发到它的虚拟接口端点,从那里它将被转发到它的下一个目的地。
在一些实施例中,服务转发代理在与执行服务分类器和/或服务容器的主机服务计算机不同的计算机上操作。然而,在其它实施例中(如图10中所示的实施例),服务转发代理以分布式方式被实现,与服务分类器和服务转发元件一样。而且,在一些实施例中,一个数据中心中的多个服务主机计算机上的多个服务容器实现服务路径的一部分。在一些此类实施例中,当服务路径跨越多个数据中心并且必须将数据消息流转发到另一数据中心以继续其沿着服务路径进行服务处理时,服务转发代理在数据中心中的最后一个服务主机计算机上操作。
在一些实施例中,第一数据中心(服务路径的第一服务容器在其中操作)中的服务分类器识别用于实现服务链的所有服务容器,包括任何(一个或多个)后续数据中心中的(一个或多个)其它服务容器,如上文参考图10所述。然而,在其它实施例中,初始服务分类器仅选择其自己的数据中心中的(一个或多个)服务容器,而将(一个或多个)其它数据中心中的(一个或多个)服务容器的选择留给(一个或多个)后续数据中心中的(一个或多个)服务分类器。
在图10中,每个数据中心被示为包括一个服务容器,该服务容器执行非常简单的服务链的一个服务操作。在其它实施例中,服务链可以大得多。例如,在一些实施例中,在数据消息被转发到另一数据中心之前,一个数据中心(例如,第一数据中心中)的多个服务容器对数据消息执行服务链的多个服务操作。然后,该另一数据中心中的一个或多个服务容器可以对数据消息执行一个或多个服务操作,然后将数据消息转发到又一个数据中心以进行服务链的进一步的服务处理。每次数据消息从一个数据中心传递到另一数据中心时,在一些实施例中,它被封装为具有全局SPI(以及下一跳标识符(如果使用下一跳标识符的话))以允许新数据中心识别服务路径以及服务路径中的下一个服务容器。
图11图示了一些实施例中的服务转发代理的附加属性。如图所示,在一些实施例中,可以使用两个数据中心中的两个服务转发代理(例如,数据中心1040和1042中的代理1050和1052)在两个数据中心之间转发许多数据消息流以进行服务处理。而且,在一些实施例中,数据中心中的服务转发代理可以将数据消息转发到多个其它数据中心中的多个其它服务转发代理,以及从该多个其它服务转发代理接收数据消息,从而实现跨越不同数据中心集合的服务链。
例如,数据中心1040中的服务转发代理1050封装数据消息流并将其转发到数据中心1042中的服务转发代理1052,并且封装数据消息流并将其转发到数据中心1124中的服务转发代理1114。数据中心1040中的服务转发代理1050还接收和解封装来自数据中心1042中的服务转发代理1052的数据消息流,以及接收和解封装来自数据中心1124中的服务转发代理1114的数据消息流。
如图11中所示,在一些实施例中,每个服务转发代理包括(1)转发代理1130,用于封装数据消息并将封装的数据消息发送到另一数据中心的另一服务转发代理,以及(2)接收代理1132,用于从另一数据中心的另一服务转发代理接收封装的数据消息,并对接收的数据消息进行解封装以在其数据中心进行处理。
图12呈现了概念性地图示使用不同数据中心中的服务容器来对数据消息执行与服务链相关联的服务的过程1200。如图所示,当主机计算机接收到要服务处理的数据消息时,过程1200(在1205处)开始。在一些实施例中,此数据消息被转发到服务主机计算机(例如,从前端负载平衡器转发),而在其它实施例中,数据消息是由在该主机计算机上执行的机器(例如,容器或虚拟机)生成的。
接下来,在1210处,在主机计算机上执行的服务分类器155执行服务分类操作以识别(1)用于数据消息的服务链,(2)实现服务链的服务路径,以及(3)识别此服务路径的SPI。在一些实施例中,服务分类器155通过执行图3的过程300来执行此操作。而且,在一些实施例中,由服务分类器指定的SPI是跨数据中心的全局唯一SPI,而在其它实施例中,它是局部SPI,该局部SPI在稍后阶段由服务转发代理转换成全局SPI。在一些实施例中,服务分类器将所指定的SPI(在1210处)存储在其主机计算机存储器中以供其相关联的服务转发元件和/或服务转发代理稍后使用,如下文进一步描述的。
对于图12中所示的实施例,分类操作(在1210处)将数据消息的目的地MAC地址指定为第一服务容器的MAC地址,并将此数据消息提供给在其主机计算机上执行的服务转发元件以转发到第一服务容器。如上面所提到的,在一些实施例中,服务分类器将数据消息的目的地MAC地址指定为服务转发元件的MAC地址,因为在这些实施例中,服务转发元件基于数据消息的源MAC来执行其服务转发。在一些实施例中,服务分类器还将源MAC地址指定为与特定服务路径的开端相关联的MAC地址,以允许服务转发元件识别用于服务路径的第一个服务容器。
在一些实施例中,服务分类器将指定的服务路径标识符提供给要使用的服务转发元件以执行其分类操作从而转发此流的数据消息。在这些实施例中的一些当中,服务分类器提供下一跳服务索引(其识别要在服务路径中执行的下一个服务),服务转发元件使用该下一跳服务索引来(1)执行其下一跳确定和(2)在将数据消息传递到服务容器时进行调整(例如,递减)以执行其后续的下一跳确定。
在1215处,服务转发元件执行分类操作以识别与下一个服务节点相关联的Linux网桥的虚拟接口端点。在一些实施例中,分类操作(在1215处)将数据消息的目的地MAC与查找表中的转发规则(其将不同的目的地MAC地址与不同的虚拟接口端点标识符相关联)的匹配准则进行比较。在这种方法下,该过程从如下转发规则中检索出用于下一跳虚拟接口端点的标识符,即,该转发规则将数据消息的目的地MAC作为其匹配准则。
在其它实施例中,过程1200以不同的方式来执行分类操作(在1215处)。例如,在一些实施例中,过程1200使用过程500的上述三个分类操作525-535,这些操作首先识别服务流的方向,然后使用数据消息的源MAC来识别下一个服务节点的目的地MAC,并且最后使用识别出的目的地MAC来识别虚拟接口端点。
在识别出连接到下一个服务容器的虚拟接口端点之后,服务转发元件(在1215处)通过识别出的虚拟接口端点将数据消息转发到此服务容器。服务容器对数据消息执行其服务操作(例如,中间盒服务操作等),然后(在1220处)将数据消息提供回服务转发元件。在一些实施例中,服务容器、其相关联的以太网端口206或相关联的网桥接口端点208将数据消息的源MAC地址改变为与该服务容器相关联的(例如,与其以太网端口206相关联的)MAC地址,因为服务转发元件使用该源MAC地址来执行其下一跳服务确定。
服务转发元件然后(在1225处)执行一组分类操作。第一分类操作将数据消息的L3源和目的地网络地址与分类规则(其被定义为对出口数据消息与入口数据消息进行区分)进行比较。如上所述,在一些实施例中,这些分类规则中的每一个分类规则识别用于执行第二分类操作的不同查找表。
在第一分类操作中识别出数据消息的流的方向(向上游的或向下游的)之后,服务转发元件使用通过第一分类操作识别出的查找表来执行第二分类操作,这一次是基于数据消息的当前源MAC地址。此第二分类操作将数据消息的当前源MAC地址与分类规则的匹配准则(该匹配准则是关于源MAC而指定的)进行匹配,该分类规则在其动作元组中提供下一跳标识符,该过程可以在1230处使用该下一跳标识符来确定下一跳在当前数据中心还是另一数据中心中。
在一些实施例中,此下一跳标识符是下一跳(例如,沿着服务路径的下一个服务节点,或为服务路径定义的出口端口)的目的地MAC。在其它实施例中,下一跳标识符包括数据中心标识符,该数据中心标识符识别沿着服务路径的下一跳服务节点的数据中心。在又一些实施例中,下一跳标识符采用不同的形式。
在1225处的分类操作之后,过程1200(在1230处)确定下一跳服务节点是否在同一数据中心中。如果是,那么过程(在1232处)执行一个或多个分类操作的集合以将数据消息的目的地MAC地址定义为下一跳服务节点(例如,服务容器)的MAC地址,并针对此新目的地MAC地址识别虚拟接口端点。在一些实施例中,此分类操作将识别出的下一跳目的地MAC与查找表中的转发规则的匹配准则进行比较,该转发规则将不同的目的地MAC地址与不同的虚拟接口端点标识符相关联。在这种方法下,过程从如下转发规则中检索出用于下一跳虚拟接口端点的标识符,即,该转发规则将数据消息的目的地MAC作为其匹配准则。
接下来,在1235处,该过程确定服务路径是否已经完成。如果不是,那么该过程(在1237处)将数据消息转发到下一个服务节点(例如,下一个服务容器),然后过渡到1220。当过程1200(在1235处)确定服务路径已经完成时,过程1200结束。当服务路径完成时,在通过1232的上一次迭代中所定义的目的地MAC地址是已为服务路径定义的出口目的地MAC。
在一些实施例中,此出口目的地MAC是与将数据消息转发到其下一个目的地(例如,SDDC中或SDDC外的另一目的地,或转发到将数据消息转发出SDDC的网关)的交换机或路由器相关联的MAC。在一些实施例中,出口目的地MAC识别为服务路径定义的出口虚拟接口端点。因此,在这些实施例中,在服务路径的末端处,Linux网桥将数据消息转发到虚拟接口端点,数据消息将从该虚拟接口端点被转发到它的下一个目的地。在一些实施例中,操作1230和1235实际上并不由服务转发元件执行,但是被包括于此,仅仅是为了说明一个数据中心中的服务路径的结束或服务路径的最终结束。
当该过程(在1230处)确定下一个服务节点在另一数据中心中时,服务转发元件(在1240处)将数据消息提供给服务转发代理(例如,与服务转发元件在同一个主机计算机上的代理)。此确定在不同实施例中以不同方式进行。例如,在一些实施例中,当在1225处指定的下一跳目的地MAC属于与服务转发代理相关联的网桥的虚拟接口端点时,该过程确定下一个服务节点在另一数据中心中。在其它实施例中,在1225处的下一跳查找提供了指定下一跳服务节点在另一数据中心中的另一标识符。
接下来,在1245处,服务转发代理基于接收到的数据消息的报头值(例如,数据消息的七元组标识符的全部或部分)来执行分类操作,以识别全局唯一SPI,该SPI识别用于下一个数据中心的服务路径。如上面所提到的,在一些实施例中,全局唯一SPI由第一数据中心的服务分类器生成。在其它实施例中,服务分类器为第一数据中心生成局部SPI,并且服务转发代理将此局部SPI转换成全局唯一SPI。
利用全局SPI,在一些实施例中,服务转发代理(在1245处)识别服务跳标识符,该服务跳标识符识别要处理数据消息的下一个服务或下一个服务容器。例如,当全局SPI具有每个服务容器的UUID时,在一些实施例中,下一服务跳标识符是对全局SPI中的下一个服务容器UUID的引用,或者在其它实施例中,下一服务跳标识符被设置为此容器的UUID。代理在1245处的分类操作,或此代理在1245处执行的另一分类操作,提供下一个数据中心处的服务转发代理的网络地址。
在1250处,服务转发代理利用封装报头来封装数据消息,并将识别出的全局SPI存储在此报头中。在使用服务跳标识符的实施例中,服务转发代理还(在1250处)将服务跳标识符包括在封装报头中。然后,它(在1250处)将封装的数据消息转发到下一个数据中心的服务转发代理。在一些实施例中,封装报头是隧道报头,该隧道报头与在两个服务转发代理之间(例如,在执行服务转发代理的主机计算机上执行的虚拟接口之间)建立的隧道相关联。此隧道报头允许数据消息通过中间网络架构(例如,中间路由器和交换机)以到达其它服务转发代理。
在1255处,在接收到封装的数据消息后,其它数据中心(称为新数据中心)中的服务转发代理对数据消息进行解封装(从数据消息中移除封装报头),提取嵌入的SPI(以及下一跳标识符(如果包括下一跳标识符的话)),并使用提取的参数(例如,SPI)来识别服务路径中应当在第二个数据中心处理数据消息的下一跳服务容器。
然后,它(在1255处)查找识别出的第二数据中心中的服务容器的网络地址(例如,MAC地址),然后(在1215处)将数据消息提供给在其主机计算机上执行的服务转发元件,以转发到与此网络地址相关联的服务容器。一旦服务转发元件接收到数据消息,过程1200就重复其从1215开始的操作。
在其它实施例中,过程1200在1255处以不同的方式来执行其操作。例如,在一些实施例中,服务转发代理(在1255处)将数据消息的目的地MAC地址指定为服务转发元件的MAC地址,因为在这些实施例中,服务转发元件基于数据消息的源MAC来执行其服务转发。在这些实施例中的一些当中,服务转发代理(在1255处)将源MAC地址指定为与特定服务路径的开端相关联的MAC地址,以允许服务转发元件识别用于服务路径的第一个服务容器。
在还有其它实施例中,代替使用SPI来识别下一跳服务容器,新数据中心中的服务转发代理将SPI(以及下一跳标识符(当包括下一跳标识符时))传递给其相关联的要使用的服务转发元件以识别下一跳服务容器。在这些实施例中,服务转发元件基于SPI和下一跳标识符执行它们的下一跳查找。当服务路径跨越多于两个数据中心时,过程1200将循环通过1240-1255多次,每次过渡到一新数据中心。
上述特征和应用中的许多被实现为软件过程,这些软件过程被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的指令集。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器的核心或其它处理单元)执行时,它们使(一个或多个)处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于CD-ROM、闪存驱动器、RAM芯片、硬盘驱动器、EPROM等。计算机可读介质不包括通过无线或有线连接传递的载波和电子信号。
在本说明书中,术语“软件”是指包括驻留在只读存储器中的固件或者可以被读入到存储器中用于被处理器处理的存储在磁存储中的应用。此外,在一些实施例中,多个软件发明可以被实现为更大程序的子部分,同时保持不同的软件发明。在一些实施例中,多个软件发明也可以被实现为单独的程序。最后,一起实现本文所描述的软件发明的单独程序的任意组合是在本发明的范围之内。在一些实施例中,当软件程序被安装以在一个或多个电子系统上操作时,该软件程序定义执行该软件程序的操作的一个或多个特定的机器实现。
图13概念性地示出了实现本发明的一些实施例的计算机系统1300。计算机系统1300可以用于实现任何上述主机、控制器和管理器。由此,它可以用于执行任何上述处理。该计算机系统包括各种类型的非临时性机器可读介质和用于各种其它类型的机器可读介质的接口。计算机系统1300包括总线1305、(一个或多个)处理单元1310、系统存储器1325、只读存储器1330、永久存储设备1335、输入设备1340和输出设备1345。
总线1305统一地表示通信地连接计算机系统1300的众多内部设备的所有系统、外围设备和芯片组总线。例如,总线1305将(一个或多个)处理单元1310与只读存储器1330、系统存储器1325和永久存储设备1335通信地连接。
从这些各种存储器单元中,(一个或多个)处理单元1310检索要执行的指令和要处理的数据,以便执行本发明的处理。(一个或多个)处理单元在不同实施例中可以是单个处理器或多核心处理器。只读存储器(ROM)1330存储由(一个或多个)处理单元1310和计算机系统的其它模块所需要的静态数据和指令。另一方面,永久存储设备1335是读和写存储器设备。此设备是即使当计算机系统1300关闭时也存储指令和数据的非易失性存储单元。本发明的一些实施例使用大容量存储设备(诸如磁或光盘及其对应的盘驱动器)作为永久存储设备1335。
其它实施例使用可移除存储设备(诸如软盘、闪存驱动器等)作为永久存储设备。与永久存储设备1335一样,系统存储器1325是读和写存储器设备。然而,与存储设备1335不同,系统存储器是易失性读和写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时需要的一些指令和数据。在一些实施例中,本发明的处理被存储在系统存储器1325、永久存储设备1335和/或只读存储器1330中。从这些各种存储器单元中,(一个或多个)处理单元1310检索要执行的指令和要处理的数据,以便执行一些实施例的处理。
总线1305还连接到输入和输出设备1340和1345。输入设备使用户能够传递信息和选择到计算机系统的命令。输入设备1340包括字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备1345显示由计算机系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(CRT)或液晶显示器(LCD)。一些实施例包括诸如用作输入和输出设备两者的触摸屏的设备。
最后,如图13中所示,总线1305还通过网络适配器(图中未示出)将计算机系统1300耦合到网络1365。以这种方式,计算机可以是计算机的网络(诸如局域网(“LAN”)、广域网(“WAN”)、或内联网、或诸如互联网的网络的网络)的一部分,计算机系统1300的任何或所有部件可以与本发明结合使用。
一些实施例包括电子部件,诸如微处理器、在机器可读或计算机可读介质(可替代地称为计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令的存储设备和存储器。这种计算机可读介质的一些示例包括RAM、ROM、只读压缩盘(CD-ROM)、可记录压缩盘(CD-R)、可重写压缩盘(CD-RW)、只读数字多功能盘(例如,DVD-ROM,双层DVD-ROM)、各种可记录/可重写DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、闪存存储器(例如,SD卡、小型SD卡、微型SD卡等)、磁和/或固态硬盘驱动器、只读和可记录盘、超密度光盘、任何其它光或磁介质,以及软盘。计算机可读介质可以存储可由至少一个处理单元执行的并且包括用于执行各种操作的指令集合的计算机程序。计算机程序或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子部件、或利用解释器的微处理器执行的更高级代码的文件。
虽然以上讨论主要指执行软件的微处理器或多核心处理器,但是一些实施例由一个或多个集成电路来执行,诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。在一些实施例中,这种集成电路执行在该电路自身上存储的指令。
如在本说明书中所使用的,术语“计算机”、“服务器”、“处理器”、以及“存储器”都是指电子或其它技术设备。这些术语不包括人或人群。为了本说明书的目的,术语显示或正在显示意味着在电子设备上显示。如本说明书中所使用的,术语“计算机可读介质”、“多个计算机可读介质”和“机器可读介质”被完全限制为以由计算机可读的形式存储信息的、有形的、物理的对象。这些术语不包括任何无线信号、有线下载信号、以及任何其它短暂或临时信号。
虽然本发明已经参考许多特定细节进行了描述,但是本领域普通技术人员将认识到,在不脱离本发明的精神的情况下,本发明可以以其它特定形式体现。例如,代替选择服务容器来实现服务路径,一些实施例的服务分类器选择服务虚拟机来实现服务路径。因此,本领域普通技术人员将理解,本发明不受上述说明性细节的限制,而是由所附权利要求来定义。
Claims (21)
1.一种对数据消息执行服务的方法,所述方法包括:
在服务分类器处,
识别用于所述数据消息的服务链,所述服务链包括要对所述数据消息执行的多个服务;
为识别出的服务链中的每个服务识别用于执行该服务的服务容器;
将所述数据消息转发到服务转发元件,以转发所述数据消息穿过为识别出的服务链而识别出的服务容器。
2.如权利要求1所述的方法,其中,为识别出的服务链中的每个服务识别服务容器包括:执行至少一个负载平衡操作以从用于至少一个特定服务的两个或更多个候选服务容器的集合中选择特定服务容器。
3.如权利要求2所述的方法,其中,执行负载平衡操作包括:引导为所述特定服务指定的负载平衡器从用于所述特定服务的候选服务容器的所述集合中选择容器。
4.如权利要求2所述的方法,其中,执行负载平衡操作包括:使用与由所述容器集合中的每个容器处理的数据消息有关的统计信息,从容器的所述集合中为所述数据消息选择一个特定容器。
5.如权利要求1所述的方法,其中,所述数据消息是第一数据消息,所述方法还包括:
将所述第一数据消息与服务路径标识符相关联,所述服务路径标识符识别为实现用于第一数据消息的识别出的服务链而选择的容器;
将所述服务路径标识符提供给所述服务转发元件,以提供给要使用的另一服务分类器以便为响应于所述第一数据消息而发送的第二数据消息选择服务路径。
6.如权利要求1所述的方法,其中
一组服务容器在主机计算机的操作系统之上执行;
所述操作系统OS包括OS命名空间,所述OS命名空间用于执行匹配-动作转发操作;
每个服务容器包括容器命名空间;
所述服务转发元件是通过为所述组中的每个服务容器在所述OS命名空间中配置虚拟接口端点并且通过在每个服务容器的容器命名空间中配置虚拟接口端点来实现的。
7.如权利要求6所述的方法,其中,至少一组匹配-动作转发操作包括:(i)匹配分类操作,所述匹配分类操作将所述数据消息的层2目的地网络地址以及所述数据消息的层3源或目的地网络地址与转发规则的选择准则进行比较,以及(ii)动作操作,所述动作操作修改所述数据消息的层2目的地网络地址。
8.如权利要求6所述的方法,其中,所述操作系统是Linux操作系统,并且所述Linux操作系统的命名空间执行桥接转发操作。
9.如权利要求1所述的方法,其中,识别服务链包括将与所述数据消息相关联的一组属性与至少一个服务-链识别规则的至少一个选择准则进行比较,以识别与所述数据消息相匹配的并且为匹配的数据消息指定服务链的服务-链识别规则。
10.如权利要求1所述的方法,其中
匹配的所述服务-链识别规则为由所述服务-链识别规则识别出的每个服务识别服务-容器选择器;并且
为识别出的服务链中的每个服务识别服务容器包括:引导所述服务-容器选择器从用于该服务的两个或更多个候选服务容器的集合中选择特定服务容器。
11.一种非暂态机器可读介质,所述非暂态机器可读介质存储服务分类程序,所述服务分类程序由至少一个处理单元执行以对穿过网络的数据消息执行服务,所述程序包括用于以下操作的指令集:
识别用于所述数据消息的服务链,所述服务链包括要对所述数据消息执行的多个服务;
为识别出的服务链中的每个服务识别用于执行该服务的服务容器;
将所述数据消息转发到服务转发元件,以转发所述数据消息穿过为识别出的服务链而识别出的服务容器。
12.如权利要求11所述的非暂态机器可读介质,其中,用于为识别出的服务链中的每个服务识别服务容器的指令集包括用于以下操作的指令集:执行至少一个负载平衡操作以从用于至少一个特定服务的两个或更多个候选服务容器的集合中选择特定服务容器。
13.如权利要求12所述的非暂态机器可读介质,其中,用于执行负载平衡操作的指令集包括用于以下操作的指令集:引导为所述特定服务指定的负载平衡器从用于所述特定服务的候选服务容器的所述集合中选择容器。
14.如权利要求12所述的非暂态机器可读介质,其中,用于执行负载平衡操作的指令集包括用于以下操作的指令集:使用与由所述容器集合中的每个容器处理的数据消息有关的统计信息,从容器的所述集合中为所述数据消息选择一个特定容器。
15.如权利要求11所述的非暂态机器可读介质,其中,所述数据消息是第一数据消息,所述程序还包括用于以下操作的指令集:
将所述第一数据消息与服务路径标识符相关联,所述服务路径标识符识别为实现用于第一数据消息的识别出的服务链而选择的容器;
将所述服务路径标识符提供给所述服务转发元件,以提供给要使用的另一服务分类器以便为响应于所述第一数据消息而发送的第二数据消息选择服务路径。
16.如权利要求11所述的非暂态机器可读介质,其中
一组服务容器在主机计算机的操作系统之上执行;
所述操作系统OS包括OS命名空间,所述OS命名空间用于执行匹配-动作转发操作;
每个服务容器包括容器命名空间;
所述服务转发元件是通过为所述组中的每个服务容器在所述OS命名空间中配置虚拟接口端点并且通过在每个服务容器的容器命名空间中配置虚拟接口端点来实现的。
17.如权利要求16所述的非暂态机器可读介质,其中,至少一组匹配-动作转发操作包括:(i)匹配分类操作,所述匹配分类操作将所述数据消息的层2目的地网络地址以及所述数据消息的层3源或目的地网络地址与转发规则的选择准则进行比较,以及(ii)动作操作,所述动作操作修改所述数据消息的层2目的地网络地址。
18.如权利要求16所述的非暂态机器可读介质,其中,所述操作系统是Linux操作系统,并且所述Linux操作系统的命名空间执行桥接转发操作。
19.如权利要求11所述的非暂态机器可读介质,其中,用于识别服务链的指令集包括用于以下操作的指令集:将与所述数据消息相关联的一组属性与至少一个服务-链识别规则的至少一个选择准则进行比较,以识别与所述数据消息相匹配的并且为匹配的数据消息指定服务链的服务-链识别规则。
20.如权利要求11所述的非暂态机器可读介质,其中
匹配的所述服务-链识别规则为由所述服务-链识别规则识别出的每个服务识别服务-容器选择器;并且
用于为识别出的服务链中的每个服务识别服务容器的指令集包括用于以下操作的指令集:引导所述服务-容器选择器从用于该服务的两个或更多个候选服务容器的集合中选择特定服务容器。
21.一种对数据消息执行服务的方法,该方法包括:
在服务分类器处,
识别用于所述数据消息的服务链,所述服务链包括要对所述数据消息执行的多个服务;
为每个服务识别用于执行识别出的服务链中的每个服务的服务节点,其中为至少一个特定服务识别至少一个特定服务节点包括:执行负载平衡操作以从用于所述特定服务的两个或更多个候选服务节点的集合中选择特定服务节点;
将数据消息转发到为识别出的服务链中的第一服务识别出的服务节点。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/668,485 | 2019-10-30 | ||
US16/668,477 US20210136140A1 (en) | 2019-10-30 | 2019-10-30 | Using service containers to implement service chains |
US16/668,505 US11283717B2 (en) | 2019-10-30 | 2019-10-30 | Distributed fault tolerant service chain |
US16/668,485 US11140218B2 (en) | 2019-10-30 | 2019-10-30 | Distributed service chain across multiple clouds |
US16/668,477 | 2019-10-30 | ||
US16/668,505 | 2019-10-30 | ||
PCT/US2020/043649 WO2021086462A1 (en) | 2019-10-30 | 2020-07-26 | Distributed service chain across multiple clouds |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114342342A true CN114342342A (zh) | 2022-04-12 |
CN114342342B CN114342342B (zh) | 2024-09-03 |
Family
ID=72087183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080060199.0A Active CN114342342B (zh) | 2019-10-30 | 2020-07-26 | 跨多个云的分布式服务链 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3991393A1 (zh) |
CN (1) | CN114342342B (zh) |
WO (1) | WO2021086462A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037812A (zh) * | 2022-06-06 | 2022-09-09 | 国科华盾(北京)科技有限公司 | 一种面向容器云场景的网络模式数据处理方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9225638B2 (en) | 2013-05-09 | 2015-12-29 | Vmware, Inc. | Method and system for service switching using service tags |
US10135737B2 (en) | 2014-09-30 | 2018-11-20 | Nicira, Inc. | Distributed load balancing systems |
US11296930B2 (en) | 2014-09-30 | 2022-04-05 | Nicira, Inc. | Tunnel-enabled elastic service model |
US10609091B2 (en) | 2015-04-03 | 2020-03-31 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US10805181B2 (en) | 2017-10-29 | 2020-10-13 | Nicira, Inc. | Service operation chaining |
EP3726860A4 (en) * | 2017-12-14 | 2021-04-21 | Lg Electronics Inc. | V2X COMMUNICATION DEVICE AND ASSOCIATED COMMUNICATION PROCESS |
US10797910B2 (en) | 2018-01-26 | 2020-10-06 | Nicira, Inc. | Specifying and utilizing paths through a network |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US11042397B2 (en) | 2019-02-22 | 2021-06-22 | Vmware, Inc. | Providing services with guest VM mobility |
US11140218B2 (en) | 2019-10-30 | 2021-10-05 | Vmware, Inc. | Distributed service chain across multiple clouds |
US11283717B2 (en) | 2019-10-30 | 2022-03-22 | Vmware, Inc. | Distributed fault tolerant service chain |
US11223494B2 (en) | 2020-01-13 | 2022-01-11 | Vmware, Inc. | Service insertion for multicast traffic at boundary |
US11153406B2 (en) | 2020-01-20 | 2021-10-19 | Vmware, Inc. | Method of network performance visualization of service function chains |
US11659061B2 (en) | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
US11212356B2 (en) | 2020-04-06 | 2021-12-28 | Vmware, Inc. | Providing services at the edge of a network using selected virtual tunnel interfaces |
US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11611625B2 (en) * | 2020-12-15 | 2023-03-21 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7499463B1 (en) * | 2005-04-22 | 2009-03-03 | Sun Microsystems, Inc. | Method and apparatus for enforcing bandwidth utilization of a virtual serialization queue |
US20140029447A1 (en) * | 2012-07-25 | 2014-01-30 | Qualcomm Atheros, Inc. | Forwarding tables for hybrid communication networks |
US20140254374A1 (en) * | 2013-03-11 | 2014-09-11 | Cisco Technology, Inc. | Methods and devices for providing service clustering in a trill network |
US20150263946A1 (en) * | 2014-03-14 | 2015-09-17 | Nicira, Inc. | Route advertisement by managed gateways |
CN105706420A (zh) * | 2013-06-28 | 2016-06-22 | 瑞典爱立信有限公司 | 用于实现提供商网络中的服务链的系统和方法 |
US20160182684A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick Connor | Parallel processing of service functions in service function chains |
US20160212048A1 (en) * | 2015-01-15 | 2016-07-21 | Hewlett Packard Enterprise Development Lp | Openflow service chain data packet routing using tables |
CN105847069A (zh) * | 2012-06-06 | 2016-08-10 | 瞻博网络公司 | 针对虚拟网络分组流的物理路径确定 |
US20160344565A1 (en) * | 2015-05-20 | 2016-11-24 | Cisco Technology, Inc. | System and method to facilitate the assignment of service functions for service chains in a network environment |
US20170041288A1 (en) * | 2015-03-30 | 2017-02-09 | Emc Corporation | Network address sharing in a multitentant, monolithic application environment |
CN107005584A (zh) * | 2014-09-30 | 2017-08-01 | Nicira股份有限公司 | 内联服务交换机 |
US20170257432A1 (en) * | 2011-02-09 | 2017-09-07 | Cliqr Technologies Inc. | Apparatus, systems and methods for container based service deployment |
CN107852368A (zh) * | 2015-07-14 | 2018-03-27 | 微软技术许可有限责任公司 | 用于网络服务的高度可用的服务链 |
CN107925589A (zh) * | 2015-08-28 | 2018-04-17 | Nicira股份有限公司 | 将远程设备管理属性分发给服务节点以用于服务规则处理 |
US20180159801A1 (en) * | 2016-12-07 | 2018-06-07 | Nicira, Inc. | Service function chain (sfc) data communications with sfc data in virtual local area network identifier (vlan id) data fields |
CN108418705A (zh) * | 2018-01-29 | 2018-08-17 | 山东汇贸电子口岸有限公司 | 虚拟机与容器混合嵌套架构的虚拟网络管理方法及系统 |
CN109561108A (zh) * | 2019-01-07 | 2019-04-02 | 中国人民解放军国防科技大学 | 一种基于策略的容器网络资源隔离控制方法 |
-
2020
- 2020-07-26 WO PCT/US2020/043649 patent/WO2021086462A1/en unknown
- 2020-07-26 CN CN202080060199.0A patent/CN114342342B/zh active Active
- 2020-07-26 EP EP20757053.2A patent/EP3991393A1/en active Pending
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7499463B1 (en) * | 2005-04-22 | 2009-03-03 | Sun Microsystems, Inc. | Method and apparatus for enforcing bandwidth utilization of a virtual serialization queue |
US20170257432A1 (en) * | 2011-02-09 | 2017-09-07 | Cliqr Technologies Inc. | Apparatus, systems and methods for container based service deployment |
CN105847069A (zh) * | 2012-06-06 | 2016-08-10 | 瞻博网络公司 | 针对虚拟网络分组流的物理路径确定 |
US20140029447A1 (en) * | 2012-07-25 | 2014-01-30 | Qualcomm Atheros, Inc. | Forwarding tables for hybrid communication networks |
US20140254374A1 (en) * | 2013-03-11 | 2014-09-11 | Cisco Technology, Inc. | Methods and devices for providing service clustering in a trill network |
CN105706420A (zh) * | 2013-06-28 | 2016-06-22 | 瑞典爱立信有限公司 | 用于实现提供商网络中的服务链的系统和方法 |
US20150263946A1 (en) * | 2014-03-14 | 2015-09-17 | Nicira, Inc. | Route advertisement by managed gateways |
CN107005584A (zh) * | 2014-09-30 | 2017-08-01 | Nicira股份有限公司 | 内联服务交换机 |
US20160182684A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick Connor | Parallel processing of service functions in service function chains |
US20160212048A1 (en) * | 2015-01-15 | 2016-07-21 | Hewlett Packard Enterprise Development Lp | Openflow service chain data packet routing using tables |
US20170041288A1 (en) * | 2015-03-30 | 2017-02-09 | Emc Corporation | Network address sharing in a multitentant, monolithic application environment |
US20160344565A1 (en) * | 2015-05-20 | 2016-11-24 | Cisco Technology, Inc. | System and method to facilitate the assignment of service functions for service chains in a network environment |
CN107852368A (zh) * | 2015-07-14 | 2018-03-27 | 微软技术许可有限责任公司 | 用于网络服务的高度可用的服务链 |
CN107925589A (zh) * | 2015-08-28 | 2018-04-17 | Nicira股份有限公司 | 将远程设备管理属性分发给服务节点以用于服务规则处理 |
US10397275B2 (en) * | 2015-08-28 | 2019-08-27 | Nicira, Inc. | Creating and using remote device management attribute rule data store |
US20180159801A1 (en) * | 2016-12-07 | 2018-06-07 | Nicira, Inc. | Service function chain (sfc) data communications with sfc data in virtual local area network identifier (vlan id) data fields |
CN108418705A (zh) * | 2018-01-29 | 2018-08-17 | 山东汇贸电子口岸有限公司 | 虚拟机与容器混合嵌套架构的虚拟网络管理方法及系统 |
CN109561108A (zh) * | 2019-01-07 | 2019-04-02 | 中国人民解放军国防科技大学 | 一种基于策略的容器网络资源隔离控制方法 |
Non-Patent Citations (5)
Title |
---|
HALPERN J 等: "Service Function Chaining (SFC) Architecture; rfc7665.txt", INTERNET ENGINEERING TASK FORCE (IETF), 20 October 2015 (2015-10-20), pages 1 - 32, XP015107717 * |
HALPERN J等: "Service Function Chaining (SFC) Architecture; rfc7665.txt", INTERNET ENGINEERING TASK FORCE (IETF) * |
M. BOUCADAIR, ED.;ORANGE;: "Service Function Chaining (SFC) Control Plane Components & Requirements draft-ietf-sfc-control-plane-05", IETF * |
N. SIASI等: "Container-Based Service Function Chain Mapping; doi: 10.1109/SoutheastCon42311.2019.9020336", 2019 SOUTHEASTCON, IEEE, pages 1 - 6 * |
R. FERNANDO; CISCO; S. MACKIE;D. RAO; CISCO;B. RIJSMAN;M. NAPIERALA;AT AMP;AMP;AMP;T;T. MORIN;ORANGE;: "Service Chaining using Virtual Networks with BGP VPNs draft-ietf-bess-service-chaining-02", IETF * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037812A (zh) * | 2022-06-06 | 2022-09-09 | 国科华盾(北京)科技有限公司 | 一种面向容器云场景的网络模式数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2021086462A1 (en) | 2021-05-06 |
EP3991393A1 (en) | 2022-05-04 |
CN114342342B (zh) | 2024-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114342342B (zh) | 跨多个云的分布式服务链 | |
US11722559B2 (en) | Distributed service chain across multiple clouds | |
US11283717B2 (en) | Distributed fault tolerant service chain | |
JP7417816B2 (ja) | ゲストvmモビリティを使用したサービスの提供 | |
US20230123237A1 (en) | Forwarding element with physical and virtual data planes | |
US20210136140A1 (en) | Using service containers to implement service chains | |
JP7475491B2 (ja) | 仮想ポート識別子を使用するフロー処理オフロード | |
US9590907B2 (en) | Service chaining in a cloud environment using software defined networking | |
CN108886496B (zh) | 多路径虚拟交换 | |
US20230179475A1 (en) | Common connection tracker across multiple logical switches | |
US10938594B1 (en) | Transparent demilitarized zone providing stateful service between physical and logical networks | |
US11909558B2 (en) | Port mapping for bonded interfaces of ECMP group | |
CN114342333A (zh) | 在物理和逻辑网络之间提供有状态服务的透明隔离区 | |
US11528224B1 (en) | Dynamic traffic redirection for a virtual gateway of a distributed tunnel fabric |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: U.S.A. Address after: California, USA Applicant after: Weirui LLC Address before: California, USA Applicant before: VMWARE, Inc. Country or region before: U.S.A. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |