掌桥专利:专业的专利平台
掌桥专利
首页

服务功能链并行和分流

文献发布时间:2024-04-18 19:58:53


服务功能链并行和分流

相关申请的交叉引用

本申请要求由Futurewei技术公司于2021年6月22日提交的发明名称为“用于服务功能链并行和分流的方法(Methods for Service Function Chaining Paralellism andDiversions)”的第63/213,453号美国临时专利申请案的优先权,该申请通过引用并入本文。

技术领域

本发明大体上涉及网络通信领域,尤其涉及用于服务功能链并行和分流的系统和方法。

背景技术

服务功能(service function,SF)在许多网络中广泛部署和使用。这些服务功能提供了安全性、广域网(wide area network,WAN)加速、服务器负载均衡等一系列功能。SF可以在WAN、数据中心等网络基础设施中的不同点实例化。

服务功能链是指在SFC域内,通过一系列SF(即服务功能链(service functionchain,SFC))处理报文,具体做法是在进入该域时添加路径信息和元数据,使用和修改该路径信息和元数据使报文通过一系列SF,并在退出该域时删除该路径信息和元数据。互联网工程任务组(Intemet Engineering Task Force,IETF)已标准化用于SFC的方法,如J.Halpem等人于2015年10月发表的名称为“服务功能链(Service Function Chaining,SFC)架构”的IETF文档征求意见稿(Request for Comments,RFC)7665,以及P.Quinn等人于2018年1月发表的名称为“网络服务报头(Network Service Header,NSH)”的IETF文档RFC8300中所述。本发明主要参考在这些IETF文件中论述的SFC,但本领域技术人员将容易理解本发明对SFC的其它方法的适用性。

发明内容

第一方面涉及一种由服务功能(service function,SF)节点实现的SFC分流方法。所述SFC分流方法包括:接收SFC报文;根据报文数据,确定所述SFC报文将从所述SFC的第一服务功能转发器(service function forwarder,SFF)重新路由到所述SFC的第二SFF;修改所述SFC报文NSH中的服务索引(service index,SI),以将所述SFC报文重新路由到所述第二SFF;发送所述SFC报文。

根据第一方面,在所述SFC分流方法的第一种实现方式中,所述SFC报文是从所述SFC的第三SFF接收的,并且,发送所述SFC报文包括:将具有修改后的SI的SFC报文返回到所述第三SFF,以转发到所述第二SFF。

根据第一方面或第一方面的任一前述实现方式,在所述SFC分流方法的第二种实现方式中,所述SF节点还被配置为SFF,并且,发送所述SFC报文包括:将具有修改后的SI的SFC报文发送到所述第二SFF。

根据第一方面或第一方面的任一前述实现方式,在所述SFC分流方法的第三种实现方式中,所述第二SFF为所述SFC中添加的新SFF。

根据第一方面或第一方面的任一前述实现方式,在所述SFC分流方法的第四种实现方式中,所述第二SFF为沿所述SFC报文的服务功能路径(service function path,SFP)的现有SFF。

第二方面涉及一种由SF节点实现的SFC多路径分流方法。所述SFC多路径分流方法包括:接收SFC报文;根据报文数据,确定所述SFC报文将分流到所述SFC的多个服务功能路径(service function path,SFP);为所述多个SFP中的每个SFP生成所述SFC报文的副本,以生成多个分流SFC报文;修改所述多个分流SFC报文以包括用于合并所述多个分流SFC报文的合并信息;发送所述多个分流SFC报文。

根据第二方面,在所述SFC多路径分流方法的第一种实现方式中,所述SFC报文是从所述SFC的SFF接收的,并且,发送所述多个分流SFC报文包括:将所述多个分流SFC报文返回到所述SFF。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第二种实现方式中,所述SF节点还被配置为SFF,其中,发送所述多个分流SFC报文包括:将所述分流SFC报文中的每个分流SFC报文发送到所述SFC的不同SFF。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第三种实现方式中,所述SFC多路径分流方法还包括:在所述多个分流SFC报文中的每个分流SFC报文中,将NSH中的服务路径标识符(service path identifier,SPI)字段从第一SPI修改为与汇集点(rendezvous point,RP)节点对应的第二SPI。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第四种实现方式中,所述SFC多路径分流方法还包括:在所述多个分流SFC报文中的每个分流SFC报文中,将所述NSH中的SI字段从第一SI修改为与所述RP节点对应的第二SI。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第五种实现方式中,所述SFC多路径分流方法还包括:为所述多个分流SFC报文中的每个分流SFC报文构建汇集点信息(rendezvous point information,RePIn)数据结构,用于在汇集点合并所述多个分流SFC报文;在所述多个分流SFC报文中的每个分流SFC报文中,将所述RePIn数据结构插入到所述NSH中。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第六种实现方式中,所述RePIn数据结构包括来自所述NSH的第一SPI和第一SI。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第七种实现方式中,所述RePIn数据结构包括报文标识数据结构。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第八种实现方式中,所述RePIn数据结构包括保存的元数据数据结构,所述保存的元数据数据结构包括来自所述NSH的元数据,所述来自所述NSH的元数据使用所述多个分流SFC报文在所述RP处的合并的SFC报文中恢复。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第九种实现方式中,所述RePIn数据结构包括保存的存活时间(time to live,TTL)数据结构,所述保存的存活时间数据结构包括TTL,所述TTL使用所述多个分流SFC报文在所述RP处的合并的SFC报文中恢复。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第十种实现方式中,所述SFC多路径分流方法还包括:为所述多个分流SFC报文中的一个或多个分流SFC报文设置新的TTL。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第十一种实现方式中,所述SFC多路径分流方法还包括:在将所述多个分流SFC报文返回到所述SFF之前,从所述多个分流SFC报文中的一个或多个分流SFC报文中删除不必要的保存的元数据。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第十二种实现方式中,所述SFC多路径分流方法还包括:将所述RePIn数据结构插入到所述NSH中,位于所述NSH中的任何现有RePIn数据结构之前。

根据第二方面或第二方面的任一前述实现方式,在所述SFC多路径分流方法的第十三种实现方式中,所述SFC多路径分流方法还包括:将所述RePIn数据结构插入到第二NSH中,并将所述第二NSH插入到所述NSH之后。

第三方面涉及一种由SF节点实现的SFC合并方法。所述SFC合并方法包括:接收多个分流SFC报文;从所述多个分流SFC报文中确定匹配的分流SFC报文集合;所述将所述匹配的分流SFC报文集合合并为合并的SFC报文;发送所述合并的SFC报文。

