实现mpls标签高效管理的方法

文档序号:6399041阅读:234来源:国知局
专利名称:实现mpls标签高效管理的方法
技术领域
本发明涉及通信技术领域,具体涉及实现MPLS标签高效管理的方法。
背景技术
多协议标签交换(MPLS )是一种用于快速数据包交换和路由的体系,它提供了 一种方式,将IP地址映射为简单的具有固定长度的标签,用于不同的包转发和包交换技术。标签是MPLS的核心,一个MPLS标签由32比特组成,前20比特为标签值,标签值的范围是从0到22°-1。标签交换路由器根据标签来转发报文。如何对数量巨大的标签进行高效(高效的性能和高效的存储)的管理,是MPLS标签管理的重要要求。目前一般的作法有以下两种(I)以索引为标签值,这种方法需要为每个标签值分配内存,通过状态位来标记使用或空闲。因此,这种方法虽然可以快速定位到标签值,但内存占用大。(2)只保存已分配过的标签,这种方法内存占用少,但是当下次分配标签时,需要遍历已分配过的标签,效率低。而且,当保存的标签经过一系列的分配和释放后,已分配的标签和空闲的标签混杂在一起的时候,再采用遍历的方式查找新的空闲标签,性能会很低。由此可见,现有的MPLS标签管理无法作到高效管理。

发明内容
本发明所要解决的技术问题是解决如何实现MPLS标签高效管理的问题。为了解决上述技术问题,本发明所采用的技术方案是提供一种实现MPLS标签高效管理的方法,包括以下步骤分配内存块,用于保存标签使用状态的标签位图数据结构,标签位图由多个整型元素构成,每个整型元素具有多个数据位,每个数据位与一个MPLS标签值相对应,MPLS标签值LABEL_VALUE在标签位图中的映射关系为LABEL_VALUE=INT_OFFSETXB + BIT_OFFSET,其中B为系统的整型长度,INT_0FFSET为整型元素的偏移值,BIT_0FFSET为整型元素中的数据位偏移值;初始化标签位图,将每一个数据位设为空闲状态;分配MPLS标签时,查找到标签位图的空闲数据位,并将该空闲数据位设置为已分配状态;释放MPLS标签时,根据MPLS标签值LABEL_VALUE计算出INT_0FFSET和BIT_OFFSET,然后根据INT_0FFSET和BIT_0FFSET定位到标签位图的指定数据位,将指定数据位设置为空闲状态。在上述方法中,查找到标签位图的空闲数据位包括以下步骤定位到有空闲数据位的整型元素;定位到有空闲数据位的整型元素中的空闲数据位。在上述方法中,利用位运算定位到有空闲数据位的整型元素,方法如下
自初始整型元素开始,对相应的整型元素执行(BITMAPINT [INT_0FFSET] &OxFFFFFFFF) !=OxFFFFFFFF运算,如果运算结果为真则表示该整型元素有空闲数据位,如果结果为假,则计算下一个整型元素,直到找到有空闲数据位的整型元素。在上述方法中,释放MPLS标签时,INT_0FFSET和BIT_0FFSET的计算方法如下BIT_OFFSET=LABEL_VALUE%B ;INT_OFFSET=LABEL_VALUE/B ;%为模运算符;/为除法运算符。本发明,使用位图数据结构来存储MPLS标签的状态,极大地节省了存储空间,并且实现了 MPLS标签的高效分配和释放。


