CN100502331C - 一种ip地址管理的方法 - Google Patents

一种ip地址管理的方法 Download PDF

Info

Publication number
CN100502331C
CN100502331C CNB2004100303602A CN200410030360A CN100502331C CN 100502331 C CN100502331 C CN 100502331C CN B2004100303602 A CNB2004100303602 A CN B2004100303602A CN 200410030360 A CN200410030360 A CN 200410030360A CN 100502331 C CN100502331 C CN 100502331C
Authority
CN
China
Prior art keywords
bitmap
address
grade
value
level
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.)
Expired - Fee Related
Application number
CNB2004100303602A
Other languages
English (en)
Other versions
CN1671114A (zh
Inventor
张昕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2004100303602A priority Critical patent/CN100502331C/zh
Publication of CN1671114A publication Critical patent/CN1671114A/zh
Application granted granted Critical
Publication of CN100502331C publication Critical patent/CN100502331C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及IP地址管理,公布了一种IP地址数据状态存储、查询、操作的计算机程序设计方法,使用这种方法,节省了程序运行所需要的空间,降低了查找空闲IP地址、释放IP地址、查询IP地址状态运算的复杂度。这种设计方法,以位图的形式存储IP地址的状态,通过查询和操作位图信息,快速高效的完成IP地址的分配、回收、查询,同时大幅度节省程序运算所须存储空间。

Description

一种IP地址管理的方法
技术领域
本发明涉及网络技术,特别涉及IP网络技术中用户IP地址分配管理。
背景技术
在网络应用中,每个使用网络的用户都必须有一个ip地址,因此为每个用户分配一个ip地址就是一个必须解决的问题。在新的IPv6协议应用之前,ip地址太少一直都是一个棘手的问题。为了给每个上网的用户分配一个ip地址,网络服务提供商通常采用一种动态分配ip地址的方法。使用该方法的提供商用户一定数量的ip地址,如果有用户上网,就为该用户分配一个ip地址;如果有用户下网,就收回该用户的ip地址,以便分配给别的请求上网的用户;如果该提供商的所有的ip地址都已经分配给用户(也就是说,已经有太多的用户把所有的地址都占用了),那么新的用户就会因为分配不到ip地址而不能上网。因此,为了更好的为用户服务,如何高效的管理提供商拥有的这个ip地址就显得很重要了。例如,快速的给用户分配到一个空闲的ip地址;快速的检测某个ip地址是否已经被占用;快速的回收一个被用户释放的ip地址,以便给别的用户使用等。而且,还有一个问题就是,如何才能够用尽量少的空间来存储这些ip地址。因为,查询速度的快慢与“数据的多少”和“占用存储空间的大小”有着密切的关系:数据越少,查询速度越快;占用的空间越少,查询的速度也越快。
发明内容
本发明的目的是提供一种IP地址管理的方法,这种方法对存储空间的要求很低,并可快速高效的查找空闲IP地址。
本发明的另一个目的,是提供一种数据状态管理的方法,该方法对存储空间的要求很低,并且应用广泛,如在交换机中对信道资源的管理。
本发明的目的是通过以下技术方案实现的:
首先构造位图,给定一个地址池,所包含的地址为a到b,为每一个地址分配一个对应位,共有(b-a+1)位,然后两两结合生成高一级的位图。不能与别的位结合的,在高一级位图中单独占一位,直到最后只有一位为止。
一般地,对于一个包含有N(N>0)个地址的地址池,共需要(log(2,N)向上取整)级位图(位图的级别从0开始),每一级位图包含的位数n为:第0级为n=N,其余第k级为n=(N DIV exp(2,k))+(N MOD 2);
其中:exp(a,b)表示a的b次幂,例如,exp(2,3)=8;
(a MOD b)表示取a对b的余数,例如,13mod2=1;
(a DIV b)表示取a对b的整倍数,例如,13div2=6;
位图中各位所对应的值按照下面的规则设置:
a)如果一个地址被分配出去,则该地址在第0级位图中所对应的位的值为1;否则为0;
b)从第0级开始直到最后一级,从左至右两两结合,如果两个相结合的位的值都为1,则在高一级位图中对应的位的值就为1;否则为0。如果某一位不能与别的位结合,则在高一级位图中对应的位的值保持相同。
查找空闲地址,地址池的一个重要作用就是在现有地址范围内查找一个空闲的地址分配给用户使用。我们可以在上面的位图中采用下面的方法来实现快速查找:如果要查找一个空闲地址,则从最高级位图开始,如果为1,则说明该地址池下已经没有空闲地址;如果为0,则采用“二分法”(也叫“折半查找法”)察看该位在低一级位图中所对应的位(可能对应两位,也可能对应一位),如果有一位为0,则察看该位在更低一级位图中所对应的位,直到找到第0级位图中为0的那一位,该位所对应的地址即为一个空闲地址。
如果要占用一个地址,则把该位的值置为1;然后,按照前述构造位图的方法逐级更新位图。更新算法的复杂度是log(2,n)。
释放一个地址,如果要释放一个位所对应的地址,则把该位的值置为1;然后,按照前述构造位图的方法逐级更新位图。更新算法的复杂度也是log(2,n)。
查询一个地址的状态,如果要查询一个地址c是否已经被分配出去,则可以在a-b的氛围内算出c相对于a的位置(c-a),然后直接测试第0级位图中的第(c-a)位的值是否为0,即可直到该地址是否被分配出去。这个算法的复杂度为1。
采用了本发明用位图管理地址池的程序设计方法,快速高效的完成IP地址的查找空闲地址、分配、回收、查询等操作,同时大幅度节省程序运算所须存储空间。
附图说明
图1为本发明一种IP地址管理的方法中的构造位图的程序流程示意图;
图2为本发明一种IP地址管理的方法中的查找空闲程序流程示意图;
图3为本发明一种IP地址管理的方法中的占用一个地址程序流程示意图;
图4为本发明一种IP地址管理的方法中的释放一个地址程序流程示意图;
图5为本发明一种IP地址管理的方法中的查询某个地址状态程序流程示意图;
图6为一组IP地址与地址的状态;
图7为17位IP地址构成的位图示意图;
图8为17位IP地址构成的位图被占用一位示意图;
图9为17位IP地址构成的位图被释放一位示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
给定一个地址池,所包含的地址为a到b,为每一个地址分配一个对应位,共有N=(b-a+1)位,每一级位图包含的位数n为:第0级为n=N,其余第k级为n=(N DIV exp(2,k))+(N MOD 2);
如图1,构造位图的步骤如下:
步骤10:初始化位图级数k=0;0级位图的位数n=总的地址数N;
步骤11:如果k级位图的位数n小于等于1,执行步骤15;
步骤12:生成k级位图;
步骤13:位图级数k加1;
步骤14:计算k级位图的位数,n=(N DIV exp(2,k))+(N MOD 2),执行步骤11;
步骤15:如果k级位图的位数n不等于1,执行步骤17;
步骤16:生成k级位图;
步骤17:程序结束,完成位图构建。
如图2,查找空闲地址的步骤如下:
步骤20:根据地址数N计算最高级别数K,初始化k=K;
步骤21:初始化计数器i=0;
步骤22:如果k<0,执行步骤29;
步骤23:如果位(k,i)的值不等于1,执行步骤27;
步骤24:i加1;
步骤25:i大于本级最大位数n,执行步骤28
步骤26:位(k,i)的值=1,执行步骤28
步骤27:k减1,i=2*i,执行步骤22
步骤28:没有找到空闲地址,返回失败;
步骤29:找到空闲地址(i/2),返回成功。
如图3,如果要占用一个地址,则把该位的值置为1;然后,按照前述构造位图的方法逐级更新位图。
具体操作的程序如下:
步骤30:根据地址数N计算最高级别数K,k=K,计算要占用的地址在0级位图对应的为i;
步骤31:n表示级数,初始化n=0;
步骤32:n>K,执行步骤37
步骤33:位(n,i)=1;
步骤34:i的伙伴位的值不等于1,执行步骤37
步骤35:i=(i/2向下取整);
步骤36:n=n+1,执行步骤32
步骤37:程序结束
其中伙伴位是指构造位图时两两互相结合的位.例如:第0位的伙伴位是第1位;第7位的伙伴位是第6位;
释放一个地址,在图4中,如果要释放一个位所对应的地址,则把该位的值置为0;然后,按照前述构造位图的方法逐级更新位图。更新算法的复杂度也是log(2,n)。
具体操作的程序如下:
步骤40:根据地址数N计算最高级别数K,计算要释放的地址在0级位图对应的为i;
步骤41:n表示级数,初始化n=0;
步骤42:n>K,执行步骤47
步骤43:位(n,i)=0;
步骤44:i的伙伴位的值不等于1,执行步骤47
步骤45:i=(i/2向下取整);
步骤46:n=n+1,执行步骤42
步骤47:程序结束
如图5,查询一个地址的状态,具体操作的程序如下:
步骤50:计算该地址在0级位图中对应的位i;
步骤51:位(0,i)的值不等于1,该位空闲,执行步骤53
步骤52:该位被占用
步骤53:程序结束
其中i等于该地址相对与IP起始地址的个数。
如图6,为17个IP地址,和地址的状态,首先为17个地址各生成一位,因此第0级有17位;然后,从左至右两两结合生成第1级的位图,因为第0级的最后一位不能与别的位结合,所以在第1级位图中单独占一位,因此,第1级位图有9位;依次类推,当达到第5级时只有1位了,于是终止位图的生成,最后形成的位图如图7。如果把每一级位图都存放在字节中,则第0级需要3个字节(17=2*8+1),第1级需要2个字节(9=8+1),第2级需要1个字节(5<8),第3级需要1个字节(3<8),第4级需要1个字节,第5级需要1个字节,共需要9个字节。
如果一个地址被分配出去,则该地址在第0级位图中所对应的位的值为1;否则为0;
从第0级开始直到最后一级,从左至右两两结合,如果两个相结合的位的值都为1,则在高一级位图中对应的位的值就为1;否则为0。如果某一位不能与别的位结合,则在高一级位图中对应的位的值保持相同。
查找一个空闲地址的步骤如下。如图7所示。
1a)第5级位图中位(5,0)的值为0,说明该地址池中有空闲地址;
1b)在第4级位图中找到该位(5,0)所对应的两个位(4,0)和(4,1),其中(4,0)的值为0,说明该位下面有空闲地址;
1c)在第3级位图中找到该位(4,0)所对应的两个位(3,0)和(3,1),两个位的值都为0,说明有空闲地址,则选一个位(3,0);
1d)在第2级位图中找到该位(3,0)所对应的两个位(2,0)和(2,1),其中(2,0)的值为0,说明该位下面有空闲地址;
1e)在第1级位图中找到该位(2,0)所对应的两个位(1,0)和(1,1),两个位的值都为0,说明有空闲地址,则选一个位(1,0);
1f)在第0级位图中找到该位(1,0)所对应的两个位(0,0)和(1,1),其中(0,0)的值为0,而且已经到了第0级位图,则该位(0,0)所对应的就是一个空闲地址。
占用一个地址,在图7中,如果要占用(0,0)位所对应的地址,则把该位的值置为1;然后,按照前述构造位图的方法逐级更新位图。最后得到图8的位图。
具体过程为:
2a)第0级位图中位(0,0)的值设为1,因为和该位结合的该位(0,1)的值为1,所以继续更新高一级位图;
2b)在第1级位图中找到位(0,0)和(0,1)对应的位为(1,0),并把该位的值设为1,因为与位(1,0)结合的位(1,1)的值为0,所以不用再继续更新位图,于是更新结束。
释放一个地址,在图7中,如果要释放(0,5)位所对应的地址,则把该位的值置为1;然后,按照前述构造位图的方法逐级更新位图。最后得到如图9的位图。
具体过程为:
3a)第0级位图中位(0,5)的值设为0,因为和该位结合的该位(0,4)的值为1,所以继续更新高一级位图;
3b)在第1级位图中找到位(0,4)和(0,5)对应的位为(1,2),并把该位的值设为0,因为与位(1,2)结合的位(1,3)的值为1,所以需要继续更新高一级位图;
3c)在第2级位图中找到位(1,2)和(1,3)对应的位为(2,1),并把该位的值设为0,因为与位(2,1)结合的位(2,0)的值为0,所以不用继续更新高一级位图,于是更新结束。
上面结合具体的示例对本发明进行了阐述,技术人员可以很容易的将本发明应用到其他数据处理的领域,如交换机中线路资源的管理,移动交换机中本地用户和访问用户的管理等等。

Claims (4)

1.一种IP地址管理的方法,其特征在于,所述方法包括:
构造位图:用位图的状态来表示IP地址的状态信息;所述构造位图的具体过程为:为每一个IP地址分配一个对应位来表示状态,所有IP地址对应的位构成第0级位图,由所述第0级位图中伙伴位的值两两相逻辑与生成第1级位图,依此类推,高一级位图由低级位图中伙伴位的值两两相逻辑与生成,低级位图中的最后一位,如果是奇数位,直接在高一级位图中单独占一位,所述位图的最高级位图只有一位;在所述第0级位图中,所对应的位的值为1表示该位对应IP地址已经分配,为0表示该位对应IP地址未分配;
根据所述位图,从所述最高级位图开始进行IP地址的查找空闲地址操作;所述IP地址的查找空闲地址操作的具体过程为:从最高级位图开始,如果该最高级位图中位的值为1,则说明该地址池下已经没有空闲地址;如果为0,则察看该位在低一级位图中所对应的位,如果有一位为0,则察看该位在更低一级位图中所对应的位,直到找到第0级位图中为0的那一位,所对应的地址即为一个空闲地址。
2、根据权利要求1所述的IP地址管理方法,其特征在于,所述方法还包括根据所述位图进行IP地址分配操作,所述IP地址分配操作的具体过程为:将该IP地址对应的0级位图中的对应位置为1,然后两两相逻辑与生成高一级的位图,不能与别的位结合的,在高一级位图中单独占一位,直到最后只有一位为止。
3、根据权利要求1所述的IP地址管理方法,其特征在于,所述方法还包括根据所述位图进行IP地址回收操作,所述IP地址回收操作的具体过程为:将该IP地址对应的0级位图中的对应位置为0,然后两两相逻辑与生成高一级的位图,不能与别的位结合的,在高一级位图中单独占一位,直到最后只有一位为止。
4、根据权利要求1所述的IP地址管理方法,其特征在于,所述方法还包括根据所述位图进行IP地址状态查询操作,所述IP地址状态查询操作的具体过程为:查询该IP地址对应的0级位图中的对应位置的值,所对应的位的值为1表示该位对应IP地址已经分配,为0表示该位对应IP地址未分配。
CNB2004100303602A 2004-03-19 2004-03-19 一种ip地址管理的方法 Expired - Fee Related CN100502331C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100303602A CN100502331C (zh) 2004-03-19 2004-03-19 一种ip地址管理的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100303602A CN100502331C (zh) 2004-03-19 2004-03-19 一种ip地址管理的方法

Publications (2)

Publication Number Publication Date
CN1671114A CN1671114A (zh) 2005-09-21
CN100502331C true CN100502331C (zh) 2009-06-17

Family

ID=35042189

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100303602A Expired - Fee Related CN100502331C (zh) 2004-03-19 2004-03-19 一种ip地址管理的方法

Country Status (1)

Country Link
CN (1) CN100502331C (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7848263B2 (en) 2006-11-28 2010-12-07 Marvell International, Ltd. Simplified auto-configuration and service discovery in ad-hoc networks
CN101227465B (zh) * 2007-12-29 2010-11-03 北京亿阳信通软件研究院有限公司 一种ip地址管理方法和系统
CN103064794B (zh) * 2013-02-04 2016-05-25 烽火通信科技股份有限公司 实现mpls标签高效管理的方法
CN105872127B (zh) * 2016-05-24 2019-06-11 国家计算机网络与信息安全管理中心广东分中心 一种ip地址管理系统
CN107809495B (zh) * 2016-09-09 2021-06-22 华为技术有限公司 地址管理方法及装置
CN109743280A (zh) * 2018-11-16 2019-05-10 江苏骏安信息测评认证有限公司 一种针对分布式synflood攻击可以快速防护的方法
CN109977373B (zh) * 2019-03-28 2020-10-02 中科驭数(北京)科技有限公司 标识号分配方法、标识号回收方法及装置
CN110532457B (zh) * 2019-07-30 2022-05-24 济南浪潮数据技术有限公司 一种获取网络段id方法及系统

Also Published As

Publication number Publication date
CN1671114A (zh) 2005-09-21

Similar Documents

Publication Publication Date Title
CN1115819C (zh) 密码更新装置
CN100502331C (zh) 一种ip地址管理的方法
CN102479207A (zh) 一种信息搜索的方法、系统及信息搜索设备
CN102474531A (zh) 地址服务器
CN105373927A (zh) 电子券的券码生成方法、装置及服务器
TW201018142A (en) System and method for memory allocation in embedded or wireless communication systems
CN110191428A (zh) 一种基于智能云平台的数据分配方法
CN112860592B (zh) 基于链表的数据缓存方法、装置、电子设备和存储介质
CN104202423A (zh) 一种通过软件架构扩展缓存的系统
CN109213699A (zh) 一种元数据管理方法、系统、设备及计算机可读存储介质
CN109299111A (zh) 一种元数据查询方法、装置、设备及计算机可读存储介质
CN111177025A (zh) 数据存储方法、装置及终端设备
CN100357889C (zh) 以类为单位的远程构件生命周期的管理方法
CN105468541A (zh) 一种面向透明计算智能终端的缓存管理方法
Ji et al. Asymptotic miss ratio of LRU caching with consistent hashing
CN101141482A (zh) 网络资源管理系统及方法
CN101483844B (zh) 索引移动电话号码的方法和系统
CN106815334A (zh) 一种用于终端的数据查询方法及装置
CN102932485B (zh) 服务器连接状态的查询方法和装置
CN1716207A (zh) 定制网络信息存储服务的方法及系统
CN103544292B (zh) 基于HASH表的Diameter消息处理方法和装置
CN102957753B (zh) 用于认证系统的地址溯源方法和装置
CN115437824A (zh) 一种高速缓存控制方法、系统及相关组件
CN103546522A (zh) 确定存储服务器的方法及分布式存储系统
CN104298596A (zh) 一种测试方案随机分配方法、装置及服务器

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090617

Termination date: 20170319

CF01 Termination of patent right due to non-payment of annual fee