根据第三方面,在所述SFC合并方法的第一种实现方式中,所述SFC合并方法还包括:将所述匹配的分流SFC报文集合缓存在存储缓存器中,直到所述匹配的分流SFC报文集合中的所有匹配的分流SFC报文被接收到。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第二种实现方式中,所述SFC合并方法还包括:从所述匹配的分流SFC报文集合中的每个分流SFC报文中提取合并信息。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第三种实现方式中,所述SFC合并方法还包括:将保存的TTL从所述匹配的分流SFC报文集合中的分流SFC报文恢复到所述合并的SFC报文的NSH中。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第四种实现方式中,所述SFC合并方法还包括:将保存的SPI和保存的SI从所述匹配的分流SFC报文集合中的分流SFC报文恢复到所述合并的SFC报文的所述NSH中。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第五种实现方式中,所述SFC合并方法还包括:将保存的元数据从所述匹配的分流SFC报文集合中的分流SFC报文恢复到所述合并的SFC报文的所述NSH中。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第六种实现方式中,所述SFC合并方法还包括:在所述匹配的分流SFC报文集合中选择所述匹配的分流SFC报文中的一个匹配的分流SFC报文,以修改为所述合并的SFC报文。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第七种实现方式中,所述SFC合并方法还包括:比较所述匹配的分流SFC报文集合中每个匹配的分流SFC报文中的初始NSH中保存的SPI;当所述匹配的分流SFC报文集合中每个匹配的分流SFC报文中保存的所述SPI不同时,产生错误。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第八种实现方式中,所述SFC合并方法还包括:比较所述匹配的分流SFC报文集合中每个匹配的分流SFC报文中的所述初始NSH中保存的SI;当所述匹配的分流SFC报文集合中每个匹配的分流SFC报文中保存的所述SI不同时,产生错误。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第九种实现方式中,所述SFC合并方法还包括:将从所述匹配的分流SFC报文集合中选择的最小保存的TTL恢复到所述合并的SFC报文的NSH中。

根据第三方面或第三方面的任一前述实现方式,在所述SFC合并方法的第十种实现方式中,所述SFC合并方法还包括:将所述匹配的分流SFC报文集合中的每个匹配的分流SFC报文中的有效载荷合并为所述合并的SFC报文。

第四方面涉及一种SF节点,包括网络通信装置、存储器等数据存储装置和处理装置,所述SF节点专门用于执行上述任一方法。

为了清楚起见,任一上述实施例可以与上述其它任何一个或多个实施例组合以创建在本发明范围内的新实施例。

根据以下具体实施方式结合附图和权利要求书能更清楚地理解这些和其它特征及其优点。

根据以下结合附图和权利要求书的具体实施方式,将会更清楚地理解这些和其它特征。

附图说明

为了更完整地理解本发明,现在参考下文结合附图和具体实施方式进行简要描述,其中,相同的附图标记表示相同的部件。

图1示出了根据本发明实施例的SFC域;

图2示出了根据本发明实施例的数据报文;

图3示出了根据IETF RFC的NSH;

图4示出了根据本发明实施例的可变长度上下文报头(variable length contextheader,VLCH);

图5示出了根据本发明实施例的具有并行服务功能路径的SFC域;

图6示出了根据本发明实施例的被拼接到SFP中的SFF;

图7示出了根据本发明实施例的从SFP中剪接出的SFF;

图8示出了根据本发明实施例的RePIn VLCH;

图9示出了根据本发明实施例的RePIn VLCH子类型长度变量(type-length-variable,TLV);

图10示出了根据本发明实施例的报文标识符特殊子TLV;

图11示出了根据本发明实施例的报文范围修改后的子TLV;

图12示出了根据本发明实施例的保存的元数据子TLV;

图13示出了根据本发明实施例的保存的TTL子TLV;

图14示出了根据本发明实施例的SFC分流过程的流程图;

图15示出了根据本发明实施例的SFC多路径分流过程的流程图;

图16示出了根据本发明实施例的SFC合并过程的流程图;

图17示出了根据本发明实施例的节点的示意图。

具体实施方式

首先应当理解,尽管下文提供了一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任意数量的技术来实现,无论该技术是当前已知还是现有的。本发明绝不限于下文所说明的说明性实现方式、附图和技术,包括本文所说明和描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效部分的完整范围内修改。

SFC定义了一组有序的抽象SF和排序约束,这些抽象SF和排序约束应用于由于分类而选择的报文和/或帧和/或流。SFC旨在引导报文通过SFC域内的一系列SF。SF是用于提供特定服务的程序或节点。例如,SF可以丢弃报文(例如:防火墙或DDoS过滤器)、将报文复制到新路径(例如:调试、合法拦截)、添加报文(例如:操作使需要分片的报文延长)或执行其它任务。在SFC域的入口处,入口节点(称为分类器)向报文添加NSH。NSH包括标识服务路径的路径标识符和沿该路径的步数。NSH用于控制SFC域内报文的路径(称为SFP),可选地,使用元数据扩展报文。报文在SFC域内的路由由SF转发器(SF forwarder,SFF)执行。SFF负责根据SFC封装中携带的信息将流量转发到一个或多个连接的服务功能,并处理从SF返回的流量。此外,SFF负责在需要和支持时对流量进行重新分类,将流量传输到其它SFF(在相同或不同类型的覆盖中),并终止服务功能路径(service function path,SFP)。但是,尽管具有这些灵活性,所述一系列的SF通常假定为单链,由服务路径标识符(service pathidentifier,SPI)/服务索引(service index,SI)控制,或者如果在链内发生重新分类,则由SPI/SI序列控制。出口节点在SFC域出口处删除NSH。目前,还没有用于在并行路径中执行SF或用于使SFC路径重新汇合的现有方法。此外,没有用于在报文穿过SFP时插入(即,拼接入)一个或多个新的SFF的现有方法,或用于在报文穿过SFP时排除(即,剪接出)SFP中的一个或多个现有SFF的现有方法。

为了解决一个或多个上述技术问题,本发明的各种实施例提供了将服务功能路径(service function path,SFP)分为两个或两个以上子路径或并行路径的能力,这些子路径或并行路径随后重新汇合,还提供了在现有SFP中拼接入一个或多个附加服务功能的能力,或在现有SFP中剪接出一个或多个服务功能的能力。具体地,本文公开的实施例使用汇集点信息(rendezvous-point information,RePIn),使并行SFP可以重新组合,或分流重新汇合到现有SFP。除其它外,所公开的实施例包括一种方法,所述方法用于将RePin信息插入到2类网络服务报头(network service header,NSH)元数据中,以支持多级并行,并将对每个并行路径中服务功能使用元数据的干扰降至最低。各种实施例包括一种用于保存和随后恢复非2类的NSH元数据的方法。各种实施例还包括一种方法,所述方法用于标识每个并行处理路径改变、删除或插入的报文部分,以便重新组合并行处理的报文。

