具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施例中提出一种MPLS标签扩展方法,应用于MPLS网络,所述MPLS网络中包括多个路由器,对于任一所述路由器实现MPLS标签扩展的方法为:任一所述路由器在本地全局标签取值空间中划分一个标签的取值范围,该标签取值范围内的每一个标签作为第一级实例特定标签表示一个标签空间,识别到一个未分配标签的FEC时,在所述第一级实例特定标签中任一标签的标签空间中选择一个未分配的标签分配给所述FEC,建立所述FEC与所述分配的标签的映射,并在用于全局标签转发的入标签映射(ILM)表中添加所述第一级实例特定标签的转发表项,在用于第一级实例特定标签转发的ILM表中添加选择的标签的标签转发表项,其中,在所述第一级实例特定标签的转发表项中所述第一级实例特定标签对应的操作是弹出标签并重定向所述用于第一级实例特定标签转发的ILM表;将所述FEC与标签的映射,以及所述映射所属的第一级实例特定标签通告给对等体,使所述对等体根据所述通告在转发等价类到下一跳标签转发表项的映射(FTN)表中添加FTN表项,在向本地路由器发送属于所述FEC的报文时封装所述对应的FTN表项中的标签。其中,对等体为与所述本地路由器建立标签转换协议连接的路由器;通告标签的协议可以为LDP或BGP,使用这两个协议通告时,在建立会话中,协商是否支持第一级实例特定标签的标签空间,再发送通告;当通告标签的协议使用RSVP时,可以在发送通告的时候同时进行协商支持第一级实例特定标签的标签空间。
本发明该实例中任一所述路由器在本地全局标签取值空间中划分一个标签的取值范围,该标签取值范围内的每一个标签作为第一级实例特定标签表示一个标签空间时,在本地生成一个用于全局标签转发的ILM表,以及划分的标签范围中取值数量个用于第一级实例特定标签转发的ILM表,如划分的范围为16-22,则生成7个用于第一级实例特定标签转发的ILM表;生成的FTN表与现有实现相比增加了一层标签,即对等体通告的,表示与FEC绑定的标签所述的标签空间的标签;本地路由器生成ILM表包括用于第一级实例特定标签转发的ILM表和用于全局标签转发的ILM表,在用于全局标签转发的ILM表中添加的对应表项,即第一级实例特定表项中标签对应的操作为弹掉标签且重定向所述用于第一级实例特定标签转发的ILM表,根据该操作可知第一级实例特定标签决定与所述FEC映射的标签的标签空间。
全局标签的取值范围为16-1048575,如划分其中取值范围16-1023作为第一级实例特定标签,则16-1023段中的每一个标签分别标识一个独立的标签空间,如第一级实例特定实例标签16的标签范围可以根据实际需要设置,但是范围不能超出16-1048575,即在正常标签范围内,每一个第一级实例特定实例标签的标签范围可以相同也可以不同。
参见图2,图2为本发明实施例中基于MPLS的报文处理方法流程示意图。具体步骤为:
步骤201,当本地路由器接收到其他路由器发送的报文,且该报文封装了标签时,根据该报文封装的最外层标签在用于全局标签转发的ILM表中查找。
步骤202,若查找到所述最外层标签对应的操作为弹掉标签并重定向到第一级实例特定标签转发表,则弹掉所述接收报文的最外层标签。
步骤203,本地路由器根据弹掉标签的所述报文当前封装的最外层标签在所述用于第一级实例特定标签转发的ILM表中查找,并根据查找到的对应操作处理所述弹掉最外层标签的报文,结束本流程。
本步骤包括:若根据当前封装的最外层标签在所述用于第一级实例特定标签转发的ILM表中查找到的对应操作为弹掉标签且无重定向到任一ILM表时,弹掉所述报文当前封装的最外层标签,若露出的报文为标签封装报文,则根据露出的标签在所述用于第一级实例特定标签转发的ILM表中查找,根据查找到的对应操作处理所述处理后的报文。
步骤204,若查找到所述最外层标签对应的操作为弹掉标签且无重定向到第一级实例特定标签转发表,则弹掉所述最外层标签。
步骤205,当弹掉最外层标签的报文封装标签时,则根据弹掉标签的所述报文当前封装的最外层标签在用于全局标签转发的LIM表中查找,并根据查找到的对应操作处理所述弹掉最外层标签的报文。
上述描述的是本地路由设备为新识别的FEC分配标签并通告给对等体,接收到携带标签的报文时,在本地对接收报文的处理过程,下面描述本地路由器接收到对等体通告,以及接收到所述FEC内的未封装标签的报文如何处理。
当接收到对等体通告的所述FEC与标签的映射,以及所述映射所属的第一级实例特定标签时,在本地的FTN表中添加所述FEC对应的表项,其中,所述FTN表中所述FEC对应的表项包括对应的操作为压入标签、出标签为通告的与所述FEC映射的标签,以及所述映射所属的标签空间的标签,即第一级实例特定标签。在具体实现时,在FTN表中还保存了对应的出接口等,即同现有实现的不同是表中多添加了一层标签。
当接收到所述FEC内的报文,且该报文未封装标签时,根据该报文所在的FEC在所述FTN中查找,根据查找到的对应操作处理所述接收的报文。
当接收到对等体通告的所述FEC与标签的映射,以及所述映射所属的第一级实例特定标签时,该方法进一步包括:在用于第一级实例特定标签转发的ILM表中所述FEC对应表项中添加对应操作为,将当前标签交换为所述通告的与所述FEC映射的标签,并压入所述通告的所述映射所属的第一级实例特定标签。
在本发明的具体实现时,只是在全局标签的取值范围内划分一个范围,用于扩展标签,因此具体应用中识别一个新的FEC时,使用现有实现的全局标签,还是使用全局标签取值范围内划分的范围中的标签,本发明给出了如下两种实现方式:
第一种为:确定本地全局标签取值空间中所述划分的标签的取值范围之外的全局标签,是否存在未分配的标签,如果是,选择一个所述划分的标签的取值范围之外的全局标签分配给所述FEC;否则,在所述第一级实例特定标签中任一标签的标签空间中选择一个未分配的标签分配给所述FEC。该种实现方式为优先使用现有实现,仅分配一个全局标签实现标识一个FEC,当如上述举例中1024-1048575取值范围内的标签全部被分配时,才选用16-1023取值范围内的标签,使用本发明提出的实现方式。
第二种为:本地路由器配置对所述FEC优先使用所述划分的标签的取值范围内的标签时,确定所述标签取值范围内的任一第一级实例指定标签的标签空间中是否存在未分配的标签,如果是,在所述第一级实例特定标签中任一标签的标签空间中选择一个未分配的标签分配给所述FEC;否则,选择一个所述划分的标签的取值范围之外的全局标签分配给所述FEC。该种实现方式为优先使用本发明实施例中提出的实现方式,如优先在标签为16-1023取值范围内的标签中的任一标签空间中选择未分配的标签,当取值范围16-1023中的所有标签的标签空间中的标签全被分配时,才分配1024-1048575取值范围内的标签,即同现有实现仅分配全局标签。
该方法进一步包括:在任一所述第一级实例特定标签的标签空间内划分一个标签的取值范围,该标签取值范围内的每一个标签作为第二级实例特定标签表示一个空间,当识别出当前未分配标签的FEC,为所述FEC在任一所述第二级实例特定实例标签的标签空间中选择一个标签分配给所述FEC,建立所述FEC与所述分配的标签的映射,并在用于全局标签转发的ILM表中添加所述第一级实例特定标签的转发表项,在用于第一级实例的特定标签转发的ILM表中添加选择的第二级实例特定标签的标签转发表项,在用于第二级实例特定标签转发的ILM中添加选择的标签的标签转发表项,其中,在所述第一级实例特定标签的转发表项中所述第一级实例特定标签对应的操作是弹出标签并重定向所述用于第二级实例特定标签转发的ILM表;将所述FEC与标签的映射,以及所述映射所属的第二级实例特定标签,以及所述第二级实例特定标签所属的第一级实例特定标签通告给对等体,使所述对等体根据所述通告添加FTN表项,在向本地路由器发送属于所述FEC的报文时封装所述对应的FTN表项中的标签。。
本发明在具体实现时并不局限于上文提到的两层标签和三层标签的实现,根据实际需要可以实现多层标签,理论上递归层次不受限制。参见图3,图3为本发明实施例中标签递归表结构示意图。
图3中第一列表项为用于全局标签转发的ILM表,第二列为用于第一级实例特定标签转发的ILM表,分别为Table A、Table B……Table X;第三列为用于第二级实例特定标签转发的ILM表,分别为Table a、Table b……Table x。用于全局标签转发的ILM表中将A-X取值范围内的标签作为第一级实例特定标签,又将第一级实例特定标签A的空间中a-x取值范围内的标签作为第二级实例特定标签,再在第二级实例特定标签a的标签空间中划分a-x取值范围内的标签作为第三级实例特定标签,依次类推。在实际应用中,同样可以将第二列中的Table B表同TableA实现等等,这里不再一一例举。其中,无论哪个表项中的标签取值范围只要在16-1048575内即可。
本发明上述实例中提到的两层标签或三层标签,以及多层标签均指与本发明实施例实现相关的标签,在现有实现中还可能有更外层的标签或更内层的标签,下面结合附图,详细描述本发明实施例中是如何处理的。
参见图4,图4为报文封装四层标签的结构示意图。图4中报文携带的四层标签分别为L1、L2、L3和L4。L4为栈底标签,L1为最外层标签,其中,L1标签决定L2标签的标签空间;L2标签决定L3标签的标签空间;L3标签决定L4标签的标签空间。最外层标签L1应该在用于全局标签转发的ILM表中查找,如果查找的对应操作是弹掉标签,且无重定向任一ILM表时,弹掉标签L1,标签L2露出后,继续在用于全局标签转发的ILM表中查找,当查找的对应操作为弹掉标签且重定向用于第一级实例特定标签转发的ILM表时,弹掉标签L2,标签L3露出,则在用于第一级实例特定标签转发的ILM表中查找标签L3,如果查找的对应操作为弹掉标签,且无重定向任一ILM表时,弹掉标签L3,露出标签L4,则在用于第一级实例特定标签转发的ILM表中查找标签L4。
下面结合附图,详细描述本发明具体实施例中如何实现MPLS网络中报文的处理。参见图5,图5为本发明具体实施例中实现MPLS转发组网结构示意图。比如图5中的路由器B上,5000000个FEC,分为5组:G1、G2、G3、G4、Gy,从全局标签中,分5个标签L1、L2、L3、L4、Ly,用于标识G1~Gy。再以Gy中的1,000,000个FEC中的第1个FEC(FECy1)为例,从Ly标签空间分配一个标签Ly1,建立FECy1-Ly1映射,在本地全局标签转发表中添加标签Ly的转发表项,参见表1,表1为本发明具体实施例中路由器B的全局标签转发表中标签Ly的转发表项;在标签Ly转发表中添加标签Ly1的转发表项,参见表2,表2为本发明具体实施例中路由器C上的标签Ly的转发表中的标签Ly1的转发表项。
表1
表2
路由器C通过标签分发协议,将FECy1与Ly1的映射,以及该映射所属的标签空间Ly通告给对等体设备路由器B和路由器D,使对等体接收到通告时在本地生成FTN表。具体实现时FTN表可以表示为一个表,也可以表示为FIB表和NHLIFE表。以路由器B接收到通告生成FIB表和NHLFE表为例。参见表3,表3为路由器B上生成的FIB表。参见表4,表4为路由器B上生成的NHLFE表。
表3
表4
路由器C接收到路由器D的通告,且通告内容为FECx1与Lx1的映射,以及该映射所属的标签空间Lx时,在本地生成FTN表。以一个表实现FTN表项,参见表5,表5为路由器C上生成的FTN表。
表5
路由器C接收到路由器D的通告,同时在Ly标签中添加通告内容,具体内容参见表6,表6为路由器C上标签Ly的转发表中添加通告内容后Ly1的转发表。
表6
在表6中同样需要记录出接口、下一跳等,这里与现有实现一致的部分不再详细给出。
下面详细描述路由器C接收到报文的处理:
路由器C接收到其他路由器发送的报文时,首先确定该报文是否封装标签,如果封装标签,则根据最外层标签在用于全局标签转发的ILM表中查找,如果该封装标签是Ly,则查找到的对应操作如表1中所示,对应的操作为弹跳标签且重定向到用于第一级实例特定标签Ly转发的ILM表(Pop & lookup Ly table)时,将该报文的最外层标签弹掉,并根据当前露出的标签在用于第一级实例特定标签Ly转发的ILM表中查找报文当前的最外层标签,如表5中查找到的对应操作为交换标签Lx1,并压上标签Lx(SwapLx1,Push Lx)时,对该报文执行相应的处理,并查找出接口以及下一跳转发处理后的报文。
如果路由器C接收的报文未封装标签,如图5中路由器F发送的报文,则确定该报文所属的FEC,如果所属的FEC为FECx1,则在表5中查找,根据FEC x1查找到对应操作为压入标签Lx1,Lx,则将所述报文先封装Lx1再封装Lx之后,根据下一跳信息将封装后的报文转发。
本发明具体实施例中基于同样的发明构思,还提出一种装置,可应用于MPLS网络中的路由器上,参见图6,图6为本发明具体实施例中用于实现MPLS标签扩展实现的装置结构示意图。该装置包括:配置单元601、分配单元602、通告单元603。
配置单元601,用于在本地全局标签取值空间中划分一个标签的取值范围,该标签取值范围内的每一个标签作为第一级实例特定标签表示一个标签空间。
分配单元602,用于识别到一个未分配标签的FEC时,在配置单元601中的第一级实例特定标签中任一标签的标签空间中选择一个未分配的标签分配给所述FEC,建立所述FEC与所述分配的标签的映射,并在用于全局标签转发的ILM表中添加所述第一级实例特定标签的转发表项,在用于第一级实例特定标签转发的ILM表中添加选择的标签的标签转发表项,其中,在所述第一级实例特定标签的转发表项中所述第一级实例特定标签对应的操作是弹出标签并重定向所述用于第一级实例特定标签转发的ILM表。
通告单元603,用于将分配单元602建立的所述FEC与标签的映射,以及所述映射所属的第一级实例特定标签通告给对等体,使所述对等体根据所述通告在转发等价类到下一跳标签转发表项的映射FTN表中添加FTN表项FTN表项,在向本地路由器发送属于所述FEC的报文时封装所述对应的FTN表项中的标签。
较佳地,该装置进一步包括:接收单元604、查找单元605和处理单元606。
接收单元604,用于接收报文。
查找单元605,用于当接收单元604接收到其他路由器发送的报文,且该报文封装了标签时,根据该报文封装的最外层标签在分配单元602中的用于全局标签转发的ILM表中查找。
处理单元606,用于当查找单元605查找到所述最外层标签对应的操作为弹掉标签并重定向到第一级实例特定标签转发表时,弹掉所述接收报文的最外层标签,并根据弹掉标签的所述报文当前封装的最外层标签在分配单元602中用于第一级实例特定标签转发的ILM表中查找,并根据查找到的对应操作处理所述弹掉最外层标签的报文;若查找到所述最外层标签对应的操作为弹掉标签且无重定向到第一级实例特定标签转发表,则弹掉所述最外层标签,当弹掉最外层标签的报文封装标签时,则根据弹掉标签的所述报文当前封装的最外层标签在分配单元602中用于全局标签转发的LIM表中查找,并根据查找到的对应操作处理所述弹掉最外层标签的报文。
较佳地,
处理单元606,用于若根据当前封装的最外层标签在分配单元602中用于第一级实例特定标签转发的ILM表中查找到的对应操作为弹掉标签且无重定向到任一ILM表时,弹掉所述报文当前封装的最外层标签,若露出的报文为标签封装报文,则根据露出的标签在分配单元602中用于第一级实例特定标签转发的ILM表中查找,根据查找到的对应操作处理所述处理后的报文。
较佳地,
接收单元604,进一步用于接收到对等体通告的所述FEC与标签的映射,以及所述映射所属的第一级实例特定标签。
分配单元602,进一步用于当接收单元604接收到对等体的通告时,在本地的FTN表中添加所述FEC对应的表项,其中,所述FTN表中所述FEC对应的表项包括对应的操作为压入标签、出标签为通告的所述第一级实例特定标签和与所述FEC映射的标签。
处理单元606,进一步用于当接收单元604接收到所述FEC内的报文,且该报文未封装标签时,根据该报文所在的FEC在所述FTN中查找,根据查找到的对应操作处理所述接收的报文。
较佳地,
分配单元602,进一步用于当接收单元604接收到对等体的通告时,在用于第一级实例特定标签转发的ILM表中所述FEC对应表项中添加对应操作为,将当前标签交换为所述通告的与所述FEC映射的标签,并压入所述通告的所述映射所属的第一级实例特定标签。
较佳地,该装置进一步包括:确定单元607。
确定单元607,用于当分配单元602识别到一个未分配标签的FEC时,确定本地全局标签取值空间中所述划分的标签的取值范围之外的全局标签,是否存在未分配的标签,如果是,选择一个所述划分的标签的取值范围之外的全局标签分配给所述FEC;否则,触发分配单元602执行在所述第一级实例特定标签中任一标签的标签空间中选择一个未分配的标签分配给所述FEC的操作。
较佳地,该装置进一步包括:确定单元607。
配置单元601,进一步用于配置优先使用所述划分的标签的取值范围内标签的FEC;
确定单元607,用于当分配单元602识别到一个未分配标签的FEC时,确定配置单元601配置所述FEC优先使用所述划分的标签的取值范围内的标签时,确定所述标签取值范围内任一第一级实例特定标签的标签空间中是否存在未分配的标签,如果是,触发分配单元602执行所述在所述第一级实例特定标签中任一标签的标签空间中选择一个未分配的标签分配给所述FEC的操作;否则,选择一个所述划分的标签的取值范围之外的全局标签分配给所述FEC。
较佳地,
配置单元601,进一步用于在任一所述第一级实例特定标签的标签空间内划分一个标签的取值范围,该标签取值范围内的每一个标签作为第二级实例特定标签表示一个空间。
分配单元602,进一步用于当识别出当前未分配标签的FEC,为所述FEC在配置单元601中任一所述第二级实例特定实例标签的标签空间中选择一个标签分配给所述FEC,建立所述FEC与所述分配的标签的映射,并在用于全局标签转发的ILM表中添加所述第一级实例特定标签的转发表项,在用于第一级实例的特定标签转发的ILM表中添加选择的第二级实例特定标签的标签转发表项,在用于第二级实例特定标签转发的ILM中添加选择的标签的标签转发表项,其中,在所述第一级实例特定标签的转发表项中所述第一级实例特定标签对应的操作是弹出标签并重定向所述用于第二级实例特定标签转发的ILM表;将所述FEC与标签的映射,以及所述映射所属的第二级实例特定标签,以及所述第二级实例特定标签所属的第一级实例特定标签通告给对等体,使所述对等体根据所述通告添加FTN表项,在向本地路由器发送属于所述FEC的报文时封装所述对应的FTN表项中的标签。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明具体实施例中在全局标签中划分一个取值范围,并将该取值范围内的标签作为一个第一级实例特定标签表示一个标签空间,识别到未分配标签的FEC时,为该FEC分配所述第一级实例特定标签中未分配的标签,在全局标签中的所述特定标签的标签操作添加为弹掉标签并重定向到用于第一级实例特定标签转发的ILM表中,并将所述FEC与选择标签的映射,以及映射所属的第一级实例特定标签通告给对等体使对等体生成本地FTN表,并在发送属于所述FEC报文时封装FTN表中的两层标签;接收到封装标签的报文时,根据本地用于全局标签转发的ILM表和用于第一级实例特定标签转发的ILM表处理所述接收的报文,能够解决全局标签面临的资源不足问题。
本发明具体实施例中还将标签级数扩展到多级,使得无论FEC增加到多少,通过本发明的具体实施例都可以解决全局标签的资源不足问题。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。