标签封装方法及装置与流程

文档序号:11410848阅读:342来源:国知局
标签封装方法及装置与流程

本申请涉及网络通信技术领域,特别涉及一种标签封装方法及装置。



背景技术:

mpls(multiprotocollabelswitching,多协议标签交换)是一种应用比较广泛的骨干网技术。mpls在无连接的ip(internetprotocol,因特网协议)网络上引入面向连接的标签交换概念,将第三层(layer3)路由技术和第二层(layer2)交换技术相结合,充分发挥了ip路由的灵活性和二层交换的简洁性。

在mpls网络中,在接收到报文后,lsr(labelswitchingrouter,标签交换路由器)中的转发芯片会通过查表确定对应的fec_next_hop(转发等价类下一跳)信息,然后,通过fec_next_hop信息获取encap_db表项中包含的出标签(outlabel),将该出标签封装到该报文中后转发出去。

在现有技术中,某些转发芯片在报文中封装的标签数量是有限的,最多只能封装4层标签,从而无法按照实际组网的需求进行更多层标签的封装,应用范围受限。具体的封装过程如下:

转发芯片确定出待转发报文的fec_next_hop信息后,从fec_next_hop信息中获取出端口的标识(id)和第一级encap_db(封装数据库)表项的索引index1_1,通过索引index1_1查找第一级encap_db表项并从该表项中获取2个标签值和第二级encap_db表项的索引index1_2,通过索引index1_2查找第二级encap_db表项并从该表项中获取2个标签值,从而最终获取到4个标签值,这4个标签值即为待转发报文的出标签的标签值。将携带这些标签值的标签封装到待转发报文中后,将封装得到的标签封装报文从该出端口上转发出去。

可见,在此种转发芯片中,fec_next_hop信息中的encap_db表项可以采用指针索引形式进行级联,但是级联次数有限,只能级联2次,而每个encap_db表项中只能包含2个标签值,因此,最多只能在报文中封装4层标签。



技术实现要素:

有鉴于此,本申请提供一种标签封装方法及装置。

具体地,本申请是通过如下技术方案实现的:

一方面,提供了一种标签封装方法,该方法应用于标签交换转发设备中的转发芯片,该方法包括:

确定待转发报文对应的第一级fec_next_hop信息、以及与第一级fec_next_hop信息级联的第二级fec_next_hop信息,其中,第二级fec_next_hop信息中包含出端口标识和第一级encap_db表项的索引;

通过第二级fec_next_hop信息,查找第一级encap_db表项、以及与第一级encap_db表项级联的第二级encap_db表项;

从第一级fec_next_hop信息、第一级encap_db表项、以及第二级encap_db表项中获取附加信息和原有标签值,得到一个以上附加信息和一个以上原有标签值,其中,第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中的一个或两个以上包含附加信息,第一级encap_db表项和第二级encap_db表项中包含原有标签值;

将携带原有标签值的原有标签封装到待转发报文中得到标准标签封装报文;

将每个附加信息作为一个新增标签的标签值封装到标准标签封装报文中,得到扩展标签封装报文。

另一方面,还提供了一种标签封装装置,该装置应用于标签交换转发设备中的转发芯片上,该装置包括:

查找单元,用于确定待转发报文对应的第一级fec_next_hop信息、以及与第一级fec_next_hop信息级联的第二级fec_next_hop信息,其中,第二级fec_next_hop信息中包含出端口标识和第一级encap_db表项的索引;通过第二级fec_next_hop信息,查找第一级encap_db表项、以及与第一级encap_db表项级联的第二级encap_db表项;

获取单元,用于从第一级fec_next_hop信息、第一级encap_db表项、以及第二级encap_db表项中获取附加信息和原有标签值,得到一个以上附加信息和一个以上原有标签值,其中,第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中的一个或两个以上包含附加信息,第一级encap_db表项和第二级encap_db表项中包含原有标签值;

封装单元,用于将携带原有标签值的原有标签封装到待转发报文中得到标准标签封装报文;将每个附加信息作为一个新增标签的标签值封装到标准标签封装报文中,得到扩展标签封装报文。

通过本申请的以上技术方案,转发芯片可以在报文中封装更多层的标签,最多可以封装7层标签,从而可以按照实际组网的需求进行更多层标签的封装,扩大了应用范围。

附图说明

图1是本申请实施例示出的标签封装方法的流程图;

图2是本申请实施例示出的确定第一级fec_next_hop信息和第二级fec_next_hop信息的一种示意图;

图3是本申请实施例示出的确定第一级fec_next_hop信息和第二级fec_next_hop信息的另一种示意图;