图1示出了根据本发明实施例的SFC域100。SFC域包括入口节点A 102、SFF1 104、SFF2 106和出口节点B 108。SFC域不限于图1所示的SFF或SF的数量。流量(即,报文)通过入口节点A 102,在入口节点A 102对报文进行分类,并将NSH报头(例如图2中的IETF NSH200)添加到每个报文中。所述流量继续通过一系列SFF(例如,SFF1 104、SFF2 106等)。每个SFF依次向一个或多个SF发送流量。每个SF对流量执行一些操作,例如防火墙、网络地址转换(network address translation,NAT)、深度报文检测、合法拦截、负载均衡器或其它服务,然后将报文返回到接收的报文所来自的SFF。

作为示例,在图1中,如较粗的箭头所示,报文通过节点A 102,在节点A 102对报文进行分类并添加NSH。然后,将报文路由到SFF1 104,SFF1 104向SF1 110发送报文并接收从SF1 110返回的报文。如图1所示,可以有多个相同的SF连接到相同或不同的SFF。SF的编号指示逻辑功能,因此,在本示例中,有四个标记为SF1(SF1 110、SF1 112、SF1 114和SF1124)的节点执行相同的功能,有两个SF2(SF2116和SF2118)节点执行相同的功能。SF可以从SFF接收一个或多个SFC报文。SF向SFF返回的SFC报文数量可以大于从SFF接收到的SFC报文数量,也可以小于从SFF接收到的SFC报文数量。也就是说,SF可以丢弃或创建SFC报文。例如,拒绝服务攻击改进可能需要丢弃报文。在拒绝服务攻击改进期间,SF可以检查报文,将一些报文分类为攻击的一部分并丢弃这些报文,并让其它报文通过。例如,合法拦截SF需要创建报文。合法拦截SF对报文进行检查,如果SF确定报文应受到合法拦截,则使用新的寻址和新的NSH制作报文的副本。然后,SF将该副本发送到执法机构,同时也将所有原始报文转发到其原始预期目的地。

在接收到从SF1 110返回的报文后,SFF1 104将报文路由到SFF2 106。SFF2 106向SF2118发送报文并接收从SF2 118返回的报文。然后,SFF2 106向SF3 120发送报文并接收从SF3 120返回的报文。在示例性服务链中未使用与SF4 122相关联的逻辑功能。SFF2 106将报文路由到出口节点B 108。出口节点B 108从报文中删除NSH,并将报文转发到其目的地。需要注意的是,入口节点A 102和出口节点B 108也被认为是SFF。例如,入口节点A 102可以在向报文添加NSH之后,将报文发送到除SF1 104之外的一个或多个SF。此外,出口节点B 108可以在删除NSH之前将报文发送到一个或多个SF。

图2示出了根据本发明实施例的数据报文200。数据报文200表示在SFP内部正在处理的报文(本文称为SFC报文)。具体地,数据报文200表示在SFC域的入口(例如,图1中SFC域100的入口节点A 102)之后和出口(例如,图1中SFC域100的出口节点B 108)之前的SFP上的报文。数据报文200包括外部传输报头202、NSH 204和原始报文、帧或有效载荷206(即,报文承载的数据)。外部传输报头202包括用于将数据报文200传输到SFF的寻址信息(例如,源和目的地进程,或端口号)。尽管标记为“报头”,但外部传输报头202可以出现在报文的开头或结尾,或者甚至与报文中的其它信息混合,只要报文传输的每个节点都能从外部传输报头202访问所需的信息。

NSH 204用于封装和控制流量的后续路径。NSH 204设计成封装原始报文或帧(例如报文/帧/有效载荷206),并且依次由外部传输封装(例如,外部传输报头202)封装,该外部传输封装用于将NSH 204传送到NSH感知/SFC封装感知网络元件(例如,SFC域100的图1中的SFF1 104和SFF2 106)。NSH 204不改变报文/帧/有效载荷206。

在数据报文200的传输期间,SFF从数据报文200中删除外部传输报头202。然后,SFF决定下一个转发步骤,(1)添加新的传输报头,(2)如果出错,则丢弃或记录报文,不转发报文,或者(3)如果SFF是出口(例如,图1中的出口节点B 108),则删除NSH报头,然后在情况1和2中添加一个新的传输报头。在SFC域的不同区域中,使用的传输报头可以不同。例如,互联网协议(internet protocol,IP)的版本可以用于SFC域的一部分,多协议标签交换(multi-protocol label switching,MPLS)可以用于SFC域的另一部分。在一些实施例中,在SF不知道NSH报头并会被NSH报头混淆的情况下,使用SF代理。SF代理从SFF接收SFC报文,从该报文中提取并记住NSH,将没有NSH的报文转发到SF,接收从SF返回的报文,重新添加NSH,然后将处理后的带有NSH的报文返回到SFF。目前,由IETF标准化的SFC具有额外的灵活性。

图3示出了根据IETF RFC 8300的NSH 300。NSH 300是图2中NSH 204的示例。NSH300包括初始32位基本报头302、32位服务路径报头304和任何保存元数据的上下文报头306。

基本报头302提供关于服务报头和有效载荷协议的信息。基本报头302包括版本字段312、O位字段314、一个或多个U位字段316、存活时间(time-to-live,TTL)字段318、长度字段320、MD类型字段324和下一个协议字段326。版本字段312用于确保与未来NSH规范更新的向后兼容性。例如,当SFF接收到假定承载NSH报头的报文,但SFF不理解基本报头中指示的协议版本时,丢弃该报文并记录该事件。O位字段314用于指示报文是操作、管理和维护(operations,administration,and maintenance,OAM)报文。在一个实施例中,当报文是OAM报文时,O位字段314设置为1,而对于非OAM报文则不设置(例如设置为0)。一个或多个U位字段316未赋值,可供将来使用。存活时间(time-to-live,TTL)字段318指示SFP的最大SF访问次数(跳数)。TTL字段318是主循环预防机制。在NSH转发查找之前,参与转发SFC报文的每个SFF都会将TTL值递减1。如果TTL在递减后为0,则不转发报文。长度字段320指示NSH300的总长度。因为基本报头302和服务路径报头304是固定长度,所以可选上下文报头306中承载的元数据的长度可以根据长度字段320中的值计算。MD类型字段324指示NSH 300中元数据的类型或格式。在一个实施例中,如果MD类型字段324的值为1,则表示有一个固定长度的128位上下文报头,其格式未由IETF进一步定义。在这种情况下,长度字段320的值为6。如果MD类型字段的值为2,则有零个或多个可变长度上下文报头306。通过使用MD类型2和长度字段320中的NSH长度2来指示不存在任何上下文报头306。MD类型0保留,MD类型3到15未赋值。下一个协议字段326指示封装数据的协议类型。

服务路径报头304提供服务路径内的路径标识和位置。服务路径报头304包括服务路径标识符(service path identifier,SPI)字段330和服务索引(service index,SI)字段332。SPI字段330中的SPI对报文应该遵循的逻辑路径进行标识。SI字段332中的SI指示报文处于该路径上的哪一步骤(即,SFP内的位置)。SI与SPI结合使用,用于确定路径中的下一个SFF/SF。沿SFP的任何位置的SF都可以通过替换NSH 300中的SPI和SI对SFC报文进行重新分类。SFF还可以在NSH 300中插入、删除或更改元数据(可选上下文报头306)。

