一种水下无线多跳网络拓扑发现方法与流程

文档序号:16675379发布日期:2019-01-18 23:53阅读:195来源:国知局
一种水下无线多跳网络拓扑发现方法与流程

本发明涉及自组织无线传感器网络技术领域,尤其是一种水下网络拓扑发现方法,适合于水声多跳网络各种无线自组织传感器网络系统。



背景技术:

网络拓扑发现是水声多跳网络的支撑技术之一。对于水声多跳网络,在网络部署的初始阶段,将传感器节点随机布放于待检测区域,当节点布置完毕后,除了自身的信息外,对周围相邻节点的信息毫无所知,此时网络处于无结构状态,在这种情况下,网络无法进行信息采集与处理,因此需要进行网络拓扑发现过程,形成最初的网络结构,使得网络mac(mediaaccesscontrol媒体访问控制)层协议能在初始结构下很快搭建,从而网络能够运行。有效的网络拓扑发现方法有利于形成良好的最初网络拓扑结构,不仅能够提高路由协议和mac层协议的效率,为数据融合、时间同步和目标定位等任务的实现提供网络基础,而且可以延长整个网络的使用时间,对网络运行有至关重要的作用。现已提出的水下网络拓扑发现方法大致可分为两类:基于分布式网络拓扑发现和基于分层式网络拓扑发现。

基于分布式网络拓扑发现,robertopetroccia提出一种自主分配节点id(identity)的dive(distributedidassignmentandtopologydiscovery分布式地址分配和拓扑发现)方法,该方法将节点布放下去,节点自主产生随机数作为该节点的id,之后各节点根据本地计时器时间开始广播发现邻居节点hello包,生成全网拓扑信息后结束拓扑发现过程,进入后台运行状态。这种方法节点id自主分配,但是完成拓扑发现的开销较大,而且全网节点自主随机开始广播hello分组大大增加了碰撞概率。

基于分层式网络拓扑发现,ashishpatil提出通过一个种子节点a发送hello包,从反馈回来的数据中选择出b节点为第二个种子节点并告知b节点,之后b节点作为种子节点广播hello包,若b节点的邻居节点中没有从未做过种子节点的节点,则返回上一个种子节点继续进行初始化,以此类推,生成的种子节点注册表在种子节点间传阅,最后广播拓扑信息,使全部节点获得拓扑信息。这种方法的节点id必须是已知的,灵活性和可拓展性差。

就目前收集到的资料来看,国外对水下无线多跳网络拓扑发现问题的研究才刚刚开始,国内其他研究机构则尚未开展这项研究。由于水声信道传播时延大,并且布放于水下的传感器节点的能量有限等一些特点,使得无线网络中的拓扑发现技术不能直接地应用于水下。为此,设计出一种能够自主分配节点id,开销较小,复杂度低的水下多跳网络集中式的拓扑发现方法迫在眉睫。



技术实现要素:

为了克服现有技术的不足,本发明提供一种水下无线多跳网络拓扑发现方法,考虑到水下多跳网络时延大和能量有限的特点,为了克服现有方法中网络拓扑发现算法中节点id需要在布放之前就已知或者节点id分配算法开销大的问题,有效降低拓扑发现过程中的开销,提出一种高效的自主分配节点id的水下无线多跳网络的拓扑发现方法。本发明使全网络节点在自主分配节点id的同时,能够以低的时延和开销完成拓扑发现,每个节点获得其自身id和网络中的所有相关链路信息。

本发明解决其技术问题所采用的技术方案的步骤如下:

步骤1:g=(v,l)为待发现网络,g是一个多跳网络,其中v表示该网络中的所有节点集合,l表示网络中所有链路的集合,本发明采用树形拓扑结构来完成未知网络的拓扑发现和id分配;

在树形拓扑结构中,指定节点t为根节点,第一跳节点中的节点a对第二跳节点中的节点d发包,节点a指向节点d的有序节点对(a,d)表示节点d为节点a的邻节点,且a是d的父节点,d为a的子节点;节点d的子节点以及与节点d相连通的向下延伸到网络边缘的所有节点称为节点a的子孙节点;没有子节点的节点称为叶子节点;

网络中除了根节点,所有节点有唯一的父节点。根据目前现有的树形多跳网络拓扑结构,所有节点分层为根节点、第1层节点、第2层节点,…第n层节点;网络中共有发现的节点数目为n,ni为节点i的子孙节点的数目,ci为节点i的子节点的数目,nei为节点i的邻居节点数目;i=1,2....n;

