使用服务平面在网络的边缘处执行服务的制作方法

文档序号:32339697发布日期:2022-11-26 09:20阅读:49来源:国知局
使用服务平面在网络的边缘处执行服务的制作方法
使用服务平面在网络的边缘处执行服务


背景技术:

1.如今的数据中心为多种不同类型的业务提供边缘服务。在过去,针对不同类型的业务的边缘服务使用不同的机制来执行服务分类。边缘服务的新用例需要更多提供边缘服务的机制。为了简化为多种类型的业务提供边缘服务,本领域需要一种提供边缘服务的新方法。


技术实现要素:

2.一些虚拟化计算环境提供了位于外部网络和内部网络(例如,逻辑网络)之间的边缘转发元件。在一些实施例中,虚拟化计算环境为虚拟化计算环境内的子网络提供附加的边缘转发元件(和边缘服务)。例如,可以(例如,由提供商网络)在数据中心内实现各自具有其自己的边缘设备的不同逻辑网络,该数据中心在外部网络和数据中心内部的网络之间提供边缘转发元件。每个逻辑网络(例如,租户网络或提供商网络)包括至少一个边缘转发元件,在一些实施例中,该至少一个边缘转发元件在边缘主机上或作为边缘计算节点执行以向逻辑网络提供对外部网络的访问,反之亦然。在一些实施例中,边缘转发元件为边缘转发元件处理的业务提供服务(例如,边缘服务)集合。
3.一些实施例提供了用于为与在逻辑网络和外部网络之间操作的边缘转发元件相关联的逻辑网络提供不同类型服务的新颖方法。边缘转发元件接收用于转发的数据消息,并执行服务分类操作以选择针对该数据消息的特定类型的服务集合。该特定类型的服务是使用不同传输机制将数据转发到提供该服务的服务节点集合(例如,服务虚拟机或服务设备等)的多种不同类型的服务之一。然后,边缘转发元件在已经执行了所选服务集合之后接收数据消息,并执行转发操作以转发数据消息。在一些实施例中,该方法还由位于逻辑网络内的逻辑网络段的边缘处的边缘转发元件来执行。
4.在一些实施例中,传输机制包括逻辑服务转发平面(被实现为逻辑服务转发元件),该逻辑服务转发平面将边缘转发元件连接到各自提供该服务集合中的服务的服务节点集合。在选择该服务集合时,一些实施例的服务分类操作识别必须对数据消息执行的多个服务操作的链。在一些实施例中,服务分类操作包括为所识别的服务链选择服务路径以提供多个服务。在选择服务路径之后,沿着所选服务路径发送数据消息,以提供服务。一旦服务已经被提供,则数据消息由服务路径中执行最后一个服务操作的最后一个服务节点返回到边缘转发元件,并且边缘转发元件对数据消息执行下一跳转发或者执行转发操作以转发数据消息。
5.一些实施例在为一些数据消息识别的服务链中提供有状态服务。为了支持服务链中的有状态服务,一些实施例在边缘转发元件使用的连接追踪器存储设备中生成连接追踪记录,以追踪针对需要多个不同服务集合(即,服务链)的多个数据消息流做出的服务插入决策。边缘转发元件(例如,路由器)在边缘转发元件的特定接口处接收正在两台机器之间的前方向上穿过边缘转发元件的数据消息。在一些实施例中,数据消息是前向数据消息流(例如,共享相同属性集合的数据消息集合)中的第一数据消息,其与两台机器之间的反向
数据消息流一起构成双向流。
6.边缘转发元件识别(1)针对所接收的数据消息的有状态服务集合,以及(2)在前方向上与所识别的有状态服务集合相关联的下一跳,以及在反方向上与所识别的有状态服务集合相关联的下一跳。基于所识别的服务集合以及针对前和反方向的下一跳,边缘转发元件分别为前向和反向数据消息流生成并存储第一和第二连接追踪记录。第一和第二连接追踪记录分别包括为前和反方向数据消息流识别的下一跳。边缘转发元件将所接收的数据消息转发到为前向识别的下一跳,并且对于由边缘转发元件接收的前向和反向数据消息流的后续数据消息,使用所存储的连接追踪记录来识别用于转发的下一跳。
7.一些实施例将边缘转发元件配置为执行服务插入操作,以识别要对边缘转发元件在边缘转发元件的多个虚拟接口处接收以用于转发的数据消息执行的有状态服务。在一些实施例中,服务插入操作包括应用服务插入规则集合。服务插入规则(1)指定标准集合以及要对匹配该标准的数据消息采取的相应动作(例如,重定向动作和重定向目的地),并且(2)与服务插入规则所应用于的接口集合相关联。在一些实施例中,使用通用唯一标识符(uuid)来指定动作,该通用唯一标识符然后被用作识别服务插入的类型和下一跳数据集合的后续策略查找的匹配标准。边缘转发元件被配置为,针对每个虚拟接口,将相关的服务插入规则集合应用于在该虚拟接口处接收的数据消息(即,做出服务插入决策)。
8.如上所述,边缘转发元件被配置有连接追踪器存储设备,该连接追踪器存储设备基于针对数据消息流中的第一数据消息执行的服务插入操作的结果来存储针对数据消息流的连接追踪记录。在一些实施例中,连接追踪器存储设备是针对边缘转发元件的所有接口的通用存储设备,并且每个连接追踪记录包括用于识别针对与连接追踪记录对应的数据消息流的有状态服务集合和下一跳的服务插入规则的标识符。
9.在一些实施例中,服务插入操作包括在连接追踪器存储设备中的第一查找,以识别针对在接口处接收的数据消息的连接追踪记录(如果它存在的话)。如果连接追踪记录存在,则包括与所接收的数据消息的数据消息属性匹配的数据消息属性集合(例如,数据消息流标识符)的所有连接追踪数据记录被识别为针对数据消息的可能的连接记录集合。基于服务插入规则标识符和在其上接收到数据消息的接口,存储被应用于接口的服务插入规则的标识符的可能连接记录集合中的连接追踪记录被识别为存储针对所接收的数据消息的动作。如果识别了所接收的数据消息的连接追踪记录,则边缘转发元件基于在连接追踪记录中存储的动作来转发数据消息。如果未识别连接追踪记录(例如,数据消息是数据消息流中的第一数据消息),则边缘转发元件使用服务插入规则来识别针对数据消息的动作,并生成连接追踪记录,并将连接追踪记录存储在连接追踪器存储设备中。
10.一些实施例提供了一种执行有状态服务的方法,该方法追踪服务节点的状态改变以在必要时更新连接追踪器记录。在边缘设备处维护指示服务节点的状态的至少一个全局状态值。在一些实施例中,为服务链服务节点(scsn)和第2层线路中插件(bump-in-the-wire)服务节点(l2 sn)维护不同的全局状态值。该方法在连接追踪器存储设备中生成记录,该记录包括作为数据消息流中的第一数据消息的流状态值的当前全局状态值。每次针对数据消息流接收到数据消息时,将所存储的状态值(即,流状态值)与相关的全局状态值(例如,scsn状态值或l2 sn状态值)进行比较,以确定所存储的动作是否已被更新。
11.在与流相关的全局状态值改变之后,全局状态值和流状态值不匹配,并且该方法
检查流编程表以确定流是否已经受到导致全局状态值改变(例如,递增)的(多个)流编程指令的影响。在一些实施例中,存储在流编程表中的指令包括数据消息流标识符和更新的动作(例如,丢弃、允许、更新所选服务路径、更新下一跳地址)。如果流编程表中存储的数据消息流标识符与当前数据消息流标识符不匹配,则流状态值被更新为当前全局状态值,并且使用连接追踪器记录中存储的动作来处理数据消息。然而,如果流编程表中存储的至少一个数据消息流标识符与当前数据消息流标识符相匹配,则流状态值被更新为当前全局状态值,并且连接追踪器记录中存储的动作被更新以反映具有在流编程表中存储的匹配流标识符的指令的执行,并且更新的动作被用于处理数据消息。
12.在一些实施例中,边缘转发元件被配置为使用服务逻辑转发元件作为传输机制来提供服务。边缘转发元件被配置为使用不同的传输机制将边缘转发元件的不同虚拟接口集合连接到逻辑网络的不同网络元件。例如,第一虚拟接口集合被配置为使用连接逻辑网络的业务的源机器和目的地机器的逻辑转发元件连接到逻辑网络内部的转发元件集合。在一些实施例中,在第一接口集合上接收的业务被边缘转发元件朝向目的地转发到下一跳,而不被返回到接收它的转发元件。第二虚拟接口集合被配置为连接到服务节点集合,以针对在边缘转发元件处接收的数据消息提供服务。
13.为第二虚拟接口集合建立的每个连接可以使用不同的传输机制,诸如服务逻辑转发元件、隧道机制和线路中插件机制,并且在一些实施例中,一些或全部传输机制被用来向服务节点提供数据消息。第三虚拟接口集合中的每个虚拟接口被配置为连接到服务逻辑转发元件,该服务逻辑转发元件将边缘转发元件连接到内部转发元件集合中的至少一个内部转发元件。虚拟接口被配置为用于(1)从至少一个内部转发元件接收要由服务节点集合中的至少一个服务节点提供服务的数据消息,以及(2)将已服务的数据消息返回到内部转发元件网络。
14.一些实施例促进提供在虚拟网际协议(vip)地址处可到达的服务。客户端使用vip地址来访问逻辑网络中的服务节点集合。在一些实施例中,从客户端机器到vip的数据消息被定向到边缘转发元件,在边缘转发元件处数据消息被重定向到在服务节点集合之间进行负载均衡的负载均衡器以选择服务节点来提供客户端机器所请求的服务。在一些实施例中,负载均衡器不改变从客户端机器接收的数据消息的源ip地址,使得服务节点接收要服务的数据消息,该数据消息将客户端机器ip地址识别为源ip地址。服务节点使用服务节点的ip地址作为源ip地址、客户端节点的ip地址作为目的地ip地址,来服务数据消息并将已服务的数据消息发送到客户端机器。因为客户端将原始地址发送到vip地址,所以客户端将不会将已服务的数据消息的源ip地址识别为对发送到vip地址的请求的响应,并且已服务的数据消息将不被适当地处理(例如,它将被丢弃,或者与原始请求不相关联)。
15.在一些实施例中,促进服务的提供包括使用服务逻辑转发元件将已服务的数据消息返回到负载均衡器以追踪连接的状态。为了使用服务逻辑转发元件,一些实施例将服务节点的出口数据路径配置为在将已服务的数据消息转发到从客户端到服务节点的数据路径中的逻辑转发元件之前,拦截已服务的数据消息,并确定已服务的数据消息是否需要由边缘转发元件通过作为服务提供的路由服务进行路由。如果数据消息需要由路由服务进行路由(例如,对于已服务的数据消息),则通过服务逻辑转发元件将已服务的数据消息转发到边缘转发元件。在一些实施例中,已服务的数据消息和与服务相关联的vip一起被提供给
边缘转发元件,在其他实施例中,边缘转发元件基于用于在服务逻辑转发元件上发送数据消息的端口来确定vip。边缘转发元件使用vip来识别与已服务的数据消息相关联的负载均衡器。然后,将已服务的数据消息转发到负载均衡器,以供负载均衡器维护数据消息所属的连接的状态信息,并修改数据消息以将vip识别为用于转发到客户端的源地址。
16.在一些实施例中,传输机制包括隧道机制(例如,虚拟私有网(vpn)、网际协议安全(ipsec)等),隧道机制通过对应的虚拟隧道接口(vti)集合将边缘转发元件连接到至少一个服务节点。除了用于将边缘转发元件连接到服务节点的vti之外,边缘转发元件还使用其他vti来连接到它提供转发操作的其他网络元件。用于将边缘转发元件连接到其他(即,非服务节点)网络元件的至少一个vti被识别为执行服务分类操作,并且被配置为对在vti处接收的数据消息执行服务分类操作以用于转发。在一些实施例中,将边缘转发元件连接到服务节点的vti不被配置为执行服务分类操作,而是被配置为将返回到边缘转发元件的数据消息标记为已服务。在其他实施例中,将边缘转发元件连接到服务节点的vti被配置为使用适用于vti的单个默认规则来执行有限的服务分类操作,该单个默认规则将返回到边缘转发元件的数据消息标记为已服务。
17.对于通过特定vti离开逻辑网络的业务,一些实施例对不同的数据消息执行服务分类操作,以识别将边缘转发元件连接到服务节点以提供数据消息所需的服务的不同vti。在一些实施例中,然后将每个数据消息转发到所识别的vti以接收所需的服务(例如,从通过vti连接到边缘转发元件的服务节点)。所识别的vti不执行服务分类操作,并且仅允许数据消息到达服务节点。然后,服务节点将已服务的数据消息返回给边缘转发元件。在一些实施例中,vti不被配置为执行服务分类操作,而是被配置为将从服务节点定向到边缘转发元件的所有业务标记为已服务。然后,在边缘转发元件处接收所标记的已服务的数据消息,并通过特定vti将其转发到数据消息的目的地。在一些实施例中,特定vti不执行附加服务插入操作,因为数据消息被标记为已服务。
18.前述发明内容旨在用作对本发明的一些实施例的简要介绍。它并不意为对本文档中公开的所有创造性主题的介绍或概述。下面的具体实施方式和在具体实施方式中引用的附图将进一步描述在发明内容中描述的实施例以及其他实施例。因此,为了理解本文档所描述的所有实施例,需要对发明内容、具体实施方式、附图和权利要求进行全面审查。此外,所要求保护的主题不受发明内容、具体实施方式、附图中的说明性细节的限制。
附图说明
19.本发明的新颖特征在所附权利要求中阐述。然而,出于解释的目的,在以下附图中阐述了本发明的若干实施例。
20.图1概念性地示出了由边缘设备执行的过程,用于执行服务分类操作以选择针对数据消息的特定类型的服务集合并识别针对数据消息的转发信息。
21.图2概念性地示出了用于识别连接追踪器记录是否存储在一些实施例中使用的连接追踪器存储设备中的过程。
22.图3概念性地示出了用于在边缘转发组件处转发数据消息的过程,该数据消息由图1的过程提供了服务类型和转发信息。
23.图4概念性地示出了具有两层级逻辑路由器(即,可用性区(availability zone)
逻辑网关路由器)的逻辑网络。
24.图5示出了逻辑网络的一个可能的管理平面视图,其中azg和vpcg两者都包括集中式组件。
25.图6概念性地示出了图5所示的两层级逻辑网络的管理平面结构的物理实现,其中vpcg和azg两者都包括sr和dr。
26.图7示出了针对包括在由边缘设备针对数据消息执行的边缘数据路径中的可用性区(t0)逻辑路由器组件的逻辑处理操作。
27.图8示出了充当逻辑服务转发元件上的业务的源的tx sr。
28.图9示出了包括tx sr通过lsfe访问的两个服务节点的服务路径。
29.图10示出了包括两个边缘设备并且分别执行可用性区网关数据路径和虚拟私有云网关数据路径的第二实施例。
30.图11示出了由服务路由器在t0或t1,针对需要来自定义服务路径的服务节点集合的服务的数据消息流中的第一数据消息调用的服务插入层和服务传输层模块集合执行的操作集合。
31.图12示出了由服务路由器在t0或针对需要来自定义服务路径的服务节点集合的服务的数据消息流中的数据消息调用的服务插入层和服务传输层模块集合执行的操作集合。
32.图13概念性地示出了用于验证或更新针对数据消息流的所识别的连接追踪器记录的过程。
33.图14示出了连接追踪器存储设备中的连接追踪器记录集合和流编程表中的示例性流编程记录集合。
34.图15示出了一些实施例的对象数据模型。
35.图16概念性地示出了网络管理器和控制器在一些实施例中执行以定义针对服务插入、下一服务跳转发和服务处理的规则的若干操作。
36.图17概念性地示出了用于将逻辑转发元件配置为连接到逻辑服务转发平面的过程。
37.图18示出了由服务路由器在t0或t1,针对需要来自通过隧道机制可到达的服务节点的服务的数据消息流中的第一数据消息调用的服务插入层和服务传输层模块集合执行的操作集合。
38.图19示出了由服务路由器在t0或t1,针对需要来自通过l2biw机制可到达的服务节点的服务的数据消息流中的第一数据消息调用的服务插入层和服务传输层模块集合执行的操作集合。
39.图20a-b概念性地示出了从在云环境中实现的逻辑网络(例如,逻辑网络a)中的计算节点向外部数据中心中的计算节点发送的数据消息。
40.图21a-b概念性地示出了从外部数据中心中的计算节点发送到在云环境中实现的逻辑网络中的计算节点的数据消息。
41.图22概念性地示出了用于在上行链路接口集合中的上行链路接口处为数据消息提供服务的第一方法。
42.图23概念性地示出了用于在上行链路接口集合中的上行链路接口处为数据消息
提供服务的第二方法。
43.图24概念性地示出了在逻辑网络的多个路由器处提供服务分类操作的逻辑网络。
44.图25概念性地示出了使用多个传输机制连接到服务节点的边缘转发元件。
45.图26示出了包括属于两个不同租户的三个vpc服务路由器2630的逻辑网络。
46.图27示出了包括属于三个不同租户的三个vpc服务路由器2630的逻辑网络。
47.图28概念性地示出了用于从vpc边缘转发元件访问在可用性区边缘转发元件处提供的服务的过程。
48.图29概念性地示出了可用性区服务路由器在其作为该过程的一部分接收到来自vpc服务路由器的数据消息时要执行的过程。
49.图30概念性地示出了处理从第一计算节点发送到由第二vpc服务路由器服务的第二网络段中的第二计算节点的数据消息的vpc服务路由器。
50.图31概念性地示出了处理从外部网络发送到计算节点的数据消息的vpc服务路由器。
51.图32a-b示出了用于向由同一虚拟私有云网关(例如,虚拟私有云网关服务和分布式路由器)服务的客户端提供在vip处可寻址的服务的数据消息集合。
52.图33概念性地示出了利用其实现本发明的一些实施例的电子系统。
具体实施方式
53.在本发明的以下具体实施方式中,阐述并描述了本发明的许多细节、示例和实施例。然而,对于本领域技术人员来说清楚和明显的是,本发明不限于所阐述的实施例,并且本发明可以在没有所讨论的一些具体细节和示例的情况下实施。
54.一些虚拟化计算环境/逻辑网络提供了位于外部网络和内部网络(例如,逻辑网络)之间的边缘转发元件。在一些实施例中,虚拟化计算环境为虚拟化计算环境内的子网络提供附加的边缘转发元件(或边缘服务)。例如,可以在数据中心内(例如,由提供商网络)实现各自具有其自己的边缘设备的不同逻辑网络,该数据中心在外部网络和数据中心内部的网络之间提供边缘转发元件。每个逻辑网络(例如,租户网络或提供商网络)包括至少一个边缘转发元件,在一些实施例中,该至少一个边缘转发元件在边缘主机中或作为边缘计算节点执行以向逻辑网络提供对外部网络的访问,反之亦然。在一些实施例中,边缘转发元件为边缘转发元件所处理的业务提供服务(例如,中间盒服务)集合。
55.如本文档中所使用的,数据消息指的是跨网络发送的特定格式的比特集合。本领域普通技术人员将认识到,术语“数据消息”在本文档中用于指跨网络发送的各种格式化的比特集合。这些比特的格式化可以由标准化协议或非标准化协议来指定。遵循标准化协议的数据消息的示例包括以太网帧、ip分组、tcp段、udp数据报等。此外,如在本文档中所使用的,对l2、l3、l4和l7层(或第2层、第3层、第4层和第7层)的引用分别是对osi(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层的引用。
56.此外,在该示例中,每个逻辑转发元件是通过在多个主计算机上配置多个软件转发元件(sfe)(即,受管理的转发元件)而实现的分布式转发元件。为此,在一些实施例中,每个sfe或与sfe相关联的模块被配置为利用覆盖网络报头来封装lfe的数据消息,该覆盖网络报头包含与覆盖网络相关联的虚拟网络标识符(vni)。因此,在下面的讨论中,lfe被认为
是跨越多个主计算机的覆盖网络结构。
57.在一些实施例中,lfe还跨越所配置的硬件转发元件(例如,架顶式交换机)。在一些实施例中,每个lfe是通过在多个主计算机上配置多个软件交换机(被称为虚拟交换机或vswitch)或相关模块来实现的逻辑交换机。在其他实施例中,lfe可以是其他类型的转发元件(例如,逻辑路由器),或者形成逻辑网络或其部分的转发元件(例如,逻辑交换机和/或逻辑路由器)的任意组合。今天存在lfe、逻辑交换机、逻辑路由器和逻辑网络的许多示例,包括由vmware的nsx网络和服务虚拟化平台提供的那些。
58.一些实施例提供了用于为与边缘转发元件相关联的逻辑网络提供不同类型服务的新颖方法,这些新颖方法由在逻辑网络和外部网络之间动作的边缘设备执行。边缘设备接收用于转发的数据消息,并执行服务分类操作以选择针对数据消息的特定类型的服务集合。图1概念性地示出了由边缘设备执行的过程100,用于执行服务分类操作以选择针对数据消息的特定类型的服务集合并识别针对数据消息的转发信息。
59.在一些实施例中,该过程作为边缘数据路径的一部分来执行,对于进入网络的数据消息而言,该过程在路由操作之前。在一些实施例中,该过程由被设计或编程为执行服务分类操作的网络接口卡(nic)来执行。在一些实施例中,过程100附加地或备选地,作为逻辑边缘转发元件的多个虚拟接口处的逻辑处理的一部分由边缘设备执行,该多个虚拟接口包括用于将边缘转发元件连接到数据中心外部的计算节点的虚拟隧道接口(vti)集合。在一些实施例中,特定接口被配置为执行服务分类操作(例如,通过将服务分类标签切换为“1”),而其他接口不被配置为执行服务分类操作(例如,如果服务分类标签被设置为“0”)。在一些实施例中,作为处理流水线的一部分,集中式(例如,服务)路由器调用服务插入和服务传输层模块(诸如图7的元件735中的模块)集合。
60.过程100通过在连接到外部网络(例如,实现逻辑网络的数据中心外部的路由器)的接口(例如,nic、vti)处接收(在110)数据消息。在一些实施例中,作为外部网络中的客户端和逻辑网络中的计算节点(例如,服务器或服务节点)之间的通信的一部分(反之亦然),从外部网络接收数据消息。在一些实施例中,数据消息是在逻辑网络边缘处接收服务的外部网络中的两个计算节点之间的数据消息。
61.过程100通过(在120处)确定连接追踪器记录是否存储在数据消息所属的数据消息流的连接追踪器中来继续。图2概念性地示出了用于识别连接追踪器记录是否存储在一些实施例中使用的连接追踪器存储设备中的过程200。(120处的)该确定包括(在221处)确定连接追踪器存储设备是否存储了具有与所接收的数据消息的流标识符匹配的流标识符的任何记录(即,连接追踪器存储设备中的条目)。在一些实施例中,流标识符是报头值集合(例如,五元组),或者是基于报头值集合而生成的值(例如,报头值集合的散列)。如果没有找到匹配的条目,则过程200确定没有为该数据消息存储连接追踪器记录,并且过程200在过程100的操作120处产生“否”。在一些实施例中,连接追踪器存储设备存储多个可能的匹配条目,该多个可能的匹配条目由指示创建了连接追踪器记录的有状态操作的类型(例如,初步防火墙操作或服务分类操作)的标签来区分。在其他实施例中,针对不同类型的有状态操作维护单独的连接追踪器存储设备。在一些实施例中,由服务分类操作创建的连接追踪器记录包括与服务插入规则相关联的规则标识符,该服务插入规则(1)被应用于数据消息流中的第一数据消息,并且(2)确定连接追踪器记录的内容。
62.如果在连接追踪器存储设备中找到至少一个匹配的连接追踪器记录,则过程200(在222处)确定识别该记录是作为服务分类操作的一部分还是作为不同的有状态处理(例如,独立防火墙操作)的一部分而创建的标签(例如,标志位)。在一些实施例中,将标签与存储在与数据消息相关联的缓冲区中的值进行比较,在逻辑处理期间使用该缓冲区来存储数据消息中通常包括的数据以外的数据(例如,上下文数据、在其上接收到数据消息的接口等)。如果具有匹配的流标识符的(多个)记录的标签不指示其与服务分类操作相关,则过程200在过程100的操作120处产生“否”。
63.然而,如果至少一个记录包括匹配的流标识符(在221处)和匹配的服务分类操作标签(在222处)两者,则该过程(在223处)识别应用了用于生成每个潜在匹配记录的服务插入规则的接口(即,由潜在匹配记录的第一数据消息命中的规则的“applied_to”字段中的接口)。在一些实施例中,规则标识符被存储在连接追踪器记录中,并且规则标识符与存储它被应用于的接口列表的数据存储设备(例如,容器)相关联(例如,指向该数据存储设备)。在这样的实施例中,识别应用了用于生成每个潜在匹配记录的规则的接口包括识别存储在与该规则相关联的数据存储设备中的接口。
64.然后,过程200(在224处)确定应用规则的任何接口是否是接收当前数据消息的接口。在一些实施例中,基于由外部网络中的转发元件(例如,路由器)执行的负载均衡操作(例如,等价多路径(ecmp)),在不同接口处接收相同数据消息流的数据消息。此外,一些数据消息必定在作为处理流水线的一部分应用不同的服务规则多个接口处接收。例如,在应用特定服务规则的第一vti处接收的数据消息识别第二vti,要将数据消息重定向到该第二vti以提供数据消息所需的服务。第二vti连接到提供所需服务的服务节点,并且在数据消息被服务之后,该数据消息被返回给第二vti。流标识符与原始数据消息的连接追踪器记录相匹配,但是,在连接追踪器记录中识别的服务插入规则不被应用于在第二vti处接收的数据消息(例如,服务插入规则的applied_to字段不包括第二vti),使得数据消息不被重定向到第二vti以再次被服务。
65.在一些实施例中,接口由太大而不能存储在连接追踪器记录中的uuid(例如,64位或128位标识符)来识别。(在223处)将所识别的接口的uuid(或其他标识符)与在其上接收到数据消息的接口的uuid进行比较,如上所述,在一些实施例中,该接口的uuid被存储在与数据消息相关联的缓冲区中。如果没有应用(潜在匹配的连接追踪器记录的)规则的接口与接收数据消息的接口匹配,则过程200在过程100的操作120处产生“否”。然而,如果连接追踪器记录与接收到数据消息的接口相关联(即,用于生成连接追踪器记录的规则被应用于接收到数据消息的接口),则过程200在过程100的操作120处产生“是”。在一些实施例中,检查与服务节点状态相关联的另外的状态值,如将结合图13所讨论的。
66.如果过程100(在120处)确定数据消息属于具有连接追踪器记录的流,则过程100基于连接追踪器记录中的信息检索(在125)服务动作。在一些实施例中,服务动作包括存储在连接追踪器记录中的服务类型和转发信息集合。关于图12和图13描述了检索服务动作的附加细节。在一些实施例中,服务类型识别传输机制(例如,逻辑服务转发元件、l3 vpn或l2线路中插件)。在一些实施例中,转发信息包括针对不同类型的服务插入类型的不同类型的转发信息。例如,服务链提供的服务的转发信息包括服务路径标识符和下一跳mac地址。针对线路中插件服务节点或通过虚拟私有网连接的服务节点的转发信息包括下一跳ip。然
后,(在170处)将服务类型和转发信息提供给边缘转发元件(例如,边缘转发元件的虚拟路由和转发(vrf)上下文),并且该过程结束。在一些实施例中,(在170处)将服务类型和转发信息提供给传输层模块,该传输层模块使用由服务类型识别的传输机制将数据消息重定向到服务节点,以到达由转发信息识别的目的地,如结合图3所描述的。
67.如果过程100(在120处)确定由于在过程200中识别的任何原因,不存在针对所接收的数据消息的连接追踪器存储设备条目,则过程100(在130处)执行针对服务插入规则集合的第一服务分类查找,以找到针对具有由所接收的数据消息共享的属性集合的数据消息定义的最高优先级规则。在一些实施例中,特定服务插入规则中的数据消息属性集合可以包括以下任何项:第2层、第3层或第4层处的报头值,或者基于任何报头值的散列值,并且可以包括允许该属性的任何值的某些属性(例如,字段)的通配符值。在关于过程100描述的实施例中,服务插入规则识别与针对匹配服务插入规则的数据消息的动作集合相关联的通用唯一标识符(uuid)。在其他实施例中,服务插入规则包括针对所接收的数据消息执行的动作集合(例如,使用特定传输机制重定向到特定地址)。在一些实施例中,适用于所有数据消息(例如,指定所有通配符值)的最低优先级(例如,默认)规则被包括在服务插入规则集合中,并且如果没有识别出具有更高优先级的其他服务插入规则,则其将被识别。在一些实施例中,默认规则将指定无操作(no-op),无操作使得要提供给边缘转发元件的路由功能的数据消息在没有对数据消息执行任何服务的情况下被路由。在其他实施例中,默认规则将使数据消息与该数据消息不需要另外的服务分类操作的指示一起被提供给路由功能。
68.在(在130处)识别与服务插入规则(和数据消息)相关联的uuid之后,过程100(在140处)基于(在130处)基于服务插入规则识别的uuid来执行策略查找。在一些实施例中,服务插入规则查找和uuid(策略)查找的分离被用于通过改变与单个uuid相关联的策略而不是必须更新每个服务插入规则来简化针对多个服务插入规则的策略更新。uuid查找用于识别转发信息集合并识别特定服务类型(例如,使用特定传输机制的服务)。例如,对于不同的数据消息,uuid查找可以识别以下中的任何一个:下一跳ip地址(对于隧道机制),虚拟下一跳ip地址(对于线路中插件机制),或者包括至少服务路径id、服务索引和下一跳第2层(例如,mac)地址的转发数据集合(对于使用服务逻辑转发元件的机制)。在一些实施例中,从针对数据消息识别的转发信息的类型推断传输机制的类型。使用服务逻辑转发元件的一些实施例使用第3层(例如,ip)地址来识别下一跳。在这样的实施例中,可能需要包括服务类型标识符。
69.在使用uuid来识别转发信息集合和识别特定服务类型时,一些实施例执行负载均衡操作以在多个下一跳中进行选择以提供所识别的服务。在一些实施例中,所识别的下一跳是提供不同服务的服务节点。在一些实施例中,服务节点包括服务虚拟机和服务设备中的至少一个。在一些实施例中,负载均衡操作基于以下任一种:循环机制、基于负载的选择操作(例如,选择具有最低当前负载的服务节点)、或基于距离的选择操作(例如,选择由所选度量衡量的最近服务节点)。
70.在(在140处)确定服务动作和转发信息之后,识别(在150)针对反向流的数据消息流标识符和转发信息。在许多情况下,针对反向流的数据消息流标识符基于前向数据消息流相同的报头值集合,其中源地址和目的地地址被交换。针对某些类型的服务插入(即,特定类型的传输机制)的反向数据消息流的转发信息对于前向流和反向流是不同的。对于某
些类型的服务插入(即,传输机制),针对反向流的转发信息识别作为前向流的上一跳的反向流的下一跳。对于其他类型的服务插入(例如,隧道机制),反向转发信息识别相同的下一跳(例如,隧道端点的下一跳ip地址)。在一些实施例中,由于反向的连接追踪器记录不是必需的,所以跳过操作150。例如,一些规则指定它们仅适用于特定方向的数据消息。
71.基于针对前向和反向流识别的数据消息流标识符和转发信息,(在160处)为前向和反向数据消息流生成连接追踪器记录集合,其中对于前向和反向数据消息流分别具有状态信息(例如,数据消息标识符和转发信息)。在一些实施例中,生成连接追踪器记录包括在流编程表中查询存储在流编程表中的状态值,该状态值反映与针对数据消息识别的服务类型相关联的服务节点集合类型的当前状态版本。在一些实施例中,除了指示其是前向还是反向数据消息的方向性比特之外,前向和反向数据消息流的流id是相同的。
72.在一些实施例中,反向流标识符不同于将基于在前向方向上接收的数据消息生成的反向流标识符。例如,简单的反向标识符生成操作将交换源和目的地ip(l3)和mac(l2)地址,并基于交换的报头值来生成标识符,但是如果服务节点执行nat操作,则在反方向上接收的数据消息将基于转换后的地址而不是基于原始(前向)数据消息报头地址来生成反向流标识符。在一些实施例中,具有不同的流标识符(例如,报头值等)集合的返回数据消息将被视为与原始数据消息的反向数据消息流相关联的数据消息流的前向和反向的新流和新连接追踪器记录。
73.关于连接追踪器记录和流编程表的附加细节参考图14进行讨论。在一些实施例中,在为前向和反向数据消息流创建连接追踪器记录之后,(在170处)将数据消息连同转发信息和服务类型一起提供给边缘转发元件的组件以便边缘转发元件的组件处理,该组件负责将数据消息提供给服务节点,如下面参考图3所描述的。
74.图3概念性地示出了用于在边缘转发组件处转发数据消息的过程300,该数据消息由过程100提供服务类型和转发信息。在一些实施例中,过程300由在边缘设备上执行的边缘转发元件执行。在一些实施例中,边缘转发元件作为虚拟机执行,而在其他实施例中,边缘转发元件是在边缘设备上执行的受管理的转发元件(例如,虚拟路由和转发上下文)。在一些实施例中,该过程的一些操作由服务(例如,集中式)路由器(例如,730)调用的服务插入层和服务传输层模块(例如,图7的元件720-729)来执行。过程300通过(在310处)接收数据消息连同在一些实施例中使用过程100的服务分类操作确定的数据消息的服务类型和转发信息来开始。
75.过程300(在320处)确定与所接收的数据消息相关联的服务插入类型。在一些实施例中,基于从服务分类操作接收的服务类型信息来进行确定。在其他实施例中,基于从服务分类操作接收的转发信息的类型来隐式地进行确定。例如,作为针对虚拟隧道接口(vti)的特定数据消息的转发信息而提供的ip地址指示传输机制是隧道机制。备选地,作为转发信息提供的伪ip地址指示传输机制是第2层线路中插件机制。如果转发信息包括服务路径标识符和下一跳mac地址,则传输机制被理解为服务链的逻辑服务转发平面。
76.如果过程300(在320处)确定服务类型使用隧道传输机制,则过程300(在332处)基于由服务分类操作提供的ip地址来识别出口接口。在一些实施例中,出口接口由与服务传输层模块相关联的路由功能来识别。基于所识别的出口接口,(在342处)将数据消息提供给vti,该vti封装数据消息以通过虚拟私有网(vpn)隧道递送到服务节点以提供服务。在一些
实施例中,隧道使用网际协议安全(ipsec)协议来将数据消息隧道传送到服务节点。在使用安全vpn(例如,ipsec)的一些实施例中,数据消息在被封装以使用隧道机制转发之前被加密。在一些实施例中,加密和封装作为用于连接到服务节点(例如,以下称为l3服务节点)的虚拟隧道接口的数据路径的一部分来执行。
77.然后,将封装后(且加密后)的数据消息通过vpn发送到l3服务节点以供l3服务节点提供服务,并将已服务的数据消息返回到边缘转发元件。在服务节点提供服务之后,(在352处)在边缘转发元件(例如,服务传输层模块)处接收已服务的数据消息,并且(在380处)将数据消息提供到路由功能(例如,由边缘转发元件实现的路由功能)以转发到目的地。在一些实施例中,路由基于与数据消息相关联的原始目的地ip地址,该原始目的地ip地址被维护在与数据消息相关联的边缘设备的存储器缓冲区中,在一些实施例中,该存储器缓冲区存储附加的元数据,诸如在其上接收到数据消息的接口,以及用于与边缘转发元件的特征相关联的数据,诸如ip分段、ipsec、访问控制列表(acl)等。
78.如果过程300(在320处)确定服务类型使用第2层线路中插件传输机制,则过程300(在334处)基于由服务分类操作提供的下一跳伪ip地址集合来识别源和目的地接口。下一跳伪ip地址用于识别与线路中插件服务节点(即,不改变数据消息的源和目的地第2层(例如,mac)地址的服务节点)相关联的源和目的地第2层(例如,mac)地址。在一些实施例中,下一跳伪ip地址集合包括源和目的地伪ip地址集合,其被解析为与边缘转发元件的不同接口相关联的源和目的地第2层(例如,mac)地址。在一些实施例中,不同接口由与服务传输层模块相关联的路由功能来识别。在一些实施例中,使用不同接口来区分在不同方向(例如,北到南业务对比于南到北业务)上穿过边缘设备(例如,边缘转发元件)的数据消息,使得在一个方向上(例如,从逻辑网络内到外部网络)行进的数据消息使用第一接口作为源并且使用第二接口作为目的地,并且在相反方向上(例如,从外部网络到逻辑网络)行进的数据消息使用第二接口作为源并且使用第一接口作为目的地。
79.然后,(在344处)使用所识别的源和目的地第2层地址,将数据消息从源接口发送到目的地接口。在(在344处)使用所识别的接口将数据消息发送到服务节点之后,(在354处)边缘转发元件在目的地接口处从服务节点接收已服务的数据消息。(在380处)然后将已服务的数据消息提供给路由功能(例如,由边缘转发元件实现的路由功能)以转发到目的地。在一些实施例中,路由基于与数据消息相关联的原始目的地ip地址,该原始目的地ip地址在整个数据消息的处理过程中被维护。在其他实施例中,在与数据消息相关联的边缘设备的存储器缓冲区中维护原始目的地ip地址,在一些实施例中,该存储器缓冲区存储附加的元数据,诸如在其上接收到数据消息的接口,以及由于与边缘转发元件的特征相关联的数据,诸如ip分段、ipsec、访问控制列表(acl)等。
80.如果过程300(在320处)确定服务类型使用服务逻辑转发元件传输机制,则过程300(在336处)基于存储逻辑转发元件(例如,被实现为虚拟路由转发(vrf)上下文的边缘转发元件)与连接到服务逻辑转发平面的逻辑转发元件的接口之间的关联的表来识别与服务逻辑转发元件相关联的接口。在一些实施例中,该表是由网络管理或控制计算节点提供的全局表,并且包括用于逻辑网络中连接到服务逻辑转发元件集合中的任何一个的所有逻辑转发元件的信息。在一些实施例中,基于转发信息(例如,基于作为转发信息的一部分提供的服务路径标识符或服务虚拟网络标识符)来识别与逻辑服务转发元件相关联的接口。
81.然后,(在346处)将数据消息连同服务路径信息和服务元数据(smd)发送到所识别的接口(或逻辑服务平面数据消息处理器),以与逻辑网络标识符(lni)一起被封装,用于递送到在服务路径信息中所识别的服务路径中的第一服务节点。在一些实施例中,作为转发信息的一部分提供的服务路径信息包括(1)由逻辑转发元件和每个服务节点用来识别下一跳服务节点的服务路径标识符(spi),(2)指示服务路径中的跳的位置的服务索引(si),以及在一些实施例中,(3)生存时间。在一些实施例中,lni是服务虚拟网络标识符(svni)。使用服务转发平面的更多细节可以在2019年6月18日提交的美国专利申请16/444,826中找到,该申请通过引用并入本文。
82.在被服务路径中的服务节点服务之后,(在356处)在边缘转发元件处接收数据消息。在一些实施例中,边缘转发元件作为被识别为针对数据消息识别的服务路径中的最后一跳的路由服务节点来接收数据消息。在这样的实施例中,服务路由器实现服务代理以根据使用服务路径进行服务链接的标准化协议来接收数据消息。在一些实施例中,边缘转发元件接收服务数据消息以及服务元数据,该服务元数据识别要用于将数据消息转发到其目的地的原始源和目的地地址。在一些实施例中,服务元数据还包括由服务路径上的服务节点或服务插入代理发送的任何流编程指令。在一些实施例中,流编程指令包括用于修改服务分类操作如何选择服务链、服务路径和/或沿着服务路径转发数据消息流的指令。在其他实施例中,该流编程涉及对服务平面如何处理数据消息流的其他修改。下面将进一步描述流编程。
83.然后,过程300(在366处)确定接收到的服务数据消息是否包括流编程指令。如果过程300确定流编程指令与已服务的数据消息一起被包括,则(在375处)通过将流编程指令添加到表中来更新流编程表,以用于处理数据消息流中的后续数据消息。在一些实施例中,流编程指令识别流编程指令所涉及的流以及所识别的流的新服务动作(例如,pf_value)。在一些实施例中,新服务动作是针对下一数据消息或针对数据消息流中的所有后续数据消息跳过特定服务节点(例如,防火墙服务节点)的指令(例如,如果防火墙服务节点确定允许数据消息流),或者丢弃数据消息流的所有后续数据消息(例如,如果防火墙服务节点确定不允许数据消息流)。
84.在一些实施例中,在处理数据消息流中的下一数据消息期间,更新流编程指令中识别的流的连接追踪器记录。例如,在一些实施例中,每次将流编程指令添加到流编程表中时,就更新(例如,递增)流编程版本值(例如,flow_program_gen),以指示流编程指令已被接收并且使用先前流编程版本值生成的状态信息可能过时。一经识别针对特定数据消息的连接追踪器记录,如果流编程版本值不等于当前值,则查询流编程表以查看是否必须基于包含在流编程表中的流编程指令来更新连接追踪器记录。下面将参考图13更详细地讨论流编程版本值的使用。
85.如果过程300(在366处)确定没有流编程指令,或者在更新流编程表之后,则(在380处)将数据消息提供给路由功能(例如,由边缘转发元件实现的路由功能)以转发到目的地。在一些实施例中,原始数据消息报头集合在服务元数据中被承载通过服务路径。在其他实施例中,原始报头值集合被存储在边缘设备的缓冲区中,并且在从服务路径中的最后一跳接收数据消息之后被恢复。本领域普通技术人员将理解,在一些实施例中,操作366和375与操作380并行执行,因为它们不依赖于彼此。
86.在一些实施例中,在虚拟网络环境中提供服务分类操作。在一些实施例中,虚拟网络环境相当于美国专利9,787,605中描述的虚拟网络环境,该专利通过引用并入本文。这里给出了对虚拟网络环境的基本介绍,并在上面引用的专利中提供了更多细节。
87.图4概念性地示出了具有两层次逻辑路由器的逻辑网络400。如图所示,逻辑网络400在第3层级别包括可用性区逻辑网关路由器(azg)405、用于在可用性区中实现的逻辑网络的若干虚拟私有云逻辑网关路由器(vpc)410-420。azg 405和vpcg 410-420有时分别被称为第0层次(t0)和第1层次(t1)路由器,以反映azg和vpcg之间的层级关系。第一虚拟私有云网关410附连有两个逻辑交换机425和430,其中一个或多个数据计算节点耦合到每个逻辑交换机。为简单起见,仅示出了附连到第一vpcg 410的逻辑交换机,尽管其他vpcg 415-420通常会附连有逻辑交换机(数据计算节点耦合到该逻辑交换机)。在一些实施例中,可用性区是数据中心。
88.在一些实施例中,任何数量的vpcg可以附连到azg,诸如azg 405。一些数据中心可能只有单个azg,该数据中心中实现的所有vpc都附连到该azg,而其他数据中心可能有多个azg。例如,大型数据中心可能希望对不同的vpc使用不同的azg策略,或者可能具有太多不同的vpc以至于无法将所有vpc附连到单个azg。azg的部分路由表包括其vpcg的所有逻辑交换域的路由,因此将多个vpcg附连到azg仅基于附连到vpcg的子网来为每个vpcg创建若干路由。如图所示,azg 405提供到外部物理网络435的连接;一些实施例仅允许azg提供这种连接,使得数据中心(例如,可用性区)提供商可以管理该连接。虽然是逻辑网络400的一部分,但是分离的vpcg 410-420中的每一个被独立配置(尽管单个租户可以具有多个vpcg,如果这样选择的话)。
89.图5示出了逻辑网络400的一个可能的管理平面视图,其中azg 405和vpcg 410两者都包括集中式组件。在该示例中,使用dr来分发azg 405和vpcg 410的路由方面。然而,因为azg405和vpcg 410的配置包括提供有状态服务,所以azg和vpcg的管理平面视图(并因此,物理实现)包括针对这些有状态服务的活动和备用的服务路由器(sr)510-520和545-550。
90.图5示出了当vpcg 410具有集中式组件(例如,因为为vpcg定义了不能是分布式的有状态服务)时的逻辑拓扑400的管理平面视图500。在一些实施例中,诸如防火墙、nat、负载均衡等有状态服务仅以集中方式提供。然而,其他实施例允许一些或全部这样的服务是分布式的。为简单起见,仅示出了第一vpcg 410的细节;其他vpcg可以具有相同定义的组件(dr、转接ls和两个sr),或者如果没有提供需要sr的有状态服务,则仅具有dr。azg 405包括通过转接逻辑交换机525连接在一起的dr 505和三个sr 510-520。除了azg 405实现内的转接逻辑交换机525之外,管理平面还在每个vpcg和azg的dr 505之间定义分离的转接逻辑交换机530-540。在vpcg是完全分布式的情况下,转接逻辑交换机530连接到实现vpcg配置的dr。因此,如在美国专利9,787,605中所描述的,由附连到逻辑交换机425的数据计算节点发送到外部网络中的目的地的分组将通过逻辑交换机425、vpcg的dr、转接逻辑交换机530、azg 405的dr 505、转接逻辑交换机525和sr 510-520之一的流水线来处理。在一些实施例中,转接逻辑交换机525和530-540的存在和定义对通过api配置网络的用户(例如,管理员)是隐藏的,可能的例外是故障排除目的。
91.图5所示的vpcg 410的部分集中式实现包括逻辑交换机425和430附连到的dr 560
以及两个sr 545和550。如在azg实现中,dr和两个sr各自具有到转接逻辑交换机555的接口。在一些实施例中,该转接逻辑交换机用于与交换机525相同的目的。对于vpcg,一些实施例以活动-备用的方式实现sr,其中一个sr被指定为活动的,而另一个被指定为备用的。因此,只要活动sr在运行,则由附连到逻辑交换机425和430之一的数据计算节点发送的分组将被发送到活动sr而不是备用sr。
92.上图示出了一些实施例的逻辑路由器的管理平面视图。在一些实施例中,管理员或其他用户通过api提供逻辑拓扑(以及其他配置信息)。该数据被提供给管理平面,该管理平面定义逻辑网络拓扑的实现(例如,通过定义drs、srs、转接逻辑交换机等)。此外,在一些实施例中,用户将每个逻辑路由器(例如,每个azg或vpcg)与物理机器集合(例如,数据中心中的预定义机器组)相关联以便于部署。对于纯分布式路由器,物理机器集合并不重要,因为dr是跨越驻留在主机上的受管理的转发元件以及连接到逻辑网络的数据计算节点实现的。然而,如果逻辑路由器实现包括sr,则这些sr将各自部署在特定的物理机器上。在一些实施例中,物理机器组是被指定用于托管sr的机器集合(与附连到逻辑交换机的用户vm或其他数据计算节点相反)。在其他实施例中,sr与用户数据计算节点一起部署在机器上。
93.在一些实施例中,逻辑路由器的用户定义包括特定数量的上行链路。如本文描述的,上行链路是逻辑拓扑中的逻辑路由器的北向接口。对于vpcg,其上行链路连接到azg(一般而言,所有上行链路连接到同一azg)。对于azg,其上行链路连接到外部路由器。一些实施例要求azg的所有上行链路具有相同的外部路由器连接性,而其他实施例允许上行链路连接到不同的外部路由器集合。一旦用户为逻辑路由器选择了机器组,那么如果逻辑路由器需要sr,则管理平面将逻辑路由器的每个上行链路分配给所选机器组中的物理机器。然后,管理平面在上行链路所分配的每台机器上创建sr。一些实施例允许将多个上行链路分配给同一机器,在这种情况下,机器上的sr具有多个北向接口。
94.如上所述,在一些实施例中,可以将sr实现为虚拟机或其他容器,或者实现为vrf上下文(例如,在基于dpdk的sr实现的情况下)。在一些实施例中,sr实现的选择可以基于为逻辑路由器选择的服务以及哪种类型的sr最好地提供这些服务。
95.此外,一些实施例的管理平面创建转接逻辑交换机。对于每个转接逻辑交换机,管理平面为该逻辑交换机分配唯一的vni,在连接到转接逻辑交换机的每个sr和dr上创建端口,并为连接到逻辑交换机的任何sr和dr分配ip地址。一些实施例要求分配给每个转接逻辑交换机的子网在具有多个vpcg的逻辑l3网络拓扑(例如,网络拓扑400)内是唯一的,每个vpcg可以具有其自己的转接逻辑交换机。也就是说,在图5中,azg实现内的转接逻辑交换机525、azg和vpcg之间的转接逻辑交换机530-540、以及转接逻辑交换机520(以及任何其他vpcg的实现内的转接逻辑交换机)各自需要唯一的子网。此外,在一些实施例中,sr可能需要发起到逻辑空间中的vm的连接,例如ha代理。为了确保返回业务正常工作,一些实施例避免使用链路本地ip地址。
96.一些实施例对多层配置中的逻辑路由器的连接施加各种限制。例如,尽管一些实施例允许任意数量的逻辑路由器层次(例如,连接到外部网络的azg层次,连同vpcg的多个层次),但其他实施例仅允许两层次拓扑(连接到azg的vpcg的一个层次)。此外,一些实施例允许每个vpcg仅连接到一个azg,并且由用户创建的每个逻辑交换机(即,非转接逻辑交换机)仅被允许连接到一个azg或一个vpcg。一些实施例还添加了逻辑路由器的南向端口必须
各自在不同子网中的限制。因此,如果连接到同一逻辑路由器,两台逻辑交换机可能不具有相同的子网。最后,一些实施例要求azg的不同上行链路必须存在于不同的网关机器上。应当理解,一些实施例不包括这些要求中的任何一个,或者可以包括这些要求的各种不同组合。
97.图6概念性地示出了图5所示的两层逻辑网络的管理平面结构的物理实现,其中vpcg 410和azg 405两者都包括sr以及dr。应该理解,该图仅示出了vpcg 410的实现,而不是可以在许多其他主机上实现并且其sr可以在其他网关机器上实现的许多其他vpcg。
98.该图假设有两个vm附连到驻留在四个物理主机605-620上的两个逻辑交换机425和430中的每一个。这些主机中的每一个包括管理转发元件(mfe)625。在各种不同的实施例中,这些mfe可以是基于流的转发元件(例如,open vswitch)或基于代码的转发元件(例如,esx)或两者的组合。这些不同类型的转发元件以不同方式实现各种逻辑转发元件,但在每种情况下,它们为可能需要处理分组的每个逻辑转发元件执行流水线。
99.因此,如图6所示,物理主机上的mfe 625包括用于实现逻辑交换机425和430(lsa和lsb)两者、针对vpcg 410的dr 560和转接逻辑交换机555,以及针对azg 405的dr 505和转接逻辑交换机525的配置。然而,当驻留在主机上的数据计算节点的vpcg不具有集中式组件(即,sr)时,一些实施例仅在主机mfe 625(耦合到数据计算节点的那些)上实现azg的分布式组件。如下所述,从vm发送到外部网络的北向分组将由其本地(第一跳)mfe处理,直到转接逻辑交换机流水线指定将分组发送到sr。如果第一sr是vpcg的一部分,则第一跳mfe将不执行任何azg处理,因此不需要由(多个)集中式控制器将azg流水线配置推送到那些mfe。然而,由于vpcg 415-420之一可能不具有集中式组件,因此一些实施例总是将azg的分布式方面(dr和转接ls)推送到所有mfe。其他实施例仅将针对azg管线的配置推送到也在接收针对全分布式vpcg(没有任何sr的那些)的配置的mfe。
100.此外,图6所示的物理实现包括四个物理网关机器630-645(在一些实施例中也称为边缘节点),azg 405和vpcg 410的sr被分配给它们。在这种情况下,配置azg 405和vpcg 410的管理员为sr选择同一组物理网关机器,并且管理平面将针对这两个逻辑路由器的sr之一分配给第三网关机器640。如图所示,针对azg 405的三个sr 510-520各自被分配给不同的网关机器630-640,而针对vpcg 410的两个sr 545和550也各自被分配给不同的网关机器640和645。
101.该图示出了sr与在网关机器上运行的mfe 650分离。如上所述,不同的实施例可以不同地实现sr。一些实施例将sr实现为vm(例如,当mfe是集成到网关机器的虚拟化软件中的虚拟交换机时),在这种情况下,在mfe之外执行sr处理。另一方面,一些实施例将sr实现为mfe数据路径内的vrf(当mfe使用dpdk进行数据路径处理时)。在任一情况下,mfe将sr视为数据路径的一部分,但在sr是vm(或其他数据计算节点)的情况下,将分组发送到分离的sr以由sr流水线(其可以包括各种服务的性能)处理。与主机上的mfe 625一样,一些实施例的mfe 650被配置为执行逻辑网络的所有分布式处理组件。
102.图7和图10示出了与可用性区(t0)和vpc(t1)逻辑路由器相关的逻辑处理操作集合。图7示出了由边缘设备700针对数据消息执行的边缘数据路径710中包括的可用性区(t0)逻辑路由器组件的逻辑处理操作。在一些实施例中,边缘数据路径710由边缘设备700的边缘转发元件执行。边缘数据路径710包括用于多个操作的逻辑处理阶段,包括可用性区
(t0)服务(例如,集中式)路由器730和可用性区(t0)分布式路由器740。如图所示,t0 sr 730调用服务插入层和服务传输层模块集合735来执行服务分类操作(或服务插入(si)分类操作)。在一些实施例中,边缘数据路径710包括针对vpc(t1)服务和分布式路由器的逻辑处理操作。对于可用性区(t0)sr,在一些实施例中,vpc(t1)sr调用服务插入层和服务传输层模块集合来执行服务分类操作。
103.服务插入层和业务传输层模块735包括服务插入预处理器720、连接追踪器721、服务层传输模块722、逻辑交换机服务平面处理器723、服务平面第2层接口724、服务路由功能725、线路中插件(biw)对接口726、虚拟隧道接口727、服务插入后处理器728和流编程表729。在一些实施例中,服务插入预处理器720执行过程100以确定针对所接收的数据消息的服务类型和转发信息。在一些实施例中,服务传输层模块722执行过程300以将数据消息定向到适当的服务节点以执行所需的服务,并将数据消息返回到t0 sr 730以路由到数据消息的目的地。
104.下面参照图11、12、18和19更详细地描述服务插入层和服务传输层735的模块的功能。在一些实施例中,对于在未连接到服务节点的边缘转发元件的接口集合中的每一个上接收的数据消息,调用服务插入预处理器720。服务插入(si)预处理器720应用为了在t0 sr730处应用而定义(例如,由提供商或由在单个azg之后具有多个vpcg的租户定义)的服务分类规则(例如,服务插入规则)。在一些实施例中,根据识别需要服务插入操作(例如,由服务节点集合进行服务)的数据消息流的流标识符来定义每个服务分类规则。在一些实施例中,流标识符包括数据消息属性集合(例如,定义数据消息流的报头值集合(例如,5元组)中的任何一个或其组合)、与数据消息相关联的上下文数据集合、或从报头值集合或上下文数据中导出的值(例如,报头值集合的散列或与数据消息相关联的应用的应用标识符)。
105.在一些实施例中,连接到服务节点的接口被配置为将返回到边缘转发元件的数据消息标记为已服务,使得它们不会被再次提供给si预处理器720。在si预处理器720执行服务分类操作之后,分类操作的结果被传递到服务传输层模块722,以用于将数据消息转发到提供所需服务集合的服务节点集合。
106.在(多个)服务节点处理数据消息之后,已服务的数据消息被返回到服务传输层模块722以在si后处理器728处进行后处理,然后被返回到t0 sr 730以便于路由。t0 sr 730路由数据消息并将数据消息提供给t0 dr 740。在一些实施例中,t0 sr 730通过转接逻辑交换机(未示出)连接到t0 dr 740,如上面参考图5和6所描述的。t0 sr 730和t0 dr 740执行逻辑路由操作,以将传入数据消息转发到正确的虚拟私有云网关,并最终转发到目的地计算节点。在一些实施例中,逻辑路由操作包括基于数据消息的目的地ip地址识别用于将数据消息转发到下一跳的逻辑路由器的出口逻辑端口。
107.在一些实施例中,边缘数据路径710还包括用于t1 sr和t1dr操作以及t0 sr 730和t0 dr 740的逻辑处理阶段。一些实施例插入由t1 sr调用的服务插入层和服务传输层模块集合执行的第二服务分类操作。vpcg调用的si预处理器应用为vpcg定义的服务分类规则(例如,服务插入规则)(例如,针对vpcg后面的特定vpc逻辑网络的服务插入规则)。在一些实施例中,特定于vpcg的服务分类规则被包括在与特定于azg的服务分类规则相同的规则集合中,并且通过逻辑转发元件标识符来区分。在其他实施例中,特定于vpcg的服务分类规则存储在由vpcg调用的si预处理器使用的单独的服务分类规则存储设备或数据库中。
108.vpcg调用的si预处理器执行与si预处理器720相同的操作,以识别需要服务集合的数据消息以及针对所识别的数据消息的转发信息和服务类型。对于si预处理器720,si预处理器执行服务分类操作,并且在提供服务之后,将数据消息返回到t1 sr的逻辑处理阶段。t1 sr对数据消息进行路由并将数据消息提供给t1 dr。在一些实施例中,t1 sr通过转接逻辑交换机(未示出)连接到t1 dr,如以上参考图5和图6所描述的。t1 sr和t1 dr执行逻辑路由操作,以通过逻辑交换机集合将传入数据消息转发到目的地计算节点,如参考图5和图6所描述的。在一些实施例中,逻辑路由操作包括基于数据消息的目的地ip地址识别用于将数据消息转发到下一跳的逻辑路由器的出口逻辑端口。多个t1 sr和dr可以由t0 dr 740识别,并且在一些实施例中,上述讨论适用于逻辑网络中的每个t1 sr/dr。因此,本领域普通技术人员将理解,在一些实施例中,边缘设备700针对多个租户执行边缘处理,每个租户共享同一azg处理阶段集合但具有它自己的vpcg处理阶段。
109.对于传出消息,边缘数据路径是相似的,但是在一些实施例中,只有当源计算节点在边缘设备700上执行或者t1 sr在边缘设备700上执行时,边缘数据路径才将分别包括t1和t0 dr组件。否则,源节点的主机(或执行t1 sr的边缘设备)将执行与t1/t0 dr相关联的逻辑路由。此外,对于传出数据消息,在调用服务插入层和服务传输层模块之前,由sr(例如,t0 sr 730)以逻辑方式路由数据消息。服务插入层和服务传输层模块的功能类似于前向(例如,上文讨论的传入数据消息),并且将在下文更详细地讨论。对于需要服务的数据消息,已服务的数据消息被返回到sr(例如,t0 sr 730)以通过由逻辑路由处理识别的接口进行发送。
110.图8示出了充当逻辑服务转发元件801(例如,逻辑服务交换机)上的业务的源的tx sr 1130。逻辑服务转发元件(lsfe)由在n个设备上执行的n个软件交换机集合802实现。这n个设备包括服务节点(例如,服务虚拟机806)在其上执行的设备集合。tx sr 1130分别通过sil和stl模块1120和1122发送需要由svm 806服务的数据消息。si层模块1120识别在lsfe上将数据消息发送到svm 806所需的转发信息,如上文参考图1所讨论的,并且将在下文参考图11和图12进行讨论。然后,将转发信息和数据消息提供给stl模块1122以供处理,便于使用端口810在lsfe上递送到svm 806。因为svm 806在分离的设备上执行,所以从软件交换机端口815发送出的数据消息由封装处理器841封装以在中间网络上传输。
111.然后,封装处理器842将封装后的数据消息解封装,并将其提供给端口816,以便通过其stl模块826和si代理814递送给svm 806。返回数据消息以相反的顺序穿过模块。在美国专利申请16/444,826中更详细地讨论了stl模块826和si代理814的操作。
112.图9示出了包括由tx sr 1130至lsfe 801访问的两个服务节点906和908的服务路径。如图所示,tx sr 1130发送参考图8描述的第一数据消息。数据消息由svm 1 906接收,svm 1 906提供服务路径中的第一服务并将数据消息转发到服务路径中的下一跳,在这种情况下为svm 2 908。svm 2 908接收数据消息,提供第二服务,并将数据消息转发到在一些实施例中被识别为服务路径中的下一跳的tx sr 1130。在其他实施例中,tx sr 1130被识别为在最后一跳(例如,svm 2 908)已经提供其服务之后,向其返回已服务的数据消息的源。至于图8,在美国专利申请16/444,826中更详细地解释了在每个模块处的处理的额外细节。
113.图10示出了包括分别执行az网关数据路径1010和vpc网关数据路径1015的两个边
缘设备1000和1005的第二实施例。图7和图10中出现的类似编号的元件的功能是等同的。图7和图10之间的区别在于,在图10中,vpc边缘数据路径(t1 sr 1060以及服务插入层和服务传输层模块1065)在边缘设备1005而不是边缘设备1000中执行。如上所述,在一些实施例中,在执行前一处理步骤的任何设备上执行分布式路由器。
114.在一些实施例中,边缘转发元件被配置为使用服务逻辑转发元件作为传输机制来提供服务,如参考图11所描述的。边缘转发元件被配置为使用不同的传输机制将边缘转发元件的不同虚拟接口集合连接到逻辑网络的不同网络元件。例如,第一虚拟接口集合被配置为使用连接逻辑网络的业务的源机器和目的地机器的逻辑转发元件集合来连接到逻辑网络内部的转发元件集合。在一些实施例中,在第一接口集合上接收的业务被边缘转发元件转发到朝向目的地的下一跳,而不被返回到从其接收它的转发元件。第二虚拟接口集合被配置为连接到服务节点集合,以为在边缘转发元件处接收的数据消息提供服务。
115.为第二虚拟接口集合建立的每个连接可以使用不同的传输机制,诸如服务逻辑转发元件、隧道机制和线路中插件机制,并且在一些实施例中,一些或全部传输机制用于向服务节点提供数据消息,如下文参考图11、12、18和19所讨论的。第三虚拟接口集合中的每个虚拟接口(例如,第二集合的子集)被配置为连接到逻辑服务转发元件,该逻辑服务转发元件将边缘转发元件连接到内部转发元件集合中的至少一个内部转发元件,如下文参考图30至32a-b所描述的。虚拟接口被配置为用于(1)从至少一个内部转发元件接收数据消息,该数据消息要由服务节点集合中的至少一个服务节点提供服务,以及(2)将已服务的数据消息返回到内部转发元件网络。
116.在一些实施例中,传输机制包括逻辑服务转发元件,该逻辑服务转发元件将边缘转发元件连接到各自提供服务集合中的服务的服务节点集合。在选择服务集合时,一些实施例的服务分类操作识别必须对数据消息执行的多个服务操作的链。在一些实施例中,服务分类操作包括为所识别的服务链选择提供多个服务的服务路径。在选择服务路径之后,沿着所选服务路径发送数据消息以提供服务。一旦提供了服务,则数据消息由服务路径中执行最后一个服务操作的最后一个服务节点返回到边缘转发元件,并且边缘转发元件执行转发操作以转发数据消息,如将参考图11和12进一步讨论的。
117.图11示出了由服务路由器在t0或t1(例如,tx sr 1130)为数据消息流中的第一数据消息1110调用的服务插入层和服务传输层模块1135的集合执行的操作集合,该数据消息流需要来自定义服务路径的服务节点集合的服务。图11示出了tx sr 1130以及服务插入层(sil)和服务传输层(stl)模块1135。在一些实施例中,tx sr 1130以及sil和stl模块1135表示集中式服务路由器以及t0和t1任一个处的sil和stl模块的功能。在一些实施例中,t0和t1数据路径共享同一sil和stl模块集合,而在其他实施例中,t0和t1数据路径使用分离的sil和stl模块。sil和stl模块1135包括服务插入预处理器1120、连接追踪器1121、服务层传输模块1122、逻辑交换机服务平面处理器1123、服务平面第2层接口1124、服务插入后处理器1128和流编程表1129。
118.数据消息1110在边缘设备处被接收,并被提供给边缘tx sr1130。在一些实施例中,tx sr 1130在tx sr 1130的上行链路接口处或在虚拟隧道接口处接收数据消息。在一些实施例中,在针对上行链路接口和虚拟隧道接口(vti)的不同处理操作处调用si预处理器1120。在一些实施例中,针对在上行链路接口和虚拟隧道接口处接收的数据消息的调用
由边缘设备的不同组件实现。例如,在一些实施例中,由作为标准数据消息流水线的一部分的nic驱动器针对在上行链路接口处接收的数据消息调用si预处理器1120,而在作为分离的vti处理流水线的一部分的解封装和解密(加密和封装)操作之后(之前),针对在vti处接收的数据消息调用si预处理器1120。在针对上行链路和vti以不同方式实现si预处理器1120的一些实施例中,使用同一连接追踪器来维护每个数据消息的一致状态,即使它穿过vti和上行链路。
119.si预处理器1120执行与过程100的操作类似的操作集合。si预处理器1120在连接追踪器存储设备1121中执行查找,以确定是否存在针对数据消息所属的数据消息流的连接追踪器记录。如上所述,该确定基于流标识符,该流标识符包括流属性(例如,报头值、上下文数据、或从报头值以及备选地或结合地从上下文数据导出的值)或从流属性导出。在所示示例中,数据消息1110是数据消息流中的第一数据消息,并且没有识别针对数据消息1110所属的数据消息流的连接追踪器记录。连接追踪器存储设备查找等同于过程100的操作120,并且如果已经找到最新的连接追踪器记录,则si预处理器1120将如在过程100的操作120、125和170中那样,将所识别的连接追踪器记录中的信息转发到lr-sr。
120.由于在该示例中没有找到连接追踪器记录,因此si预处理器1120在服务插入规则存储设备1136中执行查找,以确定是否有任何服务插入(服务分类)规则适用于数据消息。在一些实施例中,针对不同接口的si规则被存储在si规则存储设备1136中,作为基于传入接口标识符(例如,作为元数据存储在边缘设备的缓冲区中的传入接口uuid)查询的分离的规则集合。在其他实施例中,针对不同接口的si规则被存储为具有潜在匹配规则的单个规则集合,这些潜在匹配规则被检查以查看它们是否适用于在其上接收到数据消息的接口。如下文将讨论的,从基于(由管理员或由系统)在网络管理器处定义的策略生成规则集的控制器接收(多个)si规则集。在一些实施例中,根据流属性来指定si规则存储设备1136中的si规则1145,该流属性识别规则所适用的数据消息流和服务动作。在所示示例中,服务动作是到用于识别服务类型和转发信息的uuid的重定向。
121.假设在si规则存储设备1136中的查找导致识别适用于数据消息1110的服务插入规则,则该过程使用从服务适用插入规则识别的uuid来查询策略表1137。在一些实施例中,uuid用于简化服务插入的管理,使得如果服务节点集合中的特定服务节点发生故障,则不需要更新指定同一服务节点集合的每个单独规则,而是可以更新与该uuid相关联的服务节点集合,或者可以针对该uuid更新选择(例如,负载均衡)操作。当前示例示出了识别与由多个服务路径标识符(spi)和选择度量集合识别的多个服务路径相关联的服务链标识符的uuid。选择度量可以是针对负载均衡操作的选择度量,负载均衡操作是以下任何一个:循环机制、基于负载的选择操作(例如,选择具有最低当前负载的服务节点)或基于距离的选择操作(例如,选择由所选度量衡量的最近服务节点)。在一些实施例中,服务路径集合是服务链的所有可能服务路径的子集。在一些实施例中,该子集由向不同边缘设备分配不同服务路径的控制器选择。在一些实施例中,向不同边缘设备分配服务路径提供了服务节点上的第一级别的负载均衡。
122.一旦选择了服务路径,则si预处理器1120通过在转发表1138中执行查找来识别与所选服务路径相关联的转发信息。转发表1138存储针对服务路径的转发信息(例如,服务路径中第一跳的mac地址)。在一些实施例中,转发信息包括指示服务路径长度(即,服务路径
中包括的服务节点的数量)的服务索引。在一些实施例中,转发信息还包括指示服务路径中的服务节点的数量的生存时间(ttl)值。在其他实施例中,下一跳mac地址、服务索引和ttl值与spi一起存储在策略表1137中,并且转发表1138是不必要的。
123.在一些实施例中,为前向数据消息流选择服务路径包括为反向数据消息流选择对应的服务路径。在这样的实施例中,此时确定针对每个方向的转发信息。在一些实施例中,反向数据消息流的服务路径包括与前向数据消息流的服务路径相同的服务节点,但是以相反的顺序穿过服务节点。在一些实施例中,当至少一个服务节点修改数据消息时,反向数据消息流的服务路径以相反的顺序穿过服务节点。对于一些数据消息流,反向数据消息流的服务路径与前向流的服务路径相同。在一些实施例中,sr可用作提供l3路由服务的服务节点,并且被识别为每个服务路径的最后一跳。在一些实施例中,sr l3路由服务节点也是每个服务路径的第一跳,以确保以相反的顺序穿过服务路径将在sr处结束,并且sr作为服务节点执行服务路径的第一跳处理。
124.一旦选择了服务路径并且识别了转发信息,则针对前向和反向流创建连接追踪器记录,并将其提供给连接追踪器存储设备1121。在一些实施例中,向服务插入后处理器1128查询指示服务节点集合(例如,与所识别的服务类型相关联的服务节点集合)的当前状态的状态值(例如,流编程版本值“flow_prog_gen”)。如下所述,连接追踪器记录包括用于处理前向和反向数据消息流中的后续数据消息的转发信息(例如,spi、服务索引、下一跳mac地址、以及针对被识别为匹配数据消息1110的属性的服务插入规则的服务插入规则标识符)。在一些实施例中,连接追踪器记录还包括流编程版本值以指示在创建连接追踪器记录时的当前流编程版本值,以便于与为其创建记录的数据消息流中的后续数据消息的当时的当前值进行比较。
125.然后,将数据消息1152连同转发信息1151提供给stl模块1122。在该示例中,针对需要由服务链提供的服务的数据消息的转发信息包括服务元数据(smd),在一些实施例中,该服务元数据包括服务链标识符(sci)、spi、服务索引、ttl值和方向值中的任何一个或所有。在一些实施例中,转发信息还包括下一跳的mac地址和用于将数据消息识别为使用逻辑服务转发元件传输机制的服务插入类型标识符。
126.如图所示,stl模块1122提供数据消息1153连同封装报头1154,在一些实施例中,封装报头1154包括smd和活跃度属性,其指示l3路由服务节点对于第2层服务平面处理器1123仍然是运行的,该第2层服务平面处理器1123基于包括在封装报头1154中的信息准备数据消息以发送到服务平面l2接口1124。在一些实施例中,代替封装报头,转发信息作为分离的元数据被发送或存储,在一些实施例中,该元数据包括指示l3路由服务节点仍然运行的smd和活跃度属性。逻辑交换机服务平面处理器1123的功能类似于在2019年6月18日提交的美国专利申请16/444,826中描述的端口代理。如图所示,逻辑交换机服务平面处理器1123移除报头1154并记录smd和下一跳信息。然后,数据消息被提供给服务平面l2接口1124(例如,与逻辑服务转发元件相关联的软件交换机端口)。
127.然后,数据消息被封装以由软件转发元件的接口(例如,端口或虚拟隧道端点(vtep))递送到服务路径中的第一服务节点以产生1157。在一些实施例中,smd是修改的smd集合,其使得在已服务的数据消息被返回到逻辑交换机服务平面处理器1123时,能够重构原始数据1110消息。在一些实施例中,仅当下一跳服务节点在另一设备上执行时才需要封
装,使得封装后的数据消息1157可以穿过中间网络结构。
128.在一些实施例中,封装利用覆盖报头来封装数据消息以产生数据消息1157。在一些实施例中,覆盖报头是在其一个或多个tlv中存储smd和stl属性的genve报头。如上所述,一些实施例中的smd属性包括sci值、spi值、si值和服务方向。在2019年6月18日提交的美国专利申请16/444,826中描述了其他封装报头。针对数据消息1110的图示数据路径假定服务路径中的第一服务节点在外部主机(不是边缘设备的主机)上。相反,如果边缘设备托管服务路径中的下一个服务节点,则数据消息将不需要封装,而是使用与逻辑服务平面相关联的svni和下一跳服务节点的mac地址在逻辑服务转发平面上被发送到下一个服务节点。
129.如果在封装报头1158中包括流编程指令,则流编程指令1159被提供给流编程表1129,并且流编程版本值被更新(例如,递增)。在一些实施例中,流编程表1129中的流编程指令包括新动作(例如,pf_value),其指示应当丢弃、允许后续数据消息或者识别新服务路径以跳过特定服务节点(例如,已经确定允许该连接的防火墙),同时穿过原始服务路径中的其他服务节点。将参考图13进一步讨论流编程版本值的使用。
130.图12示出了由服务路由器在t0或t1(例如,tx sr 1130)为数据消息流中的数据消息1210调用的服务插入层和服务传输层模块1135的集合执行的操作集合,该数据消息流需要来自定义服务路径的服务节点集合的服务。图12示出了tx sr 1130以及服务插入层(sil)和服务传输层(stl)模块1135。在一些实施例中,tx sr1130以及sil和stl模块1135表示集中式服务路由器以及t0和t1任一个处的sil和stl模块的功能。在一些实施例中,t0和t1数据路径共享相同sil和stl模块集合,而在其他实施例中,t0和t1数据路径使用分离的sil和stl模块。sil和stl模块1135包括服务插入预处理器1120、连接追踪器1121、服务层传输模块1122、逻辑交换机服务平面处理器1123、服务平面第2层接口1124、服务插入后处理器1128和流编程表1129。
131.数据消息1210在边缘设备处被接收,并被提供给边缘tx sr1130。在一些实施例中,tx sr 1130在tx sr 1130的上行链路接口处或在虚拟隧道接口处接收数据消息。在一些实施例中,在针对上行链路接口和虚拟隧道接口(vti)的不同处理操作处调用si预处理器1120。在一些实施例中,针对在上行链路接口和虚拟隧道接口处接收的数据消息的调用由边缘设备的不同组件实现。例如,在一些实施例中,由作为标准数据消息流水线的一部分的nic驱动器针对在上行链路接口处接收的数据消息调用si预处理器1120,而在作为分离的vti处理流水线的一部分的解封装和解密(加密和封装)操作之后(之前),针对在vti处接收的数据消息调用si预处理器1120。在针对上行链路和vti以不同方式实现si预处理器1120的一些实施例中,使用同一连接追踪器来维护每个数据消息的一致状态,即使它穿过vti和上行链路。
132.si预处理器1120执行与过程100的操作类似的操作集合。si预处理器1120在连接追踪器存储设备1121中执行查找,以确定是否存在针对数据消息所属的数据消息流的连接追踪器记录。如上所述,该确定基于流标识符,该流标识符包括流属性(例如,报头值、上下文数据、或从报头值以及备选地或结合地从上下文数据导出的值)或从流属性导出。在所示的示例中,数据消息1210是在连接追踪器存储设备1121中具有连接追踪器记录的数据消息流中的数据消息。连接追踪器存储设备查找以过程100的操作120开始。图12示出了附加操作集合,这些操作将用作图13中讨论的操作的示例。
133.一些实施例提供了一种执行有状态服务的方法,该方法追踪服务节点的状态改变以在必要时更新连接追踪器记录。在边缘设备处维护指示服务节点的状态的至少一个全局状态值。在一些实施例中,为服务链服务节点(scsn)和第2层线路中插件服务节点(l2 sn)维护不同的全局状态值。该方法在连接追踪器存储设备中生成记录,该记录包括作为数据消息流中的第一数据消息的流状态值的当前全局状态值。每次针对数据消息流接收到数据消息时,将所存储的状态值(即,流状态值)与相关的全局状态值(例如,scsn状态值或l2sn状态值)进行比较,以确定所存储的动作是否已被更新。
134.在与流相关的全局状态值改变之后,全局状态值和流状态值不匹配,并且该方法检查流编程表以确定流是否已经受到导致全局状态值改变(例如,递增)的(多个)流编程指令的影响。在一些实施例中,存储在流编程表中的指令包括数据消息流标识符和更新的动作(例如,丢弃、允许、更新所选服务路径、更新下一跳地址)。如果流编程表中存储的数据消息流标识符与当前数据消息流标识符不匹配,则流状态值被更新为当前全局状态值,并且连接追踪器记录中存储的动作被用来处理数据消息。然而,如果存储在流编程表中的数据消息流标识符中的至少一个与当前数据消息流标识符相匹配,则流状态值被更新为当前全局状态值,并且存储在连接追踪器记录中的动作被更新以反映具有存储在流编程表中的匹配流标识符的指令的执行,并且更新的动作被用于处理数据消息。
135.图13概念性地示出了用于验证或更新针对数据消息流识别的连接追踪器记录的过程1300。在一些实施例中,过程1300由在边缘设备上执行的边缘转发元件执行。在图12的示例中,该过程由si预处理器1120执行。过程1300通过(在1310处)识别在边缘转发元件处接收的数据消息的连接追踪器记录开始。流编程版本值存储在连接追踪器记录中,其反映在连接追踪器记录生成时的流编程版本值。备选地,在一些实施例中,流编程版本值反映在连接追踪器记录的最后更新时的流编程版本值。连接追踪器记录存储针对数据消息流的转发信息。然而,如果存在针对数据消息流的流编程指令,则所存储的信息可能过时。
136.对于一些数据消息流,数据消息流中的先前数据消息将已被接收,其包括流编程指令集合。在一些实施例中,数据消息是已经由服务路径中的服务节点集合服务的已服务的数据消息,并且流编程指令集合基于来自服务路径中的服务节点集合的流编程指令。在一些实施例中,流编程指令集合包括针对受流编程指令影响的前向数据消息流和反向数据消息流两者的流编程指令。在一些实施例中,前向和反向流id是相同的,并且方向位区分连接追踪器记录中的前向和反向数据消息流。
137.流编程指令集合被记录在流编程表中,并且在流编程表处流编程版本值被更新(递增)以反映已经接收到可能需要更新至少一个连接追踪器记录中的信息的流编程指令。在一些实施例中,流编程指令基于以下事件中的任何一个:服务节点的故障、不再需要作为服务路径的一部分的服务节点的识别、丢弃数据消息流中的特定数据消息的决策、或丢弃特定数据消息流的决策。基于事件,流编程指令包括转发信息,该转发信息针对下一数据消息(基于丢弃数据消息流中的特定数据消息的决策)或针对数据消息流(基于丢弃特定数据消息流的决策)指定不同于先前选择的服务路径(基于服务节点故障或不再需要的服务节点的识别)或新动作(例如,pf_value)。在一些实施例中,流编程表存储与各个流相关的记录以及用于在服务路径选择操作期间确定可用服务路径的故障服务节点(或它们所属的服务路径)的记录。针对各个流存储的记录一直持续到它们被执行,在一些实施例中,这在接
收到数据消息流的下一个数据消息时发生,如下所述。
138.然后,过程1300(在1320处)确定流编程世代值是否是当前的(即,不等于流编程表存储的流编程版本值)。在所描述的实施例中,(在1320处)确定流编程版本值(例如,flow_prog_gen或bfd_gen)是否是当前的包括对仅包括流编程版本值的流编程表1129的查询,以执行简单的查询操作以确定是否必须执行进一步的、更复杂的查询。如果流编程版本值是当前的,则可以使用存储在连接追踪器记录中的动作来将数据消息转发到服务节点以提供所需的服务,并且该过程结束。
139.如果过程1300(在1320处)确定流编程版本值不是当前的,则过程1300(在1330处)确定是否存在适用于所接收的数据消息(即,该数据消息所属的数据消息流)的流编程指令。在一些实施例中,使用包括流id的查询(例如,1271)来进行该第二确定,流id被用作识别存储在流编程表中的流编程记录的键。在一些实施例中,查询还包括可用于确定服务路径是否发生故障的服务路径标识符(spi)。在一些实施例中,流编程世代值不是当前的,因为已经接收到导致流编程版本值更新(例如,递增)的流编程指令。在一些实施例中,流编程指令与数据消息流相关,而在其他实施例中,流编程指令与不同的数据消息流或故障服务节点相关。
140.如果过程1300(在1330处)确定不存在针对所接收的数据消息的相关流编程指令,则(在1340处)更新连接追踪器记录中存储的流编程版本值以反映从流编程表返回的流编程版本值。然后,基于存储在连接追踪器记录中的动作来(在1345处)处理数据消息,并且该过程结束。然而,如果过程1300(在1330处)确定存在针对所接收的数据消息的相关流编程指令,则(在1350处)使用流编程表中的动作来处理数据消息。在一些实施例中,确定存在针对所接收的数据消息的相关流编程指令基于接收到对查询的非空响应(例如,1272)。然后,基于查询响应来(在1360处)更新连接追踪器记录,以更新服务动作和流编程版本值,并且该过程结束。本领域普通技术人员将理解,操作1350和1360一起执行或以不同的顺序执行,而不影响功能性。
141.对于一些数据消息,基于流编程记录和连接追踪器记录、根据转发信息处理数据消息包括将数据消息转发到服务传输层模块1122,服务传输层模块1122沿着转发信息中识别的服务路径转发数据消息。对于其他数据消息,根据转发信息处理数据消息包括基于流编程指令丢弃(或允许)数据消息。基于双向转发检测(bfd)版本值(例如,bfd_gen)对l2 biw服务节点执行类似的处理,该bfd版本值是与通过l2 biw传输机制连接的服务节点的故障相关联的状态值,并且在创建时存储在连接追踪器记录中。
142.在通过si后处理器1128处理数据消息之后,已服务的数据消息1162被提供给tx sr 1130,被标记为(例如,使用与数据消息相关联的标签或元数据)已服务,使得si预处理器不被第二次调用以对数据消息进行分类。然后,tx sr 1130将数据消息1163转发到下一跳。在一些实施例中,在转发数据消息时维护被服务的标记,而在一些其他实施例中,作为tx sr 1130的逻辑路由操作的一部分移除该标记。在一些实施例中,针对数据消息存储指示数据消息已服务的元数据。图31将讨论将数据消息的识别维护为已服务以避免从t1 sr服务分类操作创建循环的实施例的示例。
143.图14示出了连接追踪器存储设备1121中的连接追踪器记录集合1410-1430以及流编程表1129中的示例性流编程记录集合1440-1490。连接追踪器存储设备1121被示为存储
连接追踪器记录1410-1430。连接追踪器记录集合1410-1430包括针对不同传输机制的连接追踪器记录集合,每个传输机制包括针对前向和反向数据消息流的分离记录。
144.连接追踪器记录集合1410是针对使用逻辑服务平面(例如,逻辑服务转发元件)传输机制的前向和反向数据消息流的连接追踪器记录集合。在一些实施例中,连接追踪器记录集合1410包括针对前向数据消息流的连接追踪器记录1411和针对反向数据消息流的连接追踪器记录1412。每个连接追踪器记录1411和1412包括流标识符(例如,流id或流id’)、服务元数据集合、流编程版本值(例如,flow_program_gen)、动作标识符(例如,pf_value)、以及识别用于创建连接追踪器记录的服务规则的规则id。在一些实施例中,前向和反向数据消息流的流id是基于源地址和目的地地址(例如,ip和mac地址)的交换的不同流id。在其他实施例中,前向和反向数据消息流的不同流id基于作为由服务节点集合中的服务节点提供的网络地址转换的结果的源地址和目的地地址的不同值。在一些实施例中,除了指示方向性的位之外,前向流id和反向流id是相同的。在一些实施例中,方向性位存储在分离的字段中,并且前向流id和反向流id是相同的。
145.在一些实施例中,服务元数据(smd)包括服务路径id(例如,spi 1和spi 1’)、服务索引(例如,si,其对于前向和反向数据消息流应该相同)、生存时间(ttl)和下一跳mac地址(例如,hop1mac和hopmmac)。在上文参考图3和图11已描述了smd在处理数据消息中的使用。在一些实施例中,smd包括ietf(互联网工程任务组)的rfc(请求注解)8300的网络服务报头(nsh)属性。在一些实施例中,smd包括服务链标识符(sci)和方向(例如,前向或反向)以及spi和si值,用于处理服务链的服务操作。
146.在一些实施例中,规则id用于(如在操作223中所描述的)通过使用规则id作为applied_to存储设备1401中的关键字来识别应用规则的接口集合,该applied_to存储设备1401存储包括识别规则id的规则id字段1402和包含应用所识别的规则的接口列表的applied_to字段1403的记录。在一些实施例中,接口是由uuid识别的服务路由器的逻辑接口。在一些实施例中,applied_to存储设备1401由知晓服务插入规则、服务策略和接口标识符的控制器配置。
147.连接追踪器记录集合1420是针对使用第2层线路中插件(biw)传输机制的前向和反向数据消息流的连接追踪器记录集合。在一些实施例中,连接追踪器记录集合1420包括针对前向数据消息流的连接追踪器记录1421和针对反向数据消息流的连接追踪器记录1422。每个连接追踪器记录1421和1422包括流标识符(例如,流id或流id’)、ip地址(例如,与连接到l2服务节点的接口相关联的伪ip地址)、作为与通过l2 biw传输机制连接到lr-sr(例如,azg-sr或vpcg-sr)的服务节点的故障相关联的状态值的双向转发检测(bfd)版本值(例如,bfd_gen)、动作标识符(例如,pf_value)以及识别用于创建连接追踪器记录的服务规则的规则id。前向和反向数据消息流的流id与针对连接追踪器记录1410描述的流id相同。在一些实施例中,pf_value是识别流是否应该被允许或被丢弃、绕过服务节点的值。
148.连接追踪器记录集合1430是针对使用第3层隧道传输机制的前向和反向数据消息流的连接追踪器记录集合。在一些实施例中,连接追踪器记录集合1430包括针对前向数据消息流的连接追踪器记录1431和针对反向数据消息流的连接追踪器记录1432。每个连接追踪器记录1431和1432包括流标识符(例如,流id或流id’)、ip地址(例如,将lr-sr连接到服务节点的虚拟隧道接口的ip地址)、动作标识符(例如,pf_value)、以及识别用于创建连接
追踪器记录的服务规则的规则id。前向和反向数据消息流的流id与针对连接追踪器记录1410描述的流id相同。在一些实施例中,pf_value是识别流是否应该被允许或被丢弃、绕过服务节点的值。
149.在一些实施例中,流编程表1129存储状态值1440-1470。状态值“flow_program_gen”1440是用于识别对流编程表的改变的状态的流编程状态值。如上所述,flow_program_gen值用于确定是否应该查阅流编程表(例如,如果连接追踪器记录存储过时的flow_program_gen值)以确定针对数据消息的转发信息,或者存储在连接追踪器记录中的转发信息是否是当前的(例如,连接追踪器记录存储当前的flow_program_gen值)。
150.状态值“bfd_gen”1450是用于识别使用l2 biw传输机制连接的服务节点的活跃度值的改变状态的活跃度状态值。与flow_program_gen值类似,bfd_gen值用于确定连接追踪器记录中存储的bfd_gen值是否为当前bfd_gen值并且转发信息是否仍然有效,或者连接追踪器中存储的bfd_gen值是否过期并且si预处理器需要确定转发信息是否仍然有效(例如,以确定与所存储的ip地址相对应的服务节点是否仍然运行)。在一些实施例中,分离的存储结构使用bfd(例如,l2 biw服务节点)检测故障来存储故障服务节点的列表,当存储在连接追踪器记录中的bfd_gen值与全局bfd_gen值不匹配时查询该列表。
151.状态值“spi_fail_gen”1460是用于识别使用逻辑服务平面(例如,逻辑服务转发元件)传输机制连接到lr-sr的服务路径(即,服务节点的有序集合)的活跃度值的改变状态的活跃度状态值。在一些实施例中,spi_fail_gen值是从实现中央控制平面的控制器提供的,该控制器知晓服务节点故障并在检测到服务节点故障时更新spi_fail_gen值。与bfd_gen值类似,spi_fail_gen用于确定与和策略存储设备中的uuid相关联的服务路径标识符相关联的spi_fail_gen值是否为最新的。如果spi_fail_gen值不是最新的,则必须确定当前被列举为可能的服务路径的服务路径是否仍然正常运行。在一些实施例中,分离的存储结构存储故障服务路径的列表,当spi故障生成值不是最新的(即,与存储的spi故障生成状态值1460不匹配)时查询该列表。
152.状态值“sn_gen”1470是用于识别使用l3隧道传输机制连接的服务节点的活跃度值的改变状态的活跃度状态值。与flow_program_gen值类似,sn_gen值用于确定连接追踪器记录中存储的sn_gen值是否为当前sn_gen值并且转发信息是否仍然有效,或者连接追踪器中存储的sn_gen值是否过期并且si预处理器需要确定转发信息是否仍然有效(例如,以确定与所存储的ip地址相对应的服务节点是否仍然运行)。在一些实施例中,分离的存储结构存储故障l3服务节点的列表,当连接追踪器记录中存储的sn_gen值与全局sn_gen值不匹配时查询该列表。
153.流编程表1129还存储流编程指令集合。在一些实施例中,从服务节点(通过其服务代理)接收的单个流编程指令针对前向和反向数据消息流中的每一个生成流编程记录。流编程记录集合1480示出了更新由流id 1(1481)识别的前向数据消息流和由流id 1’(1482)识别的反向数据消息流的pf_value的流编程记录。在一些实施例中,流id 1和流id 1’除了将流id识别为前向或反向数据消息流的比特位之外是相同的。在一些实施例中,流编程表记录1480中包括的pf_value’是指定数据消息流的数据消息应该被丢弃或允许的动作值。
154.在一些实施例中,流编程指令由流编程标签来指示,该流编程标签可以指定以下操作(1)当不需要动作时,none(无)操作(这导致不执行流编程操作),(2)当该流的其他数
据消息不应该沿着服务链转发,而是应该在lr-si分类器处被丢弃时,drop(丢弃)操作,以及(3)当该流的其他数据消息不应该沿着服务链转发,而是该流应该由lr-sr转发到目的地时,accept(接受)操作。在一些实施例中,流编程标签还可以指定drop_message(丢弃消息)。当服务节点需要与代理通信(例如,以响应ping请求)并且希望丢弃用户数据消息(如果有的话)时,使用drop_message,即使在源处不需要流编程。
155.在一些实施例中,附加动作可供服务代理用于在内部传送其svm的故障。在一些实施例中,该动作将引导si预处理器为数据消息的流选择另一服务路径(例如,另一spi)。在一些实施例中,通过在一些实施例中设置适当的元数据字段,该动作与用户数据消息一起被携带在带内。例如,如下文进一步描述的,服务代理通过数据平面上的带内数据消息业务,通过nsh属性的oam(操作、管理和维护)元数据与si后处理器(或负责生成和维护可用服务路径的列表的控制器计算机)通信。假定通过设计流编程动作受到信令延迟的影响并且容易丢失,则在将流编程动作传送到代理之后,svm或服务代理仍可能在源处看到属于预期被丢弃、接受或重定向的流的数据消息一段时间。在这种情况下,服务平面应继续将动作设置为在lr-si分类器(或连接追踪器记录)处丢弃、允许或重定向。
156.流编程记录集合1480示出更新由流id 2(1481)识别的前向数据消息流和由流id 2’(1482)识别的反向数据消息流的服务元数据集合的流编程记录。在一些实施例中,更新后的spi(例如,spi 2或spi 2’)表示不同的服务节点集合。如上所述,更新后的服务路径可以基于服务节点故障或基于确定不再需要特定服务节点(例如,提供适用于所有后续数据消息的允许数据消息的防火墙决策的服务节点)。
157.参考图15和16讨论了与服务链和服务路径创建和管理相关的额外细节。图15示出了一些实施例的对象数据模型1500。在该模型中,以实线示出的对象由用户提供,而以虚线示出的对象由服务平面管理器和控制器生成。如图所示,这些对象包括服务管理器1502、服务1504、服务简档1506、供应商模板1507、服务附件(service attachment)1508、服务实例1510、服务部署1513、服务实例运行时(sir)1512、实例端点1514、实例运行时端口1516、服务链1518、服务插入规则1520、服务路径1522和服务路径跳1524。
158.在一些实施例中,可以在创建服务对象1504之前或之后创建服务管理器对象1502。管理员或服务管理系统可以调用服务管理器api来创建服务管理器。服务管理器1502可以在任何时间点与服务相关联。在一些实施例中,服务管理器1502包括服务管理器信息,诸如供应商名称、供应商标识符、resturl(用于回调)和认证/证书信息。
159.如上所述,服务平面不需要服务管理器的存在或使用,因为服务节点可以以零感知模式操作(即,对服务平面具有零感知)。在一些实施例中,零感知模式仅允许基本操作(例如,将业务重定向到服务的svm)。在一些这样的实施例中,没有提供将对象信息(诸如服务链信息、服务简档等)分发到服务管理器服务器的集成。相反,这些服务器可以轮询网络管理器以查找感兴趣对象。
160.服务对象1504表示由服务节点提供的服务类型。服务对象具有传输类型属性,该传输类型属性指定其用于接收服务元数据的机制(例如,nsh、gre、qinq等)。每个服务对象还具有由服务管理器返回的状态属性(其可被启用或禁用),以及对服务管理器的引用,该引用可用于暴露rest api端点以传送事件和执行api调用。它还包括对用于部署服务实例的ova/ovf属性的引用。
161.供应商模板对象1507包括一个或多个服务简档对象1506。在一些实施例中,服务管理器可以注册供应商模板,并且服务简档可以在每个服务的基础上并且基于具有潜在专用参数的供应商模板来定义。在一些实施例中,为l3路由服务创建供应商模板对象1507,该l3路由服务可用于表示具有可用于区分不同边缘转发元件的lr-sr组件的属性的lr-sr组件。服务链可以通过参考一个或多个服务简档来定义。在一些实施例中,服务简档没有被分配标签,并且在线路上不被显性地识别。为了确定将哪个功能应用于业务,服务节点执行查找(例如,基于服务链标识符、服务索引和服务方向,如上所述),以便识别适用的服务简档。无论何时创建或修改服务链,针对此查找的映射都由管理平面提供给服务管理器。
162.在一些实施例中,服务简档对象1506包括(1)供应商模板属性以识别其相关联的供应商模板,(2)当模板通过服务简档暴露可配置值时的一个或多个定制属性,以及(3)动作属性,诸如转发动作或复制和重定向,其分别指示服务代理将所接收的数据消息转发到它们的服务节点,或者将所接收的数据消息的副本转发到它们的服务节点、同时将所接收的数据消息转发到下一服务跳或当它们的服务节点是最后一跳时转发回原始源gvm。
163.服务附件对象1508表示服务平面(即,是用户视角的服务平面的表示,诸如多租户数据中心中的租户的网络管理员或专用数据中心中的网络管理员)。服务附件对象是支持服务平面的任何数量的不同实现的抽象(例如,逻辑l2覆盖、逻辑l3覆盖、逻辑网络覆盖等)。在一些实施例中,通过服务平面通信的每个端点(在服务实例运行时(sir)或gvm上)指定服务附件。服务附件是通信域。因此,服务附件外部的服务或gvm可能无法彼此通信。
164.在一些实施例中,可以使用服务附件来创建在它们之间具有硬隔离的多个服务平面。服务附件具有以下属性(1)识别承载服务附件的业务的逻辑网络或逻辑转发元件的逻辑标识符(例如,逻辑交换机的svni),(2)服务附件的类型(例如,l2附件、l3附件等),以及(3)指定服务附件的范围的applied_to标识符(例如,针对南北操作的传输节点0和传输节点1以及针对东西操作的主机集群或集合)。在一些实施例中,控制平面(例如,中央控制平面)基于由网络管理员(例如,私有或公共云的数据中心管理员,或公共云中的网络虚拟化提供商)指定的参数,将其从管理平面接收的服务附件表示转换为特定lfe或逻辑网络部署。
165.服务实例对象1510表示服务的实际部署的实例。因此,每个这样的对象通过指定服务对象1504和服务实例对象1510之间的关系的服务部署对象1513与一个服务对象1504相关联。所部署的服务实例可以是独立的服务节点(例如,独立的svm),或者它可以是高可用性(ha)服务节点集群。在一些实施例中,服务部署对象1513描述服务实例类型,例如,独立或ha。如下所述,在一些实施例中可以使用服务部署对象的api来为服务部署若干服务实例。
166.服务实例运行时(sir)对象1512表示以独立模式操作的实际运行时服务节点,或ha集群的实际运行时服务节点。在一些实施例中,服务实例对象包括以下属性(1)指定服务实例是在独立模式、活动/待机模式还是活动/活动模式下操作的部署模式属性,(2)指定实例是被启用还是被禁用的状态属性,以及(3)在南北操作的情况下包括对服务附件标识符的引用的deployed_to(部署于)属性。
167.在一些实施例中,手动启动svm供应。为此,在一些实施例中,管理平面提供用于以下各项的api:(1)创建现有服务的服务实例,(2)删除服务实例,(3)通过添加附加sir来增
长已经被配置为高可用性集群的服务实例,以及(4)通过移除其sir之一来缩减服务实例。当创建现有服务的服务实例时,在一些实施例中,可以基于服务中包含的模板来创建服务实例。调用者可以在独立实例或ha群集之间进行选择,在这种情况下,ha集群中的所有vm将被供应。同样,在一些实施例中,针对服务实例部署的api允许通过仅一个api调用来部署多个服务实例(例如,针对ha集群)。
168.在一些实施例中,创建一个或多个svm的api指定应该放置svm的一个或多个逻辑位置(例如,集群、主机、资源池)。在一些实施例中,只要可能,管理平面就尝试将属于相同服务实例的svm放置在不同主机上。还可以适当地配置反亲和性规则以维护跨迁移事件(诸如由vmware公司的动态资源调度器支持的vmotion事件)的svm的分布。类似地,当特定主机(或主机组)可用时,管理平面可以配置与特定主机(或主机组)的亲和性规则,或者供应服务实例的用户可以显性地选择主机或集群。
169.如上所述,服务实例运行时对象1512表示在主机上运行以实现服务的实际svm。在lr-sr提供l3路由服务的实施例中,服务实例运行时对象1512还表示边缘转发元件。sir是服务实例的一部分。每个sir可以具有完全专用于服务平面业务的一个或多个业务接口。在一些实施例中,根据需要,每个sir运行至少一个服务代理实例以处理针对sir的数据平面信令和数据消息格式转换。当部署服务实例时,在一些实施例中为与服务实例相关联的每个svm创建sir。网络管理器还为东西服务插入中的每个服务实例创建实例端点。在一些实施例中,每个sir对象1512具有以下属性(1)状态属性,不管原因如何,其对于可以处理业务的svm是活动的,而对于所有其他svm是非活动的,以及(2)运行时状态,其指定数据平面活动性检测是否检测sir是开启或关闭。
170.实例运行时接口1516是服务实例端点1514的每端点版本。在一些实施例中,实例运行时接口1516用于识别可以作为源或宿服务平面业务的sir或gvm的接口。在东西服务插入中,在一些实施例中,实例运行时接口的生命周期被链接到服务实例运行时的生命周期。在一些实施例中,不需要用户动作来配置实例运行时接口。
171.在一些实施例中,实例运行时接口1516具有以下属性:端点标识符、类型、对服务附件的引用、以及位置。端点标识符是sir vnic的数据平面标识符。端点标识符是在sir或gvm注册到服务传输层时生成的,并且可以是mac地址或mac地址的一部分。类型属性可以是共享的或专用的。sir vnic是专用的,这意味着只有服务平面业务能够到达它们,而gvm vnic是共享的,这意味着它们将接收和发送服务平面和常规业务两者。服务附件引用是对实现用于发送和接收服务平面业务的服务平面的服务附件的引用。在一些实施例中,该引用是对于服务平面的svni。在一些实施例中,位置属性指定实例运行时接口的位置,其是实例运行时接口当前所在的主机的uuid。
172.在一些实施例中,用户根据服务简档1506的有序列表来定义服务链对象1518。在一些实施例中,每个服务链概念上为前向和反向业务方向提供分离的路径,但是如果在创建时仅提供一个方向,则通过颠倒服务简档顺序自动生成另一个方向。服务链的任一方向(甚至两个方向)都可以为空,这意味着没有服务将处理该方向上的业务。在一些实施例中,即使对于空服务链,数据平面也将执行查找。
173.服务链是抽象的概念。它们不指向特定的服务节点集合。相反,作为服务平面平台的一部分的网络控制器自动生成指向服务链的服务节点序列的服务路径,并沿着所生成的
服务路径引导消息/流。在一些实施例中,服务链在管理平面或控制平面中由其uuid识别,uuid是服务链的唯一标识符。向服务节点通过管理平面api被提供有服务链id的含义,管理平面api通过它们的服务管理器接收。更多细节在2019年6月18日提交的美国专利申请16/444,826中进行了描述。
174.在一些实施例中,服务链标签可用于识别数据平面中的服务链,因为uuid太长而不能在封装报头中携带。在一些实施例中,服务链id是类似规则id的无符号整数。每个被重定向到服务的数据消息携带其所穿过的服务链的服务链标签。当创建或修改服务链时,管理平面将uuid通告到服务链标签映射。服务链标签与服务链uuid具有1对1映射,而单个服务链可以具有0到许多个服务路径索引。
175.除了服务链id之外,在一些实施例中,服务链还具有以下属性:(1)对所有计算出的服务路径的引用,(2)故障策略,以及(3)对服务简档的引用。上面描述了对计算出的服务路径的引用。故障策略是在无法穿过为服务链选择的服务路径时应用的。在一些实施例中,故障策略可以是pass(转发业务)和fail(丢弃业务)。对服务链的服务简档的引用可以包括出口业务(例如,从gvm行进到交换机的数据消息)必须穿过的服务简档的出口列表,以及入口业务(例如,从交换机行进到gvm的数据消息)必须穿过的服务简档的入口列表。在一些实施例中,默认情况下,入口列表被初始化为出口列表的逆转。
176.在一些实施例中可以使用不同的技术来定义服务链的服务路径。例如,在一些实施例中,服务链可以具有相关联的负载均衡策略,负载均衡策略可以是以下策略之一。负载均衡策略负责对服务链的不同服务路径上的业务进行负载均衡。根据any(任何)策略,服务框架可以自由地将业务重定向到任何服务路径,而不管任何负载均衡考虑或流锁定。另一策略是local(本地)策略,其指定本地服务实例(例如,在与源gvm相同的主计算机上执行的svm)将优先于远程服务实例(例如,在其他主计算机或外部服务设备上执行的svm)。
177.一些实施例基于多少个sir是本地的来生成服务路径的分数,并且选择最高分数,而不管负载如何。另一种策略是集群策略,它指定由共置于同一主机上的vm实现的服务实例是首选的,无论该主机是本地主机还是不同的主机。round_robin(轮询)策略指示所有活动服务路径以相等的概率或基于由权重值集合指定的概率被命中。
178.si规则对象1520将数据消息属性集合与由服务链对象1518表示的服务链相关联。服务链由一个或多个服务路径实现,每个服务路径由服务路径对象1522定义。每条服务路径具有由一个或多个服务路径跳对象1524表示的一个或多个服务跳,每个跳与一个实例运行时接口1516相关联。在一些实施例中,每个服务跳还涉及相关联的服务简档、相关联的服务路径和下一跳sir端点标识符。
179.在一些实施例中,服务路径对象具有若干属性,其中一些属性可以在底层条件改变时由管理或控制平面更新。这些属性包括服务路径索引、状态(例如,启用或禁用)、当必须手动禁用服务路径时(例如,出于调试原因)使用的管理模式(例如,启用或禁用)、主机交叉计数(指示穿过服务路径的数据消息穿越主机多少次)、位置计数(指示沿着该路径的多少个sir位于本地主机上)、备份服务路径列表、服务路径的长度、反向路径(以相反的顺序列出同一sir集合)、以及维护模式指示符(在一些实施例中,如果服务路径中的任何一跳处于维护模式则指示为真的位)。
180.主机穿越计数是整数,并且指示通过服务路径的数据消息必须从pnic发出多少
次。在一些实施例中,当存在多个可用备选方案时,本地或中央控制平面使用该度量来确定优选路径。该值由管理平面或控制平面填充,并且对于使用服务路径的每个主机都相同。在一些实施例中,本地性计数不是由管理平面或控制平面初始化的,而是在创建或更新服务路径时由本地控制平面计算的。每个lcp可能会计算不同的数字。当存在多个可用备选方案时,本地控制平面使用此值来识别优选路径。服务路径长度是服务平面用来设置初始业务索引的一个参数。
181.在一些实施例中,备份服务路径列表是指向相同服务链的所有服务路径的有序列表的指针。它列出了当沿着路径的特定sir发生故障时要尝试的所有可能的备选方案。该列表可以包含服务路径所穿过的每个ha集群中的所有可能的svm排列的服务路径。在一些实施例中,该列表将不包含属于不同ha集群的sir。
182.在一些实施例中,当至少一个服务跳不活动时,服务路径被禁用。这种状况是暂时的,并且由服务活动性检测失败触发。可以在任何时间以这种方式禁用服务路径。在一些实施例中,当至少一个服务跳没有匹配的sir时,服务路径也被禁用。当其所指的sir消失时,服务跳进入此状况,但服务路径仍然存在于对象模型中。
183.服务平面必须能够唯一地识别每个spi。在一些实施例中,针对每个服务路径发送控制平面生成的uuid。由于服务平面中的数据消息报头限制,在一些实施例中,大id不与每个数据消息一起发送。在一些实施例中,当控制平面为每条服务路径生成uuid时,在这些实施例中,它还为其生成小的唯一id,并且该id与每个数据消息一起发送。
184.为了支持使用lr-sr作为服务平面业务宿(traffic sink),在一些实施例中,网络管理器或控制器生成表示边缘转发元件的内部服务,并用表示lr-sr的可配置设置来创建表示l3路由的供应商模板。对于每个lr-sr,在一些实施例中,网络管理器或控制器创建(1)专用于l3路由供应商模板的服务简档,(2)服务实例,以及(3)服务实例端点。然后,网络管理器或控制器允许服务链中的服务简档,并为包括lr-sr的服务路径配置故障策略。然后,为lr-sr提供连接到逻辑服务平面的服务链路,并且数据平面被配置为将服务平面业务注入到lr-sr的常规路由流水线中。
185.图16概念性地示出了网络管理器和控制器在一些实施例中执行以定义用于服务插入、下一服务跳转发和服务处理的规则的若干操作。如图所示,这些操作由服务注册器1604、服务链创建器1606、服务规则创建器1608、服务路径生成器1612、服务平面规则生成器1610和规则分发器1614执行。在一些实施例中,这些操作中的每一个可以由网络管理器或控制器的一个或多个模块实现,和/或可以由一个或多个独立服务器实现。
186.通过服务伙伴界面1602(例如,api集合或伙伴用户界面(ui)门户),服务注册器1604接收指定不同服务伙伴执行的服务的供应商模板1605。这些模板根据一个或多个服务描述符(包括服务简档)定义伙伴服务。注册器1604将服务简档存储在简档存储设备1607中,以供服务链创建器1606用于定义服务链。
187.具体地,通过用户界面1618(例如,api集合或ui门户),服务链创建器1606从网络管理员(例如,数据中心管理员、租户管理员等)接收一个或多个服务链定义。在一些实施例中,每个服务链定义将识别服务链的服务链标识符与一个或多个服务简档的有序序列相关联。所定义的服务链中的每个服务简档与需要由服务节点执行的服务操作相关联。服务链创建器1606将每个服务链的定义存储在服务链存储设备1620中。
188.通过用户界面1618(例如,api集合或ui门户),服务规则创建器1608从网络管理员(例如,数据中心管理员、租户管理员等)接收一个或多个服务插入规则。在一些实施例中,每个服务插入规则将数据消息流属性集合与服务链标识符相关联。在一些实施例中,流属性是流报头属性,如l2属性或l3/l4属性(例如,五元组属性)。在这些或其他实施例中,流属性是上下文属性(例如,appid、进程id、活动目录id等)。在美国专利申请15/650,251中描述了用于捕获和使用上下文属性以执行转发和服务操作的多种技术,该美国专利申请现公开为美国专利公开2018/0181423,其内容并入本文。这些技术中的任何一种都可以结合本文描述的实施例来使用。
189.服务规则生成器1608生成一个或多个服务插入规则,并将这些规则存储在si规则存储设备1622中。在一些实施例中,每个服务插入规则具有规则标识符和服务链标识符。在一些实施例中,规则标识符可以根据流标识符(例如,报头属性、上下文属性等)来定义,流标识符识别si规则所适用的(多个)数据消息流。另一方面,每个si规则的服务链标识符识别对于与si规则的规则标识符相匹配的任何数据消息流而言、必须由服务平面执行的服务链。
190.对于作为服务规则的一部分的每个服务链,服务路径生成器1612生成一个或多个服务路径,其中每个路径识别一个或多个服务节点的一个或多个服务实例端点,以执行由链的服务简档序列指定的服务操作。在一些实施例中,针对服务链生成服务路径的过程考虑了一个或多个标准,诸如(1)作为服务路径的候选服务节点的服务节点(例如,svm)上的数据消息处理负载,(2)流的数据消息在它们穿过每个候选服务路径时穿越的主计算机的数量,等等。
191.这些服务路径的生成在美国专利申请16/282,802中进一步描述,该申请通过引用并入本文。如本专利申请中所描述的,一些实施例基于一个或多个度量来识别针对特定主机上的特定gvm的服务路径,这些度量诸如主机穿越计数(指示穿过服务路径的数据消息穿越主机多少次)、本地性计数(指示沿着该路径的多少个sir位于本地主机上)等。其他实施例基于诸如财务和许可度量的其他度量来识别服务路径(即,选择服务路径的服务节点)。
192.服务路径生成器1612将所生成的服务路径的身份存储在服务路径存储设备1624中。在一些实施例中,该存储设备将每个服务链标识符与一个或多个服务路径标识符相关联,并且对于每个服务路径(即,每个spi),它提供定义服务路径的服务实例端点的列表。一些实施例将服务路径定义存储在一个数据存储设备中,同时将服务链及其服务路径之间的关联存储在另一个数据存储设备中。
193.然后,服务规则生成器1610根据存储在存储设备1620、1622和1624中的规则生成针对服务插入、下一服务跳转发和服务处理的规则,并将这些规则存储在规则存储设备1626、1628和1630中,规则分发器1614可以从规则存储设备1626、1628和1630检索这些规则并将它们分发给si预处理器、服务代理和服务节点。在一些实施例中,分发器1614还分发来自服务路径存储设备1624的路径定义。一些实施例中的路径定义包括沿着每条路径的第一跳的第一跳网络地址(例如,mac地址)。在一些实施例中,服务规则生成器1610和/或规则分发器1614为相同的服务链指定不同的服务路径集合并将其分发到不同的主计算机,因为不同的服务路径集合对于不同的主计算机是最佳的或优选的。
194.在一些实施例中,存储在规则存储设备1626中的si分类规则将流标识符与服务链
标识符相关联。因此,在一些实施例中,规则生成器1610从存储设备1622检索这些规则,然后将它们存储在分类规则存储设备1626中。在一些实施例中,规则分发器1614直接从si规则存储设备1622检索分类规则。对于这些实施例,si分类规则存储设备1626的描述更多是突出显示三种类型的分布规则以及下一跳转发规则和服务节点规则的概念性说明。
195.在一些实施例中,服务规则生成器1610为每个服务链的每个服务路径的每个跳服务代理生成下一跳转发规则。如上所述,在一些实施例中,每个服务代理的转发表具有转发规则,该转发规则识别代理的关联服务节点所在的每个服务路径的下一跳网络地址。每个这样的转发规则将当前spi/si值映射到下一跳网络地址。服务规则生成器1610生成这些规则。对于si预处理器必须查找第一跳网络地址的实施例,服务规则生成器还为si预处理器生成第一跳查找规则。
196.此外,在一些实施例中,服务规则生成器1610为服务节点生成将服务链标识符、服务索引值和服务方向映射到服务节点的服务简档的服务规则。为此,服务规则生成器使用来自存储设备1620和1624的服务链和服务路径定义,以及来自服务简档存储设备1607的服务简档定义。在一些实施例中,当存在服务节点的服务管理器时,规则分发器通过这样的服务管理器将服务节点规则转发到服务节点。在一些实施例中,服务简档定义还由分发器1614分发到主计算机(例如,它们的lcp),使得这些主计算机(例如,lcp)可以使用这些服务简档来配置它们的服务代理,例如,以配置服务代理来将所接收的数据消息转发到它们的服务节点,或者复制所接收的数据消息并将副本转发到它们的服务节点,同时将原始所接收的数据消息转发到它们的下一服务节点跳或当它们是最后一跳时转发回它们的源gvm。
197.在一些实施例中,如2019年6月18日提交的美国专利申请16/444,826中所描述的,管理和控制平面基于服务路径的服务节点的状态和这些服务节点上的数据消息处理负载来动态地修改服务链的服务路径。在一些实施例中,图16的组件还用于配置逻辑转发元件以使用服务链。
198.图17概念性地示出了用于将逻辑转发元件(例如,虚拟路由和转发(vrf)上下文)配置为连接到逻辑服务转发平面的过程1700。在一些实施例中,过程1700由网络控制器计算机执行,以向边缘设备提供配置信息,从而将边缘转发元件配置为连接到逻辑服务转发平面。该过程开始于(在1710处)识别要连接到逻辑服务转发平面的逻辑转发元件。在一些实施例中,逻辑转发元件是逻辑路由器组件(例如,azg-sr、azg-dr、vpcg-sr或vpcg-dr)。在一些实施例中,逻辑路由器组件被实现为虚拟路由和转发(vrf)上下文。
199.对于所识别的逻辑转发元件,(在1720处)识别在所识别的逻辑转发元件处可用的服务集合。在一些实施例中,由管理员或控制器计算机基于在逻辑转发元件处适用的服务插入规则来定义在逻辑转发元件处可用的服务集合。在一些实施例中,服务集合定义了连接到逻辑服务转发平面以提供服务集合的服务节点集合(例如,服务实例)。
200.一旦(在1720处)识别服务集合,则过程1700(在1730处)识别连接逻辑转发元件和服务节点以提供所识别的服务集合的逻辑服务转发平面。在一些实施例中,逻辑服务转发元件由从逻辑网络中使用的多个服务虚拟网络标识符(svni)中选择的svni来识别。在一些实施例中,提供所识别的服务的服务节点集合连接到由多个svni识别的多个逻辑服务转发平面。在一些实施例中,不同的svni用于区分不同租户的业务。
201.然后,过程1700(在1740处)生成配置数据以将逻辑转发元件配置为连接到所识别
的逻辑服务转发平面。在一些实施例中,配置数据包括将逻辑转发元件(例如,vrf上下文)映射到逻辑服务转发平面的接口的接口映射表。在一些实施例中,逻辑转发元件使用接口映射表来识别用于将数据消息转发到连接到逻辑服务转发平面的服务节点的接口。
202.然后,过程1700(在1750处)确定是否需要将附加逻辑转发元件配置为连接到逻辑服务转发平面。如果需要附加逻辑转发元件,则过程1700返回操作1710以识别需要连接到逻辑服务转发元件的下一个逻辑转发元件。如果不需要配置附加逻辑转发元件,则过程1700(在1760处)将配置数据提供给在其上实现所识别的逻辑转发元件(例如,边缘转发元件)集合的边缘设备集合。在一些实施例中,配置数据包括用于如上所述配置逻辑转发元件的服务插入数据,并且还包括用于配置逻辑软件转发元件的服务转发数据,该逻辑软件转发元件实现与由边缘设备集合实现的逻辑转发元件相关联的逻辑服务转发平面。
203.图18示出了由服务路由器在t0或t1(例如,tx sr 1130)为数据消息流中的第一数据消息1810调用的服务插入层和服务传输层模块集合1135执行的操作集合,该数据消息流需要来自通过隧道机制(例如,虚拟私有网)可到达的服务节点的服务。si预处理器针对服务分类的基本操作如上图11所描述的。图18示出了uuid识别通过vpn访问的服务节点的虚拟隧道接口(vti)或其他标识符。在一些实施例中,uuid与多个服务节点和选择度量集合相关联。选择度量可以是用于负载均衡操作的选择度量,该负载均衡操作是以下中的任何一个:循环机制、基于负载的选择操作(例如,选择具有最低当前负载的服务节点)或基于距离的选择操作(例如,选择由所选度量衡量的最近服务节点)。
204.一旦选择了服务节点,则该过程通过在转发表1138中执行查找来识别与所选服务节点相关联的转发信息。转发表1138存储服务节点的转发信息(例如,vti的ip地址)。在其他实施例中,与所选服务节点相关联的ip地址与vti或服务节点标识符一起存储在策略表1137中,并且转发表1138是不必要的。
205.在一些实施例中,为前向数据消息流选择服务节点包括为反向数据消息流选择相同的服务节点。在这样的实施例中,此时确定每个方向的转发信息(例如,所选服务节点的ip地址)。一旦选择了服务节点并且识别了转发信息,则针对前向和反向流创建连接追踪器记录,并将其提供给连接追踪器存储设备1121。如下所述,连接追踪器记录包括转发信息(例如,接口的ip地址)、服务动作(如果为数据消息流定义了服务动作)、以及被识别为与数据消息1810的属性匹配的服务插入规则的服务插入规则标识符。在一些实施例中,连接追踪器记录包括服务插入类型标识符。在一些实施例中,服务节点状态值(例如,sn_gen)被包括在如上参考图11和图14所描述的连接追踪器记录中。存储在连接追踪器记录中的信息用于处理前向和反向数据消息流中的后续数据消息。
206.然后,数据消息1822与转发信息1821一起被提供给stl模块1122。在该示例中,在一些实施例中,对于需要由通过vpn访问的服务节点提供的服务的数据消息的转发信息包括用于虚拟隧道接口的下一跳ip地址和用于将数据消息识别为使用隧道传输机制的服务插入类型标识符。
207.如图所示,服务路由处理器1125基于由si预处理器1120识别的ip地址将数据消息路由到vti。在一些实施例中,数据消息1831与原始源和目的地ip地址以及原始数据消息源和目的地端口一起被提供给vti。在其他实施例中,目的地ip地址被改变为具有存储在边缘转发元件的元数据存储设备中的原始目的地ip地址的vti的ip地址,以供边缘转发元件用
于在从服务节点接收到已服务的数据消息之后恢复该已服务的数据消息的目的地ip地址。vti接收数据消息1831,并且在一些实施例中,处理流水线加密并封装要在vpn上递送的数据消息作为数据消息1851。然后,在vti处接收返回数据消息,并如上针对图11的返回数据消息所描述的那样进行处理。
208.图19示出了由服务路由器在t0或t1(例如,tx sr 1130)处为数据消息流中的第一数据消息1910调用的服务插入层和服务传输层模块集合1135执行的操作集合,该数据消息流需要来自通过l2biw机制可到达的服务节点的服务。si预处理器针对服务分类的基本操作如上图11所描述的。
209.图19示出了uuid识别通过l2 biw传输机制访问的服务节点。在一些实施例中,uuid与多个服务节点和选择度量集合相关联。选择度量可以是针对负载均衡操作的选择度量,该负载均衡操作是以下中的任何一个:循环机制、基于负载的选择操作(例如,选择具有最低当前负载的服务节点)或基于距离的选择操作(例如,选择由所选度量衡量的最近服务节点)。
210.一旦选择了服务节点,则该过程通过在转发表1138中执行查找来识别与所选服务节点相关联的转发信息。转发表1138存储服务节点的转发信息(例如,tx sr 1130的接口的伪ip地址集合)。在一些实施例中,伪ip地址是与各自连接到相同服务节点的biw对接口1126的第一和第二虚拟接口(vi)相关联的源和目的地ip地址集合。在其他实施例中,与所选服务节点相关联的伪ip地址与服务节点标识符一起存储在策略表1137中,并且转发表1138是不必要的。
211.在一些实施例中,为前向数据消息流选择服务节点包括为反向数据消息流选择相同的服务节点。对于l2 biw,在一些实施例中,针对前向数据消息流的转发信息识别与前向数据消息流相同的伪ip地址,但是将前向数据消息的源ip地址识别为反向数据消息的目的地ip地址,并且将目的地ip地址识别为源ip地址。一旦选择了服务节点并且识别了转发信息,则针对前向和反向流创建连接追踪器记录,并将其提供给连接追踪器存储设备1121。如下所述,连接追踪器记录包括转发信息(例如,目的地接口的伪ip地址)、服务动作(如果为数据消息流定义了服务动作)、以及被识别为与数据消息1910的属性相匹配的服务插入规则的服务插入规则标识符。在一些实施例中,连接追踪器记录包括服务插入类型标识符。在一些实施例中,在连接追踪器记录中包括服务节点状态值(例如,bfd_gen),如上参考图11和14所描述的。存储在连接追踪器记录中的信息用于处理前向和反向数据消息流中的后续数据消息。
212.然后,数据消息1922与转发信息1921一起被提供给stl模块1122。在该示例中,对于需要由通过l2 biw连接访问的服务节点提供的服务的数据消息,在一些实施例中,转发信息包括针对虚拟接口的下一跳伪ip地址集合和用于将数据消息识别为使用l2 biw传输机制的服务插入类型标识符。
213.如图所示,stl模块1122基于si预处理器1120识别的伪ip地址,将数据消息提供给被识别为源接口的biw配对接口1126中的接口。在一些实施例中,数据消息1932被提供给biw接口对1126中的源接口(与mac地址mac 1相关联),其中biw接口对1126具有原始源和目的地ip地址,但是biw接口对1126的源和目的地mac地址与l2 biw服务节点相关联。然后,数据消息由l2服务节点处理,该l2服务节点将已服务的数据消息返回到被识别为目的地接口
的biw接口对中的接口(与mac地址mac 2相关联)。然后,如上文针对图11的返回数据消息所描述的那样处理所返回的数据消息。
214.如上所述,在一些实施例中,传输机制包括隧道机制(例如,虚拟私有网(vpn)、网际协议安全(ipsec)等),其通过对应的虚拟隧道接口(vti)集合将边缘转发元件连接到至少一个服务节点。除了用于将边缘转发元件连接到服务节点的vti之外,边缘转发元件还使用其他vti来连接到它为其提供转发操作的其他网络元件。用于将边缘转发元件连接到其他(即,非服务节点)网络元件的至少一个vti被识别为执行服务分类操作,并且被配置为对在vti处接收的用于转发的数据消息执行服务分类操作。在一些实施例中,将边缘转发元件连接到服务节点的vti不被配置为执行服务分类操作,而是被配置为将返回到边缘转发元件的数据消息标记为已服务。在其他实施例中,将边缘转发元件连接到服务节点的vti被配置为使用应用于vti的单个默认规则来执行有限的服务分类操作,该单个默认规则将返回到边缘转发元件的数据消息标记为已服务。
215.对于通过特定vti离开逻辑网络的业务,一些实施例对不同的数据消息执行服务分类操作,以识别将边缘转发元件连接到服务节点以提供数据消息所需的服务的不同vti。在一些实施例中,每个数据消息然后被转发到所识别的vti以接收所需的服务(例如,从通过vti连接到边缘转发元件的服务节点)。所识别的vti不执行服务分类操作,并且仅允许数据消息到达服务节点。然后,服务节点将已服务的数据消息返回给边缘转发元件。在一些实施例中,vti不被配置为执行服务分类操作,而是被配置为将从服务节点定向到边缘转发元件的所有业务标记为已服务。然后,在边缘转发元件处接收所标记的已服务的数据消息,并通过特定vti将其转发到数据消息的目的地。在一些实施例中,特定vti不执行附加服务插入操作,因为数据消息被标记为已服务。
216.在一些实施例中,服务分类操作与针对在边缘转发元件的上行链路接口处接收的非隧道化业务的服务分类操作分开实现。在一些实施例中,不同的实现是由于以下事实:在上行链路接口处以封装和加密格式接收隧道化数据消息,如果由上行链路服务分类操作处理,将导致不正确的服务分类(例如,不正确地识别必要的服务集合和针对底层(封装的)数据消息流的转发信息)。因此,一些实施例在传入数据消息已经被解封装(并且被解密,如果需要的话)之后,或者对于传出数据消息在加密和封装之前,实现服务分类操作作为vti数据路径的一部分。
217.图20a-b和21a-b概念性地示出了通过上述系统的数据消息流。图20a-b概念性地示出了从在云环境2002中实现的逻辑网络2003(例如,逻辑网络a)中的计算节点2060向外部数据中心2001中的计算节点2080发送的数据消息。数据中心2001中的计算节点2080使用通过外部网络2004到逻辑网络2003的vpn(即,隧道机制)2005来连接到逻辑网络。在一些实施例中,隧道使用物理接口,该物理接口被识别为执行边缘转发元件的边缘设备的上行链路接口,但在逻辑上被识别为边缘转发元件的分离接口。为了概念清晰,提出了不同的逻辑接口和相关联的服务分类操作来表示网络的逻辑结构。此外,为了清楚起见,还省略了隧道端点和目的地计算节点2080之外的数据中心2001的内部元件。
218.从计算节点2060到2080的通信开始于通过逻辑网络2003的元件的标准逻辑处理。因此,计算节点2060使用逻辑交换机2050将数据消息提供给租户分布式路由器2040。在一些实施例中,逻辑交换机2050和租户分布式路由器2040两者都由与计算节点2060位于同一
主机上的本地受管理转发元件实现。在一些实施例中,vpc分布式路由器2040进而如参考图4-6所描述的那样使用转接逻辑交换机(未示出)将数据消息路由到vpc服务路由器2030。vpc服务路由器2030将数据消息路由至可用性区分布式路由器2020。如上所述,在一些实施例中,vpc服务路由器2030在也实现可用性区分布式路由器2020的第一边缘设备上执行,并且在其他实施例中,在与可用性区服务路由器2010相同的边缘设备上执行。在一些实施例中,可用性区分布式路由器2020进而如参考图4-6所描述的那样使用转接逻辑交换机(未示出)将数据消息路由到可用性区服务路由器2010。
219.然后,可用性区服务路由器2010将数据消息路由到作为数据消息的下一跳的vti。作为vti处理流水线的一部分,si分类器2007(例如,vti-si分类器)在加密和封装之前执行服务分类操作,其基于在vti处应用的服务插入规则来识别数据消息需要由位于逻辑网络2003外部的l3服务节点2070提供的服务。si分类器将与vpn 2006相关联的vti识别为通向l3服务节点2070的下一跳,并发送数据消息以供处理。位于可用性区服务路由器2010和vpn 2006之间的si分类器不对服务插入业务执行服务分类操作,并且数据消息到达对数据消息执行服务的l3服务节点2070。
220.图20b示出了已服务的数据消息返回到可用性区服务路由器2010以便通过vpn 2005路由到目的地计算节点2080。尽管被示为来自l3服务节点2070的后服务插入业务,但在一些实施例中,基于作为在si分类器处应用的唯一si规则的默认规则,在位于vpn2006和可用性区服务路由器2010之间的si分类器处完成将数据消息标记为已服务(即,后si)。在其他实施例中,标记是为连接到没有服务分类操作的l3服务节点的每个接口配置的处理流水线的一部分。对于该数据消息,位于可用性区服务路由器2010之间的si分类器不基于被标记为已服务的数据消息来执行第二服务分类操作,并且数据消息被处理(封装或加密和封装)以通过vpn 2005递送到计算节点2080。在使用标签将数据消息标记为已服务的一些实施例中,在基于标签绕过si分类操作之后,进一步的流水线处理移除标签。在其他实施例中,将数据消息标记为已服务的是存储在与数据消息相关联的本地元数据中的标签,并且一旦数据消息已完成处理以递送到可用性区服务路由器2010处的外部网络,则删除该标签。
221.图21a-b概念性地示出了从外部数据中心2001中的计算节点2080发送到在云环境2002中实现的逻辑网络2103(例如,逻辑网络a)中的计算节点2060的数据消息。图20a-b和图21a-b的组件是相同的,并且如果在图20a-b中发送的数据消息被认为是前向数据消息流,那么在图21a-b中发送的数据消息可以被认为是反向数据消息流。通信开始于使计算节点2080向连接到vpn 2005的数据中心2001中的隧道端点发送数据消息(再次忽略数据中心2001的内部组件)。数据消息被封装(或加密和封装),并使用vpn 2005在外部网络2004上发送。然后对数据消息进行逻辑处理以到达vti并经历vti的处理流水线。数据消息被解封,并且如果需要,被解密,此时,si分类器2007执行服务分类操作以确定数据消息是否需要任何服务。
222.si分类器2007基于在vti处应用的服务插入规则确定数据消息需要由l3服务节点2070提供的服务。si分类器将与vpn 2006相关联的vti识别为通向l3服务节点2070的下一跳,并发送数据消息以供处理。位于可用性区服务路由器2010和vpn 2006之间的si分类器不对服务插入业务执行服务分类操作,并且数据消息到达对数据消息执行服务的l3服务节
点2070。
223.图21b示出了已服务的数据消息返回到可用性区服务路由器2010以便通过逻辑网络2103的元件被路由到目的地计算节点2060。尽管被示为来自l3服务节点2070的后服务插入业务,但在一些实施例中,基于作为在si分类器处应用的唯一si规则的默认规则,在位于vpn 2006和可用性区服务路由器2010之间的si分类器处完成将数据消息标记为已服务(即,后si)。在其他实施例中,标记是为连接到没有服务分类操作的l3服务节点的每个接口配置的处理流水线的一部分。在使用标签来将数据消息标记为已服务的一些实施例中,可用性区服务路由器2010处理在将数据消息转发到可用性区分布式路由器2020之前移除标签。如下文参考图31所讨论的,一些实施例要求已服务标签穿越逻辑路由器边界,以避免在vpc服务路由器处的冗余服务分类操作。在其他实施例中,将数据消息标记为已服务的是存储在与数据消息相关联的本地元数据中的标签,并且一旦数据消息已完成处理以递送到下一跳路由器组件(例如,可用性区分布式路由器2020),则删除该标签。然后,通过包括vpc服务路由器2030、vpc分布式路由器2040和逻辑交换机2050的逻辑网络将数据递送到计算节点2060。
224.图22概念性地示出了用于在上行链路接口集合中的上行链路接口处为数据消息提供服务的第一方法。在一些实施例中,数据消息从外部网络2004中的源被接收并且去往外部网络2004中的目的地,但是需要在逻辑网络2203的边缘转发元件处提供的服务。图22所示的实施例中的服务由服务链服务节点2270a-c使用逻辑服务转发平面传输机制(例如,逻辑服务转发元件2209)来提供。本领域普通技术人员将理解,在其他实施例中使用作为备选的传输机制。在所示实施例中,数据消息到达与外部网络2004的第一上行链路接口,并且在si分类器2007处发生服务分类操作,该服务分类操作基于适用于在上行链路接口处接收的数据消息的服务插入规则来确定需要服务集合,并且识别转发信息(例如,如上所述的spi、下一跳mac等)以访问所需的服务集合。
225.在所示实施例中,在可用性区服务路由器2010的路由操作之前提供服务分类操作。基于所识别的转发信息,可用性区服务路由器2010将数据消息提供给服务链服务节点2270a,以向数据消息提供第一服务,并将数据消息传递到服务路径中的下一跳(即,服务链服务节点2270b)。在一些实施例中,可用性区服务路由器2010将可用性区服务路由器2010提供的服务链服务节点功能识别为第一跳,其然后将数据消息路由到服务链服务节点2270a。在任一实施例中,在接收到来自服务链服务节点2270a的数据消息之后,服务链服务节点2270b提供服务链中的下一服务,并将数据消息提供给服务链服务节点2270c以提供附加服务,并将可用性区服务路由器2010提供的服务链服务节点功能识别为服务路径中的最后一跳。在服务链服务节点(例如,svm)之间发送的每个数据消息使用逻辑服务转发元件2209,并且在一些实施例中,涉及服务代理和服务传输层模块,为了清楚起见此处未示出。上文参考图11和相关的美国专利申请16/444,826更详细地描述了服务代理和服务传输层模块的使用。
226.然后,已服务的数据消息由可用性区服务路由器2010路由到外部网络2004中的目的地。该路由识别与外部网络2004的第二上行链路接口,并向已服务的数据消息提供标签或元数据,该标签或元数据将数据消息识别为已服务的数据消息。基于该识别,第二上行链路接口处的服务分类器不提供附加服务分类操作,并且数据消息被转发到目的地。如上所
述,在使用标签将数据消息识别为已服务的数据消息的一些实施例中,在通过上行链路接口发送数据消息之前移除标签。
227.图23概念性地示出了用于在上行链路接口集合中的上行链路接口处为数据消息提供服务的第二方法。在一些实施例中,数据消息从外部网络2004中的源被接收并且去往外部网络2004中的目的地,但是需要在逻辑网络2203的边缘转发元件处提供的服务。图23所示的实施例中的服务由服务链服务节点2270a-c使用逻辑服务转发平面传输机制(例如,逻辑服务转发元件2209)来提供。本领域普通技术人员将理解,在其他实施例中使用作为备选的传输机制。在所示实施例中,数据消息到达与外部网络2004的第一上行链路接口,并且si分类器2007处的服务分类操作未能识别任何所需的服务集合,因为服务分类规则是仅针对为第二上行链路接口接收(在入口或出口方向)的数据消息定义的。因此,在该实施例中,第一上行接口的si分类器向可用性区服务路由器2010提供没有服务插入转发信息的数据消息。可用性区服务路由器2010基于数据消息的目的地ip地址将数据消息路由到第二上行链路接口,并且第二上行链路接口的si分类器基于适用于在第二上行链路接口处接收的数据消息的服务插入规则来确定需要服务集合,并识别转发信息(例如,如上所述的spi、下一跳mac等)以访问所需的服务集合。其余的数据消息处理如上文图22那样。
228.图24概念性地示出了在逻辑网络的多个路由器处提供服务分类操作的逻辑网络2203。如图22所示,在可用性区服务路由器2010识别数据消息所需的服务集合之前执行第一服务分类操作。在该示例中,服务集合包括由服务链服务节点2270a和2270b提供的服务。如上所述,可用性区服务路由器2010路由器将数据消息提供给服务链服务节点2270a,服务链服务节点2270a提供服务,并将已服务的数据消息提供给服务链服务节点2270b,服务链服务节点2270b提供附加服务并将数据消息返回给可用性区服务路由器2010。在所示实施例中,可用性区服务路由器2010移除将数据消息识别为已服务的数据消息的标签,并将数据消息转发到vpc服务路由器2030(通过可用性区分布式路由器2020)。
229.在被vpc服务路由器2030路由之前,与vpc服务路由器2030相关联的si分类器2007执行服务分类操作,该服务分类操作基于适用于在vpc服务路由器2030上行链路接口处接收的数据消息的服务插入规则来确定需要服务集合,并且识别转发信息(例如,如上所述的spi、下一跳mac等)以访问所需的服务集合。数据消息被提供给vpc服务路由器2030,vpc服务路由器2030使用转发信息将数据消息提供给服务链服务节点2270c,服务链服务节点2270c将已服务的数据消息返回给vpc服务路由器2030。然后,vpc服务路由器2030将已服务的数据消息路由到目的地计算节点2060。
230.图25概念性地示出了使用多个传输机制连接到服务节点2570a-e的边缘转发元件(azg服务路由器2010)。逻辑网络2503包括与图20a-b相同的逻辑边缘转发元件:可用性区服务路由器2010、可用性区分布式路由器2020、vpc服务路由器2030和vpc分布式路由器2040。在一些实施例中,不同的路由器组件各自被定义为分离的vrf上下文。图25中的虚线和虚线框表示实现不同边缘转发元件组件的边缘设备。在所示实施例中,不同的边缘设备实现可用性区和vpc服务路由器,但是可用性区分布式路由器由分别针对入口和出口数据消息的可用性区边缘设备和vpc边缘设备两者来实现,如参考图10所解释的。类似地,vpc分布式路由器2040由分别针对入口和出口数据消息的vpc边缘设备和主机两者来实现。如图所示,可用性区服务路由器2010(1)通过服务链路2508在逻辑服务转发平面(或逻辑服务平
面(lsp))2509上连接到服务链服务节点集合2570a-c,(2)通过vpn集合2505连接到l3服务节点集合2570d,以及(3)通过接口集合连接到l2 biw服务节点集合2570e。可用性区服务路由器2010使用服务节点来提供服务,如上文参考图11、12、18和19所描述的。因为不同的数据消息需要由不同类型的服务节点提供的不同服务,所以一些实施例使用多种服务传输机制以访问不同类型的服务节点来提供服务,如图25所示。
231.图26和图27概念性地示出了其中为不同服务路由器配置多个逻辑服务转发平面的逻辑网络。图26示出了包括属于两个不同租户的三个vpc服务路由器2630的逻辑网络2603。逻辑网络2603还示出了连接到vpc服务路由器2630的三个逻辑服务转发平面2609a-c,其中之一(2609c)还连接到可用性区服务路由器2010。不同的逻辑服务转发平面2609a-c连接到不同的服务链服务节点集合。在图26的实施例中,服务链服务节点2670a-c由租户1的vpc服务路由器2630使用,而服务链服务节点2670d-g由租户2的可用性区服务路由器2010和vpc服务路由器2630共享。
232.图27示出了包括属于三个不同租户的三个vpc服务路由器2630的逻辑网络2703。逻辑网络2703还示出了连接到vpc服务路由器2630的四个逻辑服务转发平面2709a-c,其中之一(2709c)还连接到可用性区服务路由器2010和逻辑服务转发平面2709d,逻辑服务转发平面2709d是仅连接到可用性区服务路由器2010的第二逻辑服务转发平面。逻辑服务转发平面2709a和2709b连接到服务链服务节点的公共集合(2770a-c),而逻辑服务转发平面2709c和2709d连接到不同的服务链服务节点集合。在图27的实施例中,服务链服务节点2770a-c由租户1和租户2两者的vpc服务路由器2630使用。尽管共享服务链节点2770a-c由两个不同的租户使用,但每个租户的数据消息业务通过使用不同的逻辑服务转发平面2709a和2709b来保持分离。如图26所示,服务链服务节点2770d-g由租户3的可用性区服务路由器2010和vpc服务路由器2630共享。然而,在图27中,可用性区服务路由器2010具有与其连接的第二逻辑服务转发平面2709d,第二逻辑服务转发平面2709d不被vpc服务路由器2630共享。如下文参考图30和31所讨论的,在一些实施例中,如果可用性区服务路由器2010被配置为提供l3路由服务作为服务链服务节点,则服务链服务节点2770h-j对于租户3的vpc服务路由器2630是可访问的。
233.图28概念性地示出了用于从vpc边缘转发元件访问在可用性区边缘转发元件处提供的服务的过程。在一些实施例中,过程2800由vpc边缘转发元件(例如,vpc服务路由器)执行。在一些实施例中,该过程由vpc边缘转发元件的服务分类操作执行。过程2800开始于(在2810处)在vpc服务路由器的上行链路接口处接收数据消息。在一些实施例中,数据消息是在vpc服务路由器的路由操作之后从vpc服务路由器接收的,而在其他实施例中,数据消息是从可用性区分布式路由器接收的。
234.服务分类操作(在2820处)确定数据消息需要在可用性区服务路由器处提供的服务。在一些实施例中,服务分类操作执行过程100的操作,以确定数据消息需要该服务并(在2830处)识别针对数据消息的转发数据。在一些实施例中,为数据消息识别的转发信息包括用于通过逻辑服务转发平面将数据消息发送到可用性区服务路由器的服务元数据(smd),以及用于引导可用性区服务路由器将数据消息重定向到特定服务节点或服务节点集合的附加服务元数据。在一些实施例中,附加服务元数据采取对在可用性区服务路由器处展示的函数的函数调用的自变量的形式。
235.然后,(在2840处)将数据消息与识别所需附加服务的服务元数据一起在逻辑服务转发平面上发送到可用性区服务路由器。图29概念性地示出了作为过程2800的一部分、当可用性区服务路由器从vpc服务路由器接收到数据消息时要执行的过程2900。过程2900开始于(在2910处)接收从vpc服务路由器(在2840处)发送的要服务的数据消息。通过逻辑服务转发平面,在可用性区服务路由器的服务链路处接收数据消息。
236.一旦可用性区服务路由器接收到数据消息,可用性区服务路由器(在2920处)确定数据消息需要到至少一个附加服务节点的路由服务。在一些实施例中,基于由vpc服务路由器提供的附加元数据来进行确定,而在其他实施例中,基于对在可用性区服务路由器处可用的函数(例如,api)的函数调用的自变量来进行确定。
237.一旦(在2920处)确定数据消息需要到至少一个附加服务节点的路由服务,则(在2930处)可用性区服务路由器基于接收到的元数据提供服务。在一些实施例中,服务由服务路由器的服务节点功能提供,并且服务在没有重定向的情况下提供。在其他实施例中,服务由通过上述传输机制之一可到达的服务节点集合提供,并且使用适当的传输机制将数据消息重定向到服务节点。一旦数据消息被重定向到服务节点,则该过程取决于用于重定向数据消息的传输机制,与图11、12、18或19的过程非常相似地进行。
238.(在2940处)在可用性区服务路由器处接收已服务的数据消息,并且将其标记为已服务的数据消息。如上所述,在该实施例中,数据消息为已服务的识别必须被携带通过可用性区服务路由器和分布式路由器,使得vpc服务路由器的si分类器不会应用相同的服务插入规则并将数据消息重定向到相同的目的地而陷入循环。在可用性区服务路由器和vpc服务路由器在同一边缘设备中实现的实施例中,将数据消息识别为已服务的元数据存储在共享元数据存储设备中,该共享元数据存储设备由vpc服务路由器si分类器用来将数据消息识别为已服务。
239.然后(在2950处)将数据消息路由到目的地。在一些实施例中,数据消息被路由到外部目的地或与vpc服务路由器不同的vpc服务路由器,而不返回到向可用性区服务路由器发送数据消息的vpc服务路由器。在其他实施例中,对于最初去往通过vpc服务路由器到达的网络段中的计算节点的数据消息(例如,南向数据消息),将数据消息路由到从其接收数据消息的vpc服务路由器。在路由数据消息之后,过程2900结束。在将数据消息路由到从其接收数据消息的vpc服务路由器的实施例中,过程2800(在2850处)接收被识别为已服务的数据消息的已服务的数据消息,并且si分类器不基于标记执行服务分类操作。然后,数据消息在vpc服务路由器处被接收,并被路由到数据消息的目的地。
240.图30概念性地示出了vpc服务路由器3030处理从第一计算节点3060a发送到由第二vpc服务路由器3030服务的第二网络段中的第二计算节点3060b的数据消息。在遇到si分类器2007之前,通过连接到源计算节点3060a、vpc分布式路由器3040和vpc服务路由器3030的逻辑交换机3050来处理数据消息,该si分类器2007如上参考图28所描述地那样来确定数据消息应被发送到可用性区服务路由器2010以使l3服务节点3070提供服务。然后,通过逻辑服务转发平面将数据消息发送到可用性区服务路由器2010,该可用性区服务路由器2010将方向重定向到所识别的服务节点(例如,l3服务节点3070)。然后,如上所述,数据消息被返回到可用性区服务路由器2010,并被路由到计算节点3060b。
241.在一些实施例中,使用逻辑服务转发平面将数据消息发送到可用性区服务路由器
2010包括通过在与服务路由器相同的设备上执行的软件交换机的第2层接口3005来发送数据消息。软件交换机用于实现lsp 3009所代表的逻辑服务转发单元(例如,lsfe 801)。在一些实施例中,到azg服务路由器2010的连接由azg服务路由器2010实现的服务代理进行中介以符合行业标准服务插入协议。
242.图31概念性地示出了vpc服务路由器3030处理从外部网络2004发送到计算节点3060的数据消息。在遇到si分类器2007之前,通过可用性区服务路由器2010和可用性区分布式路由器2020来处理数据消息,si分类器2007如上参考图28所描述的那样来确定数据消息应被发送到可用性区服务路由器2010以使l3服务节点3070提供服务。然后,数据消息返回到可用性区服务路由器2010,并被路由到计算节点3060。在将数据消息路由到计算节点3060时,数据消息穿过si分类器2007,但是不执行服务分类操作,因为已服务的数据消息被识别为不需要服务分类操作的已服务的数据消息。然后,通过vpc服务路由器3030、vpc分布式路由器3040和逻辑交换机3050处理数据消息,并将其递送到目的地计算节点3060。
243.一些实施例便于供应在虚拟网际协议(vip)地址处可到达的服务。客户端使用vip地址来访问逻辑网络中的服务节点集合。在一些实施例中,从客户端机器到vip的数据消息被定向到边缘转发元件,在边缘转发元件处,数据消息被重定向到负载均衡器,该负载均衡器在该服务节点集合之间进行负载均衡以选择服务节点来提供客户端机器所请求的服务。在一些实施例中,负载均衡器不改变从客户端机器接收的数据消息的源ip地址,使得服务节点接收要服务的数据消息,该数据消息将客户端机器ip地址识别为源ip地址。服务节点服务数据消息,并且使用服务节点的ip地址作为源ip地址、客户端节点的ip地址作为目的地ip地址,将已服务的数据消息发送到客户端机器。因为客户端将原始地址发送到vip地址,所以客户端将不会将已服务的数据消息的源ip地址识别为对发送到vip地址的请求的响应,并且已服务的数据消息将不会被适当地处理(例如,它将被丢弃,或者与原始请求不相关联)。
244.在一些实施例中,促进供应服务包括使用服务逻辑转发元件将已服务的数据消息返回到负载均衡器以追踪连接的状态。为了使用服务逻辑转发元件,一些实施例将服务节点的出口数据路径配置为在将已服务的数据消息转发到从客户端到服务节点的数据路径中的逻辑转发元件之前拦截该已服务的数据消息,并且确定已服务的数据消息是否需要由边缘转发元件作为服务提供的路由服务进行路由。如果数据消息需要由路由服务进行路由(例如,对于已服务的数据消息),则通过服务逻辑转发元件将已服务的数据消息转发到边缘转发元件。在一些实施例中,已服务的数据消息与和服务相关联的vip一起被提供给边缘转发元件,在其他实施例中,边缘转发元件基于用于在服务逻辑转发元件上发送数据消息的端口来确定vip。边缘转发元件使用vip来识别与已服务的数据消息相关联的负载均衡器。然后,将已服务的数据消息转发到负载均衡器,以供负载均衡器维护数据消息所属的连接的状态信息,并修改数据消息以将vip识别为源地址,以便用于转发到客户端。
245.图32a-b示出了用于向由同一虚拟私有云网关(例如,vpcg服务和分布式路由器)服务的客户端提供在vip处可寻址的服务的数据消息集合。图32a示出了包括由同一vpc服务路由器3230服务的两个逻辑交换机3250a和3250b的逻辑网络3203。逻辑交换机3250a连接到提供在虚拟ip(vip)地址处可到达的服务的访客虚拟机(gvm)集合3261-3263。在一些实施例中,gvm提供内容而不是提供服务。逻辑交换机3250b连接到客户端3290,客户端3290
访问vip处可用的服务。图32a示出了从客户端3290发送到vip地址的第一数据消息。数据消息被转发到vpc服务路由器3230,vpc服务路由器3230将负载均衡器3271识别为针对vip地址的下一跳。负载均衡器3271然后执行负载均衡操作以从gvm集合3261-3263中选择gvm 3261。负载均衡器3271将目的地ip地址从vip改变为所选gvm 3261的ip地址。
246.图32b示出了将已服务的数据消息返回到客户端设备3290的gvm 3261。已服务的数据消息在如美国专利申请16/444,826中所描述的服务插入(si)预处理器处被拦截,该si预处理器将数据消息通过逻辑服务转发平面3209重定向到vpc服务路由器。在一些实施例中,预处理器被配置为将所有数据消息通过逻辑服务转发平面重定向到vpc服务路由器。在一些实施例中,已服务的数据消息与识别数据消息最初被发送到的vip的元数据一起被发送到vpc服务路由器。在其他实施例中,vpc服务路由器基于数据消息的属性(例如,端口或源地址)来识别数据消息的目的地。vpc服务路由器3230将数据消息路由至负载均衡器3271。在一些实施例中,负载均衡器3271存储数据消息流的状态信息,它使用该状态信息将源ip地址更新为vip地址,并利用客户端3290识别的源ip地址将数据消息发送到客户端3290。
247.许多上述特征和应用被实现为被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的指令集的软件过程。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器的核心或其他处理单元)执行时,它们使(多个)处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于,cd-rom、闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括无线地或通过有线连接传递的载波和电子信号。
248.在本说明书中,术语“软件”意指包括驻留在只读存储器中的固件或存储在磁存储设备中的应用,其可被读入存储器以供处理器处理。此外,在一些实施例中,可以将多个软件发明实现为较大程序的子部分,同时保持不同的软件发明。在一些实施例中,还可以将多个软件发明实现为分离的程序。最后,共同实现这里描述的软件发明的分离程序的任何组合都在本发明的范围内。在一些实施例中,当安装软件程序以在一个或多个电子系统上操作时,软件程序定义执行和进行软件程序的操作的一个或多个特定机器实现。
249.图33概念性地示出了利用其实现本发明的一些实施例的计算机系统3300。计算机系统3300可用于实现上述主机、控制器和管理器中的任何一个。因此,它可用于执行上述任何过程。该计算机系统包括各种类型的非瞬态机器可读介质和用于各种其他类型的机器可读介质的接口。计算机系统3300包括总线3305、(多个)处理单元3310、系统存储器3325、只读存储器3330、永久存储设备3335、输入设备3340和输出设备3345。
250.总线3305笼统地表示通信地连接计算机系统3300的众多内部设备的所有系统、外围设备和芯片组总线。例如,总线3305将(多个)处理单元3310与只读存储器3330、系统存储器3325和永久存储设备3335通信地连接。
251.(多个)处理单元3310从这些不同的存储器单元中检索要执行的指令和要处理的数据,以便执行本发明的过程。在不同实施例中,(多个)处理单元可以是单处理器或多核处理器。只读存储器(rom)3330存储(多个)处理单元3310和计算机系统的其他模块所需的静态数据和指令。另一方面,永久存储设备3335是读写存储器设备。该设备是即使在计算机系统3300断电时也存储指令和数据的非易失性存储单元。本发明的一些实施例使用大容量存储设备(诸如磁盘或光盘及其对应的盘驱动器)作为永久存储设备3335。
252.其他实施例使用可移动存储设备(诸如闪存驱动器等)作为永久存储设备。与永久存储设备3335一样,系统存储器3325是读写存储器设备。然而,与存储设备3335不同,系统存储器是易失性读写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时需要的一些指令和数据。在一些实施例中,本发明的过程存储在系统存储器3325、永久存储设备3335和/或只读存储器3330中。(多个)处理单元3310从这些不同的存储器单元中检索要执行的指令和要处理的数据,以便执行一些实施例的过程。
253.总线3305还连接到输入和输出设备3340和3345。输入设备使用户能够向计算机系统传送信息和选择命令。输入设备3340包括字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备3345显示由计算机系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(crt)或液晶显示器(lcd)。一些实施例包括用作输入和输出设备两者的诸如触摸屏的设备。
254.最后,如图33所示,总线3305还通过网络适配器(未示出)将计算机系统3300耦合到网络3365。以这种方式,计算机可以是计算机网络的一部分(诸如局域网(“lan”)、广域网(“wan”)、或内联网、或诸如因特网的网络中的网络)。计算机系统3300的任何或所有组件可以结合本发明使用。
255.一些实施例包括在机器可读或计算机可读介质(备选地称为计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令的电子组件,诸如微处理器、存储设备和存储器。这种计算机可读介质的一些示例包括ram、rom、只读压缩盘(cd-rom)、可记录压缩盘(cd-r)、可重写压缩盘(cd-rw)、只读数字多功能盘(例如,dvd-rom、双层dvd-rom)、各种可记录/可重写dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、闪存(例如,sd卡、迷你sd卡、微型sd卡等)、磁性和/或固态硬盘驱动器,只读和可记录的盘、超高密度光盘以及任何其他光学或磁性介质。计算机可读介质可以存储计算机程序,该计算机程序可由至少一个处理单元执行,并且包括用于执行各种操作的指令集。计算机程序或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子元件或使用解释器的微处理器执行的更高级代码的文件。
256.虽然以上讨论主要涉及执行软件的微处理器或多核处理器,但一些实施例由诸如专用集成电路(asic)或现场可编程门阵列(fpga)的一个或多个集成电路来执行。在一些实施例中,这样的集成电路执行存储在电路本身上的指令。
257.如本说明书中所使用的,术语“计算机”、“服务器”、“处理器”和“存储器”都是指电子或其他技术设备。这些术语不包括人或人群。为了说明书的目的,术语显示器或显示是指在电子设备上显示。如本说明书中所使用的,术语“计算机可读介质”、“计算机可读介质”和“机器可读介质”完全限于以计算机可读形式存储信息的有形物理对象。这些术语不包括任何无线信号、有线下载信号和任何其他短暂或瞬时信号。
258.虽然已经参考了许多具体细节描述了本发明,但是本领域普通技术人员将认识到,在不背离本发明的精神的情况下,本发明可以以其他具体形式体现。例如,若干附图从概念上示出了过程。这些过程的具体操作可能不会按照所示和所描述的确切顺序执行。特定操作可以不在一个连续的操作序列中执行,并且在不同的实施例中可以执行不同的特定操作。此外,可以使用若干子过程或作为更大的宏观过程的一部分来实施该过程。
259.即使在上述若干示例中的服务插入规则提供了服务链标识符,但本文描述的一些
发明也可以通过使服务插入规则提供由服务插入规则指定的不同服务的服务标识符(例如,spi)来实现。类似地,上述若干实施例通过基于spi/si值执行精确匹配来执行分布式服务路由,该分布式服务路由依赖于在每个服务跳识别下一服务跳。然而,本文描述的一些发明可以通过使服务插入预处理器嵌入所有服务跳标识符(例如,服务跳mac地址)作为数据消息的服务属性集合和/或在数据消息的封装服务报头中来实现。
260.此外,一些实施例以与上述方法不同的方式(例如,在不同的时间)递减si值。此外,一些实施例不是仅仅基于spi和si值来执行下一跳查找,而是基于spi、si和服务方向值来执行该查找,因为这些实施例针对在两个机器之间流动的数据消息的前向和反向两者使用公共spi值。
261.在一些实施例中使用上述方法来表达单租户环境中的路径信息。因此,普通技术人员将认识到,本发明的一些实施例同样适用于单租户数据中心。相反,在一些实施例中,当一个实体(例如,一个公司)是不同提供商的多个不同数据中心中的租户时,使用上述方法来携带跨越不同数据中心提供商的不同数据中心的路径信息。在这些实施例中,嵌入在隧道报头中的租户标识符跨越数据中心必须是唯一的,或者当它们从一个数据中心穿越到下一个数据中心时必须被转换。因此,本领域普通技术人员将理解,本发明不受前述说明性细节的限制,而是由所附权利要求限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1