可选上下文报头306沿服务路径承载元数据334(即,上下文数据)(如有)。所公开的实施例不对必须实现的上下文报头或必须处理的上下文报头做出任何假设。这些考虑因素是针对具体部署的。

图4示出了根据本发明实施例的可变长度上下文报头(variable length contextheader,VLCH)400。VLCH 400是图3中NSH 300的可选上下文报头306的示例。在一个实施例中,VLCH 400的最小大小为32位。VLCH 400包括元数据类字段402、类型字段404、一个未使用的(U)位406、长度字段408和可变长度元数据字段410。元数据类字段402为16位。元数据类字段402的值指定特定VLCH 400所属的组织。例如,元数据类零是IETF基类。类型字段404为8位。类型字段404的值指示所承载的元数据的显式类型。长度字段408为7位。长度字段408的值指示可变长度元数据字段410(以八位字节为单位)中可变长度元数据的长度。取值为0指示VLCH 400没有可变长度元数据。在一个实施例中,填充VLCH 400,使得VLCH 400总是以距NSH开头4字节的倍数开始和结束。

图5示出了根据本发明实施例的具有并行服务功能路径的SFC域500。如本文所使用的,术语并行是指不是按顺序的。并行并不意味着多个SFP相同,也不意味着报文同时穿过多个SFP。如图5所示,SFF1 502处的报文可以分流到三个不同的并行SFP(标记为1、2和3),并在SFF3 510重新汇合。将SFC分裂为两个或两个以上并行SFP有多种原因。例如,可以有两个或两个以上SF并行执行,目标是仅以最慢的单个SF所花费的时间来延迟报文流;如果报文按顺序通过SF(如当前IETF SFC标准所规定的那样),则延迟将是每个SF所花费时间的总和。这种潜在并行处理的一个示例可能是SF对报文的不同部分进行操作,例如一个SF对报文寻址进行操作,而另一个SF对信息有效载荷进行操作。另一个示例可能是,一个SF在要插入到报文有效载荷中的报文的各个部分上创建签名或完整性代码,而另一个SF对报文的各个部分进行加密(或者,报文的各个部分并行进行验证和解密)。

如果并行执行的SF不合乎期望,或者并行执行的SF是执行相同处理的不同实现方式,则期望的并行性的另一个示例是提高可靠性或准确度。例如,目前一些量子计算机并不可靠。因此,最好执行多次量子过程,并比较结果以选出最常见的值。另一种选择是,可以在某些过程的不同实现方式的结果之间进行表决。

在所描述的实施例中,SFF(例如,SFF1 502和SFF3 510)利用一个或多个SF作为分流点(diversion point,DP)和汇集点(rendezvous point,RP)。DP是实现分流功能/过程的SF,用于使报文能够发送到多个并行SFP或重新路由到不同的SFF(例如,将一个新的SFF拼接到一个SFP或从一个SFP中分割出一个现有SFF)。分流功能/过程可以将SFC报文重新分类为一个或多个具有不同SPI的并行报文,其中,在正常情况下,重新分类的一个或多个报文在恢复原始SPI的下游RP处组合。下游是从入口到出口的方向(例如,图5中SFF3 510位于SFF1 502的下游)。RP是一种SF,它实现了一个汇集过程,即接收一个或多个在上游DP处被分流的对应SFC报文,如果有多于一个报文,则将报文组合,并在NSH中恢复原始SPI。

作为示例,在图5中,SF1 512是DP,SF5 520是RP。如将进一步描述的,SF1 512可以为每个并行SFP生成SFC报文的副本(即,SFC报文的三个副本,为三个并行SFP中的每个并行SFP生成一个副本)。然后,SF1 512修改SFC报文的每个副本,使得每个副本沿着三个并行SFP中的一个转发。SF1 512还修改SFC报文的每个副本,以包括RP用于合并分流SFC报文的合并信息。SF1 512将修改后的SFC报文返回到SFF1 502。SFF1 502将第一修改后的SFC报文转发到并行路径1的SFF 2A 504,将第二修改后的SFC报文转发到并行路径2的SFF 2B 508,并将第三修改后的SFC报文转发到并行路径3的SFF 2C 506。在路径1中,SFF 2A 504将第一修改后的SFC报文转发到SF2 514以执行某些任务。在执行任务后,可以进一步修改第一修改后的SFC报文,SF2 514可以将第一修改后的SFC报文返回(例如,如果未丢弃)到SFF 2A504。SFF 2A 504将第一修改后的SFC报文发送到SFF3510。SFF3 510将第一修改后的SFC报文转发/发送到SF5 520。在路径2中,SFF 2B 508将第二修改后的SFC报文转发到SF3 518以执行某些任务。在执行任务后,SF3 518可以将第二修改后的SFC报文返回到SFF 2B 508。SFF 2B 508将第二修改后的SFC报文发送到SFF3510。SFF3 510将第二修改后的SFC报文转发到SF5 520。类似地,在路径3中,SFF 2C506将第三修改后的SFC报文转发到SF4 516以执行某些任务。在执行任务后,SF4 516可以将第三修改后的SFC报文返回到SFF 2C 506。SFF2C 506将第三修改后的SFC报文发送到SFF3 510。SFF3 510将第三修改后的SFC报文转发到SF5 520。SF5 520根据第一、第二和第三修改后的SFC报文中的修改数据,使用对应修改后的SFC报文中的合并信息,将第一修改后的SFC报文、第二修改后的SFC报文和第三修改后的SFC报文合并为单个SFC报文。在一个实施例中,SF5 520在合并的SFC报文的NSH中恢复原始SPI(即,在SF1 512复制的SFC报文中的SPI)。SF5 520将合并的SFC报文返回/发送到SFF3510。SFF3 510正常处理合并的SFC报文。

在图5中,在一些实施例中,所示的穿过SFF 2A、SFF 2B和SFF 2C的三个并行路径中的一个,使用与在并行路径分裂之前和并行路径汇合之后在SFP中使用的相同的SPI。或者,所有并行路径都可以使用不同的SPI,这些SPI也不同于并行区域之前或之后的SPI。根据所公开的实施例,任一并行路径都可以具有多于一个SFF,尽管为了简单起见,在示例中仅示出了一个SFF,并且任一并行SFP中的任一SFF都可以通过多个SF处理报文,尽管为了简单起见,在图5中只示出了一个SF。除了图5所示的三个平行路径外,可能还有更多或更少的平行路径。在一些实施例中,一个或多个并行路径本身将进一步分裂为并行路径,以此类推。这种分裂产生的附属并行路径可能会在原始RP处汇集,也可能会在进一步分裂为并行路径的路径中较后的RP处汇集。应当注意的是,虽然图5将DP和RP描述为与SFF分离,但在一些实施例中,SFF可以包含DP或RP的功能。