图4是本申请实施例示出的查找第一级encap_db表项和第二级encap_db表项的示意图;

图5是本申请实施例示出的标签格式示意图;

图6是本申请实施例示出的扩展标签封装报文中的7层标签的结构示意图;

图7是本申请实施例示出的标签封装装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

在现有技术中,lsr中的交换芯片最多只能在待转发报文中封装4层标签,从而无法按照实际组网的需求进行更多层标签的封装,应用范围受限。为了解决上述问题,本申请以下实施例中提供了一种标签封装方法,以及一种可以应用该方法的装置。

本申请实施例的标签封装方法可以由标签交换转发设备中的转发芯片来执行,上述标签交换转发设备例如可以是lsr等具有标签分发和交换能力的转发设备。目前,标准的转发芯片可以实现fec_next_hop信息级联,但是,受到芯片硬件资源的限制,fec_next_hop信息的级联次数有限,只能级联两次,这样,本申请实施例中可以利用上述fec_next_hop信息级联的特点,当fec_next_hop信息级联时,第一级fec_next_hop信息中包括第二级fec_next_hop信息的索引,即第一级fec_next_hop信息指向第二级fec_next_hop信息,而将出端口标识和第一级encap_db表项的索引携带在第二级fec_next_hop信息中,此时,第一级fec_next_hop信息中可以提供20比特的保留位用于携带附加信息。

另外,现有的第一级encap_db表项和第二级encap_db表项中也可以提供20比特的保留位用于携带附加信息。

在实际实施过程中,附加信息的具体值可以由用户进行配置,本申请实施例中对此不做限定。在本申请实施例中,可以在第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中的任意一个中携带附加信息,也可以这三者中的任意两个中携带附加信息,或者还可以在这三者中均携带附加信息。

基于此,本申请实施例的标签封装方法中包括:确定待转发报文对应的第一级fec_next_hop信息、以及与第一级fec_next_hop信息级联的第二级fec_next_hop信息,其中,第二级fec_next_hop信息中包含出端口标识和第一级encap_db表项的索引;通过第二级fec_next_hop信息,查找第一级encap_db表项、以及与第一级encap_db表项级联的第二级encap_db表项;从第一级fec_next_hop信息、第一级encap_db表项、以及第二级encap_db表项中获取附加信息和原有标签值,得到一个以上附加信息和一个以上原有标签值,其中,第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中的一个或两个以上包含附加信息,第一级encap_db表项和第二级encap_db表项中包含原有标签值;将携带原有标签值的原有标签封装到待转发报文中得到标准标签封装报文;将每个附加信息作为一个新增标签的标签值封装到标准标签封装报文中,得到扩展标签封装报文。

下面以一个具体实例对上述标签封装方法进行详细说明。标准转发芯片的内部功能可以分为:固定逻辑、可配置逻辑、以及可编程逻辑。在现有技术中,由固定逻辑和可配置逻辑来完成标签封装过程,可编程逻辑无需参与该过程。本申请实施例中,为了能够在第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中的一个或多个中携带附加信息,并且,后续,能够将每个附加信息作为一个新增标签的标签值封装到标准标签封装报文中,可以通过可配置逻辑和可编程逻辑实现以下3点:

(1)通过可配置逻辑实现fec_next_hop信息的级联,第一级fec_next_hop信息中包括:20比特的附加信息和第二级fec_next_hop信息的索引;第二级fec_next_hop信息中包括:出端口标识和第一级encap_db表项的索引。

(2)通过可配置逻辑,在第一级encap_db表项和第二级encap_db表项中分别携带20比特的附加信息,这样,每一级encap_db表项中除了携带原有标签值外,还可以携带附加信息。

(3)通过可编程逻辑,可以将每个附加信息作为一个新增标签的标签值封装到标准标签封装报文中,其中,标准标签封装报文是按照现有技术封装得到的报文,标准标签封装报文中最多携带4层原有标签。

下面以第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中均包含附加信息为例进行说明。

如图1所示,本申请实施例的转发芯片执行的标签封装方法包括以下步骤:

步骤s101,确定待转发报文对应的第一级fec_next_hop信息、以及与第一级fec_next_hop信息级联的第二级fec_next_hop信息;

其中,第一级fec_next_hop信息中包括:20比特的附加信息1000和第二级fec_next_hop信息的索引index2_2;第二级fec_next_hop信息中包括:出端口标识port1和第一级encap_db表项的索引index3_1。

