CN106658636B - 一种基于剩余带宽的毫米波网络多路径回传路由方法 - Google Patents
一种基于剩余带宽的毫米波网络多路径回传路由方法 Download PDFInfo
- Publication number
- CN106658636B CN106658636B CN201710005772.8A CN201710005772A CN106658636B CN 106658636 B CN106658636 B CN 106658636B CN 201710005772 A CN201710005772 A CN 201710005772A CN 106658636 B CN106658636 B CN 106658636B
- Authority
- CN
- China
- Prior art keywords
- node
- packet
- path
- nbr
- rreq
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/04—Communication route or path selection, e.g. power-based or shortest path routing based on wireless node resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/12—Communication route or path selection, e.g. power-based or shortest path routing based on transmission quality or channel quality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/24—Connectivity information management, e.g. connectivity discovery or connectivity update
Abstract
本发明提供了一种基于剩余带宽的毫米波网络多路径回传路由方法,涉及通信技术领域,利用动态源路由原理进行路径发现和路径维护,当源节点检测到当前路由路径的带宽不能够满足本节点所承担的回传负载时,发起路由发现流程,当已建立的某个路径路由生存时间小于门限值时,对该路径进行预约及维护,当源节点检测到当前路由路径的带宽超过本节点所承担的回传负载对应的门限值时,拆除一条路由路径,本发明由于采用源路由的方法,解决了毫米波微小区网络中的分布式回传路由问题,仅需将程序加载到各个节点,流程简单实现容易,相对于按需路由协议大幅降低了网络端到端时延,本发明是一种分布式的路由方式,无须中心控制节点及全网实时同步。
Description
技术领域
本发明涉及通信技术领域,尤其是一种毫米波微小区网络的回传路由方法。
背景技术
毫米波通信技术用于拓展5G移动通信系统的传输带宽在业界已经达成共识。大规模MIMO技术助力毫米波通信提升5G蜂窝网络频谱效率,而毫米波的高路损、易衰落等特性决定其传输方式为视距(Line of Sight,LOS)传播方式,这也使得其覆盖范围低至50m-100m的范围内。因此,5G蜂窝网络中产生了毫米波微小区的概念。这种超密集部署的毫米波微小区网络对于满足提升网络性能的需求有诸多裨益,此时最关键的问题是如何将微小区基站的用户数据回传至核心网络,即回传问题成为最大的挑战。
目前在回传方法的设计中,一种方案是利用光纤的方式将各毫米波微小区基站直接连接至核心网络,该方案虽然能够在数据传输的可靠性和实时性方面表现出显著优势,但其实施难度和建设代价都让业界难以接受,在本发明中将该类方案称为“全光纤回传”方案;另一种方案是利用毫米波无线通信在大部分微小区基站间进行数据传输,而在少数毫米波微小区基站上利用光纤通信的方式连接至核心网络,所有未连接光纤的微小区基站通过毫米波无线多跳中继的方式将数据传输至连接光纤的微小区基站,在本发明中将该类方案称为“光纤/毫米波混合回传”方案,光纤/毫米波混合回传方案不但在一定程度上能够保证数据传输质量,而且在实现代价上也有突出优势,因此该方案成为5G毫米波微小区网络中的潜在回传方案。但在这种光纤/毫米波混合回传方案中,如何将全网数据通过无线多跳的方式汇聚至连接光纤的微小区基站是实现数据传输的关键问题。具体的问题主要有:路径建立、路径维护、路径拆除等。
发明内容
为了克服现有技术的不足,本发明提出了一种基于剩余带宽的多径多汇回传路由方法,利用动态源路由原理进行路径发现和路径维护,并完成:1)当源节点(即发起路径建立流程的毫米波微小区基站)检测到当前路由路径的带宽不能够满足本节点所承担的回传负载时,发起路由发现流程;2)当已建立的某个路径路由生存时间小于门限值时,对该路径进行预约及维护;3)当源节点检测到当前路由路径的带宽超过本节点所承担的回传负载对应的门限值时,拆除一条路由路径。另外,本发明不需要各节点存储全网的路径信息,仅需要存储其邻居节点的信息即可。
本发明中,当毫米波蜂窝回传网络中的所有基站完成加电启动、波束扫描、波束对准以及相邻节点发现等一系列与入网相关的初始化工作之后,将在节点路由层依次执行下述实施步骤:
步骤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;
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 ToLive)为包生存周期,表示该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包被丢弃。
本发明的有益效果是由于采用源路由的方法,解决了毫米波微小区网络中的分布式回传路由问题,因此提升了回传网络性能;仅需将程序加载到各个节点,流程简单,实现容易,可在支持的固件中实现,同时也可以实现在驱动程序中;相对于传统的表驱动路由协议降低网络信令开销,并提高网络传输吞吐量;由于各个节点不需要存储和维护全网节点的路径,相对于传统的按需路由协议大幅降低了网络端到端时延,提高了网络性能;本发明是一种分布式的路由方式,无须中心控制节点及全网实时同步。
附图说明
图1是本发明的总体流程图,其中,HELLO是用于邻节点间进行剩余带宽信息交互的路由信令包,RREQ(Route Request)是用于请求建立满足剩余带宽条件回传路径的路由信息请求信令包,RREP(Route Response)是用来应答建立满足剩余带宽条件回传路径的路由信息应答信令包,RDEL(Route Delete)是用于删除某条源路由的回传路径删除信令包,DATA是来自上层的数据包,RDAT(Route Data)是DATA添加源路径的路由数据包。
图2是实施实例中的节点设置场景图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
在毫米波蜂窝回传网络中,一般微基站均部署在静止的较高的建筑物或物体之上,微基站之间的毫米波链路较为稳定,不易被阻挡。因此,毫米波蜂窝回传网可被看作是静态的无线网络。本发明称毫米波回传网络中连接光纤的微基站节点为“网关节点”,称未连接光纤的微基站节点为普通的“无线节点”。假设在网络中有N个无线节点和M个网关节点,每个无线节点可划分为S个扇区,每个扇区中由B个波束(具体的N/M/S/B值,根据具体的毫米波回传网络拓扑、以及毫米波微基站的具体规格确定)。当无线节点某一扇区的波束与其相邻节点进行数据通信时,其另一扇区的波束可同时与其他相邻节点进行数据通信。
考虑到回传网中可能存在多个网关节点,且无线节点之间可能存在多条毫米波链路,本发明提出了一种基于剩余带宽的多径回传路由方法,旨在超密集部署毫米波微小区网络中,解决5G毫米波微小区密集部署场景中的数据回传问题。
本发明属于源路由,即由源节点负责建立、维护以及拆除路由路径,主要包括:邻节点间带宽信息交互、路由建立拆除检测及邻节点表和路由表的维护、路由发现三个部分。
1.邻节点带宽信息的交互:相邻节点通过路由信令包的交互,完善填充各自建立的邻居节点表,实现全网节点的带宽信息交互的初始化和维护;
2.路由建立、拆除检测及邻节点表和路由表的维护更新:根据基站具体的回传负载量判断是否进行路由建立或拆除,并检测和维护邻居节点表和路由表。
3.路由发现阶段:各个节点通过路由控制信令包的交互传输,实现各毫米波微小区基站间相互协作地建立多条到达网关节点的回传路径。
本发明可以在无线网卡中通过固件实现,或实现在无线网卡的驱动程序之中。下面结合实例对本发明的实现进行详细的说明,其中图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 ToLive)为包生存周期,表示该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包被丢弃。
实施例如图2所示,假设网络中共有5个节点,其中节点1节点2、节点3是无线节点,每个无线节点分为三个扇区,每扇区120度,分别编号sector1、2、3,每个扇区有两个毫米波回传链路,且回传链路初始化带宽为2Gbit/s,节点4、节点5是网关节点,节点地址为0。为方便描述,实施例中假设相邻两节点间存在1个毫米波链路,且在同一扇区,实际中相邻两节点间毫米波链路数可不同,且链路可不在同一个扇区中。
1、相邻节点间的带宽信息交互
由于相邻节点间的带宽信息交互流程一致,且均是周期性的,设完成一个HELLO包的交互为一个周期,为简化描述,实施例在该部分仅对节点1、节点2一个周期内的交互流程加以描述。此外,流程实例假定毫米波链路上信息发送和接收的调度是能够保证的,实例中网络所有节点完成与入网相关的初始化工作之后,具体实施步骤如下:
步骤1.1:节点1、节点2创建用于存储邻居节点信息和路由信息的邻节点表和路由表并初始化邻节点发现计时器Nbr_Timer,之后转入步骤2。
步骤1.2:节点1、节点2的邻节点发现计时器Nbr_Timer达到超时时间NbrHelloTime,之后转入步骤3。
步骤1.3:节点1创建HELLO信令包向节点2发送并重置邻节点发现计时器Nbr_Timer。节点2创建HELLO信令包向节点1发送并重置邻节点发现计时器Nbr_Timer,之后进入步骤5,节点1、节点2创建HELLO时各字段的填充情况如下所示,表1(a)为节点1创建的HELLO包,表1(b)为节点2创建的HELLO包,
TYPE | SEQNO | SA | DA | BH_BW_left=6Gb | BH_LINKS_BW_left=2Gb |
表1(a)
TYPE | SEQNO | SA | DA | BH_BW_left=6Gb | BH_LINKS_BW_left=2Gb |
表1(b)
步骤1.4:节点1、节点2收到包后判断包的类型(TYPE=0)为HELLO包,根据HELLO包的带宽信息更新邻节点表,节点1、节点2的更新后的邻节点表内容如表2(a)、表2(b)所示,其中表2(a)为节点1邻节点表更新,表2(b)为节点2邻节点表更新。
Nbr | Nbr_Ad | BH_BW_LE | Nbr_LinkBw_L | Self_Sector_Lin |
1 | 2 | 6Gbps | 2Gbps | 1 |
… |
表2(a)
Nbr | Nbr_Ad | BH_BW_LE | Nbr_LinkBw_L | Self_Sector_Lin |
1 | 1 | 6Gbps | 2Gbps | 1 |
… | e | s |
表2(b)
2、路由建立及维护流程
通过相邻节点间的带宽信息交互,各个节点已经建立起了完整的邻节点表;在为简化描述,实例描述中以建立及维护节点1到节点4和节点5的路径为例,即以节点1为发起路径建立的源节点,节点4、节点5为数据处理的目的节点,节点地址均为0,其余节点均为中间节点;
2.1源节点-发送RREQ
步骤2.1.2:节点1根据回传请求带宽BH_BW_REQ,进入路由发现流程而依次执行1)、2),之后转入步骤1.2,否则继续停留在步骤2.1.2进行路由发现。
1)节点1从邻节点表中找出BH_BW_LEFT>BH_BW_REQ并且Nbr_LinkBw_Left>BH_BW_REQ的节点,确定可发送RREQ的节点集合NBRS={2,3},RREQ各项填充如表3(a)、表3(b)所示之后执行2);其中表3(a)为节点1产生发往邻节点2的RREQ包,表3(b)为节点1产生发往邻节点3的RREQ包;
TYPE | SEQNO | SA | DA | TTL= | BH_BW_REQ=2Gb | STAMP<sub>1</sub> |
表3(a)
TYPE | SEQNO | SA | DA | TTL= | BH_BW_REQ=2Gb | STAMP<sub>1</sub> |
表3(b)
2)节点1向节点2、节点3在各自的毫米波链路上发送RREQ,之后在邻居节点表和路由表中更新与节点2、节点3回传链路上的回传带宽。设置计时器timer(RREQ.SEQNO=1,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=75ms),timer(RREQ.SEQNO=2,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=75ms);
2.2中间节点—接收RREQ
步骤2.2.1:节点2、3收到包后判断包类型(TYPE=1)为RREQ,判断包中目的地址不是自己,依次执行:
1)判断包中TTL=15,执行2)。
2)检查STAMPn域不包含本节点,执行3);
3)节点2、节点3查找路由表没有到目的节点且BH_BW_LEFT≥BH_BW_REQ的链路,节点2找出满带宽需求的邻居节点集合NBRS={4},节点3找出满带宽需求的邻居节点集合NBRS={5};节点2设置计时器timer(RREQ.SEQNO=1,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=70ms),节点3设置计时器timer(RREQ.SEQNO=2,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=70ms);节点2、节点3处理后的转发RREQ包内容如表4(a)、表4(b)所示,节点2、3更新带宽信息后的邻节点表如表5(a)、表5(b)所示;其中表4(a)为节点2转发的RREQ包,表4(b)节点3转发的RREQ包;表5(a)为节点2更新带宽信息后的邻节点表,表5(b)为节点3更新带宽信息后的邻节点表;
表4(a)
表4(b)
Nbr | Nbr_Ad | BH_BW_LE | Nbr_LinkBw_L | Self_Sector_Lin |
1 | 1 | 2Gbps | 0Gbps | 1 |
2 | 4 | 4Gbps | 0Gbps | 1 |
表5(a)
Nbr | Nbr_Ad | BH_BW_LE | Nbr_LinkBw_L | Self_Sector_Lin |
1 | 1 | 2Gbps | 0Gbps | 1 |
2 | 5 | 4Gbps | 0Gbps | 1 |
表5(b)
2.3目的节点—接收RREQ
节点4收到节点2的RREQ包,在经过TTL、路由环路检查后根据RREQ生成RREP包,并根据RREQ中STAMP域中的路径,向下一跳节点发送RREP,同时更新路由表信息。
节点5收到节点3的RREQ包,在经过TTL、路由环路检查后根据RREQ生成RREP包,并根据RREQ中STAMP域中的路径,向下一跳节点发送RREP,同时更新路由表信息;
节点4、节点5产生的RREP包内容如表6(a)、表6(b)所示;节点4、节点5更新带宽信息后的邻节点表如表7(a)、表7(b)所示,更新后的路由表如表8(a)、表8(b)所示;其中,表6(a)为节点4产生的RREP包,表6(b)为节点5产生的RREP包,表7(a)为节点4更新带宽信息后的邻节点表,表7(b)为节点5更新带宽信息后的邻节点表,表8(a)为节点4更新后的路由表,表8(b)为节点5更新后的路由表;
表6(a)
表6(b)
NbrI | Nbr_Ad | BH_BW_LE | Nbr_LinkBw_L | Self_Sector_Lin |
1 | 2 | 4Gbps | 0Gbps | 1 |
… |
表7(a)
NbrID | Nbr_Ad | BH_BW_LE | Nbr_LinkBw_L | Self_Sector_Lin |
1 | 3 | 4Gbps | 0Gbps | 1 |
… |
表7(b)
Path | Destination_Path | Val | BW | Leftti | Stamps/Pa | Reallo |
1 | 1_1 | 1 | 2Gb | 10s | 0/2/1 | |
… |
表8(a)
Path | Destination_Path | Val | BW | Leftti | Stamps/Pa | Reallo |
1 | 1_1 | 1 | 2Gb | 10s | 0/3/1 | |
… |
表8(b)
2.4中间节点—接收RREP
节点2、节点3查找到目的节点1的计时器timer(RREQ.SEQNO=1,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=70ms),timer(RREQ.SEQNO=2,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=70ms),计时器未超时,因此取消该计时器。根据STAMP域中的指定路径,将RREP包转发给下一跳邻节点;
2.5源节点—接收RREP
步骤2.5.1:源节点1收到RREP包之后,将RREP包中的路径添加到路由表中;节点1更新后的路由表如表9所示:
Path | Destination_Path | Val | BW | Leftti | Stamps/Pa | Reallo |
1 | 0_1 | 1 | 2Gb | 10s | 1/3/0 | |
2 | 0_2 | 1 | 2Gb | 10s | 1/2/0 |
表9
步骤2.5.2:源节点1查找标识为DA.SEQNO(0.1,0.2)的计时器,此时计时器timer(RREQ.SEQNO=1,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=75ms),timer(RREQ.SEQNO=2,Nbr_LinkBw_Left=0,BH_BW_REQ=2,T=75ms),尚未超时,则取消计时器,并设置Valid=1;从发送缓存中取出发送数据在包头中添加路由并按路由发送数据。
步骤2.5.3:当源节点1检测到当前路由路径的带宽超过本节点所承担的回传负载对应的门限值时,需要拆除其到节点4的路由路径,此时产生RDEL包,发送至下一跳节点。节点1产生的RDEL包如表10所示:
表10
2.6中间节点—接收RDEL
步骤2.6.1:节点2更新邻节点表中inNbr.linkBw.left=inNbr.linkBw.left+BH_BW_REQ,outNbr.linkBw.left=outNbr.linkBw.left+BH_BW_REQ;更新后的邻居节点表如表11所示:
Nbr | Nbr_Ad | BH_BW_LE | Nbr_LinkBw_L | Self_Sector_Lin |
1 | 1 | 4Gbps | 2Gbps | 1 |
2 | 0 | 6Gbps | 2Gbps | 1 |
… |
表11
步骤2.6.2:根据DEL_PATH_PKT包中指定的路径,转发给下一个邻节点。
2.7目的节点—接收RDEL
节点4删除PATHNO的回传路径条目,然后删除该包。
Claims (1)
1.一种基于剩余带宽的毫米波网络多路径回传路由方法,其特征在于包括下述步骤:
步骤1.创建用于存储邻居节点信息和路由信息的邻居节点表和路由表,其中邻居节点表如下表所示:
其中,NbrID为邻居节点表节点序列号,Nbr_Addr为邻居节点地址号,BH_BW_LEFT为邻居节点回传链路剩余总带宽,NBR_LINK_BW_LEFT(Neighborhood Link Bandwidth Left)为与该邻居节点所有回传链路上的剩余带宽,Self_Sector_Links为与该邻居节点在某扇区中相连的所有回传链路数;
路由表如下表所示:
其中,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表示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;
其中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表示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表示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表示路由包类型标志位,本发明设为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包被丢弃。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710005772.8A CN106658636B (zh) | 2017-01-05 | 2017-01-05 | 一种基于剩余带宽的毫米波网络多路径回传路由方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710005772.8A CN106658636B (zh) | 2017-01-05 | 2017-01-05 | 一种基于剩余带宽的毫米波网络多路径回传路由方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106658636A CN106658636A (zh) | 2017-05-10 |
CN106658636B true CN106658636B (zh) | 2020-02-14 |
Family
ID=58843689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710005772.8A Expired - Fee Related CN106658636B (zh) | 2017-01-05 | 2017-01-05 | 一种基于剩余带宽的毫米波网络多路径回传路由方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106658636B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108123876B (zh) * | 2017-12-14 | 2020-08-11 | 新华三技术有限公司 | 边界网关协议bgp路由信息处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1761232A (zh) * | 2004-10-15 | 2006-04-19 | 中国科学技术大学 | 移动自组网络的基于动态蜂窝的按需服务质量保证的方法 |
CN102271380A (zh) * | 2011-09-02 | 2011-12-07 | 中山大学 | Ad hoc网络基于博弈论的按需距离矢量路由协议 |
WO2016065068A2 (en) * | 2014-10-21 | 2016-04-28 | Intel IP Corporation | Methods and apparatuses to form self-organized multi-hop millimeter wave backhaul links |
CN106162817A (zh) * | 2015-04-03 | 2016-11-23 | 北京佰才邦技术有限公司 | 无线回传链路的建立方法、装置及通信系统 |
-
2017
- 2017-01-05 CN CN201710005772.8A patent/CN106658636B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1761232A (zh) * | 2004-10-15 | 2006-04-19 | 中国科学技术大学 | 移动自组网络的基于动态蜂窝的按需服务质量保证的方法 |
CN102271380A (zh) * | 2011-09-02 | 2011-12-07 | 中山大学 | Ad hoc网络基于博弈论的按需距离矢量路由协议 |
WO2016065068A2 (en) * | 2014-10-21 | 2016-04-28 | Intel IP Corporation | Methods and apparatuses to form self-organized multi-hop millimeter wave backhaul links |
CN106162817A (zh) * | 2015-04-03 | 2016-11-23 | 北京佰才邦技术有限公司 | 无线回传链路的建立方法、装置及通信系统 |
Non-Patent Citations (3)
Title |
---|
Potentials and Challenges of C-RAN Supporting Multi-RATs Toward 5G Mobile Networks;Rui Wang, Honglin Hu, Xiumei Yang;《IEEE Access, The journal for rapid open access publishing》;20141021;全文 * |
多射频多信道无线Mesh网络中信道分配与路由算法的研究;余飞龙;《中国优秀硕士论文电子期刊网》;20160215;全文 * |
移动自组织网中基于最优距离的概率广播方案;Muhammad Zakwan,李波,沈诗律;《西北工业大学学报》;20111231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN106658636A (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100789773B1 (ko) | 다중 홉 무선 근거리통신망에서 메쉬 네트워킹 자동 설정방법과, 가상 링크 설정 방법과, 패킷 전송 방법 및 이를위한 무선 단말기 | |
CN110167099B (zh) | 一种适用于窄带条件的自组网路由方法及系统 | |
CN102148756B (zh) | 一种基于6LoWPAN邻居发现的树状路由方法 | |
US20020145978A1 (en) | Mrp-based hybrid routing for mobile ad hoc networks | |
US9392482B2 (en) | Method for optimizing the capabilities of an ad hoc telecommunication network | |
KR20130119287A (ko) | 무선 애드혹 네트워크에서 중계 노드 선택 방법 | |
WO2017020619A1 (zh) | 一种路由的方法及装置 | |
CN109219102B (zh) | 一种数据转发方法和装置 | |
CN103260211B (zh) | 一种改进的aomdv路由方法 | |
CN106130905B (zh) | Hwmp先验树路由模式的链路恢复方法 | |
CN106231646B (zh) | 一种时隙复用的无线链式多跳跨层方法 | |
JP2006020332A (ja) | パケット中継方法、ルータ設定方法及びルータ設定システム | |
CN109068367A (zh) | 一种无线令牌传递方法、装置、设备及可读存储介质 | |
CN105763443A (zh) | 混合无线网状协议hwmp双路由协作方法 | |
CN104254110A (zh) | 一种无线Mesh网络域间切换方法 | |
CN113765540B (zh) | 基于无人机自主跳频的自组网通信方法、无人机及介质 | |
CN106330731B (zh) | 一种无线自组网的多播树建立方法 | |
CN106954243A (zh) | 基于无线链状网的路由实现方法 | |
CN106034322A (zh) | 一种移动自组网中基于链路质量的路由切换方法 | |
CN103763750A (zh) | 在tdma协议的无线自组网中实现快速分组转发的方法 | |
US20120163233A1 (en) | Method for transmitting routing information and routing apparatus in wireless network | |
CN103391595A (zh) | 基于跨层链路状态反馈的矿井应急救援无线网状网路由方法 | |
CN106658636B (zh) | 一种基于剩余带宽的毫米波网络多路径回传路由方法 | |
KR101136051B1 (ko) | 무선 이동 멀티홉 네트워크 시스템에서의 멀티캐스트 라우팅 방법 | |
CN109803342A (zh) | 一种面向能量均衡高可靠传输的无人机自组织网络路由方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200214 Termination date: 20210105 |
|
CF01 | Termination of patent right due to non-payment of annual fee |