除了并行SFP之外,还可以存在需要将SFP分流或重新路由以便将一个或多个添加的新SFF拼接到SFP中或者从SFP中的一个或多个连续SFF分割出来的情况。例如,图6示出了根据本发明实施例的被拼接到SFP 600中的SFF。在所描述的实施例中,SFP 600通常通过SFF1 602、SFF2 604、SFF3 608、SFF4 610及其对应的SF处理SFC报文。例如,SFC报文可以从SFF1 602发送到在SF1 612处服务的SF1 612,然后返回到SFF1 602,SFF1 602将SFC报文转发到SFF2 604。SFF2 604将SFC报文发送到SF3 614,SF3 614执行某些功能,并将SFC报文返回到SFF2 604。SFF2 604将SFC报文转发到SFF3 608。SFF3 608将SFC报文发送到SF5 618,SF5 618执行某些功能,并将SFC报文返回到SFF3 608。SFF2 608将SFC报文转发到SFF3610。SFF4 610将SFC报文发送到SF4 620,SF4 620执行某些功能,并将SFC报文返回到SFF4610。

如图6所示,SFF2.5 606拼接在SFF2 604和SFF3 608之间。在这种情况下,SF3 614可以被配置为一个DP,用于修改SFC报文,使得SFC报文能够重新路由。在一个实施例中,SF3614修改SFC报文的NSH中的SI,以将SFC报文重新路由到SFF2.5 606。SF3 614将修改后的SFC报文返回到SFF2 604,SFF2 604将SFC报文转发到SFF2.5 606。SFF2.5 606将SFC报文发送到SF2 616以执行某些功能。此后,SF2 616将SFC报文返回到SFF2.5 606。然后,SFF2.5606将SFC报文转发到SFF3 608,SFP恢复正常。

图7示出了根据本发明实施例的从SFP 700中剪接出的SFF。在所描述的实施例中,SFP 700通常通过SFF1 702、SFF2 704、SFF3 706和SFF4 708处理SFC报文。例如,SFC报文可以从SFF1 702到SF1 712,以对SFC报文执行某些功能。SF1 712将SFC报文返回到SFF1 702,SFF1 702将SFC报文转发到SFF2 704。SFF2 704将SFC报文发送到SF3 714,SF3 714执行某些功能,并将SFC报文返回到SFF2 704。SFF2 704将SFC报文转发到SFF3706。SFF3 706将SFC报文发送到SF5 716,SF5 716执行某些功能,并将SFC报文返回到SFF3 706。SFF3 706将SFC报文转发到SFF4 708。SFF4 708将SFC报文发送到SF4 718,SF4 718执行某些功能,并将SFC报文返回到SFF4 708。

如图7所示,假设SFF3 706将从SFP 700中分割或删除某些SFC报文。在这种情况下,SF3 714可以被配置为一个DP,用于修改SFC报文,使得SFC报文能够从SFF2 704到重新路由到SFF4 708,跳过SFF3 706。在一个实施例中,SF3 714将SFC报文的NSH中的SI减少到所需SF(例如,图7中的SF 718)的SI。SF3 714将修改后的SFC报文返回到SFF2704。SFF2 704用于识别修改后的SFC报文中的减小的SI值,并将修改后的SFC报文转发到适当的SFF,在本示例中,适当的SFF是SFF4 708。

在一些实施例中,图6中的SFF2 604和图7中的SFF2 704可以使用新的NSH重新分类报文,该NSH包括新分流路径的剩余部分。要实现这一目标,必须在所有SFF中配置具有此新SPI的新SFP,用于分流后SFP的剩余部分。在图7的情况下,SFF2 704可能只是调整SI,而SFF4 708用于在检查源地址时知道报文来自SFF2 704,或者SFF4 708必须放松/暂停/停止对主SFP上报文源地址的检查。

图6和图7所示的情况也有一个RP,分别位于SFF3 608和SFF4 708,类似于图5(SFF5 520)中的RP,其中,分流重新汇合到主SFP。

此外,在一些实施例中,可能需要图5、图6和图7所示的情况的组合,其中,如图6或图7所示的分流发生在如图5所示的平行路径内,或者如图5所示的平行路径发生在如图6所示的分流内。

如图5所述,为了在RP处重新组合来自不同SFP的报文,或者如图6所述,将分流SFP重新汇合到原始SFP,报文中可能需要附加信息(即,用于合并多个分流SFC报文的合并信息)。在一个实施例中,合并信息可以包括在汇集点信息(rendezvous point information,RePIn)数据结构(如图8所述)中。

图8示出了根据本发明实施例的RePIn可变长度上下文报头(variable-lengthcontext header,VLCH)800。在一个实施例中,DP(例如图5中的SF1 512)使用RePIn VLCH800在分流SFC报文的NSH(例如图3中的NSH 300)中添加合并信息,从而使RP(例如图5中的SF5 520)能够合并分流SFC报文。RePIn VLCH 800包括元数据类字段802、类型字段804、一个未使用的(U)位806、长度字段808、保存的服务路径标识符字段810、保存的SI字段812和可变长度子TLV字段814。元数据类字段802与图4中VLCH 400的元数据类字段402相同。在一个实施例中,元数据类字段中的值为零。类型字段804的值(待确定(to be determined,TBD))指示所承载的元数据的显式类型。U位806保留,供稍后使用。长度字段808是可变长度子TLV字段814(以八位字节为单位)的总长度。

在一个实施例中,保存的服务路径标识符字段810和保存的SI字段812分别是在进入DP SF后和在SI递减后被分流的SFC报文的NSH中的SPI和SI。可变长度子TLV字段814包括零个或多个RePIn VLCH子TLV,如下图9和图10所述。在一个实施例中,所有RePIn VLCH子TLV在末端填充到4个八位字节的偶数倍。

图9示出了根据本发明实施例的RePIn VLCH子TLV 900。RePIn VLCH子TLV 900是VLCH子TLV的示例,RePIn VLCH子TLV 900可用于在分流SFC报文的NSH中提供合并信息,并将该合并信息添加在图8中RePIn VLCH 800的可变长度子TLV字段814中。RePIn VLCH子TLV900包括子类型字段902、X位字段904、子长度字段906和可变长度元数据字段908。子类型字段902是始终存在的一个8位无符号整数,指示RePIn VLCH子TLV 900的其余部分的格式。X位字段904可以被赋予特定子类型的含义。在一个实施例中,如果没有赋予特定子类型这样的含义,则将X位字段904设置为零,并在接收时忽略。子长度字段906是一个无符号整数,指示可变长度元数据字段908(以八位字节为单位)的长度。在一个实施例中,除非RePIn VLCH子TLV 900的子类型的规范指定该子TLV可以多次出现,否则RePIn VLCH子TLV 900只能在RePIn VLCH 800中包括一次。在一个实施例中,如果存在RePIn VLCH子TLV 900的多个实例,则使用第一次出现的RePIn VLCH子TLV 900,而忽略任何后续出现的实例。