步骤2:拓扑发现流程主要包括如下三个阶段并依次执行:

1)、hello包传输阶段:hello包格式为<type(包类型),ki,fi,li>,其中,包类型为hello、disc和ida,ki为随机产生的ki值,ki∈[0,...,64],fi为父亲节点的ki值,li为节点i的层次编号即节点i在网络中所属的跳数;

2)、disc包传输阶段:disc包格式为<type,fi,ki,li,ni>,其中,ni为子孙节点的个数;

3)、ida包传输阶段:ida包格式为<type,idi,li,list(子节点信息列表{kj,nj}})>,其中,idi为节点id;

具体拓扑发现的步骤如下:

步骤2.1、根节点t,令ki=0,fi=0,li=0,按照网络发现数据包格式生成hello包<type(包类型),ki,fi,li>,并依据ki,将ki除以100得出的数值作为计时器tx_timer的值,计时器tx_timer超时后发送hello包,之后根节点依据式(1)和公式(2)开启计时器wait_timerx:

wait_timerleaf=2tp+2tc+tx_timermax(1)

其中tp,tc分别为最大单跳传播时延和传输时延,tx_timermax为网络中tx_timer的最大值;

若节点i不为叶子节点,则x=li,那么为节点i的计时器;若节点i为叶子结点,则x=leaf,那么wait_timerleaf为节点i的计时器;网络拓扑发现过程开始;

步骤2.2、网络中第1跳节点i收到来自根节点的hello包后,将父节点的层次号加1作为其层次编号li,生成节点i的hello包;依据ki,将ki除以100得出的数值作为计时器tx_timer的值,开启计时器tx_timer,计时器超时后发送hello包,之后,节点i如步骤2.1中所述依据式(1)和式(2)开启wait_timerx;

步骤2.3、网络中第2,3......n跳节点依次执行步骤2.2的操作完成hello包的发送,从根节点出发到网络的叶子节点,依此类推直至全网节点完成hello包的发送;若一个节点在发送hello包之前收到来自多个节点的hello包,将最先到达的hello包的发送节点作为其父节点,将其它节点作为其邻节点;网络中节点i发送hello包后开启wait_timerx,在收到的hello包中统计父节点等于ki的不同k值的个数,得到节点i的子节点个数ci,将子节点的ki加入到子节点列表,并将同层次不互为父子且相连通的节点k值添加到邻节点列表{kj};

步骤2.4、若节点i的ci=0,则判断节点i为叶子节点,然后按照网络发现数据包格式生成disc包<type,fi,ki,li,ni>,发送给父节点,报告i节点的disc包中的信息;对于任意非叶子节点i,若wait_timerx超时也就是等于式(2)的值后,收到其所有子节点的disc包,则计算其子孙节点的数目ni,ni为i节点收到的来自子节点的disc包中ni的总和加上i节点的ci,并生成disc包发送给父节点;已经在hello包传输阶段中得到了每个节点的子节点总数,若wait_timerx超时后,节点i收到其部分子节点的disc包,则根据网络发现数据格式形成disc_req包<type,ki>,并发送一次disc_req包给节点i未接收到的节点,请求未发送disc包的节点重新发包,如果在2(tc+tp)时间内其仍未接收到未发送disc包节点的disc包,将未发送disc包的节点当作节点i的叶子节点,再计算节点id的子孙节点的数目ni,ni为i节点收到的来自子节点的disc包中ni的总和加上i节点的ci,生成disc包发送给父节点;

步骤2.5、待根节点收到其所有子节点的disc包,根节点获知全网节点数,即其子孙节点的数目;根节点根据网络发现数据格式生成ida包<type,idi,li,list{kj,nj}>,并发送给其所有子节点;

步骤2.6、收到ida包的任意一个非根节点i,检查节点i的ki值是否包含在list中,若是则依据式(3)和式(4)完成id计算,然后生成节点i的ida包,依据ki值开启计时器tx_timer,计时器到时后发送该ida包;

节点i按照式(3)和式(4)计算自身节点id:

其中idf为节点i的父节点id,为k值顺序为j的节点i的子孙节点个数;

步骤2.7、最终网络中每个节点获得唯一最短的id、所有邻居节点信息以及网络的树形拓扑信息;

步骤3、当有新节点要加入通过步骤1和步骤2形成的网络时,执行如下步骤;

步骤3.1:新加入节点随机产生ka值,新加入节点的父节点idfa=0,新加入节点的层次号la=0,生成helloadd包,helloadd包格式为<type,ka,list(子节点信息列表{idfa,la}})>,发送helloadd包,并开启计时器wait_timerx;

