[发明专利]一种基于剩余带宽的毫米波网络多路径回传路由方法有效
申请号: | 201710005772.8 | 申请日: | 2017-01-05 |
公开(公告)号: | CN106658636B | 公开(公告)日: | 2020-02-14 |
发明(设计)人: | 闫中江;马忠彧;李波;杨懋;左晓亚 | 申请(专利权)人: | 西北工业大学 |
主分类号: | H04W40/04 | 分类号: | H04W40/04;H04W40/12;H04W40/24 |
代理公司: | 61204 西北工业大学专利中心 | 代理人: | 金凤 |
地址: | 710072 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 剩余 带宽 毫米波 网络 路径 路由 方法 | ||
1.一种基于剩余带宽的毫米波网络多路径回传路由方法,其特征在于包括下述步骤:
步骤1.创建用于存储邻居节点信息和路由信息的邻居节点表和路由表,其中邻居节点表如下表所示:
其中,NbrID为邻居节点表节点序列号,Nbr_Addr为邻居节点地址号,BH_BW_LEFT为邻居节点回传链路剩余总带宽,NBR_LINK_BW_LEFT(Neighborhood Link Bandwidth Left)为与该邻居节点所有回传链路上的剩余带宽,Self_Sector_Links为与该邻居节点在某扇区中相连的所有回传链路数;
路由表如下表所示:
PathID Destination_Pathno Valid BW Lefttime Stamps/Path Realloc 1 2
其中,PathID为路径ID号,Destination_Pathno为路径目的端指定的序列号,设置为RREP包中的PATHNO,Valid表示该路径目前是否有效可用的标示位,BW为该路径的带宽,该值设置为RREP包中的BH_BW_REQ,Lefttime为该路径的有效生存时间,初始化为T,Stamps/Path为该路径上所有节点的ID/地址,realloc为扩展路由表信息预留字段;
设置邻居节点发现计时器Nbr_Timer之后转入步骤2,否则继续停留在步骤1建立节点的邻居节点表和路由表;
步骤2.判断邻居节点发现计时器Nbr_Timer是否超时,如果Nbr_Timer超时则转步骤3,否则转步骤4;
步骤3.创建用于邻居节点间带宽信息交互的信令包HELLO,具体的包格式及字段划分如下:
TYPE SEQNO SA DA BH_BW_left NBR_LINK_BW_left
其中,TYPE表示HELLO包的类型标志位,本发明设为0;SEQNO(Sequence Number)表示此HELLO信令包的序列号,SA(Source Address)表示此HELLO信令包的源地址,DA(Destination Address)表示此HELLO信令包的目的端地址,即邻居节点地址,BH_BW_LEFT(Backhaul Bandwidth)表示本节点所有回传路径总的剩余带宽,当节点无回传路径路由时,该值设为0,NBR_LINK_BW_LEFT表示与该邻居节点的所有回传链路上的剩余带宽;
向所有邻居节点发送HELLO包,并重置邻居节点发现计时器Nbr_Timer,之后转入步骤2,否则继续停留在步骤3建立HELLO信令包并向邻居节点发送;
步骤4.路由表检查与维护
通过步骤4.1的计算检查是否需要建立新的路径,通过步骤4.2计算检查是否需要拆除某条路径,通过步骤4.3检查路由表中是否有超过有效时间失效的路径;
步骤4.1:判断节点当前所有路径的带宽之和与回传负载BW_LOAD的关系,如则确定回传请求带宽其中α为权重因子,取值范围为[0,1],S为扇区个数,B为波束个数,S和B均取非负整数,转入步骤6开启路由发现,否则时转步骤4.2;
步骤4.2:如果则从路由表中随机选择一条带宽小于α×BW_LOAD的路径,产生路径删除信令包RDEL,具体包格式及字段划分如下:
TYPE PATHNO SA DA BH_BW_REQ STAMP_NUM STAMP1 … STAMPn
其中TYPE表示RDEL包类型标志位,本发明中设为3,PATHNO表示根据路由的目的节点所确定的路径序列号,SA表示发送端地址,DA表示接收端地址,BH_BW_REQ表示待删除路径上的带宽,即原RREQ中的剩余带宽请求值,STAMP_NUM表示待删除路径中的所有节点数,STAMP1到STAMPn分别表示待删除路径上第1到第n个中间节点的地址;节点找出自己路由表中Destination_Pathno为PATHNO所包含的Stamps/Path,复制在删除信令包RDEL的STAMP域内并向下一跳邻居节点发送,更新节点回传链路剩余带宽信息,即找出邻居节点表中Nbr_Addr为RDEL中STAMP2的NBR_LINK_BW_LEFT和BH_BW_LEFT,
NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ,BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ,同时删除路由表中该条路径信息,否则转入步骤4.3;
步骤4.3:查找邻居节点表中NbrAddr和路由表STAMP域中相同的条目,对比邻居节点表中的NBR_LINK_BW_LEFT和路由表中的BW,若NBR_LINK_BW_LEFT>BW,则找出路由表中Valid=0的路由条目,当路由路径剩余生存时间大于门限值时,设置Valid=1激活该路由;否则查找路由表中路径valid=0且路由路径剩余生存时间小于门限值的条目,产生该路径的路径删除信令包RDEL并发送,删除路由表中该条路径信息,更新链路剩余带宽信息,以释放该条路径,否则转入步骤5;
步骤5.如果节点接收到数据包则判断接收到的数据包的类型,则做出如下处理:
首先判断该包是否是来自本节点上层,如果是则转步骤5.1,否则数据包是下层提交至路由层的,进而判断如果接收到的是HELLO信令包则转步骤5.2,如果接收到的是路由信息请求信令包RREQ,则转入步骤5.3;数据包处理结束后,转步骤2;
信令包RREQ具体包格式及字段划分如下:
TYPE SEQNO SA DA TTL BH_BW_REQ STAMP_NUM STAMP1 … STAMPn
其中,TYPE表示RREQ包的类型标志位,本发明中设为1,SEQNO表示该RREQ包序列号,SA表示产生此RREQ源节点地址,DA表示此RREQ包要到达的目的节点地址;TTL(Time To Live)为包生存周期,表示该RREQ剩余可转发跳数,初始值设为15,BH_BW_REQ表示该RREQ所寻找路径要满足的请求带宽,STAMP_NUM表示该RREQ包已寻找到的路径节点数,表示该域后面还有相应地到达目的节点时已经过的STAMP_NUM个中间节点的地址,源节点设置该域值为0,最大值设置为15,超过15则表示为路径不可达,STAMPn表示该RREQ包已寻找到的路径上第n个中间节点的地址;
如果接收到路由信息应答信令包RREP,则转入步骤5.4,信令包RREP具体包格式及字段划分如下:
TYPE PATHNO SA DA BH_BW_REQ STAMP_NUM STAMP1 … STAMPn
其中,TYPE表示RREP包类型标志位,本发明中设为2,PATHNO表示根据路由的目的节点所确定的路径序列号,SA表示发送端地址,即原路径请求的目的节点地址,也即网关节点地址,DA表示接收端地址,即原路径请求的源节点地址,也即相应RREQ的源地址,BH_BW_REQ表示该RREP包应答的路径带宽,即原RREQ中的剩余带宽请求值,STAMP_NUM表示该RREP包路径中的所有节点数,表示该域后面还有STAMP_NUM个中间节点的地址,源节点设置STAMP_NUM为0,STAMPn表示该RREP包已寻找到的路径上第n个中间节点的地址;
如果收到的是链路删除信令包RDEL,则转入步骤5.5,之后转入步骤2,否则继续停留在步骤5进行包处理;
步骤5.1:根据回传数据速率要求,从路由表中满足带宽需求的路由路径中随机选择一条,在包头中加上相应的路径组成路由数据包RDAT进行数据发送,如果不存在这样的路径,则缓存数据等待路由表更新,缓存超时则丢弃该数据包,数据包RDAT具体包格式及字段划分如下:
TYPE SEQNO SA DA BH_BW_REQ STAMP_NUM STAMP1 … STAMPn DATALOAD
其中,TYPE表示路由包类型标志位,本发明设为4,SEQNO表示路由数据包的序列号,SA表示发送端地址,DA表示接收端地址,BH_BW_REQ表示数据传输带宽,STAMP_NUM表示待删除路径中的所有节点数,STAMPn表示待删除路径上第n个中间节点的地址,DATALOAD表示回传数据负载;
步骤5.2:根据HELLO包中SA,用HELLO包中的BH_BW_LEFT和NBR_LINK_BW_LEFT替换邻居节点表NbrAddr和HELLO包中SA相同的条目对应的BH_BW_LEFT和NBR_LINK_BW_LEFT,随后销毁该HELLO包;
步骤5.3:将RREQ转发至收到此RREQ包的节点的邻居节点称为inNbr,将RREQ由收到此RREQ包的节点转发至下一跳的邻居节点称为outNbr,当收到RREQ的节点收到RREQ之后,判断RREQ中的目的地址域DA是否为本节点的地址,
如果本节点为RREQ的目的节点,则执行以下步骤:
1)TTL检查:判断如果TTL≥0则继续执行步骤2),否则丢弃该包;
2)路由环路检查:判断该节点是否已经在此RREQ包的STAMP域中,如果不存在则继续执行步骤3),否则丢弃该包;
3)产生RREP包:产生一个空RREP包后,将产生空RREP包的节点的自身地址填入RREP的SA,将RREQ中的SA填写为RREP的DA,将TYPE填写为2,此处TYPE为区别包类型的数字,可设置其他数字,但不能与其他包类型的数字重叠,将RREQ的STAMP域反向后写入RREP中的STAMP域,将RREQ中的BH_BW_REQ值写入RREP中的BH_BW_REQ域;
4)向STAMP域中的下一跳节点发送RREP包;
如果本节点不是RREQ的目的节点,则依次执行以下内容:
1)判断包中TTL值,如果TTL=0,丢弃该包,否则执行2);
2)检查STAMPn域是否包含本节点ID,如果包含则丢弃该包,否则,执行3);
3)如果路由表不为空,比较路由表中BW和RREQ中的BH_BW_REQ,若BW>BH_BW_REQ,则按照路由表中有效valid=1且Lefttime最大的原则选择一条满足带宽的路径,将该路径组成RREP并向RREQ源节点发送,更新邻居节点表中NbrAddr为inNbr条目的BH_BW_LEFT=BH_BW_LEFT-BH_BW_REQ、NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,否则,执行4);
4)确定可转发RREQ包的邻居节点集合:NBRS={邻居节点表中Nbr_LinkBw_Left>BH_BW_REQ的所有邻居节点}–{STAMP域中本节点的邻居节点inNbr},如果NBRS为空,则丢弃该RREQ包,转入步骤2;如果NBRS不为空,则更新邻居节点表中NbrAddr为inNbr的条目的剩余带宽信息:
NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,同时设置计时器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)的有效时间为T,超时则重置邻居节点表中NbrAddr为inNbr的路由条目的剩余带宽信息:
NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ),其中计时器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)为收到RREQ序列号为SEQNO、请求带宽为BH_BW_REQ且发送此包的节点链路剩余带宽为inNbr_LinkBw_Left时设置的有效时长为T定时器,即该定时器有四个属性:标记RREQ序列号、标记发送该包的剩余带宽、标记请求带宽、标记该计时器的有效时间T;随后更新TTL=TTL-1,并向节点集NBRS中的每一个邻居节点outNbr发送RREQ,同时更新邻居节点表中NbrAddr为outNbr的条目的回传链路剩余带宽信息:
NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,并设置计时器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T)的有效时间为T(计时器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T)超时则重置邻居节点表中NbrAddr为outNbr的剩余带宽信息,即:
NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ));
步骤5.4:令转发来RREP包的邻居节点为outNbr,RREP包STAMP域中指定的本节点的下一跳邻居节点为inNbr,当节点收到RREP信令包之后,查看信令包的目的地址,如果目的地址是本节点,则执行1),否则执行2);
1)将RREP包中的路径添加到路由表中,查找标识为DA.SEQNO的计时器:如果计时器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)尚未超时,则取消计时器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T),并设置Valid=1;如果计时器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)超时,并且邻居节点表中NbrAddr为outNbr的NBR_LINK_BW_LEFT满足NBR_LINK_BW_LEFT-BH_BW_REQ≥0,则NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,并设置Valid=1,否则,设置Valid=0;
2)查找计时器timer(RREQ.SEQNO,outNbr_LinkBw_Left,BH_BW_REQ,T),并取消该计时器;
查找计时器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T),如果计时器timer(RREQ.SEQNO,inNbr_LinkBw_Left,BH_BW_REQ,T)未超时,则取消该计时器,根据STAMP域中的指定路径,将RREP包转发给下一跳邻居节点inNbr;否则,将RREP包中的路径添加到本节点的路由表中,更新BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ;
步骤5.5:转发来RDEL包的邻居节点为outNbr,RDEL包中指定路径下一跳的邻居节点为inNbr,当节点收到RDEL信令包之后,查看目的地址,如果目的地址是本节点则执行1),否则执行2);
1)读取RDEL中的BH_BW_REQ,更新邻居节点表中的链路剩余带宽信息:
BH_BW_LEFT=BH_BW_LEFT+BH_BW_REQ,在路由表中删除PATHNO的回传路径条目,然后销毁该数据包;
2)更新邻居节点表中NbrAddr为inNbr和outNbr条目的NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ;
根据RDEL包中指定的路径,转发给下一个邻居节点inNbr;
步骤6.节点根据回传请求带宽BH_BW_REQ,进入路由发现流程而依次执行步骤1)和步骤2),之后转入步骤2,否则继续停留在步骤6进入路由发现,所述的步骤1)和步骤2)如下:
1)确定可发送路由信息请求包RREQ的邻居节点集合NBRS:NBRS={邻居节点表中BH_BW_LEFT>BH_BW_REQ且NBR_LINK_BW_LEFT>BH_BW_REQ的所有邻居节点}+{邻居节点表中BH_BW_LEFT=0且NBR_LINK_BW_LEFT>BH_BW_REQ的所有邻居节点},之后执行2);
2)节点向邻居节点集NBRS中的每一个邻居节点发送RREQ,之后更新NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ与邻居节点的回传链路剩余带宽NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT-BH_BW_REQ,后续HELLO包中使用更新后的NBR_LINK_BW_LEFT进行发送;设置计时器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T),超时时间为T,当计时器timer(RREQ.SEQNO,Nbr_LinkBw_Left,BH_BW_REQ,T)超时时,重置NBR_LINK_BW_LEFT=NBR_LINK_BW_LEFT+BH_BW_REQ,表示从该邻居节点发送出去的RREQ包被丢弃。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学,未经西北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710005772.8/1.html,转载请声明来源钻瓜专利网。