图10示出了根据本发明实施例的报文标识符特殊子TLV 1000。报文标识符特殊子TLV 1000包括子类型字段1002和报文标识符字段1004。在一个实施例中,子类型字段1002具有赋给报文标识符特殊子TLV类型的值1(即,指示子TLV是报文标识符特殊子TLV)。报文标识符特殊子TLV 1000是VLCH子TLV的示例,报文标识符特殊子TLV 1000可用于在分流SFC报文的NSH中提供合并信息,并将该合并信息添加在图8中的RePIn VLCH 800的可变长度子TLV字段814中。在一个实施例中,报文标识符特殊子TLV 1000用于提供报文识符字段1004中的报文标识符。报文标识符使RP能够标识要合并的分流报文。例如,DP可以使用报文标识符特殊子TLV 1000在分裂之前用报文标识符标记原始报文的每个副本。报文标识符可以是报文计数器、细粒度时间戳或哈希码等。在一些实施例中,报文标识符可能已经存在于报文中,例如传输控制协议(transmission control protocol,TCP)序列号。如果不存在这样的报文标识符,则可以使用报文标识符特殊子TLV 1000将报文标识符(例如,报文计数器)包括在SFC报文的NSH中。在所描述的实施例中,由于报文标识符特殊子TLV 1000预期是共同的RePIn VLCH子TLV,为了保存八位字节,仅对于该子类型,X字段和子长度字段(例如,图9中RePIn VLCH子TLV 900的X位字段904和子长度字段906)被归入报文标识符字段1004中。

图11示出了根据本发明实施例的报文范围修改后的子TLV 1100。报文范围修改后的子TLV 1100是可变长度子TLV的示例,报文范围修改后的子TLV 1100可包括在图8中的RePIn VLCH 800中,以提供用于在RP处合并分流SFC报文的附加信息。具体地,如果并行使用的两个或两个以上SFP修改了报文的各个部分,RP可能需要附加信息才能重新组合RP将接收的报文的不同副本。作为一个复杂的示例,SF可以根据报文部分的内容更改该部分的长度。例如,SF可以通过对部分报文应用数据压缩算法或解压缩算法,或根据寻址信息有条件地插入或删除虚拟LAN(virtual LAN,VLAN)标签来更改部分报文的长度。在简单的情况下,例如并行SFP修改报文中固定大小不相交部分,而不更改这些部分的大小,RP可以用于在不添加信息的情况下重新组合结果。但在更复杂或可变长度的情况下,并行SFP需要添加信息,说明SFP修改了原始报文的哪一部分以及这可能如何改变该部分长度。此外,有了这些附加信息,在某些情况下,只有一个并行SFP需要将修改后的所有原始报文转发给RP。一个或多个其它并行SFP可以只转发其修改后的部分,RP将能够重新组合结果,从而节省通信链路容量,而如果所有SFP都发送完整的报文,则会占用通信链路容量。

在所描述的实施例中,报文范围修改后的子TLV 1100包括子类型字段1102、X位字段1104、子长度字段1106、偏移量字段1108、优先级字段1110、原始大小字段1112和修改后的大小字段1114。在一个实施例中,子类型字段1102是一个8位无符号整数,其值2赋给报文范围修改后的子TLV类型。X位字段1104可用于指示是否存在整个修改后的报文,或者是否仅存在修改部分出现在报文中。例如,如果X位为零,则SFC报文中包含整个修改后的报文。如果X位为1,则报文中仅显示修改部分。当报文中出现修改部分时,修改报文的SF和RP之间的任何SF都必须能够处理这种简化的报文。子长度字段1106是6,指示子长度字段1106之后报文范围修改后的子TLV 1100(以八位字节为单位)的剩余部分的长度。偏移量字段1108提供偏移量,偏移量是NSH末尾或最后一个NSH(如果有多个堆叠NSH)与报文被修改的部分之间的位数。优先级字段1110可以用于指示修改了报文的相同或重叠部分的SFC报文之间的优先级。例如,如果并行SFP修改了报文的相同或重叠部分,RP可能需要某种方法来解决此冲突,其中可能包括由在RP处配置和/或在RP信息(RP Information,RePIn)中或从其它来源指示的不同SF所做的更改的相对优先级。在一个实施例中,优先级字段1110包含一个无符号整数,其中较大的数量级值指示将优先于较低优先级的较高优先级。如果不使用,则将优先级字段1110可以设置为零,并在接收时忽略。原始大小字段1112和修改后的大小字段1114是在该修改之前和之后被修改的部分的以位为单位的大小。偏移量字段1108、原始大小字段1112和修改后的大小字段1114中的任何一个字段的值均可为零。如果路径修改了报文的一个部分以上,则报文范围修改后的子TLV 1100的多个实例可以包括在RePIn VLCH800中。

图12示出了根据本发明实施例的保存的元数据子TLV 1200。保存的元数据子TLV1200是可变长度子TLV的示例,保存的元数据子TLV 1200可包括在图8中的RePIn VLCH 800中,以提供用于在RP处合并分流SFC报文的附加信息。具体地,DP可以使用保存的元数据子TLV 1200来保存元数据,使得元数据隐藏在分流路径内,从而使得元数据可以在RP处恢复。

在所描述的实施例中,保存的元数据子TLV 1200包括子类型字段1202、X位字段1204、子长度字段1206、必须为零(Must-Be-Zero,MBZ)字段1208、元类型字段1210和可变长度保存的元数据字段1212。在一个实施例中,子类型字段1202是一个8位无符号整数,其值3赋给保存的元数据子TLV类型。在一个实施例中,将X位字段1204和MBZ字段1208设置为零,并在接收时忽略。MBZ字段1208的存在使得保存的元数据在4个八位字节的倍数上对齐。子长度字段1206是一个无符号整数,指示可变长度保存的元数据字段1212(以八位字节为单位)的长度。元类型字段1210指示保存的元数据的MD类型。可变长度保存的元数据字段1212包含保存的元数据。

图13示出了根据本发明实施例的保存的TTL子TLV 1300。保存的TTL子TLV 1300是可变长度子TLV的示例,保存的TTL子TLV 1300可包括在图8中的RePIn VLCH 800中,以提供用于在RP处合并分流SFC报文的附加信息。具体地,DP可以使用保存的TTL子TLV 1300保存分流前原始报文的TTL值,使得TTL可以在RP处恢复。TTL限制入口和出口之间的SF访问次数。如果TTL耗尽,则丢弃报文。这是一种安全措施,用于防止由于故障、配置错误或其它原因导致的无限循环或非常大的循环。需要注意的是,在进入分流时重置TTL打开了一个循环的可能性,其中转移转向自身或有两个转移X和Y,其中X转向Y,Y转向X。更复杂的场景也是可能的。然而,通过使用连续的TTL,所有这些情况都是安全的。这种循环将导致元数据量不断增加,从而可能安全地导致报文丢弃或不安全地导致重复分片。因此,建议的操作模式是使用TTL值,该TTL值从原始SFC域入口到最终SFC出口连续递减,包括在整个分流过程中。如果TTL在进入分流时重置,则可以使用保存的TTL子TLV 1300,以便先前TTL可以在分流的RP处恢复。

