一种数据报文的转发方法和设备与流程

文档序号:15521427发布日期:2018-09-25 19:33阅读:297来源:国知局
本申请实施例涉及通信领域,尤其涉及一种数据报文的转发方法和设备。
背景技术
::随着运营商业务种类的增加,为支持更好的业务体验,需要在网络中部署业务路由网络,并提出了一种业务链(servicefunctionchaining,sfc)技术。这种技术通过将多个业务功能链接起来,为灵活的业务处理提供了基础。sfc技术通过业务分类器(serviceclassifier,sc)对业务流进行分类,然后通过业务功能转发器(servicefunctionforwarder,sff)将业务链的数据报文沿预先定义的业务链路径进行转发,并在业务链尾端将报文转发给业务链尾服务器(postservice,ps)。网络业务头(networkserviceheader,nsh)是国际互联网工程任务组(theinternetengineeringtaskforce,ietf)sfc工作组专门为业务链设计的一种扩展报文头格式。业务链上传输的数据报文封装有nsh,nsh中包括该数据报文的服务路径标识(servicepathid,spi)和业务索引(serviceindex,si)。sff中存储有转发表,转发表指示数据报文中的spi和si对应的下一跳设备。sff可以根据该数据报文中的spi和si从转发表中确定该数据报文对应的下一跳设备,并在将该数据报文中的si减一后,将该数据报文发送到下一跳设备。为了实现数据报文在业务链中的转发,现有技术中每条业务链的路径对应的spi流表需要存储在该路径对应的所有sff上,当网络中存在大量的业务链时,会导致sff上的转发表的表项较多,查找大量表项会降低sff的转发效率。技术实现要素:本申请实施例提供一种数据报文的转发方法和设备,用以减少sff上的转发表的表项,提高sff的转发效率。第一方面,本申请实施例提供一种数据报文转发方法,该方法包括:接收业务链的数据报文;其中,数据报文的网络业务头nsh中包括第一业务链路径标识spi以及第一业务索引si;数据报文还包括第二spi;第一spi用于指示第一业务链路径,第二spi用于指示第二业务链路径,第一业务链路径和第二业务链路径至少部分重合。本申请中,第一spi为数据报文当前所在业务链路径的spi,第二spi为sc为数据报文添加的数据报文所属的业务流对应的业务链的spi。根据转发表确定第一spi和第一si对应的转发表项中的下一跳地址以及nsh封装信息;nsh封装信息包括跳转信息和类型标记;类型标记指示根据转发表项转发报文时的操作类型。其中,下一跳地址可以为sf、sff或ps的地址,转发表是业务链控制器根据业务链的部署情况计算并发送给每个转发设备的。根据nsh封装信息为数据报文重新封装nsh;将重新封装nsh的数据报文发送至下一跳地址。本申请实施例中,转发设备每转发一次数据报文,会将该数据报文中的si减1。可选地,接收业务功能sf发送的数据报文;将数据报文中的第一si减一。本申请实施例中,数据报文的nsh中封装了第一spi、si以及第二spi,其中,第一spi指示当前转发该数据报文的第一业务链路径;第二spi指示业务链控制器为该数据报文所在的业务链指定的第二业务链路径,第一业务路径与第二业务路径部分重合。本发明实施例通过将第一业务链路径与第二业务链路径重合的部分由第一spi指示,能够实现转发表中路径信息的复用,从而减少转发表的表项数,进而降低转发表的内存占用量。本申请实施例中类型标记可包括指示的操作类型为合并的类型标记和指示的操作类型为分离的类型标记。若类型标记指示的操作类型为合并,且跳转信息包括目标spi和目标si,根据nsh封装信息为数据报文重新封装nsh,包括:使用目标spi更新nsh中的第一spi;使用目标si更新nsh中的第一si;其中,合并的操作类型还用于指示:数据报文在第二业务链路径上的下一跳地址和在第一业务链路径上的下一跳地址相同。如此,在数据报文在第二业务链路径上的下一跳地址和在第一业务链路径上的下一跳地址相同时,第二业务链路径可复用转发表中的第一业务链路径的表项。若类型标记指示的操作类型为分离,且跳转信息包括目标spi和目标si,且第一spi和第二spi不同,则根据nsh封装信息为数据报文重新封装nsh,包括:获取nsh封装信息中的目标spi和目标si,当目标spi和第二spi相同时,使用目标spi更新nsh中的第一spi;使用目标si更新nsh中的第一si;其中,分离的操作类型还用于指示:数据报文在第二业务链路径上的下一跳地址与数据报文在第一业务链上的下一跳地址不同。如此,在数据报文在第二业务链路径上的下一跳地址和在第一业务链路径上的下一跳地址不时,第二业务链路径和第一业务链路径可分别使用转发表中各自的表项。可选地,第一spi位于数据报文的nsh的spi字段中,第一si位于数据报文的nsh的si字段中,第二spi位于数据报文的nsh的contextheader中。由于要根据第一spi和第一si进行转发,因此经常需访问第一spi和第一si,将第一spi和第一si放入头部可减少访问时延。第二方面,本申请实施例提供一种数据报文转发装置,数据报文转发装置包括存储器、通信接口和处理器,其中:存储器用于存储指令;处理器用于执行存储器存储的指令,并控制通信接口接收或发送数据报文,当处理器执行存储器存储的指令时,数据报文转发装置用于执行上述第一方面或第一方面中任一种方法。第三方面,本申请实施例提供一种数据报文转发装置,用于实现上述第一方面或第一方面的任意实现方式中的方法,该数据转发装置包括相应的功能模块,分别用于实现以上方法中的步骤。第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得该计算机执行第一方面或第一方面的任意可能的实现方式中的方法。第五方面,本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得该计算机执行第一方面或第一方面的任意可能的实现方式中的方法。本申请实施例中,数据报文的nsh中封装了第一spi、si以及第二spi,其中,第一spi指示当前转发该数据报文的第一业务链路径;第二spi指示业务链控制器为该数据报文所在的业务链指定的第二业务链路径,第一业务路径与第二业务路径部分重合。本发明实施例通过将第一业务链路径与第二业务链路径重合的部分由第一spi指示,能够实现转发表中路径信息的复用,从而减少转发表的表项数,进而降低转发表的内存占用量。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。图1为本申请实施例适用的一种业务链系统架构示意图;图1a为本申请实施例中nshproxy处理数据报文的方法流程示意图;图2为本申请实施例提供的一种数据报文转发方法的流程示意图;图2a为本申请实施例提供的一种nsh的结构示意图;图2b为本申请实施例提供的另一种nsh的结构示意图;图3本申请实施例提供的一种sff上的转发表示意图;图4为本申请实施例提供的一种业务链结构示意图;图5为基于图4所示的结构提供的两条尾部重合的业务链路径;图5a-图5c为现有技术中基于图5所示的业务链路径,sff212、sff213和sff214上分别存储的转发表的结构示意图;图5d-图5f为本申请实施例中基于图5所示的业务链,sff212、sff213和sff214上分别存储的转发表的结构示意图;图6为基于图4所示的结构提供的两条首部和尾部均重合的业务链路径;图6a-图6c为本申请实施例中基于图6所示的业务链路径,sff212、sff213和sff214上分别存储的转发表的结构示意图;图7为基于图4所示的结构提供的两条首部重合的业务链路径;图7a-图7c为本申请实施例中基于图7所示的业务链路径,sff212、sff213和sff214上分别存储的转发表的结构示意图;图8为一种数据报文的转发设备的结构示意图;图9为另一种数据报文的转发设备的结构示意图。具体实施例为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。具体实施中,实现端到端业务需要各种业务功能,比如防火墙、网络地址转换服务(nats)和其他特定应用的功能。业务链即实现业务功能(servicefunction,sf)的有序集合以及业务流量的编排技术。图1中示例性示出了本申请实施例适用的一种业务链系统架构示意图。如图1所示,本申请实施例中的业务链架构主要由以下几个关键部件构成。业务链协同层(sfcorchestrator)101:主要完成提供业务链服务所需的基础资源配置,包括sc、sff和服务节点(servicenode,sn)的配置,sf与sff的网络连接协同以及sf的业务策略配置等功能,为业务链特性的统一入口。业务链控制器(sfccontroller)102:实现业务链特性的网络控制功能,包括业务链所需要的叠加网(overlay)网络管理及业务链路径计算和转发表下发等功能,北向提供接口与云管理平台或业务链协同层101对接,南向可通过开源流技术(openflow)或网络配置(netconf)接口与sc、sff和ps对接。sc103:从非sfc网络(non-sfcnetwork)接收数据报文并对报文进行流分类,匹配到对应的业务链后,对数据报文进行封装,将封装后的数据报文转发给业务链的首跳sff104。sc可分外部(outbound)和内部(inbound)两个方向的sc,两个方向的sc可以为同一设备,sc与sff可以部署在同一个设备上。sff104和sff105:负责将由sc引入业务链的数据报文沿预先定义的业务链路径转发,并由sff105在业务链尾端将报文转发给ps;集成网络服务主机(networkservicehost)代理功能,即作为nsh-unaware类型sf的代理对报文进行nsh解封装和封装并更新nsh中的信息。业务功能(servicefunction,sf)实例sf107、sf108、sf109和sf110:为租户所专有,即不同租户不会使用相同的sf实例,sf实例通常为虚拟资源,比如一个vsys实例。从sff接收数据报文并应用业务策略处理接收的数据报文,再将处理后的数据报文返回到sff。sn111和sn112:sf容器,可以是支持物理网络功能(physicalnetworkfunction,pnf)或虚拟网络功能(virtualnetworkfunction,vnf)的网络业务设备,sn可以支持单sf实例或多sf实例模式工作,可以支持虚拟局域网(virtuallocalareanetwork,vlan)或虚拟可扩展局域网(virtualextensiblelocalareanetwork,vxlan)方式接入sff。ps106(postservice):业务链的尾端服务器,即数据报文经过业务链之后要到达的目的设备,ps与sff可以部署在同一个设备上。基于图1所示的业务链架构,对业务链上的数据报文的转发流程进行介绍:第一,sc103从非sfc网络接收数据报文,该数据报文可为vxlan报文、通用路由封装(genericroutingencapsulation,gre)报文或以太网ethernetport,eth)报文,本申请实施例中以该数据报文为vxlan报文举例来说。sc接收到经过vxlan封装的数据报文后,解vxlan封装,并确定数据报文对应的流分类,确定流分类匹配的业务链,然后,对解vxlan封装后的数据报文进行网络业务头(英文:networkserviceheader,nsh)封装,即对解vxlan封装后的数据报文封装nsh,之后对封装nsh的数据报文再次进行vxlan封装(即添加vxlan报文头),之后根据转发表,将进行vxlan封装和nsh封装后的数据报文转发至业务链的首跳sff,即sff104。第二,sff104接收到该进行vxlan封装和nsh封装后的数据报文后,解vxlan封装,解nsh封装,并根据解析得到的nsh中的spi和si查找转发表,确定出spi和si对应的下一跳地址,将数据报文重新进行nsh封装和vxlan封装,之后将进行nsh封装和vxlan封装的数据报文转发至下一跳地址;下一跳地址为sf107的地址。第三,sff104将进行nsh封装和vxlan封装的数据报文转发至sf107;sf107解vxlan封装,解nsh封装,并对得到的数据报文进行处理,将处理后的数据报文再次重新进行nsh封装和vxlan封装,将重新进行nsh封装和vxlan封装数据报文返回至sff104。第四,sff104接收到sf107返回的重新进行nsh封装和vxlan封装数据报文,解vxlan封装,解nsh封装,并对si减一,根据spi和减一后的si查找转发表,确定出下一跳地址,即sf108的地址。经过如上所示的业务链转发流程,该数据报文被转发至ps。具体来说,sff105可根据转发表中的内容,确定出下一跳需要跳至ps,则sff105可以根据原始的数据报文中的目的ip地址查找路由表并将报文转发至ps。具体来说,根据sf对nsh封装的支持情况,我们将不同sf分别称之为支持nsh封装的sf(nsh-awaresf)和不支持nsh封装的sf(nsh-unawaresf)。上述第二和第三个步骤中,是以sf107是支持nsh封装的sf为例进行介绍的,如果sf107为不支持nsh封装的sf时,则sff104与sf107之间需要增加一个nsh代理(proxy)的角色。图1a示例性示出了本申请实施例中nsh代理1205处理数据报文的流程示意图,如图1a所示,对于从不支持nsh的sf1203发往sff1207的数据报文,不支持nsh的sf1203输出的数据报文为未进行nsh封装1204的数据报文,之后经过nsh代理1205进行nsh封装,nsh代理1205传输给sff1207的数据报文为进行nsh封装1206的数据报文,之后由sff1207传输至网络1208;对于从sff1207发往不支持nsh的sf1203的数据报文,sff1207将进行nsh封装1206的数据报文传输给nsh代理1205,nsh代理1205将数据报文的nsh封装移除,将得到的未进行nsh封装1204的数据报文发给不支持nsh的sf1203。如图1a所示,对于从支持nsh的sf1201传输至sff1207的数据报文,支持nsh的sf1201对数据报文进行进行nsh封装1202,之后直接传输给sff1207,由sff1207传输至网络1208;对于从sff1207发往支持nsh的sf1201的数据报文,sff1207直接将进行nsh封装1202的数据报文传输给支持nsh的sf1201。业务链网络中的nsh代理1205是一个逻辑角色,可由sff兼任。我们将sff恢复nsh封装需要的表项称为业务链映射表(sfcmappingtable)。对于nsh-based业务链,sfccontroller向sff和sc下发nsh流表(包括转发表和映射表),以使sff和sc根据nsh流表转发业务链的数据报文,完成业务链的处理。图2示例性示出了本申请实施例提供的一种数据报文转发方法的流程示意图,如图2所示,该方法由转发设备执行,转发设备可为图1中的sff,该方法包括:步骤201,转发设备接收数据报文;其中,所述数据报文的网络业务头nsh中包括第一spi、第一si、以及第二spi;其中所述第一spi用于指示第一业务链路径,所述第二spi用于指示第二业务链路径,所述第一业务链路径和第二业务链路径至少部分重合。其中,所述转发设备可以是从业务分类器sc接收所述数据报文,也可以是从其他转发设备接收所述数据报文。本申请中,第一spi为所述数据报文当前所在业务链路径的spi,所述第二spi为业务分类器sc为所述数据报文添加的所述数据报文所属的业务流对应的业务链的spi。即,当sc收到所述数据报文时,确定所述数据报文对应的业务链,获取该业务链对应的spi,然后将该spi和初始si(例如,255)添加到为所述数据报文封装的nsh中。其中,确定所述数据报文对应的业务链,具体可以是,根据预设的流规则,获取所述数据报文所属的业务流的标识,根据获取的业务流的标识查找sc上的流映射表,得到该业务流的标识对应的业务链路径的标识。该流映射表的每个表项包括业务流的标识与业务链路径的标识对应关系。本申请实施例中,转发设备每转发一次数据报文,会将该数据报文中的si减1。步骤202,转发设备根据转发表确定第一spi和第一si对应的转发表项中的下一跳地址以及nsh封装信息;nsh封装信息包括跳转信息和类型标记;类型标记指示根据转发表项转发报文时的操作类型。其中,所述下一跳地址可以为sf、sff或ps的地址,所述转发表是业务链控制器根据业务链的部署情况计算并发送给每个转发设备的。步骤203,转发设备根据nsh封装信息为数据报文重新封装nsh。步骤204,转发设备将重新封装nsh的数据报文发送至下一跳地址。在步骤204中,在该方案中,如果下一跳地址为不支持nsh封装的sf,则转发设备将重新封装nsh的数据报文发送至下一跳地址,具体来说,转发设备中包括nsh代理的功能,转发设备将重新封装nsh的数据报文中的nsh删除,之后将数据报文发送至下一跳地址。如果下一跳地址为支持nsh封装的sf,则转发设备将封装nsh的数据报文直接发送至下一跳地址。本申请实施例中,数据报文的nsh中封装了第一spi、si以及第二spi,其中,第一spi指示当前转发该数据报文的第一业务链路径;第二spi指示业务链控制器为该数据报文所在的业务链指定的第二业务链路径,第一业务路径与第二业务路径部分重合。本发明实施例通过将第一业务链路径与第二业务链路径重合的部分由第一spi指示,能够实现转发表中路径信息的复用,从而减少转发表的表项数,进而降低转发表的内存占用量。本申请实施例提供的进行nsh封装后的数据报文可承载于多种报文中。比如将nsh承载于vxlan、gre和eth等多种叠加(overlay)封装中。nsh目前有两种封装格式。图2a和图2b分别示出了本申请实施例提供的两种nsh的结构示意图。如图2a所示,nsh中包括协议版本信息和长度信息2100,以及格式指示位2101,比如图2a中该nsh的格式指示位2101为0x1,则图2a中的nsh中除了包括下一个协议2102字段,以及spi2103字段和业务索引si2104字段之后,还包括多个固定长度的上下文头,图2a中示出了上下文头-2108。在nsh中,第一spi和第一si可放置于图2a中的spi2103和si2104中,而第二spi可放置于一个固定长度的上下文头中。由于nsh中有下一个协议(nextprotocol)2102字段,用于承载数据报文的协议,且nsh可以通过下一个协议(nextprotocol)字段承载二层用户报文、三层用户报文,较为灵活。如图2b所示,在nsh的另一种封装格式中,nsh中包括协议版本信息和长度信息2200,以及格式指示位2201,比如图2b中该nsh的格式指示位2201为0x2,图2a中的nsh中除了包括下一个协议2202字段,以及spi2203字段和业务索引si2204字段之后,还包括可变长度的上下文头2205。在nsh中,第一spi和第一si可放置于图2b中的spi2203和si2204中,而第二spi可放置于可变长度的上下文头2205中。在sc上根据流分类规则确定数据报文对应的业务流,并确定该业务流对应的业务链,根据该业务流对应的业务链对数据报文进行nsh封装。sff接收sfc发送的转发表,并根据该转发表转发接收的数据报文。具体地,sff收到数据报文时识别数据报文中nsh头中的第一spi和第一si,根据该第一spi和第一si查找转发表并将该nsh封装的数据报文转发到该转发表中指定的下一跳(sf或sff)。图3示例性示出了一种sff上的转发表。如图3所示,转发表的每个表项包括spi,si,下一跳地址、传输协议和类型标记(flag)。传输协议指向下一跳设备发送数据报文时,该报文应该采用该传输协议对应的封装格式进行封装。转发表中的传输协议在本申请中的用途与现有技术相同。故在后续的描述中,本申请的转发表中不再出现转发协议相关的内容。flag用于定义下一跳的类型。其中,flag指示的下一跳的类型可包括空信息(na)和普通路由转发(goto)两种类型。flag指示的类型为na时,表示数据报文沿着业务链路径正常转发,flag指示的类型为goto时,表示该sff为业务链的最后一跳,下一跳直接跳转到ps。基于图3所示的转发表,本申请实施例所提供的方案中flag还可以指示另外两种类型,分别为合并(英文:combine)和分离(英文:separate)。类型标记指示的操作类型为合并,且跳转信息包括目标spi和目标si,根据nsh封装信息为数据报文重新封装nsh,包括:使用目标spi更新nsh中的第一spi;使用目标si更新nsh中的第一si;其中,合并的操作类型还用于指示:数据报文在第二业务链路径上的下一跳地址和在第一业务链路径上的下一跳地址相同。类型标记指示的操作类型为分离,且跳转信息包括目标spi和目标si,且第一spi和第二spi不同,则根据nsh封装信息为数据报文重新封装nsh,包括:获取nsh封装信息中的目标spi和目标si,当目标spi和第二spi相同时,使用目标spi更新nsh中的第一spi;使用目标si更新nsh中的第一si;其中,分离的操作类型还用于指示:数据报文在第二业务链路径上的下一跳地址与数据报文在第一业务链上的下一跳地址不同。可选地,若nsh封装信息包括空信息或普通路由转发信息,则直接将数据报文转发至下一跳地址。下面列举几个具体示例,用于详细说明本申请实施例所提供的技术方案。基于上述内容,图4示例性示出了本申请实施例提供的一种业务链示意图。图4中,业务功能分类器sc211,业务功能转发器sff212,sff213,sff214和业务链尾服务器ps215可以组成多条业务链。假设sff212连接的业务功能sf216,sff213连接的业务能够sf218和sf219以及sff214连接的sf220和sf221均支持nsh封装。如图5所示,基于图4所示的业务链,假设存在两条尾部重合的业务链路径。从图5可以看出,spi0和spi1这两条业务链路径只有起始路径部分不同,从sff213直到结束两条路径均相同(相同的部分以粗体显示)。为了体现本申请实施例的有益效果,本申请实施例中通过图5a,图5b和图5c分别示例性示出当存在spi0和spi1两条业务链路径时,现有技术中sff212、sff213和sff214所存储的转发表的结构示意图。为了兼容现有技术,nsh封装信息包括图3所示的类型标记flag。通过图5a至图5c可以看出,虽然spi0和spi1的两条业务链路径只有起始路径部分不同,但从sff213直到结束两条路径均相同,即图5b和图5c中spi0和spi1的路径均相同,但是图5b和图5c中仍然分别存储了spi0和spi1的路径,造成转发表表项较多的问题。应用本申请所提供的方案,为了兼容现有技术的方案,现有技术中nsh封装信息包括flag,本申请实施例中在nsh封装信息中增加context,context用于存储跳转信息,flag中用于存储类型标记。应用本申请实施例提供的方案生成的转发表如图5d、图5e和图5f所示。可选地,还可设置第二si,第二si也放置于上下文头contextheader中。下述示例中图5d至图5f中以包括第二si为例进行示例。由于sff212既是spi0的第一个sff,也是spi1的第一个sff,因此,sfc为sff212计算的转发表既包括spi0对应的转发表项,也包括spi1对应的转发表项。如图5d所示,第一spi为0,第一si为255的数据报文所对应的下一跳为sf216的ip地址{1.1.1.1},第一spi为0,第一si为254的数据报文所对应的下一跳为sff213的ip地址{10.1.2.1};第一spi为1,第一si为255的数据报文所对应的下一跳为sf2173的ip地址{1.1.2.1};由于图5中的两条路径在sff213处开始重合,因此,第一spi为1,第一si为254的数据报文在到达sff213后,可以沿着spi0的路径转发,其对应的转发表项的类型标记指示后续的操作类型为合并,跳转信息为{目标spi:0,目标si:254}。在由于spi1的路径在sff213上已经合并,则图5e的sff213的转发表中,只有spi0对应的转发表项。具体来说:第一spi为0,第一si为254的数据报文所对应的下一跳为sf218的ip地址{1.1.3.1},在将该数据报文转发给下一跳时,将该第一si减一,第二si减一。该数据报文中信息更新为:第一spi为0,第一si为253;第二spi为0,第二si为253。第一spi为0,第一si为253的数据报文所对应的下一跳为sf219的ip地址{1.1.4.1},在将该数据报文转发给下一跳时,将该第一si减一,第二si减一。该数据报文中信息更新为:第一spi为0,第一si为252;第二spi为0,第二si为252。第一spi为0,第一si为252的数据报文所对应的下一跳为sff214的ip地址{10.1.3.1}。由于spi0和spi1在sff214上仍然是合并的,则图5f的sff214的转发表中,只有spi0对应的转发表项。在图5f中,第一spi为0,第一si为252的数据报文所对应的下一跳为sf220的ip地址{1.1.5.1},在将该数据报文转发给下一跳时,将该第一si减一,第二si减一。该数据报文中信息更新为:第一spi为0,第一si为251;第二spi为0,第二si为251。第一spi为0,第一si为251的数据报文所对应的下一跳为vrfn(sfc),则该数据报文被直接发送给将该数据报文发送给spi0的ps,本申请实施例中,图5至图7中vrfn(sfc)表示最后一跳。也就是说,本申请实施例中,由于在sff212中,将spi1的nsh封装信息中将第一spi和第一si更新为spi:0,si:254,因此后续在图5e和图5f中无需单独存储spi1的路径,spi1的数据报文直接走spi0的路径即可,可见,应用本申请实施例所提供的方案,重合路径由第一spi指示,能够实现转发表中路径信息的复用,从而减少转发表的表项数,进而降低转发表的内存占用量。示例二假设sf节点均支持nsh封装,如图6所示,存在两条头部和尾部重合,但中间部分不重合的业务链路径。从图6中的rsp可以看出,spi2和spi3的两条业务链路径只有中间路径部分不同(相同的部分以粗体显示)。现有技术中,即使两条路径由重合,sff中存储的转发表中也会对应存储每条路径,如图5a-5c所示会造成转发表表项较多的问题。基于图6所示的业务链路径,sfc为sff212,sff213和sff214生成的转发表分别如图6a、图6b和图6c所示。图6a至图6c中完整记载了spi2的路径,在此不再赘述,下面结合图6a至图6c对spi3进行详细说明:在图6所示的业务路径下,sff212收到第一spi为2,第一spi为254的数据报文后,查找到对应的转发表中的类型标记指示的操作类型为分离,跳转信息不为空,确定该数据报文需要转发到另一业务链路径上,则根据跳转信息{目标spi:3,目标si:254}修改该数据报文中的第一spi为3,修改该数据报文中的第一si为254,并根据修改后的第一spi和第一si转发该修改后的数据报文。根据图6b的sff213的转发表,spi3的数据报文中第一spi为3,第一si为254时所对应的下一跳为sf219的ip地址{1.1.4.1},在将该数据报文转发给下一跳时,将该第一si减一。该数据报文中的信息更新为:第一spi为3,第一si为253;第二spi为3。并且,该第一spi为3,第一si为253,第二spi为3的数据报文所对应的下一跳为sff214的ip地址{10.1.3.1}。对应的nsh封装信息中类型标记指示的操作类型为合并,,且目标spi信息为spi2,目标si信息为si253。使用目标spi信息更新nsh中的第一spi;使用目标si信息更新nsh中的第一si。更新后spi3的数据报文中:第一spi为2,第一si为253,第二spi为3。根据图6c的sff214的转发表,spi3的数据报文中第一spi为2,第一si为253时所对应的下一跳为sf220的ip地址{1.1.5.1},在将该数据报文转发给下一跳时,将该第一si减一。spi3的数据报文中信息更新为:第一spi为2,第一si为252;第二spi为3。由于第一spi为2,第一si为252的数据报文所对应的下一跳为vrfn(sfc),则该数据报文被直接发送给spi3的ps。也就是说,本申请实施例中,sc对spi3的数据报文进行nsh封装时,将第一spi封装为spi2,将第一si封装为si255,因此,在图6a的转发表中无需存储spi3的si为255时对应的转发表项,sff212在转发spi3的数据报文时,复用spi2的转发表项即可,进一步,由于在图6a中根据操作类型为分离的类型标记,将spi3的si254的数据报文nsh中的第一si还原为spi3,将si修改为si254,因此根据图6b中sff213的转发表,spi2和spi3的数据报文可以走各自的路径,进一步,由于在图6b中,根据操作类型为合并的类型标记,将第一spi修改为spi2,将第一si修改为si253,因此,在图6c中,无需存储spi3的路径信息,仅仅复用spi2的路径信息即可转发spi3的数据报文。可见,重合路径由第一spi指示,能够实现转发表中路径信息的复用,从而减少转发表的表项数,进而降低转发表的内存占用量。示例三假设sf节点均支持nsh封装,如图7所示,在图4所示的结构中可能存在两条首部重合的业务链路径。从图7中的rsp可以看出,spi4和spi5的两条业务链路径只有尾部路径部分不同(相同的部分以粗体显示)。现有技术中,即使两条路径由重合,sff中存储的转发表中也会对应存储每条路径,如示例一种所示会造成转发表表项较多的问题。基于图7所示的业务链路径,sfc为sff212,sff213和sff214生成的转发表分别如图7a、图7b和图7c所示。图7a至图7c中完整记载了spi4的路径,在此不再赘述,下面结合图7a至图7c对spi5进行详细说明:根据图7a的sff212的转发表,由于spi5和spi4的前半部分相同,因此sc对spi5的数据报文进行nsh封装后,spi5的数据报文中第一spi为4,第一si为255,第二spi为5。并且,该数据报文对应的下一跳为sf216的ip地址{1.1.1.1},在将该数据报文转发给下一跳时,将该第一si减一。该数据报文的信息更新为:第一spi为4,第一si为254;第二spi为5。并且,第一spi为4,第一si为254的该数据报文所对应的下一跳为sff213的ip地址{10.1.2.1}。根据图7b的sff213的转发表,spi5的数据报文中第一spi为4,第一si为254时所对应的下一跳为sf218的ip地址{1.1.3.1},在将该数据报文转发给下一跳时,将该第一si减一。该数据报文中的信息更新为:第一spi为4,第一si为253;第二spi为5。该第一spi为4,第一si为253的数据报文所对应的下一跳为sf219的ip地址{1.1.4.1}。在将该数据报文转发给下一跳时,将该第一si减一。该数据报文中信息更新为:第一spi为4,第一si为252;第二spi为5。该第一spi为4,第一si为252的数据报文所对应的下一跳为sff214的ip地址{10.1.3.1}。对应的nsh封装信息中类型标记指示的操作类型为分离,由于该数据报文的第一spi和第二spi不同,且第二spi与目标spi相同,则:使用目标spi更新nsh中的第一spi,使用目标si更新nsh中的第一si。更新后spi5的数据报文中:第一spi为5,第一si为252,第二spi为5,第一si为252。该第一spi为5,第一si为252的数据报文对应的下一跳为sf220的ip地址{1.1.5.1},在将该数据报文转发给下一跳时,将该第一si减一。该数据报文中的信息更新为:第一spi为5,第一si为251;第二spi为5。由于spi5的数据报文中第一spi为5,第一si为251时所对应的下一跳为vrfn(sfc),则该数据报文被直接发送给spi5的ps。也就是说,本申请实施例中,sc对spi5的数据报文进行nsh封装时,将第一spi封装为spi4,将第一si封装为si255,因此,在图7a和图7b的转发表中无需存储spi5的si255至si253的信息,复用spi4的信息即可,进一步,由于在图7b中根据所指示的操作类型为分离的类型标记,将spi5的si252的数据报文外部的第一si还原为spi5,将si还原为si252,因此在图7c中sff214的转发表中spi4和spi5可以走各自的路径。可见,应用本申请实施例所提供的方案,重合路径由第一spi指示,能够实现转发表中路径信息的复用,从而减少转发表的表项数,进而降低转发表的内存占用量。可选地,本申请实施例中可通过sfc控制器的根据客户的业务功能路径(servicefunctionpath,sfp)生成rsp路径。从已存在的多条rsp路径中查询出重合路径最长的至少两条rsp,根据至少两条rsp向对应的sff下发转发流表。具体来说分为以下几种情况:第一种情况,尾部重合的至少两条业务链路径:重合路径的前一个sff上的转发流表中:尾部重合的至少两条业务链路径中的除了目标业务链路之外的每条业务链路的spi和si对应的nsh封装信息中类型标记指示的操作类型设置为合并,并增加目标spi和目标si;目标spi和目标si即为需要切换到的业务链路的spi和si。第二种情况,首端和尾部重合的至少两条业务链路径:首端重合路径的最后一个sff上的转发流表中:首端和尾部重合的至少两条业务链路径中的目标业务链路的spi和si对应的nsh封装信息中类型标记指示的操作类型设置为分离;尾部重合路径的前一个sff上的转发流表中:首端和尾部重合的至少两条业务链路径中的除了目标业务链路之外的每条业务链路的spi和si对应的nsh封装信息中类型标记指示的操作类型设置为合并,并增加目标spi和目标si;目标spi和目标si即为需要切换到的业务链路的spi和si。第三种情况,首端重合的至少两条业务链路径,首端重合路径的最后一个sff上的转发流表中:首端和尾部重合的至少两条业务链路径中的目标业务链路的spi和si对应的nsh封装信息中类型标记指示的操作类型设置为分离。本申请实施例中,在存在大量重合业务链路径的场景下,复用现有业务链转发表(forwardingtable),减少业务链路径的所有sff节点的转发表项的数量,sff可以快速匹配转发表转发,提升了业务链设备的转发性能,降低了设备成本。另外,本申请实施例中通过扩展nsh还可以在里面携带其他业务信息,所有sff节点可以共享携带业务的信息去扩展业务。基于相同构思,本申请提供一种数据报文的转发设备800,用于执行上述方法流程。图8为本申请提供的一种数据报文的转发设备的结构示意图。该转发设备800包括接收单元801、处理单元802和发送单元803。本申请实施例中的接收单元801,用于接收业务链的数据报文。其中,数据报文的nsh中包括第一spi以及第一si;数据报文还包括第二spi;第一spi用于指示第一业务链路径,第二spi用于指示第二业务链路径,第一业务链路径和第二业务链路径至少部分重合。本申请中,第一spi为数据报文当前所在业务链路径的spi,第二spi为sc为数据报文添加的数据报文所属的业务流对应的业务链的spi。处理单元802,用于根据转发表确定第一spi和第一si对应的转发表项中的下一跳地址以及nsh封装信息;根据nsh封装信息为数据报文重新封装nsh;nsh封装信息包括跳转信息和类型标记;类型标记指示根据转发表项转发报文时的操作类型。其中,下一跳地址可以为sf、sff或ps的地址,转发表是业务链控制器根据业务链的部署情况计算并发送给每个转发设备的。发送单元803,用于将重新封装nsh的数据报文发送至下一跳地址。本申请实施例中,转发设备每转发一次数据报文,会将该数据报文中的si减1。可选地,接收单元801,具体用于:接收业务功能sf发送的数据报文;处理单元802,还用于:若通过接收单元801接收业务功能sf发送的数据报文,则将数据报文中的第一si减一。本申请实施例中,数据报文的nsh中封装了第一spi、si以及第二spi,其中,第一spi指示当前转发该数据报文的第一业务链路径;第二spi指示业务链控制器为该数据报文所在的业务链指定的第二业务链路径,第一业务路径与第二业务路径部分重合。本发明实施例通过将第一业务链路径与第二业务链路径重合的部分由第一spi指示,能够实现转发表中路径信息的复用,从而减少转发表的表项数,进而降低转发表的内存占用量。本申请实施例中类型标记可包括指示的操作类型为合并的类型标记和指示的操作类型为分离的类型标记。若类型标记指示的操作类型为合并,且跳转信息包括目标spi和目标si,处理单元802,用于:使用目标spi更新nsh中的第一spi;使用目标si更新nsh中的第一si;其中,合并的操作类型还用于指示:数据报文在第二业务链路径上的下一跳地址和在第一业务链路径上的下一跳地址相同。若类型标记指示的操作类型为分离,且跳转信息包括目标spi和目标si,且第一spi和第二spi不同,则处理单元802,用于:获取nsh封装信息中的目标spi和目标si,当目标spi和第二spi相同时,使用目标spi更新nsh中的第一spi;使用目标si更新nsh中的第一si;其中,分离的操作类型还用于指示:数据报文在第二业务链路径上的下一跳地址与数据报文在第一业务链上的下一跳地址不同。上述两种类型标记的具体示例参见上述实施例的描述,在此不再赘述。可选地,第一spi位于数据报文的nsh的spi字段中,第一si位于数据报文的nsh的si字段中,第二spi位于数据报文的nsh的contextheader中。由于要根据第一spi和第一si进行转发,因此经常需访问第一spi和第一si,将第一spi和第一si放入头部可减少访问时延。应理解,以上各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。本申请实施例中,接收单元801和发送单元803可以由通信接口实现,处理单元802可以由处理器实现。基于相同构思,本申请提供一种数据报文的转发设备900,用于执行上述方法流程。图9为本申请提供的一种数据报文的转发设备的结构示意图。该转发设备900包括处理器901、存储器903、通信接口902;其中,处理器901、存储器903和通信接口902通过总线904相互连接。总线904可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器903可以包括易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,简称ram);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flashmemory),硬盘(harddiskdrive,简称hdd)或固态硬盘(solid-statedrive,简称ssd);存储器410还可以包括上述种类的存储器的组合。通信接口902可以为有线通信接入口,无线通信接口或其组合,其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为wlan接口。处理器901可以是中央处理器(centralprocessingunit,简称cpu),网络处理器(networkprocessor,简称np)或者cpu和np的组合。处理器901还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(转发设备plication-specificintegratedcircuit,简称asic),可编程逻辑器件(programmablelogicdevice,简称pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,简称cpld),现场可编程逻辑门阵列(field-programmablegatearray,简称fpga),通用阵列逻辑(genericarraylogic,简称gal)或其任意组合。可选地,存储器903还可以用于存储程序指令,处理器901调用该存储器903中存储的程序指令,可以执行图2所示实施例中的一个或多个步骤,或其中可选的实施方式,使得转发设备900实现上述方法中转发设备的功能。本申请实施例中处理器901,用于根据转发表确定第一spi和第一si对应的转发表项中的下一跳地址以及nsh封装信息;根据nsh封装信息为数据报文重新封装nsh;nsh封装信息包括跳转信息和类型标记;类型标记指示根据转发表项转发报文时的操作类型。其中,下一跳地址可以为sf、sff或ps的地址,转发表是业务链控制器根据业务链的部署情况计算并发送给每个转发设备的。通信接口902,用于将重新封装nsh的数据报文发送至下一跳地址。本申请实施例中,转发设备每转发一次数据报文,会将该数据报文中的si减1。可选地,处理器901,还用于:若通过通信接口902接收业务功能sf发送的数据报文,则将数据报文中的第一si减一本申请实施例中通信接口902,用于接收业务链的数据报文.其中,数据报文的nsh中包括第一spi以及第一si;数据报文还包括第二spi;第一spi用于指示第一业务链路径,第二spi用于指示第二业务链路径,第一业务链路径和第二业务链路径至少部分重合。本申请中,第一spi为数据报文当前所在业务链路径的spi,第二spi为sc为数据报文添加的数据报文所属的业务流对应的业务链的spi。可选地,通信接口902,用于:接收业务功能sf发送的数据报文。本申请实施例中,数据报文的nsh中封装了第一spi、si以及第二spi,其中,第一spi指示当前转发该数据报文的第一业务链路径;第二spi指示业务链控制器为该数据报文所在的业务链指定的第二业务链路径,第一业务路径与第二业务路径部分重合。本发明实施例通过将第一业务链路径与第二业务链路径重合的部分由第一spi指示,能够实现转发表中路径信息的复用,从而减少转发表的表项数,进而降低转发表的内存占用量。本申请实施例中类型标记可包括指示的操作类型为合并的类型标记和指示的操作类型为分离的类型标记。若类型标记指示的操作类型为合并,且跳转信息包括目标spi和目标si,处理器901,用于:使用目标spi更新nsh中的第一spi;使用目标si更新nsh中的第一si;其中,合并的操作类型还用于指示:数据报文在第二业务链路径上的下一跳地址和在第一业务链路径上的下一跳地址相同。若类型标记指示的操作类型为分离,且跳转信息包括目标spi和目标si,且第一spi和第二spi不同,则处理器901,用于:获取nsh封装信息中的目标spi和目标si,当目标spi和第二spi相同时,使用目标spi更新nsh中的第一spi;使用目标si更新nsh中的第一si;其中,分离的操作类型还用于指示:数据报文在第二业务链路径上的下一跳地址与数据报文在第一业务链上的下一跳地址不同。上述两种类型标记的具体示例参见上述实施例的描述,在此不再赘述。可选地,第一spi位于数据报文的nsh的spi字段中,第一si位于数据报文的nsh的si字段中,第二spi位于数据报文的nsh的contextheader中。由于要根据第一spi和第一si进行转发,因此经常需访问第一spi和第一si,将第一spi和第一si放入头部可减少访问时延。本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1