在服务功能链的反方向上生成分组的制作方法

文档序号:16054195发布日期:2018-11-24 11:32阅读:170来源:国知局
本申请根据25u.s.c.§119(2)要求于2016年4月27日递交的题为“generatingpacketsinareversedirectionofaservicefunctionchain(在服务功能链的反方向上生成分组)”的美国临时申请no.62/328,474的权益,其全部内容通过引用结合于此。本公开涉及服务功能链和在服务功能链的反方向上生成分组。
背景技术
在计算机网络中,网络管理员经常关注如何跨网络最佳地将业务(traffic)从一个端点路由到另一个端点。在为业务流规定路线时,管理员可以实施确保在分组或业务流穿过网络时某些服务功能被应用于这些分组或业务流的策略。服务功能可以提供安全性、广域网(wan)加速、和负载平衡。这些服务功能可以在网络基础设施中的各个点处实现,例如,广域网、数据中心、校园等。提供这些服务功能的网络元件通常被称为“服务节点”。传统上,服务节点部署由网络拓扑决定。例如,防火墙通常被部署在管理区域的边缘,用于根据针对该区域的策略来过滤离开或进入特定区域的业务。随着虚拟平台和更敏捷网络的兴起,服务节点部署不再受网络拓扑的约束。为了使服务节点能够被部署在网络上的任何地方,已经为封装的分组或帧提供了被称为服务功能链(sfc)架构和网络服务报头(nsh)的解决方案,以规定业务流通过适当的服务节点的服务路径。具体而言,网络服务报头提供数据平面封装,其利用用于将分组递送到必需服务的网络覆盖拓扑。附图说明为了更完整地理解本公开及其特征和优点,结合附图参考以下描述,其中相同的参考数字表示相同的部分。图1a是根据本公开的一些实施例的服务功能链(sfc)的示意性框图,该服务功能链可以包括作为服务功能路径(sfp)的入口点的初始分类功能;图1b-图1c是根据本公开的一些实施例的使用服务功能链实现的不同服务路径的示意性框图。图2是根据本公开的一些实施例的用于规定业务流的服务路径的服务链功能感知的网络元件的系统视图的示意性框图;图3是根据本公开的一些实施例的服务节点的系统视图的示意性框图。图4是根据本公开实施例的网络服务报头的示意图;图5是根据本公开实施例的包括反向分组请求位字段的分组的网络服务报头的示意图;图6是根据本公开实施例的用于设置用于反向路径转发的oam位的过程流程图;图7是根据本公开实施例的用于设置用于反向路径转发的反向位的过程流程图;图8是根据本公开的实施例的分类器对反向路径信息进行编码的过程流程图;图9是根据本公开的实施例的协调器(orchestrator)计算反向路径信息的过程流程图;图10是根据本公开的实施例的协调器计算反向路径信息的另一过程流程图。图11是根据本公开的实施例的用于使非对称的前向和反向服务路径对称的过程流程图。具体实施方式本公开描述了提供使服务功能生成通过使用nsh来返回至源的服务链中间的分组的能力。在独立权利要求中阐述了本发明的各方面,并且在从属权利要求中阐述了优选特征。一个方面的特征可以单独应用于每个方面或者与其他方面组合应用。还设想了用于实现本文所描述的方法的系统和装置,包括网络节点、计算机程序、计算机程序产品、计算机可读介质、以及在有形介质上编码的用于实现这些方法的逻辑。诸如防火墙、nat、代理、和入侵检测之类的服务功能生成诸如icmp错误、tcp重置和tcpsyn-ack之类的分组到当前进程内的分组的源。本公开描述了将返回分组发送到服务功能链环境中的源。在服务链环境中,生成的返回分组以与原始分组相反的顺序行进服务路径。首先,为了允许分组通过服务路径返回其源,一组要求要被满足:a.建立对称路径id;b.在最低限度上,sf节点需要能够将这样的错误或代理分组封装在封装传输中,例如,vxlan-gpe+nsh报头;以及c.sf需要能够直接或间接地确定对称路径id和相关联的下一个服务跳索引。网络中的网络服务链接或服务功能链的基础知识为了适应网络中的网络节点的敏捷联网和灵活配置,可以使用服务功能链(sfc)来确保有序服务功能(sf)集被应用于业务流的分组和/或帧。sfc提供了用于以一种能够实现这些sf的动态排序和拓扑独立性的方式来部署sf的方法。服务功能链可以定义被应用于业务流的分组和/或帧的有序服务功能集,其中有序服务功能集被选择作为分类的结果。隐含的顺序可能不是线性进展,因为架构考虑到复制到多个分支的节点。术语服务链通常被用作服务功能链的简写。图1a示出了服务功能链(sfc),其可以包括初始服务分类功能102,作为进入服务功能路径(sfp)104(或服务路径)的入口点。(初始)服务分类功能102规定服务路径,并利用标识服务路径的服务路径信息来封装分组或帧。分类可能会将元数据或共享的上下文添加到分组或帧的sfc封装部分。服务功能路径104可以包括由一个或多个服务节点实现或提供的多个服务功能(显示为“sf1”、……、“sfn”)。服务功能可以负责对所接收的分组进行特定处理。服务功能可以在网络层或其他osi层(例如,应用层、表示层、会话层、传输层、数据链路层、和物理链路层)上起作用。服务功能可以是虚拟实例,也可以嵌入在诸如服务节点之类的物理网络元件中。当服务节点的服务功能或其他模块由服务节点的至少一个处理器执行时,该服务功能或其他模块可以被配置为实现本文所描述的任何一种方法。多个服务功能可以嵌入在同一网络元件中。可以在同一管理sfc启用的域中启用多个服务功能实例。sf的非详尽列表包括:防火墙、wan和应用加速、深度分组检测(dpi)、服务器负载平衡器(slb)、nat44、nat64、host_id注入、http报头扩充功能、tcp优化器、应用递送控制器(adc)等。sf可以是sfc封装感知的(即,它接收并作用于sfc封装中的信息)或者非感知的(在这种情况下,转发到服务的数据不包含sfc封装)。服务节点(sn)可以是托管一个或多个服务功能(sf)的物理网络元件(或嵌入在物理网络元件上的虚拟元件),并且具有与其相关联的一个或多个网络定位器以用于可达性和服务递送。在许多标准化文档中,“服务功能”可以将本文所描述的服务节点称为在其上托管有一个或多个服务功能。服务功能路径(sfp)(或有时简称为服务路径)涉及网络中sfc的实例化。分组遵循从分类器通过必需服务功能的服务路径。图1b-图1c示出了使用服务功能链接实现的不同服务路径。这些服务路径可以通过利用网络服务报头(nsh)或指定期望的服务路径(例如,通过使用nsh中的服务路径信息来标识特定的服务路径)的一些其他合适的分组报头来封装业务流的分组而被实现。在图1b所示的示例中,可以提供在端点160和端点180之间的通过服务节点106和服务节点110的服务路径120。如图1c所示,可以提供在端点170和端点190之间的通过服务节点106、服务节点108、和服务节点112的服务路径130(不同的实例化)。网络服务报头(nsh)封装一般而言,nsh包括服务路径信息,其可以标识或规定特定服务路径(服务功能链的实例),并且nsh被添加到分组或帧。例如,nsh可以包括添加到分组或帧的数据平面报头。实际上,nsh创建服务平面。nsh包括用于服务链接的信息,并且在一些情况下,nsh可以包括由服务节点或服务功能添加和/或消耗的元数据。分组和nsh被封装在外部报头中以便传输。为了实现服务路径,诸如服务分类器(scl)之类的网络元件或一些其他合适的sfc感知的网络元件可以处理业务流的分组或帧,并根据针对业务流所期望的策略来执行nsh封装。图2示出了根据本公开的一些实施例的用于规定业务流的服务路径的sfc感知的网络元件(例如,(初始)服务分类器(scl))的系统视图。网络元件202包括处理器204、用于存储数据和指令的(计算机可读非暂态)存储器206。此外,网络元件202包括服务分类功能208和服务报头封装器210(当处理器204执行存储在存储器206中的指令时,两者都可以由处理器204提供)。服务分类功能208可以处理业务流的分组并确定分组是否需要接受服务以及相应地遵循哪个服务路径来应用适当的服务。该确定可以基于存储在存储器206中的商业策略和/或规则来执行。一旦确定了服务路径,服务报头封装器210就生成具有针对服务路径的标识信息(“服务路径信息”)的适当nsh,并将该nsh添加到分组中。服务报头封装器210提供外部封装以将分组转发到服务路径的开端。因此,其他sfc感知的网络元件能够处理nsh,而其他非sfc感知的网络元件将简单地按原样转发封装的分组。除了插入nsh之外,如果服务分类功能208确定分组不需要接受服务,则网络元件202也可以移除nsh。网络服务报头网络服务报头(nsh)可以包括(例如,64位)基本报头和一个或多个上下文报头。一般而言,基本报头提供关于服务报头和服务路径标识(例如,服务路径标识符)的信息,并且上下文报头可以承载不透明的元数据(诸如本文所描述的反映分类结果的元数据)。例如,nsh可以包括4字节的基本报头、4字节的服务路径报头、和可选的上下文报头。基本报头可以提供关于服务报头和有效负载协议的信息。服务路径报头可以提供路径内的位置和路径标识。(长度可变的)上下文报头可以承载不透明的元数据和长度可变的编码信息。一个或多个可选的上下文报头构成nsh中的上下文报头部分。例如,上下文报头部分可以包括其中具有描述分组/帧的信息片段的一个或多个上下文报头字段。当分组或帧行进服务路径时,上下文报头字段尤其适合于共享关于分组或帧的上下文信息。基于基本报头中的信息,服务节点的服务功能可以从nsh导出策略选择。nsh中共享的上下文报头可以提供一系列与服务相关的信息,例如,业务分类。服务功能可以使用nsh来选择本地服务策略。通常的用法是服务功能基于nsh的上下文报头中的业务分类拒绝或准许某些类型的业务。服务节点和代理节点一旦被适当地封装,具有nsh的分组随后被转发到一个或多个服务节点,在该一个或多个服务节点中,(一个或多个)服务可以应用于分组/帧。图3示出了根据本公开的一些实施例的服务节点的系统视图。服务节点300(通常是网络元件)可以包括处理器302、用于存储数据和指令的(计算机可读非暂态)存储器304。此外,服务节点300包括(一个或多个)服务功能306(例如,用于将(一个或多个)服务应用于分组/帧,对分组/帧进行分类)和服务报头处理器308。(一个或多个)服务功能306和服务报头处理器308可以在处理器302执行存储在存储器304中的指令时由处理器302提供。服务报头处理器308可以提取nsh,并且在一些情况下,根据需要更新nsh。例如,如果服务索引=0被用来指示服务节点300要将分组丢弃,则服务报头处理器308可以递减服务索引。在另一个实例中,如果新的/更新的上下文可用,则服务报头处理器308或由服务节点提供的一些其他合适的模块可以更新上下文报头字段。可以进一步在https://tools.ietf.org/htrnl/draft-penno-sfc-packet-01中找到服务功能链接的各个方面,其内容通过引用整体并入本文。当服务功能(sf)想要将分组反方向发送回源时,sf可以使用反向服务路径id(例如,对称服务路径id)和相关联的服务索引。这种对称服务路径id信息通常不可用于sf,因为sf不需要执行下一跳服务查找。本公开描述了sf可以如何标识对称服务路径id和对应的相关联的服务索引:在一些实施例中,sf可以从传入的分组中导出反向服务路径转发信息。在一些实施例中,sf可以在前向方向上发送分组,但是在网络服务报头(nsh)中设置请求sff将分组发送回源的适当的位。在一些实施例中,分类器可以将sf发送反向分组所需的所有信息编码于元数据报头中。在一些实施例中,在创建相关联的对称路径id和索引时控制器使用确定性算法。实施例1在第一实施例中,sf可以导出反向服务路径转发信息。sf可以被配置为接收和处理来自传入的原始分组的信息的子集。当sf想要将分组发送到源时,sf使用经由控制平面传送的信息来施加正确的nsh值。图4是服务功能使用控制平面信息来施加nsh值的过程流程图400。sf可以接收分组(402)。策略或其他触发可以使sf生成反向分组(404)。反向分组是行进与原始分组相同的服务功能但行进方向相反的分组。控制器可以从来自原始分组的控制平面信息中确定反向路径id(406)。控制器可以从控制平面信息中确定反向路径索引(408)。然后,sf可以通过sff将分组转发到反向跳sf(410)。sff可以解释针对将分组转发到另一个服务功能的反向路径信息。该实施例的优点包括:o更改仅限于sf和控制器,不对sff进行更改;o增量式部署是可行的;o不存在sf和sff之间的协议,这避免了互操作性问题;o由于带内或带外协议,对sff没有性能损失。实施例2在一些实施例中,sf可以在分组报头中设置oam位。当sf需要在反方向发送分组时,它会将设置nsh报头中的oam位并使用oam协议[i-d.penno-sfc-trace]来请求sff施加新的反向路径nsh。在施加之后,sff正确地转发分组。图5是包括反向分组请求位字段的分组的网络服务报头500的示意图。在示例实施例中,sf可以设置以下位字段以请求反向分组:oam位:1长度:6md类型:1下一协议:oam协议rev.pktreq:1反向分组请求图6是用于设置针对反向路径转发的oam位的过程流程图600。sf可以接收分组,并且反向分组可以基于策略或其他触发事件被触发。sf可以在反向分组nsh中设置操作、管理及维护(oam)位(602)。oam位用作对sff的指示,以基于编码在分组报头中的其他信息来设置新的反向路径(604)。然后,sff可以将反向分组转发到适当的反向跳目的地(606)。sff检查其转发表并找到下一个服务跳的反向路径id和索引。可以在renderedservicepathyang模型中找到反向路径,其中在构造路径时该模型被传送到sff。如果sff不理解oam消息,则它仅基于原始路径id和索引转发分组。由于该消息是特殊的oam分组,它告诉其他sff和sf它们应该以不同的方式处理它。例如,下游入侵检测sf可能不会将流状态与该分组关联。在一些实施例中,sf可以设置预留位以触发sff标识反向路径并转发分组。图7是设置针对反向路径转发的反向位的过程流程图700。在该实施例中,sf在反向分组的nsh中设置反向位(702)。预留位承载与以上图6所描述的oam实施例中相同的语义信息。sff可以将预留位解释为用于sff标识反向路径并在反向分组上施加反向路径的指令(704)。然后,sff可以将反向分组转发到反向下一跳目的地(706)。该实施例涉及对预留位中的一者进行分配。另一个问题是原始分组中的元数据可能被路径中的sf或sff覆写。在图6和图7中所描述的实施例中,当sff接收到设置有反向位的nsh分组时,sff应查找预编程表以将nsh分组中的服务路径id和索引映射到反向服务路径id和索引。然后,sff将使用新的反向id和索引对来确定反方向中的sf/sff。实施例3分类器可以将sf发送反向分组所需的所有信息编码在元数据报头中。该实施例允许服务功能发送反向分组而不与控制器或sff交互。此外,sf不需要设置oam位或使用预留位。对于md类型1分组,代价是大量信息(48位)可能被编码在分组的元数据部分中,并且该数据不应该被覆写。理想地,该元数据将需要由分类器添加。renderedservicepathyang模型[rspyang]提供分类器需要添加到元数据报头的反向服务路径信息。分类器沿着服务路径对必需的反向服务路径信息(路径id和索引)进行编码,这允许服务功能发送反向分组而不与控制器或sff交互,因此它非常有吸引力。renderedservicepathyang[rspyang]已经提供了分类器需要添加到元数据报头的所有必要信息。用示例可以更好地解释这种方法。下面,示出了两个对称路径的json对象:rendered_service_path_resp_json={"rendered-service-paths":{"rendered-service-path":[{"name":"sfc1-sfp1-path-2-reverse","transport-type":"service-locator:vxlan-gpe","parent-service-function-path":"sfc1-sfp1";"path-id":3,"service-chain-name":"sfc1","starting-index":255,"rendered-service-path-hop":[{"hop-number":0,"service-index":255,"service-function-forwarder-locator":"eth0","service-function-name":"sf3","service-function-forwarder":"sff3"},{"hop-number":1,"service-index":254,"service-function-forwarder-locator":"eth0""service-function-name":"sf2","service-function-forwarder":"sff2"},{"hop-number":2,"service-index":253,"service-function-forwarder-locator":"eth0""service-function-name":"sf1","service-function-forwarder":"sff1"}],"symmetric-path-id":2},{"name":"sfcl-sfpl-path-2","transport-type":"service-locator:vxlan-gpe","parent-service-function-path":"sfc1-sfp1","path-id":2,"service-chain-name":"sfc1","starting-index":253,"rendered-service-path-hop":[{"hop-number":0,"service-index":253,"service-function-forwarder-locator":"eth0""service-function-name":"sf1","service-function-forwarder":"sff1"},{"hop-number":1,"service-index":252,"service-function-forwarder-locator":"eth0""service-function-name":"sf2","service-function-forwarder":"sff2"},{"hop-number":2,"service-index":251,"service-function-forwarder-locator":"eth0","service-function-name":"sf3","service-function-forwarder":"sff3"}],"symmetric-path-id":3}]}}"""分类器可以将以下信息编码在元数据中:o对称路径id=2(24位)o对称起始索引=253(8位)o对称跳数=3(8位)o起始索引=255(8位)在下面的方法中,假设sf在递减当前分组的索引之后将生成反向分组。经递减的索引被称为当前索引。如果sf1想要生成反向分组,则它可以通过应用以下算法来找到适当的索引:current_index=252remaining_hops=symmetric_number_hops-starting_index-current_indexremaining_hops=3-(255-252)=0reverse_service_index=symmetric_starting_index-remaining_hops-1reverse_service_index=next_service_hop_index=253-0-1=252“-1”是服务索引指向下一个service_hop所必须的。如果sf2想要发送反向分组:current_index=253remaining_hops=3-(255-253)=1reverse_service_index=next_service_hop_index=253-1-1=251如果sf3想要发送反向分组:current_index=254remaining_hops=3-(255-254)=2reverse_service_index=next_service_hop_index=253-2-1=250下表总结了分别由前向和反向路径中的每个sf计算的服务索引。fwdsi=前向服务索引cursi=当前服务索引gensi=生成的分组的服务索引rsfp1前向-跳数:3前向起始索引:253反向起始索引:255sfsf1sf2sf3fwdsi253252251cursi252251250gensi252253254rsfp1反向-跳数:3反向起始索引:255前向起始索引:253sfsf1sf2sf3revsi253254255cursi252253254gensi252251250由对称前向和反向路径中的每个sf生成的服务索引。图8是分类器将反向路径信息编码到分组元数据的过程流程图800。可以在服务功能链的分类器处接收原始分组(802)。分类器可以将反向路径信息编码到分组元数据(804)。反向路径信息可以包括呈现的服务功能路径和/或呈现的反向服务路径。然后,sf可以使用从分组元数据中提取的元数据来生成反向分组(806)。实施例4:在一些实施例中,使用前向路径id和索引来导出反向路径。在该实施例中,nsh不需要额外的存储,并且该机制对sff完全透明。反向服务路径直接由协调器编程,并由对发送上游业务感兴趣的sf使用。使用相同的服务路径id来取代定义新的服务路径id。协调器必须使用不同范围的服务路径索引(spi)来定义服务功能的反向链。还假设反向分组必须经历与其转发路径相同数目的服务。建议服务路径索引0…127和255…128是彼此的精确镜像。这里是一个示例:分别使用spi8、7和6来标识sf1、sf2、和sf3。路径100索引8-sf1路径100索引7-sf2路径100索引6-sf3路径100索引5-终止同时,协调器然后将spi248、249、和250编程为sf1、sf2、和sf3。协调器还将spi247编程为“终止”。反向-spi=256-spi。路径100索引247-终止路径100索引248(256-8)-sf1路径100索引249(256-7)-sf2路径100索引250(256-6)-sf3如果sf3需要在反方向上发送分组,则它将新spi计算为256-6(6是其接收的分组的spi)并得到250。然后将spi减去1并将分组发送回sff。随后,sff收到分组并看到spi249。然后它将分组转移到sf2等。最后,分组spi将降至247,并且sff将nsh剥离(stripoff)并递送分组。即使sf1稍后决定使另一个上游分组被发送返回,相同的机制也起作用。该分组可以使用上述机制在sf1和sf3之间来回(ping-pong)。一些实施例利用不同的服务路径id,例如,最高有效位。当sf需要反向发送分组时,可以翻转该位。但是,仍然需要计算反向spi,例如,spi6变为spi121。在任一种情况下,sf必须通过协调器知道反向服务路径已被编程以及要使用的方法(仅spi或spi+spid位)。图9是根据本公开的实施例的用于根据前向路径信息来计算反向路径的过程流程图900。sf可以首先标识当前索引(902)。sf计算与其自己的当前索引相对应的反向服务跳索引(904)。sf可以递减自身的反向服务跳索引以计算反向跳目的地sf(906)。然后,sf可以将反向分组发送到与反向服务跳目的地sf相关联的sf(908)。接收sf可以重复计算以标识下一个反向跳转目的地sf。图10是根据本公开的实施例的协调器计算反向路径的过程流程图1000。协调器可以基于不同范围的可用索引值来标识反向服务路径索引(1002)。例如,协调器可以为每个sf分配新的、不同的索引值。sf可以使用来自协调器的信息来计算其反向服务索引(1004)。sf可以递减反向服务索引以计算反向下一跳sf目的地(1006)。sf可以将反向分组发送到反向跳sf(1008)。非对称服务路径在一些实施例中,前向和反向路径可以是非对称的,包括不同的sf集或不同顺序的sf。前向路径可以由sf1->sf2->sf4->sf5组成,而反向路径跳过sf5并且用sf3代替sf2(例如,sf4->sf3->sf1)。非对称sfc可具有完全独立的前向和反向路径。在前向路径中的sf位置可以与其在反向路径中的位置不同。sf可能仅出现在前向路径中但不出现在反向路径中(反之亦然)。为了使用相同的算法来计算由sf生成的服务索引,一个设计选项是在呈现的服务路径中插入特殊的nopsf,使得每个sf在前向和反向呈现的路径中位于对称的位置。对应于上述示例的sfp是:sfp1前向->sf1:sf2:nop:sf4:sf5sfp2反向<-sf1:nop:sf3:sf4:nop以与常规sf相同的方式向nopsf分配顺序的服务索引。接收具有与nopsf相对应的服务路径id和服务索引的分组的sff应该将服务索引提前(advance),直到服务索引指向常规sf。在一些实现方式中,控制器可以使用环回接口(lookupinterface)或sff上的其他方法来跳过nopsf。一旦将nopsf插入到呈现的服务路径中,前向和反向路径就变得对称。sf可以应用相同的算法来生成相反方向路径中的服务索引。下表列出了与上述示例相对应的示例服务索引。fwdsi=前向服务索引cursi=当前服务索引gensi=生成的分组的服务索引rsfp1前向-跳数:5前向起始索引:250反向起始索引:255sfsf1sf2nopsf4sf5fwdsi250249248247246cursi249248247246245gensi250251n/a253254rsp1反向-跳数:5反向起始索引:255前向起始索引:250在路径创建期间,这种非对称路径的对称化可由控制器来执行。图11是根据本公开的实施例的用于使非对称的前向和反向服务路径对称的过程流程图。可以标识向前方向的服务功能路径(1102)。可以标识用于向前方向的服务功能路径(1104)。可以确定前向路径和反向路径之间的服务功能的差异(1106)。也就是说,可以标识在前向服务路径中缺失但在反向路径中存在的sf。类似地,可以标识在反向服务路径中缺失但在前向路径中存在的sf。可以在前向服务功能路径中针对缺失的sf插入nop(占位符sf)(1108)。可以在反向服务功能路径中针对缺失的sf插入nop(占位符sf)(1110)。可以将一组离散的服务索引映射到前向路径中的每个sf,包括nop(1112)。可以将一组离散的服务索引映射到反向路径中的每个sf,包括nop(1114)。前向和反向服务路径(1116)可被呈现并且分组被转发。分组通过服务链被转发,并且当nop被到达时,服务索引递减并且分组被转发到下一个非nopsf(1118)。元数据在生成分组时的关键考虑因素是哪些元数据应被包括在上下文报头中。在某些情况下,如果元数据不存在,则分组将无法到达其预期目的地。虽然可以想出许多不同的方式来传送这些信息,但这些技术应该需要很少或不需要新的服务功能。假设服务功能通常需要知道上下文报头的语义以便执行其功能。但是清楚地知道元数据的语义是不够的。该问题为:虽然sf在其接收到分组时知晓元数据的语义,但是在生成分组时,它可能无法生成或索取正确的元数据值以插入到上下文报头中。通常是分类器将元数据插入到上下文报头中。本公开描述了服务路径不变的元数据。这是针对行进特定路径的所有分组都相同的元数据。例如,如果退出服务路径的所有分组都需要被路由到某vpn,则vpnid将是路径不变的元数据。由于控制器需要将上下文报头中存在的元数据的语义发送到每个服务功能,因此可以直接发送路径不变的元数据的值。因此,当服务功能生成分组时,它可以插入分组到达其目的地所需的最小元数据。存在服务功能可以提供适当的值的第二类型的元数据,不管怎样服务功能将负责作为分组处理的一部分将该适当的值插入。最后,如果分组需要上述两种方法均无法提供的关键元数据值,则需要重新分类。这种重新分类需要由通常在反向路径中处理分组的分类器或具有相同规则和功能的sff来完成。理想情况下为处理生成的分组的第一个sff。总之,实施例涉及在服务功能处接收原始分组;针对反向分组确定服务功能链上的前一跳的反向服务路径标识符;针对反向分组确定反向服务路径标识符的服务索引;以及将反向分组发送到服务功能链上的前一跳。例如,以上参考根据本公开的实施例的方法、系统、和计算机程序产品的框图和/或操作图示描述了本公开的实施例。块中记录的功能/动作可以不按任何流程图所示的顺序进行。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能/动作。虽然已经描述了本公开的某些实施例,但是可以存在其他实施例。此外,尽管已将本公开的实施例描述为与存储在存储器和其他存储介质中的数据相关联,但是数据也可以存储在其他类型的计算机可读介质(例如,二级存储设备(例如,硬盘、软盘、或cd-rom)、来自互联网的载波、或其他形式的ram或rom)上或从它们中读取。此外,可以在不脱离本公开的情况下以任何方式修改所公开的方法的阶段,包括通过对阶段进行重新排序和/或插入或删除阶段。包括被包括在本文中代码中的版权的所有权利归属于申请人并且是申请人的财产。申请人保持并保留本文被包括在本文中的代码的所有权利,并且仅授予与授权专利的复制相关的对材料的复制的许可,并且不得用于其他目的。虽然说明书包括示例,但是本公开的范围由以下权利要求指示。此外,虽然已经用特定于结构特征和/或方法动作的语言描述了说明书,但是权利要求不限于上述特征或动作。而是,上述具体特征和动作作为本公开的实施例的示例被公开。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1