在所描述的实施例中,保存的TTL子TLV 1300包括子类型字段1302、X位字段1304、子长度字段1306、MBZ字段1308和保存的TTL字段1310。在一个实施例中,子类型字段1302是一个8位无符号整数,其值4赋给保存的TTL子TLV类型。子长度字段1306是2,指示子长度字段1306之后保存的TTL子TLV 1300(以八位字节为单位)的剩余部分的长度。在一个实施例中,将X位字段1304和MBZ字段1308设置为零,并在接收时忽略。MBZ字段1308的存在使得保存的TTL字段1310在4个八位字节的倍数上对齐。保存的TTL字段1310存储分流之前的原始/先前TTL,以便先前TTL可以在RP处恢复。

图14示出了根据本发明实施例的SFC分流过程1400的流程图。SFC分流过程1400可以由SFC中DP处的节点执行。例如,SFC分流过程1400可以由图6中的SF3 614执行或图7中的SF3 714执行。在步骤1402,节点接收SFC报文。在步骤1404,节点根据报文数据确定SFC报文将从SFC的第一SFF重新路由到SFC的第二SFF。例如,节点可以根据SFC报文中的SPI值和SI值确定对特定报文流的SFC报文进行分流。在一些实施例中,节点可以检查SFC报文的内容,而不仅仅是SPI和SI,以确定是否应该分流该SFC报文。第二SFF可以为SFC中添加的新SFF(例如,插入一个新的SFF),也可以是沿SFC报文的SFP的现有SFF(例如,从SFP中分割出一个SFF)。在步骤1406,节点通过修改SFC报文的NSH中的SI来生成修改后的SFC报文,以将SFC报文重新路由到第二SFF。在步骤1408,节点转发修改后的SFC报文。如果节点是与SFF分离的节点或SF,则该节点将SFC报文转发或返回到接收SFC报文的SFF。但是,如果节点/SF与SFF合并或还被配置为SFF,则节点将修改后的SFC报文直接转发到第二SFF(即,SFC报文被分流到的SFF)。在一些实施例中,如果只想跳过SFP中的一些SF,则可能不需要分流。如果节点向SF返回SFC报文的SFF可以处理减小的SI值并将报文转发到适当的SFF,则节点可以简单地将SI减少到下一个SF所需的SI。

图15示出了根据本发明实施例的SFC多路径分流过程1500的流程图。SFC多路径分流过程1500可以由SFC中DP处的节点执行。例如,SFC多路径分流过程1500可以由图5中的SF1 512执行。在步骤1502,节点接收SFC报文。在一个实施例中,从SFF接收SFC报文。在步骤1504,节点根据报文数据确定SFC报文将被分流到SFC的多个并行SFP。例如,节点可以根据报文中SFC报文中的SPI值和SI值或其它值,或根据SFC报文的内容,确定对特定报文流的SFC报文进行分流。

在步骤1506,节点为每个并行SFP生成SFC报文的副本。在步骤1508,节点修改SFC报文的每个副本,以便每个并行SFP转发一个SFC报文的副本。节点还可以将每个SFC报文中的NSH中的SPI和/或SI修改为与RP对应的SPI/SI。此外,节点包括SFC报文中的合并信息,从而使得在RP处合并分流SFC报文。在一个特定实施例中,节点构建RePIn数据结构(如图8中的RePIn VLCH 800)并将RePIn数据结构插入在包含合并信息的每个SFC报文的NSH中。例如,RePIn数据结构可以包括原始SFC报文(即,在被分流之前)的SPI值和SI值、用于标识要合并的SFC报文的报文标识信息(例如,使用图10中的报文标识符特殊子TLV 1000)、用于指示SFC报文的哪些部分沿特定并行SFP被修改的报文范围信息(例如,使用图11中的报文范围修改后的子TLV 1100)、在发生冲突变化时的报文优先级信息(例如,使用图11中的报文范围修改后的子TLV 1100)、保存的元数据(例如,使用图12中的保存的元数据子TLV1200)、保存的TTL(例如,使用图13中的保存的TTL子TLV 1300)、或用于合并来自并行SFP的SFC报文的任何其它信息。

在一些实施例中,如果NSH中存在现有的RePIn数据结构(例如,当从较早的分流中发生分流时),则可以根据以下规则将新的RePIn数据结构插入到NSH中:

如果SFC报文中的初始NSH为MD类型2,则在NSH中任何现有的RePIn数据结构之前插入RePIn数据结构。

如果SFC报文中的初始NSH为MD类型1,这意味着分流中的一个或多个SF可能需要类型1元数据。如果分流中的SF可以处理堆叠NSH,则在初始MD类型1NSH之后插入从初始NSH复制的MD类型2NSH(元数据除外),以保存RePIn数据结构。处理堆叠NSH意味着SF(或其代理)可以通过解析这些堆叠NSH,查找所需的元数据和要操作的有效载荷,如果SF生成报文,则可以使用适当的堆叠NSH创建报文。

在步骤1510,节点将SFC报文发送到每个并行SFP对应的SFF。在一些实施例中,在发送SFC报文之前,节点可以为一个或多个SFC报文设置新的TTL,以限制并行SFP中SFC报文的循环。原始TTL可以在RP处保存和恢复。节点还可以从一个或多个SFC报文中删除任何不必要的保存的元数据或其它数据,以减少并行SFP的报文承载负荷(例如,如果第一SFC报文中的某些数据未在并行SFP中使用,且该数据在另一SFC报文中,则可以从第一SFC报文中删除该数据,因为该数据在RP的另一SFC报文中可用)。节点还可以根据保存的或新的SPI或其它因素,对元数据或SFC报文的其它部分执行其它功能或适当的修改。

图16示出了根据本发明实施例的SFC合并过程1600的流程图;SFC合并过程1600可以由SFC中RP处的节点执行。例如,SFC合并过程1600可以由图5中的SF5 520执行。在一个实施例中,节点用于获知其要执行RP服务的分流报文中的SFC报文SPI值和SI值。当SF接收到SFC报文时,SI会递减;对于RP,这可能会将SI递减到零。

在步骤1602,节点通过并行路径接收多个分流SFC报文。在一个实施例中,节点缓存(即,存储在临时存储器位置中)匹配的分流SFC报文,直到接收到匹配的分流SFC报文集合中的所有匹配的分流SFC报文。在一个实施例中,这种缓冲器的溢出将导致报文丢失,应记录为一个错误。在一个实施例中,等待丢失的分流报文的时间以及在确定分流报文丢失后采取何种措施取决于应用的实现方式。