步骤3.2:网络中新节点的邻居回复helloadd包,新加入节点的邻居节点将新加入节点的kj和nj添加到他们disc包的list中,邻居节点一级一级的把信息报告给根节点;

步骤3.3:根节点逐级发送idaadd包给新加入节点确定其父节点id,其中,idaadd包格式为<type,ka,idfa,la,δ>,并根据式(5)分配id给新加入节点,δ为新加入节点的ka值的排序:

idadd=maxid+δ(5)

步骤4:网络拓扑发现阶段,本发明采用时延和开销两个指标考察性能,令网络中第n层次的总节点个数为nn,hello包、disc包和ida包的比特数分别为bithello、bitdisc和bitida;令l为单跳最大距离,n为网络的最大层次数,wait_timerleaf为叶子节点的计时器,tx_timermax为最大的tx_timer,nleaf为叶子节点个数;

拓扑发现时延的计算步骤如下:

拓扑发现的目标是网络的根节点获得所有叶子节点到中心节点的有序传输路径,获得网络拓扑结构;网络中普通节点获得唯一最短的id、邻节点信息和自身所在的一条从中心节点到叶子节点的逻辑链路;

1)第一部分,从根节点逐跳发送hello包直到最后一跳节点发送完毕,此过程需要时延,时延t1为:

t1=(tp+tc+tx_timermax)×(n+1)(6)

2)第二部分,从叶子节点逐跳发送disc包直到根节点收到来自第二跳节点的disc包,该过程共需要时延t2为::

t2=n×(tc+tp)(7)

3)第三部分,从根节点逐跳发送ida包直到叶子节点收到来自上一跳节点的ida包,需要时延t3为::

t3=(tx_timermax+tp+tc)×(n+1)(8)

完成节点id分配和拓扑发现过程总共需要的时延为:

ttotal=t1+t2+t3(9)

拓扑发现开销的计算:

1)第一部分,从根节点逐跳发送hello包直到最后一跳节点接收到来自父节点的hello包,此过程需要开销:

2)第二部分,从叶子节点逐跳发送disc包直到根节点收到来自第二跳节点的disc包,该过程共需要开销:

3)第三部分,从根节点逐跳发送ida包直到叶子节点收到来自上一跳节点的ida包,需要开销:

bit3=(n-nleaf)×bitida(12)

完成节点id分配和拓扑发现过程需要的平均开销为:

communicationtraffic=(bit1+bit2+bit3)÷n(13)

通过步骤1,步骤2,步骤3完成了网络拓扑的发现过程,通过本步骤的计算完成发现过程需要的时延和开销,得到本发明完成网络的拓扑发现,达到网络中每个节点获得全网统一的拓扑结构,也就是节点间彼此连通状态的目的。

本发明的有益效果在于:

1、自主分配节点id的拓扑发现方法解决了网络拓扑发现过程中存在的布放之前要确定好节点id的问题。

2、有效避免了获取完整拓扑信息开销大的问题。

3、能够在网络随机布放后快速完成网络的建立,为网络后续正常工作提供基础。

4、方法简单有效,操作实施简单,具有可实施性。

5、具有较低的开销和能耗,有利于延长整个网络的生存期。

附图说明

图1是本发明的树形拓扑结构示意图。

图2是本发明的两跳十节点网络拓扑发现过程的具体实施示意图。

图3是本发明的网络拓扑发现数据包格式。

图4是本发明节点自主分配节点id的示意图。

图5是本发明节点id分配结果示意图。

图6是本发明未进行拓扑发现的节点分布示意图。

图7是本发明使用本发明方法后的拓扑发现结果示意图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

以两跳十节点的网络为例,给出相应拓扑发现方案如图2所示。

步骤1:g=(v,l)为待发现网络,g是一个多跳网络,其中v表示该网络中的所有节点集合,l表示网络中所有链路的集合,本发明采用树形拓扑结构来完成未知网络的拓扑发现和id分配;

在树形拓扑结构中,如图1所示,指定节点t为根节点,第一跳节点中的节点a对第二跳节点中的节点d发包,节点a指向节点d的有序节点对(a,d)表示节点d为节点a的邻节点,且a是d的父节点,d为a的子节点;节点d的子节点以及与节点d相连通的向下延伸到网络边缘的所有节点称为节点a的子孙节点;没有子节点的节点称为叶子节点;

为了高效地完成基于树形结构的拓扑发现与id分配,网络中除了根节点,所有节点有唯一的父节点。根据目前现有的树形多跳网络拓扑结构,所有节点分层为根节点、第1层节点、第2层节点,…第n层节点;网络中共有发现的节点数目为n,ni为节点i的子孙节点的数目,ci为节点i的子节点的数目,nei为节点i的邻居节点数目;i=1,2....n;

步骤2:拓扑发现流程如图2所示,主要包括三个阶段依次执行:

1)、hello包传输阶段:如图3所示,hello包格式为<type(包类型),ki,fi,li>,其中,包类型为hello、disc和ida,ki为随机产生的ki值,ki∈[0,...,64],fi为父亲节点的ki值,li为节点i的层次编号即节点i在网络中所属的跳数;

2)、disc包传输阶段:如图3所示,disc包格式为<type,fi,ki,li,ni>,其中,ni为子孙节点的个数;

3)、ida包传输阶段:如图3所示,ida包格式为<type,idi,li,list(子节点信息列表{kj,nj}})>,其中,idi为节点id;

具体拓扑发现的步骤如下:

步骤2.1、根节点t,令ki=0,fi=0,li=0,按照网络发现数据包格式生成hello包<type(包类型),ki,fi,li>,并依据ki,将ki除以100得出的数值作为计时器tx_timer的值,计时器tx_timer超时后发送hello包,之后根节点依据式(1)和公式(2)开启计时器wait_timerx:

wait_timerleaf=2tp+2tc+tx_timermax(1)

其中tp,tc分别为最大单跳传播时延和传输时延,tx_timermax为网络中tx_timer的最大值;

若节点i不为叶子节点,则x=li,那么为节点i的计时器;若节点i为叶子结点,则x=leaf,那么wait_timerleaf为节点i的计时器;网络拓扑发现过程开始;

步骤2.2、网络中第1跳节点i收到来自根节点的hello包后,将父节点的层次号加1作为其层次编号li,生成节点i的hello包;依据ki,将ki除以100得出的数值作为计时器tx_timer的值,开启计时器tx_timer,计时器超时后发送hello包,之后,节点i如步骤2.1中所述依据式(1)和式(2)开启wait_timerx;

步骤2.3、网络中第2,3......n跳节点依次执行步骤2.2的操作完成hello包的发送,从根节点出发到网络的叶子节点,依此类推直至全网节点完成hello包的发送;若一个节点在发送hello包之前收到来自多个节点的hello包,将最先到达的hello包的发送节点作为其父节点,将其它节点作为其邻节点;网络中节点i发送hello包后开启

wait_timerx,在收到的hello包中统计父节点等于ki的不同k值的个数,得到节点i的子节点个数ci,将子节点的ki加入到子节点列表,并将同层次不互为父子且相连通的节点k值添加到邻节点列表{kj};

步骤2.4、若节点i的ci=0,则判断节点i为叶子节点,然后按照网络发现数据包格式生成disc包<type,fi,ki,li,ni>,发送给父节点,报告i节点的disc包中的信息;对于任意非叶子节点i,若wait_timerx超时也就是等于式(2)的值后,收到其所有子节点的disc包,则计算其子孙节点的数目ni,ni为i节点收到的来自子节点的disc包中ni的总和加上i节点的ci,并生成disc包发送给父节点;已经在hello包传输阶段中得到了每个节点的子节点总数,若wait_timerx超时后,节点i收到其部分子节点的disc包,则根据网络发现数据格式形成disc_req包<type,ki>,并发送一次disc_req包给节点i未接收到的节点,请求未发送disc包的节点重新发包,如果在2(tc+tp)时间内其仍未接收到未发送disc包节点的disc包,将未发送disc包的节点当作节点i的叶子节点,再计算节点id的子孙节点的数目ni,ni为i节点收到的来自子节点的disc包中ni的总和加上i节点的ci,生成disc包发送给父节点;

步骤2.5、待根节点收到其所有子节点的disc包,根节点获知全网节点数,即其子孙节点的数目;根节点根据网络发现数据格式生成ida包<type,idi,li,list{kj,nj}>,并发送给其所有子节点;

步骤2.6、收到ida包的任意一个非根节点i,检查节点i的ki值是否包含在list中,若是则依据式(3)和式(4)完成id计算,然后生成节点i的ida包,依据ki值开启计时器tx_timer,计时器到时后发送该ida包;

节点i按照式(3)和式(4)计算自身节点id:

其中idf为节点i的父节点id,为k值顺序为j的节点i的子孙节点个数;以节点数为10的网络为例,如图4所示,根节点t的id=0,根节点t的子节点a,b,c的li,ki和ci分别为(1,21,2),(1,12,2),(1,1,2),三个节点ki值排序为j即节点c的j=1,节点b的j=2,节点a的j=3。idc=0+0+1=1,idb=2+0+2=4,ida=2+2+3=7;叶子节点f,g,e,m,d,n的li,ki和ci分别为(2,3,0),(2,31,0),(2,15,0),(2,5,0),(2,9,0),(2,7,0),六个节点ki值排序为j即节点f的j=1,节点m的j=2,节点h的j=3,节点d的j=4,节点e的j=5,节点g的j=6。idf=0+4+1=5,idm=0+1+1=2,idh=0+7+1=8,idd=0+7+2=9,ide=0+1+2=3,idg=0+4+2=6。

步骤2.7、最终网络中每个节点获得唯一最短的id、所有邻居节点信息以及网络的树形拓扑信息;

步骤3、当有新节点要加入通过步骤1和步骤2形成的网络时,执行如下步骤;

步骤3.1:新加入节点随机产生ka值,新加入节点的父节点idfa=0,新加入节点的层次号la=0,按照图3所示包格式生成helloadd包,helloadd包格式为<type,ka,list(子节点信息列表{idfa,la}})>,发送helloadd包,并开启计时器wait_timerx;

步骤3.2:网络中新节点的邻居回复helloadd包,新加入节点的邻居节点将新加入节点的kj和nj添加到他们disc包的list中,邻居节点一级一级的把信息报告给根节点;

步骤3.3:根节点逐级发送idaadd包给新加入节点确定其父节点id,其中,idaadd包格式为<type,ka,idfa,la,δ>,并根据式(5)分配id给新加入节点,δ为新加入节点的ka值的排序:

idadd=maxid+δ(5)

步骤4:网络拓扑发现阶段,本发明采用时延和开销两个指标考察性能,以下对该拓扑发现方法进行时延和能耗的计算。令网络中第n层次的总节点个数为nn,hello包、disc包和ida包的比特数分别为bithello、bitdisc和bitida;令l为单跳最大距离,n为网络的最大层次数,wait_timerleaf为叶子节点的计时器,tx_timermax为最大的tx_timer,nleaf为叶子节点个数;

拓扑发现时延的计算步骤如下:

拓扑发现的目标是网络的根节点获得所有叶子节点到中心节点的有序传输路径,获得网络拓扑结构。网络中普通节点获得唯一最短的id、邻节点信息和自身所在的一条从中心节点到叶子节点的逻辑链路。

1)第一部分,从根节点逐跳发送hello包直到最后一跳节点发送完毕,此过程需要时延,时延t1为:

t1=(tp+tc+tx_timermax)×(n+1)(6)

2)第二部分,从叶子节点逐跳发送disc包直到根节点收到来自第二跳节点的disc包,该过程共需要时延t2为::

t2=n×(tc+tp)(7)

3)第三部分,从根节点逐跳发送ida包直到叶子节点收到来自上一跳节点的ida包,需要时延t3为::

t3=(tx_timermax+tp+tc)×(n+1)(8)

完成节点id分配和拓扑发现过程总共需要的时延为:

ttotal=t1+t2+t3(9)

拓扑发现开销的计算步骤如下:

对于网络拓扑发现阶段,开销是考察方法性能的另一个指标;

1)第一部分,从根节点逐跳发送hello包直到最后一跳节点接收到来自父节点的hello包,此过程需要开销:

2)第二部分,从叶子节点逐跳发送disc包直到根节点收到来自第二跳节点的disc包,该过程共需要开销:

3)第三部分,从根节点逐跳发送ida包直到叶子节点收到来自上一跳节点的ida包,需要开销:

bit3=(n-nleaf)×bitida(12)

完成节点id分配和拓扑发现过程需要的平均开销为:

communicationtraffic=(bit1+bit2+bit3)÷n(13)

通过步骤1,步骤2,步骤3完成了网络拓扑的发现过程,通过本步骤的计算完成发现过程需要的时延和开销,得到本发明可以以较低的时延和能耗完成网络的拓扑发现,达到网络中每个节点获得全网统一的拓扑结构,也就是节点间彼此连通状态的目的。

采用matlab对本发明的性能进行仿真,将十个节点随机布放在某区域中,其中一个为触发节点,节点分布图如图6所示。发射功率为8w,接收功率为1.3w,空闲侦听功率为0.285w,传输速率为7.5kbps,有效通信距离为70m;由根节点发起初始化过程。