图1为本发明中标签位图的示意图。
具体实施例方式本发明提供的实现MPLS标签高效管理的方法,通过标签位图数据结构保存MPLS标签的使用状态,实现了标签的高效存储以及高效分配和释放。下面结合附图对本发明作出详细的说明。实现MPLS标签高效管理的方法,包括以下步骤(I)分配内存块,用于保存标签使用状态的标签位图数据结构,标签位图的数据结构如图1所示,由多个整型元素(行)构成,每个整型元素具有多个数据位,标签位图中的每一个方格代表一位数据位,并与一个MPLS标签值相对应。MPLS标签值LABEL_VALUE在标签位图中的映射关系为LABEL_VALUE=INT_OFFSETXB + BIT_0FFSET。其中,B为系统的整型长度,如32位系统,B = 32,64位系统,B = 64,根据系统的整形长度设定B值,可以提高处理效率,INT_0FFSET为整型元素的偏移值,BIT_0FFSET为整型元素中的数据位偏移值。例如INT_0FFSET=0,BIT_0FFSET=16就代表 MPLS 标签值 LABEL_VALUE = 16。以整型长度为32位,MPLS标签值的范围为从0到22°_1为例说明,那么图1中BIT_0FFSET的范围为0 - 31,表示某个整型元素中的第BIT_0FFSET+1位;因为22°_1/32=32768个整型长度,所以INT_0FFSET的范围为0 - 32767,表示标签位图中的第INT_0FFSET+1个整型元素。因为I个整型长度为4个字节,所以为整个标签位图分配的内存大小为32768X4=131072(Byte)。(2)初始化标签位图,将每一个数据位设为空闲状态,标签位图的每位设为0时,表示空闲状态;设为I时,表示已分配状态。(3) MPLS标签的分配。MPLS标签分配的主要工作是查找标签位图的空闲数据位,并将空闲数据位设置为已分配状态。
如果是一般的做法,需要遍历所有的MPLS标签值,那么最坏的情况下,需要循环
220 次。而在本发明中,将原来的一维查找变成了二维查找,定位标签位图的空闲数据位分为两步一、定位到有空闲数据位的整型元素;二、定位到有空闲数据位的整型元素中的空闲数据位。对于图1所示的具体实施例,首先,定位有空闲数据位的整型元素BITMAPINT [INT_0FFSET]。方法是依次检查标签位图中的每一个整型元素,直接对整型元素BITMAPINT[INT_0FFSET]进行一次位操作就可以知道该整型元素中是否有空闲数据位。例如BITMAPINT[INT_OFFSET]表示标签位图中的第INT_0FFSET个整型元素。&表示位与运算符;!=表示不等于逻辑运算符;如果((BITMAPINT[INT_0FFSET]& OxFFFFFFFF) ! =0xFFFFFFFF)为真,则表示该整型元素有空闲数据位。如果该整型元素中有空闲数据位,则进入后面的定位空闲数据位的操作,如果该整型元素中没有空闲数据位,则继续计算下一个整型元素,直到找到有空闲数据位的整型元素。定位有空闲数据位的整型元素的操作,最坏的情况下需要循环22°_5次。定位有空闲数据位的整型元素BITMAPINT[INT_OFFSET]中的空闲数据位方法如下依次检查BITMA PINT[INT_0FFSET]的每一位是否空闲,如果空闲,则得到空闲数据位偏移BIT_0FFSET。定位有空闲数据位的整型元素BITMAPINT[INT_0FFSET]中的空闲数据位的操作,最坏的情况下需要循环32次。这样我们就得到了 INT_0FFSET和BIT_0FFSET的值,然后根据MPLS标签值和标签位图的位映射关系LABEL_VALUE=INT_0FFSETX32+BIT_0FFSET,就完成了 MPLS标签值的分配。本发明提供的方法,在最坏的情况下,只需要循环22°_5 + 32次,优于一般的处理方法。(4) MPLS标签的释放。MPLS标签的释放的工作就是根据MPLS标签值LABEL_VALUE,计算出INT_0FFSET和BIT_0FFSET,然后根据INT_0FFSET和BIT_0FFSET定位到标签位图的指定数据位,并将指定数据位设置为空闲状态。INT_0FFSET 和 BIT_0FFSET 的计算方法如下BIT_0FFSET=LABEL_VALUE%3 2 ;INT_0FFSET=LABEL_VALUE/32 ;%为模运算符;/为除法运算符;例如需要释放MPLS标签值35,那么根据上述算式BIT_0FFSET=35%32=3 ;INT_0FFSET=35/32=1 ;
那么就可以知道,MPLS标签值35对应的是图1所示的标签位图的第2行、第4列(读数从0开始),这样将指定数据位设置为空闲,就完成了 MPLS标签的释放。本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
权利要求
1.实现MPLS标签高效管理的方法,其特征在于,包括以下步骤 分配内存块,用于保存标签使用状态的标签位图数据结构,标签位图由多个整型元素构成,每个整型元素具有多个数据位,每个数据位与一个MPLS标签值相对应,MPLS标签值LABEL_VALUE 在标签位图中的映射关系为LABEL_VALUE=INT_OFFSETXB + BIT_OFFSET,其中B为系统的整型长度,INT_OFFSET为整型元素的偏移值,BIT_OFFSET为整型元素中的数据位偏移值; 初始化标签位图,将每一个数据位设为空闲状态; 分配MPLS标签时,查找到标签位图的空闲数据位,并将该空闲数据位设置为已分配状态; 释放MPLS标签时,根据MPLS标签值LABEL_VALUE计算出INT_OFFSET和BIT_OFFSET,然后根据INT_OFFSET和BIT_OFFSET定位到标签位图的指定数据位,将指定数据位设置为空闲状态。
2.如权利要求1所述的实现MPLS标签高效管理的方法,其特征在于,查找到标签位图的空闲数据位包括以下步骤 定位到有空闲数据位的整型元素; 定位到有空闲数据位的整型元素中的空闲数据位。
3.如权利要求2所述的实现MPLS标签高效管理的方法,其特征在于,利用位运算定位到有空闲数据位的整型元素,方法如下 自初始整型元素开始,对相应的整型元素执行(BITMAPINT[INT_OFFSET]&OxFFFFFFFF) !=OxFFFFFFFF运算,如果运算结果为真则表示该整型元素有空闲数据位,如果结果为假,则计算下一个整型元素,直到找到有空闲数据位的整型元素。
4.如权利要求2所述的实现MPLS标签高效管理的方法,其特征在于,释放MPLS标签时,INT_OFFSET和BIT_OFFSET的计算方法如下BIT_OFFSET=LABEL_VALUE%B ;INT_OFFSET=LABEL_VALUE/B ; %为模运算符; /为除法运算符。
全文摘要
本发明公开了一种实现MPLS标签高效管理的方法,包括以下步骤分配内存块,用于保存标签使用状态的标签位图数据结构,标签位图的每个数据位与一个MPLS标签值相对应,MPLS标签值LABEL_VALUE在标签位图中的映射关系为LABEL_VALUE=INT_OFFSET×B+BIT_OFFSET;初始化标签位图,将每一个数据位设为空闲状态;分配MPLS标签时,查找到标签位图的空闲数据位,并将该空闲数据位设置为已分配状态;释放MPLS标签时,根据MPLS标签值LABEL_VALUE计算出INT_OFFSET和BIT_OFFSET,然后根据INT_OFFSET和BIT_OFFSET定位到标签位图的指定数据位,将指定数据位设置为空闲状态。本发明,使用位图数据结构来存储MPLS标签的状态,极大地节省了存储空间,并且实现了MPLS标签的高效分配和释放。
文档编号G06F12/02GK103064794SQ20131004240
公开日2013年4月24日 申请日期2013年2月4日 优先权日2013年2月4日
发明者高军, 张峰 申请人:烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1