具体的,如图2所示,当待转发报文是ip报文时,根据待转发报文的目的ip地址,在fib(forwardinginformationbase,转发信息库)表中查找第一级fec_next_hop信息的索引index2_1,通过该索引index2_1查找第一级fec_next_hop信息;通过第一级fec_next_hop信息中包含的第二级fec_next_hop信息的索引index2_2,查找第二级fec_next_hop信息。

或者,如图3所示,当待转发报文是标签封装报文(例如,mpls报文)时,根据待转发报文中携带的标签,在lfib(labelforwardinginformationbase,标签转发信息库)表中查找第一级fec_next_hop信息的索引index2_1,通过该索引index2_1查找第一级fec_next_hop信息;通过第一级fec_next_hop信息中包含的第二级fec_next_hop信息的索引index2_2,查找第二级fec_next_hop信息。

步骤s102,通过第二级fec_next_hop信息,查找第一级encap_db表项、以及与第一级encap_db表项级联的第二级encap_db表项;

具体的,如图4所示,从第二级fec_next_hop信息中获取第一级encap_db表项的索引index3_1,通过该索引index3_1查找第一级encap_db表项,其中,第一级encap_db表项中包括:第二级encap_db表项的索引index3_2、2个原有标签值100和200、以及20比特的附加信息2000;通过该索引index3_2查找第二级encap_db表项,其中,第二级encap_db表项中包括:2个原有标签值300和400、以及20比特的附加信息3000。

步骤s103,从第一级fec_next_hop信息、第一级encap_db表项和第二级encap_db表项中获取附加信息和原有标签值,得到3个附加信息1000、2000、3000,以及4个原有标签值100、200、300、400。

步骤s104,将携带有原有标签值的原有标签封装到待转发报文中,得到标准标签封装报文;

具体的,针对获取到的4个原有标签值中的每个标签值,将携带有该原有标签值的原有标签封装到待转发报文中,具体的封装过程同现有技术,这里不再详述。标签的封装格式如图5所示:

label字段:用于携带标签值,该字段的长度为20比特。

tc(trafficclass,流量等级)字段:又称为exp(experimental)字段,该字段的长度为3比特,用于进行qos(qualityofservice,服务质量)。

s字段:又称为bos字段,该字段为标签栈底标识位(bottom-of-stackindicator),字段长度为1比特。由于mpls支持多重标签,即在报文中可以封装多层标签,形成标签栈。由于标签封装在报文的链路层帧头和网络层报文头之间,因此,靠近链路层帧头的最外层标签为栈顶标签,靠近网络层报文头的最内层标签为栈底标签。s位为1时表示该标签为栈底标签,s位为0时表示该标签为非栈底标签。

ttl(timetolive,生存时间)字段:该字段长度为8比特,该字段的含义与ip报文中的ttl意义相同,可以用来防止环路。

假设,标准标签封装报文中的4个原有标签中的标签值,按照从内层到外层的顺序依次为:100、200、300、400,其中,100为最内层的栈底标签的标签值。

在实际实施过程中,上述步骤s101至步骤s104具体可以由转发芯片中的固定逻辑和可配置逻辑来执行,在执行步骤s103获取附加信息和原有标签值时,固定逻辑和可配置逻辑无法识别附加信息,即不知道附加信息是何种类型的信息,并且,在执行步骤s104封装原有标签时无法将附加信息作为标签值封装到报文中。在执行完步骤s104后,固定逻辑和可配置逻辑会将获取到的3个附加信息1000、2000、3000携带在芯片内部的逻辑转发信息中,将该逻辑转发信息和标准标签封装报文一起传送给可编程逻辑。

其中,为了能够让可编程逻辑判断出附加信息是第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中的哪一个携带的,还需要为每个附加信息设置对应的标识,用于表示该附加信息属于第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中的哪一个。

步骤s105,针对第一级fec_next_hop信息中包含的附加信息1000,生成标签值为1000的第一新增标签,将第一新增标签作为最内层的栈底标签封装到标准标签封装报文中;针对第一级encap_db表项中包含的附加信息2000,生成标签值为2000的第二新增标签,将第二新增标签封装到标准标签封装报文中的原有标签的最外层;针对第二级encap_db表项中包含的附加信息3000,生成标签值为3000的第三新增标签,将第三新增标签封装到标准标签封装报文中的原有标签的最外层。

可编程逻辑可以提供多条指令来灵活的对报文进行编辑,本申请实施例中利用可编程逻辑的上述特点,通过可编程逻辑执行上述步骤s105。具体的,在步骤s105中,可编程逻辑在接收到逻辑转发信息和标准标签封装报文后,会获取标准标签封装报文中的栈底标签中的tc值和s值,然后,按照以下三种情况进行新增标签的封装:

情况一:第一级fec_next_hop信息中包含附加信息1000

将标准标签封装报文中当前的栈底标签(标签值为100的原有标签)中的s值置为0,此时,该标签变为非栈底标签;生成标签值为1000的第一新增标签,并将第一新增标签中的tc值和s值分别设置为获取到的tc值和s值,将第一新增标签中的s值置为1,表示第一新增标签为栈底标签;然后,将第一新增标签插入到标准标签封装报文中原有标签的最内层,成为新的栈底标签。

情况二:第一级encap_db表项中包含附加信息2000

生成标签值为2000的第二新增标签,并将第二新增标签中的tc值和s值分别设置为获取到的tc值和s值,将第二新增标签中的s值置为0;然后,将第二新增标签插入到标准标签封装报文中的原有标签的最外层。

情况三:第二级encap_db表项中包含附加信息3000

生成标签值为3000的第三新增标签,并将第三新增标签中的tc值和s值分别设置为获取到的tc值和s值,将第三新增标签中的s值置为0;然后,将第三新增标签插入到标准标签封装报文中的原有标签的最外层。

在实际实施过程中,由于不同的原有标签中的tc值相同,ttl值也相同,因此,在封装新增标签时,可以获取标准标签封装报文中的栈底标签(原有标签)中的tc值和ttc值,作为新增标签中的tc值和ttc值;也可以获取其它原有标签中的tc值和ttc值,本申请实施例对此不做限定。可见,扩展标签封装报文中的原有标签与新增标签中的tc值相等,且ttl值也相等。

另外,携带附加信息2000的第二新增标签和携带附加信息3000的第三新增标签,均需要插入到原有标签的最外层,这两个新增标签之间可以不限定内外层关系,也就是说,第二新增标签可以在第三新增标签的内层或外层。

如果第二新增标签位于第三新增标签的内层,此时,扩展标签封装报文中封装有7层标签,这7层标签中的标签值按照从内层到外层的顺序依次为:1000、100、200、300、400、2000、3000,如图6所示。可见,通过本申请实施例的方法,可以在报文中封装最多7层的标签。

与前述标签封装方法的实施例相对应,本申请还提供了标签封装装置的实施例,该装置应用于标签交换转发设备中的转发芯片上。

请参考图7,本申请实施例的标签封装装置中包括:查找单元701、获取单元702和封装单元703,其中:

查找单元701,用于确定待转发报文对应的第一级fec_next_hop信息、以及与第一级fec_next_hop信息级联的第二级fec_next_hop信息,其中,第二级fec_next_hop信息中包含出端口标识和第一级encap_db表项的索引;通过第二级fec_next_hop信息,查找第一级encap_db表项、以及与第一级encap_db表项级联的第二级encap_db表项;

获取单元702,用于从第一级fec_next_hop信息、第一级encap_db表项、以及第二级encap_db表项中获取附加信息和原有标签值,得到一个以上附加信息和一个以上原有标签值,其中,第一级fec_next_hop信息、第一级encap_db表项、第二级encap_db表项中的一个或两个以上包含附加信息,第一级encap_db表项和第二级encap_db表项中包含原有标签值;

封装单元703,用于将携带原有标签值的原有标签封装到待转发报文中得到标准标签封装报文;将每个附加信息作为一个新增标签的标签值封装到标准标签封装报文中,得到扩展标签封装报文。

其中,第一级fec_next_hop信息中的保留比特位用于携带附加信息;

第一级encap_db表项中的保留比特位用于携带附加信息;

第二级encap_db表项中的保留比特位用于携带附加信息。

其中,封装单元703具体用于通过以下方式将每个附加信息作为一个新增标签的标签值封装到标准标签封装报文中:

若第一级fec_next_hop信息中包含附加信息,则生成标签值为该附加信息的第一新增标签,将第一新增标签作为最内层的栈底标签封装到标准标签封装报文中;

若第一级encap_db表项中包含附加信息,则生成标签值为该附加信息的第二新增标签,将第二新增标签封装到标准标签封装报文中的原有标签的最外层;

若第二级encap_db表项中包含附加信息,则生成标签值为该附加信息的第三新增标签,将第三新增标签封装到标准标签封装报文中的原有标签的最外层。

其中,在扩展标签封装报文中,新增标签中的tc值与原有标签中的tc值相等,且新增标签中的ttl值与原有标签中的ttl值相等。

其中,原有标签的数量范围在1至4之间,新增标签的数量范围在1至3之间。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1