具体步骤如下:

1、根节点t,令ki=0,fi=0,li=0,按照图3所示包格式生成hello包,发送hello包,并依据式(1,2)开启计时器wait_timerx(若节点i为普通节点,则x=li;若节点i为叶子结点,则x=leaf),网络拓扑发现过程开始。

2、网络中第1层节点a,b,c收到来自根节点的hello包后,将节点t的层次号加1作为其层次编号li,li=1,生成其hello包,依据ki开启计时器tx_timer

(tx_timer=ki/100),计时器超时后发送hello包,并开启计时器wait_timer1。

3、网络中节点f,g收到来自节点b的hello包,确定节点b为自己的父节点,将节点b的层次号加1作为节点f,g的层次编号,li=2,生成其hello包,依据ki开启计时器tx_timer,计时器超时后发送hello包,并开启计时器wait_timer2,节点b收到来自节点f,g的hello包,统计父节点等于kb的不同ki值的个数,得到节点b的子节点个数为2,将子节点的ki加入到子节点列表。节点e,m,d,h同理进行发包,网络中所有节点完成hello包的发送,从根节点出发到网络边缘,依此类推全网节点完成hello包的发送。节点f,g,e,m,d,h的ci都为零,这些节点为叶子节点,且ni=ci,然后如图3所示生成disc包,向父节点报告该节点的属性。

4、节点a,b,c收到所有子节点的disc包时,计算其子孙节点的数目ni(通过i节点收到的来自子节点的disc包中ni的总和加上i节点的ci得到),生成disc包,发送disc包给父节点t。若wait_timer0超时后,节点t收到了来自节点b,c,a的disc包,则计算其子孙节点的数目ni=9(通过i节点收到的来自子节点的disc包中ni的总和加上i节点的ci得到,即6+3=9);若wait_timer0超时后,节点t只收到了来自节点b,c的disc包,则其按照图3所示发送一次disc_req包给节点a,请求未发送disc包的节点a重新发包,如果在2(tc+tp)时间内节点t仍未接收到来自节点a的disc包,将节点a当作其叶子节点,再计算其子孙节点的数目ni=7(通过i节点收到的来自子节点的disc包中ni的总和加上i节点的ci得到,即4+3=7)。本例假设节点t收到了来自子节点a,b,c的disc包。

5、待根节点t收到所有子节点的disc包,根节点获知全网节点数,即其子孙节点的数目;根节点依据图3生成ida包,并发送给其所有子节点。

6、任意收到ida包的非根节点,检查其ki值是否包含在list中,若是则依据式(3,4)完成id计算,然后生成其ida包,依据ki值开启计时器tx_timer,计时器到时后发送该ida包。本地节点i根据公式(3,4)计算自身id过程如图4所示。

7、最终网络中每个节点获得唯一最短的id、所有邻居节点信息以及网络的数形拓扑信息。过程如图4、图5所示。

拓扑发现时延的计算如下:

1、第一部分,从根节点逐跳发送hello包直到最后一跳节点发送完毕,此过程需要时延:

t1=(tp+tc+tx_timermax)×(n+1)=2.07s

2、第二部分,从叶子节点逐跳发送disc包直到根节点收到来自第二跳节点的disc包,该过程共需要时延:

t2=n×(tc+tp)=0.11s

3、第三部分,从根节点逐跳发送ida包直到叶子节点收到来自上一跳节点的ida包。需要时延:

t3=(tx_timermax+tp+tc)×(n+1)=2.1s

完成节点id分配和拓扑发现过程总共需要时延为ttotal=t1+t2+t3=4.28s。

拓扑发现开销的步骤如下:

1、第一部分,从根节点逐跳发送hello包直到最后一跳节点接收到来自父节点的hello包,此过程需要开销:

2、第二部分,从叶子节点逐跳发送disc包直到根节点收到来自第二跳节点的disc包,该过程共需要开销:

3、第三部分,从根节点逐跳发送ida包直到叶子节点收到来自上一跳节点的ida包。需要开销:

完成节点id分配和拓扑发现过程需要的平均开销为:

communicationtraffic=(bit1+bit2+bit3)÷n=99bits

经过拓扑发现后,如图7所示,网络中每个节点都知道了全网拓扑信息和自己的id号,网络链路连通性一目了然。本发明能够准确地进行节点id分配,同时得到完整的全网拓扑信息。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1