CN103064794A - 实现mpls标签高效管理的方法 - Google Patents
实现mpls标签高效管理的方法 Download PDFInfo
- Publication number
- CN103064794A CN103064794A CN2013100424042A CN201310042404A CN103064794A CN 103064794 A CN103064794 A CN 103064794A CN 2013100424042 A CN2013100424042 A CN 2013100424042A CN 201310042404 A CN201310042404 A CN 201310042404A CN 103064794 A CN103064794 A CN 103064794A
- Authority
- CN
- China
- Prior art keywords
- label
- offset
- bit
- value
- mpls
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种实现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标签的高效分配和释放。
Description
技术领域
本发明涉及通信技术领域,具体涉及实现MPLS标签高效管理的方法。
背景技术
多协议标签交换(MPLS)是一种用于快速数据包交换和路由的体系,它提供了一种方式,将IP地址映射为简单的具有固定长度的标签,用于不同的包转发和包交换技术。标签是MPLS的核心,一个MPLS标签由32比特组成,前20比特为标签值,标签值的范围是从0到220-1。标签交换路由器根据标签来转发报文。
如何对数量巨大的标签进行高效(高效的性能和高效的存储)的管理,是MPLS标签管理的重要要求。目前一般的作法有以下两种:
(1)以索引为标签值,这种方法需要为每个标签值分配内存,通过状态位来标记使用或空闲。因此,这种方法虽然可以快速定位到标签值,但内存占用大。
(2)只保存已分配过的标签,这种方法内存占用少,但是当下次分配标签时,需要遍历已分配过的标签,效率低。而且,当保存的标签经过一系列的分配和释放后,已分配的标签和空闲的标签混杂在一起的时候,再采用遍历的方式查找新的空闲标签,性能会很低。
由此可见,现有的MPLS标签管理无法作到高效管理。
发明内容
本发明所要解决的技术问题是解决如何实现MPLS标签高效管理的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种实现MPLS标签高效管理的方法,包括以下步骤:
分配内存块,用于保存标签使用状态的标签位图数据结构,标签位图由多个整型元素构成,每个整型元素具有多个数据位,每个数据位与一个MPLS标签值相对应,MPLS标签值LABEL_VALUE在标签位图中的映射关系为:LABEL_VALUE=INT_OFFSET×B+BIT_OFFSET,其中:B为系统的整型长度,INT_OFFSET为整型元素的偏移值,BIT_OFFSET为整型元素中的数据位偏移值;
初始化标签位图,将每一个数据位设为空闲状态;
分配MPLS标签时,查找到标签位图的空闲数据位,并将该空闲数据位设置为已分配状态;
释放MPLS标签时,根据MPLS标签值LABEL_VALUE计算出INT_OFFSET和BIT_OFFSET,然后根据INT_OFFSET和BIT_OFFSET定位到标签位图的指定数据位,将指定数据位设置为空闲状态。
在上述方法中,查找到标签位图的空闲数据位包括以下步骤:
定位到有空闲数据位的整型元素;
定位到有空闲数据位的整型元素中的空闲数据位。
在上述方法中,利用位运算定位到有空闲数据位的整型元素,方法如下:
自初始整型元素开始,对相应的整型元素执行(BITMAPINT[INT_OFFSET]& 0xFFFFFFFF)!=0xFFFFFFFF运算,如果运算结果为真则表示该整型元素有空闲数据位,如果结果为假,则计算下一个整型元素,直到找到有空闲数据位的整型元素。
在上述方法中,释放MPLS标签时,INT_OFFSET和BIT_OFFSET的计算方法如下:
BIT_OFFSET=LABEL_VALUE%B;
INT_OFFSET=LABEL_VALUE/B;
%为模运算符;
/为除法运算符。
本发明,使用位图数据结构来存储MPLS标签的状态,极大地节省了存储空间,并且实现了MPLS标签的高效分配和释放。
附图说明
图1为本发明中标签位图的示意图。
具体实施方式
本发明提供的实现MPLS标签高效管理的方法,通过标签位图数据结构保存MPLS标签的使用状态,实现了标签的高效存储以及高效分配和释放。下面结合附图对本发明作出详细的说明。
实现MPLS标签高效管理的方法,包括以下步骤:
(1)分配内存块,用于保存标签使用状态的标签位图数据结构,标签位图的数据结构如图1所示,由多个整型元素(行)构成,每个整型元素具有多个数据位,标签位图中的每一个方格代表一位数据位,并与一个MPLS标签值相对应。MPLS标签值LABEL_VALUE在标签位图中的映射关系为:LABEL_VALUE=INT_OFFSET×B+BIT_OFFSET。
其中,B为系统的整型长度,如32位系统,B=32,64位系统,B=64,根据系统的整形长度设定B值,可以提高处理效率,INT_OFFSET为整型元素的偏移值,BIT_OFFSET为整型元素中的数据位偏移值。
例如:INT_OFFSET=0,BIT_OFFSET=16就代表MPLS标签值LABEL_VALUE=16。
以整型长度为32位,MPLS标签值的范围为从0到220-1为例说明,那么图1中:
BIT_OFFSET的范围为:0–31,表示某个整型元素中的第BIT_OFFSET+1位;
因为220-1/32=32768个整型长度,所以:
INT_OFFSET的范围为:0–32767,表示标签位图中的第INT_OFFSET+1个整型元素。
因为1个整型长度为4个字节,所以为整个标签位图分配的内存大小为:32768×4=131072(Byte)。
(2)初始化标签位图,将每一个数据位设为空闲状态,标签位图的每位设为0时,表示空闲状态;设为1时,表示已分配状态。
(3)MPLS标签的分配。
MPLS标签分配的主要工作是查找标签位图的空闲数据位,并将空闲数据位设置为已分配状态。
如果是一般的做法,需要遍历所有的MPLS标签值,那么最坏的情况下,需要循环220次。
而在本发明中,将原来的一维查找变成了二维查找,定位标签位图的空闲数据位分为两步:一、定位到有空闲数据位的整型元素;二、定位到有空闲数据位的整型元素中的空闲数据位。
对于图1所示的具体实施例,首先,定位有空闲数据位的整型元素BITMAPINT[INT_OFFSET]。方法是:依次检查标签位图中的每一个整型元素,直接对整型元素BITMAPINT[INT_OFFSET]进行一次位操作就可以知道该整型元素中是否有空闲数据位。
例如:BITMAPINT[INT_OFFSET]表示标签位图中的第INT_OFFSET个整型元素。
&表示位与运算符;
!=表示不等于逻辑运算符;
如果((BITMAPINT[INT_OFFSET]& 0xFFFFFFFF)!=0xFFFFFFFF)为真,则表示该整型元素有空闲数据位。如果该整型元素中有空闲数据位,则进入后面的定位空闲数据位的操作,如果该整型元素中没有空闲数据位,则继续计算下一个整型元素,直到找到有空闲数据位的整型元素。
定位有空闲数据位的整型元素的操作,最坏的情况下需要循环220-5次。
定位有空闲数据位的整型元素BITMAPINT[INT_OFFSET]中的空闲数据位方法如下:
依次检查BITMAPINT[INT_OFFSET]的每一位是否空闲,如果空闲,则得到空闲数据位偏移BIT_OFFSET。
定位有空闲数据位的整型元素BITMAPINT[INT_OFFSET]中的空闲数据位的操作,最坏的情况下需要循环32次。
这样我们就得到了INT_OFFSET和BIT_OFFSET的值,然后根据MPLS标签值和标签位图的位映射关系:LABEL_VALUE=INT_OFFSET×32+BIT_OFFSET,就完成了MPLS标签值的分配。
本发明提供的方法,在最坏的情况下,只需要循环220-5+32次,优于一般的处理方法。
(4)MPLS标签的释放。
MPLS标签的释放的工作就是根据MPLS标签值LABEL_VALUE,计算出INT_OFFSET和BIT_OFFSET,然后根据INT_OFFSET和BIT_OFFSET定位到标签位图的指定数据位,并将指定数据位设置为空闲状态。
INT_OFFSET和BIT_OFFSET的计算方法如下:
BIT_OFFSET=LABEL_VALUE%32;
INT_OFFSET=LABEL_VALUE/32;
%为模运算符;
/为除法运算符;
例如:需要释放MPLS标签值35,那么根据上述算式:
BIT_OFFSET=35%32=3;
INT_OFFSET=35/32=1;
那么就可以知道,MPLS标签值35对应的是图1所示的标签位图的第2行、第4列(读数从0开始),这样将指定数据位设置为空闲,就完成了MPLS标签的释放。
本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
Claims (4)
1.实现MPLS标签高效管理的方法,其特征在于,包括以下步骤:
分配内存块,用于保存标签使用状态的标签位图数据结构,标签位图由多个整型元素构成,每个整型元素具有多个数据位,每个数据位与一个MPLS标签值相对应,MPLS标签值LABEL_VALUE在标签位图中的映射关系为:LABEL_VALUE=INT_OFFSET×B+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]&0xFFFFFFFF)!=0xFFFFFFFF运算,如果运算结果为真则表示该整型元素有空闲数据位,如果结果为假,则计算下一个整型元素,直到找到有空闲数据位的整型元素。
4.如权利要求2所述的实现MPLS标签高效管理的方法,其特征在于,释放MPLS标签时,INT_OFFSET和BIT_OFFSET的计算方法如下:
BIT_OFFSET=LABEL_VALUE%B;
INT_OFFSET=LABEL_VALUE/B;
%为模运算符;
/为除法运算符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310042404.2A CN103064794B (zh) | 2013-02-04 | 2013-02-04 | 实现mpls标签高效管理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310042404.2A CN103064794B (zh) | 2013-02-04 | 2013-02-04 | 实现mpls标签高效管理的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103064794A true CN103064794A (zh) | 2013-04-24 |
CN103064794B CN103064794B (zh) | 2016-05-25 |
Family
ID=48107426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310042404.2A Active CN103064794B (zh) | 2013-02-04 | 2013-02-04 | 实现mpls标签高效管理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103064794B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104036033A (zh) * | 2014-06-30 | 2014-09-10 | 北京数字认证股份有限公司 | 数字证书的证书吊销列表缓存及查询方法 |
CN105474179A (zh) * | 2013-09-25 | 2016-04-06 | 英特尔公司 | 具有分布变换器的存储器控制器 |
CN107704199A (zh) * | 2017-09-07 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种固态硬盘的逻辑分区方法及装置 |
CN109257279A (zh) * | 2018-10-26 | 2019-01-22 | 新华三技术有限公司 | 一种报文转发方法及装置 |
CN109522308A (zh) * | 2018-11-06 | 2019-03-26 | 北京太星晨信息技术有限公司 | 一种连接句柄管理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564560A (zh) * | 2004-04-14 | 2005-01-12 | 港湾网络有限公司 | 一种多协议标记交换标签的处理方法 |
CN1671114A (zh) * | 2004-03-19 | 2005-09-21 | 华为技术有限公司 | 一种ip地址管理的方法 |
US20110153976A1 (en) * | 2009-12-22 | 2011-06-23 | Eric Brandon Tamura | Methods and apparatuses to allocate file storage via tree representations of a bitmap |
-
2013
- 2013-02-04 CN CN201310042404.2A patent/CN103064794B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1671114A (zh) * | 2004-03-19 | 2005-09-21 | 华为技术有限公司 | 一种ip地址管理的方法 |
CN1564560A (zh) * | 2004-04-14 | 2005-01-12 | 港湾网络有限公司 | 一种多协议标记交换标签的处理方法 |
US20110153976A1 (en) * | 2009-12-22 | 2011-06-23 | Eric Brandon Tamura | Methods and apparatuses to allocate file storage via tree representations of a bitmap |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105474179A (zh) * | 2013-09-25 | 2016-04-06 | 英特尔公司 | 具有分布变换器的存储器控制器 |
CN105474179B (zh) * | 2013-09-25 | 2018-09-18 | 英特尔公司 | 具有分布变换器的存储器控制器 |
CN104036033A (zh) * | 2014-06-30 | 2014-09-10 | 北京数字认证股份有限公司 | 数字证书的证书吊销列表缓存及查询方法 |
CN107704199A (zh) * | 2017-09-07 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种固态硬盘的逻辑分区方法及装置 |
CN109257279A (zh) * | 2018-10-26 | 2019-01-22 | 新华三技术有限公司 | 一种报文转发方法及装置 |
CN109257279B (zh) * | 2018-10-26 | 2021-03-26 | 新华三技术有限公司 | 一种报文转发方法及装置 |
CN109522308A (zh) * | 2018-11-06 | 2019-03-26 | 北京太星晨信息技术有限公司 | 一种连接句柄管理方法和装置 |
CN109522308B (zh) * | 2018-11-06 | 2023-06-20 | 北京太一星晨信息技术有限公司 | 一种连接句柄管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103064794B (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200159654A1 (en) | Pipelined hash table with reduced collisions | |
CN103064794A (zh) | 实现mpls标签高效管理的方法 | |
US10284497B2 (en) | Networking method for data center network and data center network | |
US9086950B2 (en) | Method for heap management | |
CN103546299A (zh) | 使用串行器/解串器通道的50Gb/s以太网 | |
CN104298541A (zh) | 云存储系统的数据分布算法及其装置 | |
CN102262590B (zh) | 一种用于对硬件加速器的请求队列重排的方法和系统 | |
CN103034544A (zh) | 一种用户态与内核态共享内存的管理方法和装置 | |
CN108259346B (zh) | 一种等价路由表项建立方法和装置 | |
CN109962850A (zh) | 实现分段路由的方法和控制器及计算机可读存储介质 | |
CN103746927A (zh) | 基于优先级的流控pfc方法及发送设备、接收设备 | |
CN103778120A (zh) | 全局文件标识生成方法、生成装置及相应的分布式文件系统 | |
CN103354520A (zh) | 一种标签处理的方法及装置 | |
CN104182356A (zh) | 一种内存管理方法、装置及终端设备 | |
CN104598194A (zh) | 一种头尾指针链表存储器的初始化方法及电路 | |
CN104142979A (zh) | 一种实现rfid标签存储管理的索引方法 | |
CN103605478A (zh) | 存储地址标示、配置方法和数据存取方法及系统 | |
CN105574076A (zh) | 一种基于Bloom Filter的键值对存储结构及方法 | |
CN106817291A (zh) | Vxlan实现装置及其工作方法 | |
CN105227468A (zh) | 一种查找装置、查找方法和配置方法 | |
CN116527559A (zh) | 网络切片的报文转发处理及发送方法、装置、设备和介质 | |
CN107453971A (zh) | 一种多个虚拟机之间的通信方法及系统 | |
CN103200029A (zh) | 网管对PTN/IPRan设备的标签分配和管理的方法 | |
CN102355410B (zh) | 一种用于mpls网络虚拟交换实例的伪线标签方法 | |
CN103618707B (zh) | 用于数字化城市管理系统的web前端快速调用系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |