适用于大规模移动对等网络的高效地址分配方法

文档序号:7613811阅读:207来源:国知局
专利名称:适用于大规模移动对等网络的高效地址分配方法
技术领域
本发明涉及的是一种网络技术领域的方法,具体地说,是一种适用于大规模移动对等网络的高效地址分配方法。
背景技术
移动对等网络是一种特殊的自组织多跳移动无线网络,适用的领域包括军事无线互联网,传感器网络,个人通信,移动医疗监护等。该技术有不依赖基础设施且能够能够快速和灵活配置的优点,能应用于战场上部队快速展开和推进、发生地震等自然灾害后的搜索和营救、野外科考等。由于每个节点可以移动并有能力路由其他节点的数据报。为了让节点间可以基于路由协议工作,首先需要为每个节点分配一个唯一的地址。在固定网络,如因特网中,设备的网络地址(通常是IP地址)可以静态设定,也可以通过动态地址分配协议(DHCP)动态分配,但都假定存在一个或几个中心节点维护整个网络或子网里的地址分配。在对等网络中,预先分配静态地址不总是可能而且有很多缺点。而且所有节点都是平等的,通常不假定中心节点的存在。所以对等网络中通常需要地址自动配置协议来完成网络内地址的动态分配。国外学者已经提出了几个地址自动分配协议,但都有些不同局限和缺点。几乎所有已有的协议在处理多个网络分区合并时存在困难,并且大多数协议不能适用于大规模的网络。
经对现有技术文献的检索发现,在“适用于移动对等网络的弱重复地址检测”(发表于2002年于ACM MobiHoc国际会议,原文见N.H.Vaidya,“WeakDuplicate Address Detection in Mobile Ad Hoc Networks,”Proc.ACM MobiHoc2002,Lausanne,Switzerland,June 2002)中,他们提出了一个所谓弱重复地址检测地址分配协议。该方法能适用于移动对等网络,但该方法在网络规模变大、节点增多时,性能急剧下降,不能适用于大规模的移动对等网络。寻找低复杂度,低通信开销,低延迟,且能适合大规模移动对等网络的地址自动配置方法一直是一个极其重要又难以克服困难的开放问题。

发明内容
本发明的目的在于克服现有技术中不足,提供一种适用于大规模移动对等网络的高效地址分配方法,使其能适应不同节点密度和节点移动性的大规模网络,复杂度低,通信开销低,延迟低,且地址编码极其经济。
本发明是通过以下技术方案来实现的,本发明基于概率选择一个节点作为地址分配的起点,并为该节点配置地址,赋予元地址资源,未配置地址的节点则周期地向相邻节点发送地址请求,收到地址请求的节点,如果拥有元地址资源,则通过一个局部的决策过程决定向发出请求节点分发元地址,收到元地址的节点,如果尚未配置地址,则为自己配置地址,否则将元地址作为一种资源储存,任何拥有元地址资源的节点都能为其它节点分发元地址,需要离开网络的节点可以将自己的地址作为元地址转交给任何一个相邻节点,从而实现地址回收。
本发明包括以下三个步骤地址分配起点竞选、局部决策元地址分发、地址回收。
(1)地址分配起点竞选由于对等网络中,各节点的地位是平等的,地址分配是一个分布式过程。不妨假定地址分配从某单个节点开始。该节点通过概率方法竞选产生。该节点在获得地址配置的同时,被赋予元地址资源,从而能为其它未配置地址的节点分配地址。从一个起点开始分配的所有地址称为一个地址域。不用的地址域拥有不同的域标识来相互区分。
具体方法是,预先指定一个概率门限R,0.0001<R<0.01,如果R太小,则导致地址资源不能充分利用,如果R太大,则会导致地址分配延迟过大。实践中可取经验值。每个未配置节点周期性查询邻居节点状态,如果收到某个已配置节点的回应,则可以发出地址请求;如果没有收到已配置节点信息超过时间,则用伪随机算法生成一个
间的小数A,如果A<R,则声明自己为地址分配起点,并采用伪随机算法生成域标识(后面用DID标记域标识)。
考虑地址空间为
,M=2K。网络中节点个数为N。N小于等于M。用一个3元组(address,power,DID)来表示元地址。其中,address是该元地址的唯一标识,power指示该元地址拥有的再分配能力,DID是该元地址所在域标识。在考虑单个域内地址分配时,DID都相同。为了方便,可以忽略DID,只用2元组(address,power)来表示元地址。
多个地址分配起点通过域标识来区分,第一个节点在获得初始地址的同时,也产生一个DID,并随着地址分配分发到所有节点。DID的产生有多种方式,唯一的要求是不同网络域的DID要能相互区分。最简单的有两种方式,一种是在一个大于等于32位的地址空间中生成一个随机数作为DID,只要地址空间在40位以上(举例,对于40位的地址空间,同时产生10000个DID,可以计算得发生冲突的概率为4.54×10-5。),就能使不同网络有不同的DID。另一种方式是指定地址分配起点,同时指定DID。后一种方式适合连通子网个数少于10个的网络,则每个子网内可从一个或数个地址分配起点(指定多个地址分配起点,是为了避免单点故障),完成整个网络的地址分配。实际上,称从某个地址分配起点出发参与分配地址的所有节点为一个子网(MANET)。
本发明借助一个特殊的函数(称分配函数f)将地址空间转换为元地址。分配函数f定义如下,定义fS*T->S*T,其中S是地址空间,即S=
,T=
是一个整数区间;f(address,power)=(address|2(K-power),power-1).
注“|”是按位或操作。
本发明规定,只有power>0的元地址可以调用分配函数f生成新的元地址;任意元地址,只要调用f一次,则其power减1。power小于1的元地址不能调用f,或记f(address,<1)=null。普通地址也可以认为是power等于0的元地址。
指定地址分配起点地址的元地址为(DID,0,K)。显然,它可以通过f最多生成K个新的元地址,每个元地址只要power>0又可以生成其它元地址。可以验证通过f从(0,K)繁衍的所有地址个数最多为M个(将(0,K)也算在内)且当所有元地址通过f都耗尽power后(即power都等于0),恰好出现M个元地址。也就是说,从(0,K)出发f能重新生成整个地址空间。
(2)局部决策元地址分发节点发现协议(NDP)通过周期性交换协议报文查询可以通知相邻节点的状态。协议报文查询通常通过一跳广播(one-hop broadcasting)来实现。为了避免元地址分发过程中元地址出现重复,要求任意节点在参与元地址分发操作前,必须拥有链路唯一标识或物理地址,从而能够支持一跳内的单播通信(one-hopunicast)。由于只需要能够区分一跳邻居间节点即可,链路唯一标识的产生是简单的。由于节点可以移动,每当网络拓扑发生变化,都必须重新确认链路标识状态。事实上,拥有元地址的节点可以使用元地址代替链路唯一标识,所以节点对链路唯一标识的需求只是暂时的。这里仅简单假设链路唯一标识是立即可用的。将网络内的节点分为两类配了地址的和未配地址的。为了支持元地址操作,每个节点维护两个变量ADDR,LIST和lastHop。ADDR是配置为该节点地址的元地址,LIST是一个元地址列表(可以用一个元地址类型的链表来实现),lastHop记录为本节点分配地址的节点地址。为了统一处理,规定未配地址节点ADDR=(-1,-1),LIST为长度0的空链表,lastHop为空。为评价一个节点拥有的地址分配能力,将该节点拥有的所有元地址的power值求和,记为heartpower(是一个整数)。
也就是说,相邻节点在交换彼此地址状态时,除了需要交换链路唯一标识支持一跳单播外,还需要通知对方自己的heartpower.每个未配置节点执行决策元地址请求过程来请求地址。收到请求的节点则执行决策元地址分发过程,从而实现元地址的分发。下面以伪代码的形式说明决策的过程,假设节点B收到节点A的地址状态。B执行如下决策元地址请求过程,##决策元地址请求过程AddressRequestProceduce AddressRequestIf B.heartpower<A.powerB向A发出元地址请求End ifEnd proceduce如果A收到了B的请求,则执行下面决策元地址分发过程,##决策元地址分发过程AddressReplyProceduce AddressReply
If A.power>B.heartpowerIf A.LINK中多于1个元地址,取power值最小的一个,记为u,将u从A.LINK中删去,并将u发给节点B。goto EXIT。
Else if A.LINK中只有一个元地址,记该元地址为u,首先将u从A.LINK中删去,If A.Addr.power=0设v=f(u),更新u的状态。如果v不等于null则将v加入A.LINK,End if将u发给B。goto EXIT。
Else if A.ADDR.power>0设u=f(A.ADDR),更新A.ADDR。如果u不等于null则将u发给节点B。goto EXIT。
End ifEnd ifEXIT更新A.heartpowerIf A.LINK为空向A.lastHop发送地址请求End IfEnd procedure接受地址的节点的处理则是简单的。当节点B收到了相应元地址,将A作为lastHop,如果B尚未配置地址(即B.ADDR.address等于-1),则为自己配置地址,也就是B.ADDR=u.否则,如果B已经配置了地址,B则简单地将地址u加入B.LINK中。当A成功分发元地址后,如果A的LINK为空,则向A.lastHop发送元地址请求。用一个计数变量记录失败请求的次数,如果在又一次请求时未收到前一次的回复,则失败次数加1。当失败次数超过3时,则向周围邻居广播一跳查询。收到查询请求的节点,则在回复中报告自己的地址状态。当A收到多个查询回复时,只需选择一个(可任选一个,或选择拥有元地址资源最多的节点)更新自己lastHop.
可以证明,如果A通过决策过程分发了一个元地址给B,则在A和B与其他别的节点发生元地址分发之前,B不会再分发元地址给A。也就是说,上面决策元地址分发过程是稳定的,不会出现A分发了元地址给B,B又立刻分发元地址给A的振荡现象。
由于元地址的分发过程是从(0,K)开始的,所以可以通过将(0,K)赋给某个节点来启动地址分发过程。由于子网内分配的地址都是唯一的,如果将DID也作为地址的一部分,则当不同子网连通时,不同节点依然能够相互区分,所以不同子网是否要合并到同一个子网的地址空间是可选的。具体的子网合并有两种类型。第一种类型是一个网络分裂成多个分区,而后又合并为一个网络。由于本方法在不同分区依然总是分配不重复的地址,当多个分区重新合并时,不会出现发生冲突。第二种类型是两个独立配置地址的子网发生合并。由于节点发现协议周期性与邻节点进行协议报文消息交换。只要在协议报文消息上承载DID信息,则第二种类型的子网合并能很容易检测。既然合并时不同节点依然能够区分,参与合并的节点可以在获取新地址的同时保持旧地址,但旧地址仅用于支持原有的业务,而不在新业务中使用,并逐渐减少旧地址相关的业务(通信或路由),直到所有业务都采用新地址,旧地址被废弃。
(3)地址回收当一个节点离开网络之前,如果该节点拥有元地址资源(ADDR和LIST),则可以元地址转交给任意一个的邻居,该邻居将收到的元地址资源加入到LIST列表,从而可以进一步分发给其它节点。
本发明利用分配函数对地址空间重组织,实现了不重复地址的产生。为每个节点指定再分配能力,使得获得元地址的节点也有能力参与地址的进一步分发,从而加速了地址的分配过程。本发明借助节点发现协议,使得每个节点都能及时获得相邻节点的状态。每个节点运行局部决策元地址分发过程,只依靠局部的信息进行地址分发动作的决策,实现了在全网络内元地址的可靠分发。


图1是对应于不同节点个数地址分配消耗的通信负荷图(单个节点处理的报文个数的平均值)图2是对应于不同节点个数的地址分配延迟图(单个节点处理的地址请求重试次数的平均值)图3是对应于不同工作区域尺寸的地址分配延迟图(单个节点处理的地址请求重试次数的平均值)具体实施方式
实施例采用SWANS仿真器(Scalable Wireless ad hoc Network Simulator)在PC机上(Intel(R)4 cpu 2.20Ghz,256M内存)进行了网络仿真。节点采用随机waypoint移动模型,节点最大速度为10米/秒。停留时间(pause time)是30秒。NDP协议中节点以最大20秒的周期广播协议报文消息。链路唯一地址采用32位随机数代替。为显示本发明的大规模特性,节点一个个加入网络。为了更好地理解本技术方案,下面演示一个采用地址空间为
(K=3)为4个节点网络分配地址过程。在直径为500米的工作区域上,运行仿真,节点采用随机waypoint移动模型,相关参数与前面相同,工作过程如下(1)地址分配起点竞选采用随机选择,假定节点A成为一个地址分配起点(记为A),A.ADDR.address=0,A.ADDR.power=3;A.LINK=null;(2)局部决策元地址分发当另一个节点(记为B)接近A,并向A发出地址请求。A通过决策过程为B分发地址;结果,B.ADDR.address=1,B.ADDR.power=2,A.ADDR.power=2;再一个节点(记为C)接近B,并向B发出地址请求,B使用分配函数为C分配地址;结果,C.ADDR.address=11(二进制),C.ADDR.power=1,B.ADDR.power=1;第4个节点(记为D)接近A,并向A发出地址请求,A使用分配函数为D分配地址;结果,D.ADDR.address=10(二进制),D.ADDR.power=1,A.ADDR.power=1;(3)地址回收假定C决定离开网络,则将其拥有的元地址(11,1)资源转交给任意一个邻节点,比方说B,则B.LINK从NULL变为{(11,1)}.B可以将该地址分配给其它未配置节点。
统计结果显示,总计发出3个地址请求消息;收到3个地址请求消息;发出3个地址分发消息;收到3个地址分发消息;发出10个协议报文消息;截止所有节点获得地址时,共耗时17秒。
图1、2、3给出了不同尺寸地址空间、不同节点数目和不同工作区域的仿真结果。为清晰起间,所列结果只给出截止所有节点获得地址时,每个节点收到的地址相关平均消息个数和总耗时间,而忽略了常规协议报文消息的统计。如图1所示,X轴节点个数,Y轴为每个节点平均收到的地址消息个数,工作区域直径为6000米(即6000*6000米2),显示了通信负载相对于节点数的变化规律,结果标明本方法相对于弱重复地址检测方法具有极低的通信负载,而且对节点数的增加不敏感。如图2所示,X轴节点个数,Y轴为地址请求重试次数,本方法的地址请求延迟相对于弱重复地址检测方法增加不多,且随着节点密度增加有降低趋势。由于节点密度增加时,待配置节点有更多机会遇到已配置节点,因而地址请求失败的情形更少。如图3所示,X轴为区域的尺寸,Y轴为地址请求重试次数,不同尺寸工作区域对本方法的影响,节点数为300,地址空间取
。结果显示通信负载变化不明显,但完成所有节点的地址配置所耗时间几乎线形增长。这是合理的,因为随着节点密度变小,许多节点需要较多的移动才能遇到有地址分发能力的结点,即移动性增强也能加快地址的分发过程。
综上所述,每个节点的地址分发使用局部决策元地址分发方法,只依赖于局部信息,因而能适用于具有不同移动特性的对等网络环境。本发明对地址空间范围不敏感,地址编码是经济的。由于几乎每个已配置节点(元地址)都拥有地址再分配能力,当一个新节点需要配置地址时,几乎能立即从相邻节点得到,因而延迟小。本发明对节点数和地址空间不敏感,因而能适用于大规模的移动对等网络。
权利要求
1.一种适用于大规模移动对等网络的高效地址分配方法,其特征在于,基于概率选择一个节点作为地址分配的起点,并为该节点配置地址,赋予元地址资源,未配置地址的节点则周期地向相邻节点发送地址请求,收到地址请求的节点,如果拥有元地址资源,则通过一个局部的决策过程决定向发出请求节点分发元地址,收到元地址的节点,如果尚未配置地址,则为自己配置地址,否则将元地址作为一种资源储存,任何拥有元地址资源的节点都能为其它节点分发元地址,需要离开网络的节点可以将自己的地址作为元地址转交给任何一个相邻节点,从而实现地址回收。
2.根据权利要求1所述的适用于大规模移动对等网络的高效地址分配方法,其特征是,包括三个步骤(1)地址分配起点竞选地址分配过程总是从某单个节点开始的,该节点通过概率方法竞选产生,该节点在获得地址配置的同时,被赋予元地址资源,从而能为其它未配置地址的节点分配地址,从一个起点开始分配的所有地址称为一个地址域,不同的地址域拥有不同的域标识来相互区分;(2)局部决策元地址分发尚未配置地址的节点周期地向相邻节点发送地址请求,收到地址请求的节点,如果拥有元地址资源,则通过一个局部的决策过程决定向发出请求节点分发元地址,收到元地址的节点,如果尚未配置地址,则为自己配置地址,否则将元地址作为一种资源储存,任何拥有元地址资源的节点都能为其它节点分发元地址;(3)地址回收当一个节点离开网络之前,如果该节点拥有元地址资源ADDR和LIST,则可以元地址转交给任意一个的邻居,该邻居将收到的元地址资源加入到LIST列表,再分发给其它节点。
3.根据权利要求2所述的适用于大规模移动对等网络的高效地址分配方法,其特征是,所述的步骤(1)地址分配起点竞选,通过以下方法实现①预先指定一个概率门限R,0.0001<R<0.01,每个未配置节点周期性查询邻居节点状态,如果收到某个已配置节点的回应,则可以发出地址请求,如果没有收到已配置节点信息超过时间,则用伪随机算法生成一个
间的小数A,如果A<R,则声明自己为地址分配起点,并采用伪随机算法生成域标识;②多个地址分配起点通过域标识来区分,第一个节点在获得初始地址的同时,也产生一个DID,并随着地址分配分发到所有节点;③考虑地址空间为
,M=2K,网络中节点个数为N,N小于等于M,用一个3元组(address,power,DID)来表示元地址,在考虑单个网络内地址分配时,DID都相同,为了方便,可以忽略DID,只用2元组(address,power)来表示元地址;④借助一个分配函数f将地址空间转换为元地址,分配函数f定义如下fS*T->S*T,其中S是地址空间,即S=
,T=
是一个整数区间;f(address,power)=(address|2(K-power),power-1),注“|”是按位或操作,规定只有power>0的元地址可以调用分配函数f生成新的元地址,任意元地址,只要调用f一次,则其power减1,power小于1的元地址不能调用f,或记f(address,<1)=null,普通地址也可以认为是power等于0的元地址;⑤指定地址分配起点地址的元地址为(DID,0,K),它可以通过f最多生成K个新的元地址,每个元地址只要power)0又可以生成其它元地址,从(0,K)出发f能重新生成整个地址空间。
4.根据权利要求2所述的适用于大规模移动对等网络的高效地址分配方法,其特征是,所述的步骤(2)局部决策元地址分发,通过以下方法实现①为了避免元地址分发过程中元地址出现重复,要求任意节点在参与元地址分发操作前,必须拥有链路唯一标识或物理地址,从而能够支持一跳内的单播通信,拥有元地址的节点可以使用元地址代替链路唯一标识;②将网络内的节点分为两类配了地址的和未配地址的,为了支持元地址操作,每个节点维护两个变量ADDR,LIST和lastHop,规定未配地址节点ADDR=(-1,-1),LIST为长度0的空链表,lastHop为空,为评价一个节点拥有的地址分配能力,将该节点拥有的所有元地址的power值求和,记为heartpower ③由于元地址的分发过程是从(0,K)开始的,所以可以通过将(0,K)赋给某个节点来启动地址分发过程,该节点称为地址分配起点,多个地址分配起点通过域标识来区分,第一个节点在获得初始地址的同时,也产生一个DID,并随着地址分配分发到所有节点;④从某个地址分配起点出发参与分配地址的所有节点为一个子网,由于子网内分配的地址都是唯一的,如果将DID也作为地址的一部分,则当不同子网连通时,不同节点依然能够相互区分,所以不同子网是否要合并到同一个子网的地址空间是可选的。
5.根据权利要求4所述的适用于大规模移动对等网络的高效地址分配方法,其特征是,所述的为评价一个节点拥有的地址分配能力,相邻节点在交换彼此地址状态时,除了需要交换链路唯一标识支持一跳单播外,还需要通知对方自己的heartpower,每个未配置节点执行决策元地址请求过程来请求地址,收到请求的节点则执行决策元地址分发过程,从而实现元地址的分发。
6.根据权利要求4所述的适用于大规模移动对等网络的高效地址分配方法,其特征是,所述的DID,是不同网络域的DID要能相互区分。
7.根据权利要求4或者6所述的适用于大规模移动对等网络的高效地址分配方法,其特征是,所述的DID,其产生方式为在一个大于等于32位的地址空间中生成一个随机数作为DID,只要地址空间在40位以上,就能使不同网络有不同的DID。
8.根据权利要求4或者6所述的适用于大规模移动对等网络的高效地址分配方法,其特征是,所述的DID,在连通子网个数少于10个的网络,其产生方式为指定地址分配起点,同时指定DID。
9.根据权利要求4所述的适用于大规模移动对等网络的高效地址分配方法,其特征是,所述的子网,其合并有两种类型第一种类型是一个网络分裂成多个分区,而后又合并为一个网络,在不同分区依然总是分配不重复的地址,当多个分区重新合并时,不会出现发生冲突;第二种类型是两个独立配置地址的子网发生合并,由于节点发现协议周期性与邻节点进行协议报文消息交换,只要在协议报文消息上承载DID信息,则第二种类型的子网合并能很容易检测,既然合并时不同节点依然能够区分,参与合并的节点可以在获取新地址的同时保持旧地址,但旧地址仅用于支持原有的业务,而不在新业务中使用,并逐渐减少旧地址相关的业务,直到所有业务都采用新地址,旧地址被废弃。
全文摘要
一种适用于大规模移动对等网络的高效地址分配方法,属于网络技术移动对等网络领域。本发明基于概率选择一个节点作为地址分配的起点,并为该节点配置地址,赋予元地址资源,未配置地址的节点则周期地向相邻节点发送地址请求,收到地址请求的节点,如果拥有元地址资源,则通过一个局部的决策过程决定向发出请求节点分发元地址,收到元地址的节点,如果尚未配置地址,则为自己配置地址,需要离开网络的节点可以将自己的地址作为元地址转交给任何一个相邻节点,从而实现地址回收。本发明能适应不同节点密度和节点移动性的大规模网络,复杂度低,通信开销低,延迟低,且地址编码极其经济。
文档编号H04L29/12GK1738315SQ20051002948
公开日2006年2月22日 申请日期2005年9月8日 优先权日2005年9月8日
发明者李龙江, 许晓鸣 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1