在步骤1604,节点从多个分流SFC报文中确定匹配的分流SFC报文集合。如果可能,节点可以在不使用RePIn数据结构的情况下确定匹配的分流SFC报文集合。如果不可能,节点从匹配的分流SFC报文集合中的每个分流SFC报文中提取合并信息(例如,包含在RePIn数据结构中的信息)。在一个实施例中,节点查找并删除分流报文中的第一RePIn数据结构(例如,如果初始NSH具有MD类型1,则RePIn数据结构可能在第二堆叠NSH中)。节点使用提取的合并信息(例如,报文标识信息)确定匹配的分流SFC报文集合。

在步骤1606,节点将所述匹配的分流SFC报文集合合并为合并的SFC报文。

在一个实施例中,如果可能,节点将分流SFC报文恢复到分流SFC报文之前的SFP,并在必要的范围内,匹配和合并通过并行路径接收的分流报文,并在不存在RePIn数据结构的情况下正确排序所产生的SFC报文。否则,节点使用从RePIn数据结构中提取的合并信息将所述匹配的分流SFC报文集合合并为合并的SFC报文。

在一个实施例中,节点可以在匹配的分流SFC报文集合中的选择匹配的分流SFC报文修改为合并的SFC报文(即,来自其它分流SFC报文的更改被合并到所选择的分流SFC报文中)。报文的选择可以是任意的,除非节点用于选择特定报文(例如,基于优先级、基于报文大小、报文中的修改量或其它选择因素从特定分流路径中选择)。节点将每个匹配的分流SFC报文中的有效载荷合并到合并的SFC报文中。如果提取的合并信息中存在保存的TTL,则节点将保存的TTL恢复到初始NSH中。在一个实施例中,如果没有保存的TTL,节点可以将从匹配的分流SFC报文集合中选择的最小TTL恢复到合并的SFC报文的初始NSH中。此外,该节点将保存的SPI和保存的SI从分流SFC恢复到合并的SFC报文的初始NSH中。

节点还可以将保存的元数据从分流SFC报文恢复到合并的SFC报文的初始NSH中。在一个实施例中,节点根据以下规则恢复元数据:(1)将从提取的合并信息中保存的任何MD类型2元数据恢复到从中提取该合并信息的NSH中,(2)如果提取的合并信息中存在MD类型1保存的元数据,并且报文中存在初始MD类型1NSH,则用保存的MD类型1元数据替换MD类型1元数据,(3)如果提取的合并信息中存在MD类型1保存的元数据,并且报文中存在初始MD类型2NSH,则在报文中插入新的初始NSH,新的初始NSH是初始MD类型2NSH的副本,但新的初始NSH是带有保存的MD类型1元数据的MD类型1,(4)如果此时报文以MD类型1NSH开始,随后是一个没有元数据的MD类型2NSH,则删除第二NSH。根据应用和实现方式,合并的报文中的剩余元数据可根据其它被合并的报文中的剩余元数据进行使用或更新。

在一个实施例中,为了进行错误检查,节点会比较匹配的分流SFC报文集合中每个匹配的分流SFC报文中的初始NSH中保存的SPI和SI。如果保存的SPI值和SI值与所有匹配的分流SFC报文的对应保存的SPI值和SI值不匹配,节点可能会生成错误(例如,错误日志中的日志错误)。

节点可以根据保存的或新的SPI或其它因素,对元数据或SFC报文的其它部分执行其它功能或适当的修改。

在步骤1608,节点将合并的报文返回或发送到SFF。

图17是根据本发明实施例的节点1700的示意图。节点1700适合于实现本文中描述的所公开实施例。在一个实施例中,节点1700可以是SF节点、SFF节点或用于执行所公开实施例的其它设备。例如,节点1700可用于实现本文公开的DP或RP。

节点1700包括用于接收数据的入端口1710(或输入端口1710)和接收单元(Rx)1720,用于处理所述数据的处理器、逻辑单元或中央处理器(central processing unit,CPU)1730,用于发送所述数据的发送单元(Tx)1740和出端口1750(或输出端口1750)以及用于存储所述数据的存储器1760。节点1700还可以包括与入端口1710、接收单元1720、发送单元1740和出端口1750耦合的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,用作光信号或电信号的出口或入口。处理器1730可以实现为一个或多个CPU芯片、一个或多个核(例如,实现为多核处理器)、一个或多个现场可编程门阵列(field-programmable gate array,FPGA)、一个或多个专用集成电路(application-specific integrated circuit,ASIC)和一个或多个数字信号处理器(digital signalprocessor,DSP)。处理器1730与入端口1710、接收单元1720、发送单元1740、出端口1750和存储器1760进行通信。处理器1730包括路由模块1770。SFC模块1770实现本文描述的公开实施例。例如,SFC模块1770包括指令,所述指令在由处理器1730执行时实现本发明中描述的过程。因此,将SFC模块1770包含在内提供了对节点1700的功能的实质性改进,同时了实现节点1700到不同状态的转换。或者,以存储在存储器1760中并由处理器1730执行的指令来实现SFC模块1770。

存储器1760可以包括一个或多个磁盘、一个或多个磁带机以及一个或多个固态硬盘,并且可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。例如,存储器1760可以是易失性和/或非易失性存储器,并且可以是只读存储器(read-only memory,ROM)、随机存取存储器(random accessmemory,RAM)、三态内容可寻址存储器(ternary content-addressable memory,TCAM)、静态随机存取存储器(static random-access memory,SRAM)和/或任何其它类型的存储器。

虽然本发明提供了若干个实施例,但应当理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。当前的这些示例被认为是说明性的而非限制性的,并且意图不限于本文给出的细节。例如,各种元件或组件可以组合或集成在另一个系统中,或者可以省略或不实现一些特征。

此外,在各种实施例中描述和示出为分立的或单独的技术、系统、子系统和方法,在不背离本发明的范围的情况下,可以与其它系统、组件、技术或方法组合或集成。本领域技术人员可以确定改变、替换和更改的其它示例,并在不脱离本发明的精神和范围的情况下作出改变、替换和更改。

相关技术
  • 卷远程容量收缩方法、装置、设备及可读存储介质
  • 热收缩率测量装置及其基台、玻璃板和热收缩率测量方法
  • 用于将至少一个传感器固定在铁轨上的方法和固定装置
  • 用于制造包括至少一个注射成型的加热轨道的塑料车辆零件的方法
  • 一种基于需求侧的负荷组合优化方法、装置及存储介质
  • 收缩装置、对包装材料收缩到包括至少一个商品的组合上进行优化的方法和收缩介质模块
  • 用于将包装材料收缩到商品或商品组合上的设备
技术分类

06120116515948