CN105119828B - 一种快速的无线网络路由实现方法 - Google Patents
一种快速的无线网络路由实现方法 Download PDFInfo
- Publication number
- CN105119828B CN105119828B CN201510564268.2A CN201510564268A CN105119828B CN 105119828 B CN105119828 B CN 105119828B CN 201510564268 A CN201510564268 A CN 201510564268A CN 105119828 B CN105119828 B CN 105119828B
- Authority
- CN
- China
- Prior art keywords
- node
- gateway
- ordinary
- address
- data frame
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种快速的无线网络路由实现方法,所述无线网络包含两种节点:网关节点和普通节点;网关节点能够连接到互联网,普通节点通过网关节点实现与互联网的通信;所述无线网络中包含一个以上的网关节点,所有网关节点构成一个任播组;如果该任播组的任播地址与其中一个网关节点的单播地址相同,则该网关节点称为任播首节点;每个网关节点构建一个树状结构,称为任播树。本发明提供了一种快速的无线网路由实现方法,所述无线网络通过本发明所提供的实现方法可获取IPv6网络提供的网络服务,同时保持通信的连续性,缩短路由延迟,降低数据包丢失率,提高服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
Description
技术领域
本发明涉及一种实现方法,尤其涉及的是一种快速的无线网络路由实现方法。
背景技术
无线网络作为一种新型通信网络,能够实现节点与节点之间的多跳无线通信。随着无线网络技术的不断发展以及各种新应用的不断涌现,迫切需要无线网络能够接入互联网以满足用户急剧增长的应用需求。
无线网络作为一种特殊类型的移动自组网,具有移动速度快、节点数量多、覆盖面积大等特点。基于IPv6的互联网(以下简称IPv6网络)具有移动性支持、地址资源丰富以及扩展性强等优点。因此,无线网络接入IPv6网络成为满足用户应用需求的理想解决方案。
目前的研究人员提出了无线网络通过接入基于IPv6的互联网获取网络服务的模式并定义了相应的协议栈,但是由于无线网络网的体系结构与IPv6网络不通,现有的接入方法具有一些局限性。因此需要提出一种无线网络的通信实现方法,从而降低数据丢失率,提高服务质量。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种快速的无线网络路由实现方法。
技术方案:本发明公开了一种快速的无线网络路由实现方法,所述无线网络包含两种节点:网关节点和普通节点;网关节点能够连接到互联网,普通节点通过网关节点实现与互联网的通信;所述无线网络中包含一个以上的网关节点,所有网关节点构成一个任播组;如果该任播组的任播地址与其中一个网关节点的单播地址相同,则该网关节点称为任播首节点;每个网关节点构建一个树状结构,称为任播树,树的根节点为网关节点,一个普通节点选择加入距离自己最近的网关节点所构建的任播树,并通过所在任播树的网关节点实现与互联网的通信;网关节点具有两种传输半径,一种用于网关节点之间的通信,一种用于网关节点与普通节点之间的通信,网关节点之间的通信半径大于网关节点与普通节点之间的通信半径;由于网关节点分布在整个网络里,且数量比较少,因此彼此之间的距离较远。
所述网关节点和普通节点的IPv6地址由三部分构成,第一部分为全局网络前缀,它唯一标识一个无线网络,一个无线网络中所有网关节点和普通节点的全局网络前缀都相同,其值等于相同无线网络内的网关节点的全局网络前缀;第二部分为i比特的网关ID,它唯一标识一个网关节点,第三部分为j比特的节点ID,它唯一标识一个普通节点;网关ID和节点ID构成链路地址,其长度为16比特或者64比特;
一个普通节点的节点ID的有效长度L与该节点所在任播树的深度d成正比,L≤j,如公式(1)所示,一个网关节点或者普通节点拥有的最大子节点数为2c-1;c取值范围一般为4或者8;
L=d·c 公式(1),
在无线网络中,任播首节点地址预先设置,其网关ID为1,节点ID为0;任播首节点的地址既作为它的单播地址,也作为任播地址,该任播地址唯一标识一个任播组,该任播组中每个任播成员都是网关节点并且能够连接到互联网;任播首节点负责为任播组成员配置单播地址;
任播首节点保存一个网关ID表,网关ID表具有2i-1个表项,每个表项包含三个域:网关ID,分配状态和生命周期;其中分配状态具有两个值,未分配和已分配;如果一个网关ID的分配状态值为已分配状态,那么该网关ID的生命周期随着时钟递减;如果在该网关ID的生命周期内收到该网关ID对应的网关节点发送的刷新消息,那么该网关ID的生命周期被设置为最大值,如果生命周期衰减到0,那么任播首节点将该网关ID的分配状态更新为未分配状态;如果链路地址为16比特,i一般取值为8,如果链路地址为64比特,那么i取值为32;
如果网关节点没有配置地址,它用自己的硬件ID作为临时链路地址;
每个网关节点保存一个临时路由表和一个永久路由表,临时路由表每个表项包括三个域:下一跳,目的节点域以及生命周期,临时路由表用于地址配置前使用,其目的节点域值为临时链路地址;永久路由表每个表项包括四个域:下一跳,目的节点,路径长度以及生命周期,其中,路径长度为到达目的节点的距离,永久路由表是用于地址配置后使用,目的节点的域值为配置的IPv6地址的网关ID;网关节点获取IPv6地址后定期广播信标帧,信标帧负载为全局网络前缀和永久路由表;
如果网关节点G1为任播首节点,其余网关节点从任播首节点G1获取地址并在永久路由表中建立到达任播首节点G1的永久路由表项;
在网关节点G5没有配置地址并侦听邻居网关节点广播的信标帧的情况下,如果网关节点G5侦听到两个以上信标帧且网关节点G2距离网关节点G1最近,那么网关节点G5通过下述过程从网关节G1获取网关节点ID并建立到达网关节点G1的永久路由表项:
步骤101:开始;
步骤102:网关节点G5发送网关ID请求命令帧,网关ID请求命令帧头部结构包括mesh头部和MAC头部,其中,mesh头部的源地址为网关节点G5的临时链路地址,最终地址为网关节点G1的链路地址,MAC头部的源地址为其临时链路地址,目的地址为网关节点G2的链路地址;
步骤103:网关节点G2收到网关ID请求命令帧后,查看到达网关节点G1的永久路由表项,将网关ID请求命令帧的MAC头部的目的地址更新为到达网关节点G1的下一跳节点的链路地址,同时在临时路由表中增加到达网关节点G5的临时路由表项,该表项的下一跳和目的节点均为网关节点G5的临时链路地址,然后发送命令帧;
步骤104:下一跳节点收到网关ID请求命令帧后,在临时路由表中增加到达网关节点G5的临时路由表项,其中目的节点为网关节点G5的临时链路地址,下一跳域值为网关ID请求命令帧的MAC头部的源地址;
步骤105:下一跳节点判断自己是否为网关节点G1,如果是,进行步骤107,否则进行步骤106;
步骤106:下一跳节点查看到达网关节点G1的永久路由表项,将网关ID请求命令帧的MAC头部的目的地址更新为到达网关节点G1的下一跳节点的链路地址,发送网关ID请求命令帧,进行步骤104;,
步骤107:网关节点G1查看网关节点ID表,选择最小未分配的网关节点ID,向网关节点G5返回网关ID响应命令帧,网关ID响应命令帧的mesh头部的源地址是网关节点G1的链路地址,最终地址为网关节点G5的临时链路地址,MAC头部的源地址为网关节点G1的链路地址,目的地址为临时路由表中到达网关节点G5的下一跳节点的链路地址,网关ID响应命令帧负载为分配的网关ID,同时将该网关ID的分配状态设置为已分配,生命周期设置为最大值,然后发送网关ID响应数据帧;
步骤108:下一跳节点收到网关ID响应数据帧后,判断自己是否为网关节点G5,如果是,进行步骤110,否则进行步骤109;
步骤109:下一跳节点查看临时路由表中目的节点为网关节点G5的表项,将网关ID响应数据帧的MAC头部目的地址更新为该表项的下一跳地址,发送网关ID响应数据帧,进行步骤108;
步骤110:网关节点G5将自己的网关ID设置为网关ID响应命令帧负载中的网关ID,将网关ID与全局网络前缀相结合构建成IPv6地址,同时在永久路由表中增加到达网关节点G1的表项,其中下一跳为网关节点G2的链路地址,路径长度为网关节点G2到达网关节点G1的路径长度加1;
步骤111:结束;
每个网关节点获取地址后,要向任播首节点定期发送刷新消息以重置其地址的网关ID的生命周期。
通过上述过程,网关节点可以获取地址并进行通信。
本发明所述方法中,每个网关节点和普通节点保存一个节点ID表,具有2j-1个表项,每个表项包含三个域:节点ID,分配状态和生命周期;其中,分配状态具有两个值,已分配状态和未分配状态,如果分配状态为已分配状态,那么生命周期随着时钟递减,如果网关节点或者普通节点在生命周期内收到拥有该节点ID的普通节点广播的信标帧,那么将生命周期设置为最大值,如果生命周期衰减到0,那么将该节点ID的分配状态设置为未分配状态,普通节点获取地址后,定期广播信标帧,信标帧负载为全局网络前缀;如果链路地址为16比特,j一般取值为8,如果链路地址为64比特,那么j取值为32;
普通节点没有配置地址时,用自己的硬件ID作为临时链路地址,并侦听邻居网关节点或者普通节点广播的信标帧,如果普通节点的邻居节点包含网关节点,那么就从邻居网关节点获取地址,否则选择距离网关节点最近的邻居普通节点获取地址;
普通节点C6从邻居网关节点或者邻居普通节点获取地址的过程为:
步骤201:开始;
步骤202:普通节点C6向邻居网关节点或者邻居普通节点发送节点ID请求命令帧,源地址为其临时链路地址;
步骤203:邻居网关节点或者邻居普通节点收到节点ID请求命令帧后,查看节点ID表,选择最小未分配的节点ID,向普通节点C6返回节点ID响应命令帧,节点ID响应命令帧负载为分配的节点ID,同时将该节点ID的分配状态设置为已分配状态,生命周期设置为最大值;
步骤204:普通节点C6收到节点ID响应命令帧后,将自己的网关ID设置为邻居网关节点或者邻居普通节点的网关ID,将自己的节点ID设置为邻居网关节点或者邻居普通节点的节点ID,然后将节点ID扩展c比特,扩展的c比特值设置为节点ID请求命令帧中分配的节点ID值,然后将全球网络前缀和自己的链路地址相结合构建成IPv6地址,同时将邻居网关节点或者邻居普通节点设置为自己的父节点;
步骤205:结束;
如果普通节点C5的节点ID有效长度为L5,普通节点C2的节点ID的有效长度为L2,L2≥L5,C[m,n]表明普通节点C的节点ID中从第m比特到第n比特的值,如果普通节点C2满足公式(2),那么普通节C2为普通节C5的祖先节点;
C5[1,L2]=C2[1,L2] 公式(2),
任播树建立完成后,自动实现路由;如果网关节点收到一个数据帧,该数据帧的目的地址的网关ID与网关节点的网关ID相同,那么网关节点将该数据帧发送到自己的一个子节点,该子节点为目的节点的祖先节点;
数据帧发送过程:该子节点再将数据帧发送到为目的节点的祖先节点的一个子节点;
重复上述数据帧发送过程,最终数据帧按照目的节点所在的分支路由到目的节点。
通过上述过程,普通节点可以获取地址并进行正确通信。
本发明所述方法中,网关节点配置地址后,广播的信标帧内容为永久路由表;
网关节点G5通过侦听邻居网关节点的信标帧来更新永久路由表:
步骤301:开始;
步骤302:网关节点G5收到邻居网关节点的信标帧后,判断邻居网关节点是否在自己的永久路由表内,如果是,进行步骤304,否则进行步骤303;
步骤303:网关节点G5在永久路由表中增加邻居网关节点的表项,永久路由表表项中下一跳和目的节点均为邻居网关节点的链路地址,路径长度为1;
步骤304:网关节点G5查看信标帧负载中的永久路由表中的任意一个表项,如果该表项的目的节点不是网关节点G5并且不等于网关节点G5的永久路由表中任何表项的目的节点,那么进行步骤305,否则进行步骤306;
步骤305:网关节点G5在永久路由表中创建一个新表项,该新表项中目的节点为信标帧的永久路由表中该表项的目的节点域,下一跳为广播信标帧的源MAC地址,路径长度等于信标帧的永久路由表中该表项的路径长度加1;
步骤306:对于信标帧中永久路由表的任意一个表项E1,如果该表项E1的目的节点等于网关节点G5的永久路由表中的一个表项E2的目的节点,信标帧中该表项E1的路径长度为d1,网关节点G5中的路由表项E2的路径长度为d2,网关节点G5判断是否满足公式(3),如果是,进行步骤307,否则进行步骤308;
d1>d2+1 公式(3);
步骤307:网关节点G5更新表项E2,即将路径长度更新为d2+1,下一跳更新为发送信标帧的源MAC地址;
步骤308:网关节点G5判断自己是否执行了步骤303或者步骤305或者步骤307中的任意一个步骤,如果是,进行步骤302,否则执行步骤309;
步骤309:结束。
上述过程能够确保路由表的正确性,从而确保通信的正确性。
本发明所述方法中,如果普通节点C1的节点ID有效长度为L1,普通节点C2的节点ID有效长度为L2,普通节点C3的节点ID的有效长度为L3,L1≥L3,L2≥L3,C[i1,j1]表明普通节点C的节点ID中从第i1比特到第j1比特的值,如果普通节点C3满足公式(4)和公式(5),那么普通节点C3为普通节点C1和普通节点C2最近的祖先节点;
C1[1,L3]=C2[1,L3]=C3[1,L3] 公式(4),
C1[L3,L3+c-1]≠C2[L3,L3+c-1] 公式(5),
如果一个普通节点与相同无线网络的普通节点进行通信,那么数据帧包含mesh头部和MAC头部;如果数据帧的目的链路地址为普通节点C2的链路地址,那么创建或者收到该数据帧的当前节点通过下述过程将数据帧路由到普通节点C2:
步骤401:开始;
步骤402:当前节点判断普通节点C2是否为当前节点的邻居节点,如果是,执行步骤403,否则执行步骤404;
步骤403:当前节点直接将数据帧发送给普通节点C2,执行步骤410;
步骤404:当前节点判断是否存在一个邻居节点,该邻居节点的网关ID与普通节点C2的网关ID相同,如果是,执行步骤405,否则执行步骤406;
步骤405:当前节点将数据帧发送给该邻居节点,执行步骤402;
步骤406:判断当前节点的网关ID是否与普通节点C2的网关ID相同,如果是,执行步骤407,否则执行步骤408;
步骤407:当前节点按照任播树状结构将数据帧发送到普通节点C2,即当前节点首先将数据帧路由到当前节点和普通节点C2的最近共同祖先,然后由最近的共同祖先按照任播树状结构将数据帧路由到普通节点C2,执行步骤410;
步骤408:当前节点按照任播树状结构将数据帧发送到根节点;
步骤409:根节点收到数据帧后,根据永久路由表将数据帧发送到普通节点C2所在的任播树的根节点,然后根节点根据任播树结构将数据帧路由到普通节点C2;
步骤410:结束。
上述过程能够确保路由和通信的正确性。
本发明所述方法中,在普通节点C1与普通节点C2属于不同无线网络的情况下,如果普通节点C1与普通节点C2通信,通信的数据帧的负载为IPv6数据包,那么根据下述步骤实现通信:
步骤501:开始;
步骤502:普通节点C1发送数据帧,目的地址为所在任播树的根节点G1的链路地址;
步骤503:普通节点C1的父节点收到该数据帧后,判断自己是否为根节点G1,如果是,进行步骤506,否则进行步骤504;
步骤504:收到数据帧的节点将收到的数据帧发送给自己的父节点;
步骤505:收到数据帧的节点判断自己是否为根节点G1,如果是,进行步骤506,否则进行步骤504;
步骤506:根节点G1收到数据帧后,将数据帧负载中的IPv6数据包发送到互联网,该数据包按照互联网路由方式将数据包路由到目的节点所在的任播树的根节点G4;
步骤507:根节点G4收到数据帧后,根据任播树将数据帧路由到普通节点C2;
步骤508:普通节点C2向普通节点C1返回数据帧,目的地址为根节点G4的链路地址,帧负载为IPv6数据包;
步骤509:普通节点C2的父节点收到该数据帧后,判断自己是否为根节点G4,如果是,进行步骤512,否则进行步骤510;
步骤510:收到数据帧的节点将收到的数据帧发送给自己的父节点;
步骤511:收到数据帧的节点判断自己是否为根节点G4,如果是,进行步骤512,否则进行步骤510;
步骤512:根节点G4收到数据帧后,将数据帧负载中的IPv6数据包发送到互联网,并按照IPv6路由方式路由到目的节点所在的任播树的根节点G1;
步骤513:根节点G1收到数据帧后,根据任播树将数据帧路由到普通节点C1;
步骤514:结束。
上述过程能够确保路由和通信的正确性,同时降低通信延迟,提高通信质量。
本发明所述方法中,如果普通节点C1失效,那么其子节点C2侦听邻居网关节点和邻居普通节点的信标帧,如果普通节点C2的邻居节点中包含网关节点,则执行步骤201~205重新加入树状结构并从该网关节点获取链路地址,否则普通节点C2选择一个邻居普通节点,该邻居普通节点与所在任播树的树根节点的距离最小,然后执行步骤201-~205重新加入树状结构并从该普通节点获取链路地址;
普通节点C2获取新的链路地址后,进行如下操作:
步骤601:开始;
步骤602:普通节点C2向其子节点发送地址更新命令帧,命令帧的源地址为新获取的链路地址,负载为原来的链路地址;
步骤603:子节点收到地址更新命令帧后,如果子节点的任何一个邻居节点与该邻居节点所在任播树的树根节点的距离都大于或者等于其父节点与所在任播树的树根节点的距离,那么进行步骤604,否则进行步骤605;
步骤604:子节点将自己的网关ID设置为父节点的网关ID,将自己的节点ID设置为父节点的节点ID,然后将自己的节点ID扩展c比特,将扩展的c比特值设置为子节点原来节点ID的有效位的最后c比特值,执行步骤606;
步骤605:子节点选择一个邻居节点,该邻居节点与其所在任播树的树根节点距离最小,然后执行步骤201~步骤205重新加入其所在树状结构并从该邻居节点获取链接地址;
步骤606:子节点判断自己是否有子节点,如果是进行步骤607,否则进行步骤608;
步骤607:子节点向自己子节点发送地址更新命令帧,命令帧的源地址为新获取的链路地址,负载为原来的链路地址,执行步骤603;
步骤608:结束。
即使父节点失效,那么子节点仍然能够进行正确通信,从而增强了通信的健壮性。
本发明所述方法中,如果网关节点或者普通节点失效,那么在其子孙节点在配置新地址之前,仍然采用原来的地址进行通信;
如果网关节点G4失效,网关节点G4的邻居节点C6收到目的节点为普通节点C7的数据帧,普通节点C7与邻居节点C6在同一个无线网络内且不是网关节点G4的子孙节点,如果邻居节点C6判断该数据帧的下一跳节点为网关节点G4,那么进行如下操作:
步骤701:开始;
步骤702:如果节点C6有一个邻居节点,该邻居节点不是网关节点G4的子孙节点,那么进行步骤703,否则进行步骤704:
步骤703:节点C6在数据帧中增加路由头部,把该邻居节点加入到路由头部中,将数据帧转发给该邻居节点,进行步骤709;
步骤704:节点C6在h跳范围内广播查询命令帧,h>1查询命令帧负载为网关节点G4的链路地址,如果收到查询命令帧的节点的网关ID与网关节点G4的网关ID不同,则返回一个查询响应命令帧;h取值范围为2-10;
步骤705:判断节点C6是否收到查询响应命令帧,如果是,进行步骤706,否则进行步骤707;
步骤706:节点C6收到查询响应命令帧,则在数据帧中增加路由头部,把该查询响应命令帧的源节点加入到路由头部中,将数据帧转发给发送查询响应命令帧的源节点,执行步骤709;
步骤707:节点C6判断h是否大于阈值H,H取值一般为10,如果是,进行步骤713,否则执行步骤708;
步骤708:节点C6执行赋值操作h=h+1,执行步骤704;
步骤709:判断收到数据帧的节点与普通节点C7的网关ID是否相同,如果是,进行步骤710,否则进行步骤711;
步骤710:收到数据帧的节点按照任播树状结构将数据帧发送到普通节点C7,即收到数据帧的节点首先将数据帧路由到当前节点和普通节点C7的最近共同祖先,然后由最近的共同祖先按照任播树状结构将数据帧路由到普通节点C7,执行步骤712;
步骤711:收到数据帧的节点按照任播树状结构将数据帧发送到根节点,根节点收到数据帧后,根据永久路由表将数据帧发送到普通节点C7所在的任播树的根节点,然后根节点根据任播树结构将数据帧路由到普通节点C7;
步骤712:普通节点C7返回的数据帧首先到达路由头部指定的节点,然后该节点将返回的数据帧发送给普通节点C6,普通节点C6再将数据帧返回给源节点;
步骤713:结束。
即使网关节点失效,那么普通节点仍然可以进行正常通信,从而增强了网络通信的健壮性。
本发明所述方法中,如果网关节点G4失效,该节点G4的邻居节点C6收到目的节点为普通节点C4的数据帧,节点C4是网关节点G4的子孙节点,如果邻居节点C6判断该数据帧的下一跳节点为网关节点G4,那么进行如下操作:
步骤801:开始;
步骤802:节点C6在h跳范围内广播目的查询命令帧,h>1,目的查询命令帧负载为普通节点C4的链路地址,如果普通节点C4收到目的查询命令帧,则返回一个目的查询响应命令帧;
步骤803:判断节点C6是否收到查询响应命令帧,如果是,进行步骤804,否则进行步骤805;
步骤804:节点C6收到目的查询响应命令帧,则将数据帧转发给发送给普通节点C4,执行步骤807;
步骤805:节点C6判断h是否大于阈值H,H取值为10,如果是,进行步骤808,否则执行步骤806:
步骤806:节点C6执行赋值操作h=h+1,执行步骤802;
步骤807:普通节点C4返回的数据帧首先到达节点C6,节点C6再将数据帧返回给源节点;
步骤808:结束。
即使网关节点失效,那么普通节点仍然可以进行正常通信,从而增强了网络通信的健壮性。
有益效果:本发明提供了一种快速的无线网路由实现方法,所述无线网络通过本发明所提供的实现方法可获取IPv6网络提供的网络服务,同时保持通信的连续性,缩短路由延迟,降低数据包丢失率,提高服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的无线网络体系结构示意图。
图2为本发明所述的全局IPv6地址结构示意图。
图3为本发明所述的网关节点配置地址流程示意图。
图4为本发明所述的普通节点配置地址流程示意图。
图5为本发明所述的更新路由表流程示意图。
图6为本发明所述的路由流程示意图。
图7为本发明所述的通信流程示意图。
图8为本发明所述的更新链路地址流程示意图。
图9为本发明所述的网关节点失效的路由流程示意图。
图10为本发明所述的网关节点失效的通信流程示意图。
具体实施方式:
本发明提供了一种快速的无线网路由实现方法,所述无线网络通过本发明所提供的实现方法可获取IPv6网络提供的网络服务,同时保持通信的连续性,缩短路由延迟,降低数据包丢失率,提高服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
图1为本发明所述的无线网络体系结构示意图。所述无线网络包含两种节点:网关节点1和普通节点2;网关节点1能够连接到互联网,普通节点2通过网关节点1实现与互联网的通信;所述无线网络中包含一个以上的网关节点1,所有网关节点1构成一个任播组;如果该任播组的任播地址与其中一个网关节点1的单播地址相同,则该网关节点1称为任播首节点;每个网关节点1构建一个树状结构,称为任播树,树的根节点为网关节点1,一个普通节点2选择加入距离自己最近的网关节点1所构建的任播树,并通过所在任播树的网关节点1实现与互联网的通信;网关节点1具有两种传输半径,一种用于网关节点1之间的通信,一种用于网关节点1与普通节点2之间的通信,网关节点1之间的通信半径大于网关节点1与普通节点2之间的通信半径;由于网关节点1分布在整个网络里,且数量比较少,因此彼此之间的距离较远。
图2为本发明所述的全局IPv6地址结构示意图。所述网关节点和普通节点的IPv6地址由三部分构成,第一部分为(128-i-j)比特全局网络前缀,它唯一标识一个无线网络,一个无线网络中所有网关节点和普通节点的全局网络前缀都相同,其值等于相同无线网络内的网关节点的全局网络前缀;第二部分为i比特的网关ID,它唯一标识一个网关节点,第三部分为j比特的节点ID,它唯一标识一个普通节点;网关ID和节点ID构成链路地址,其长度为16比特或者64比特;
一个普通节点的节点ID的有效长度L与该节点所在任播树的深度d成正比,L≤j,如公式(1)所示,一个网关节点或者普通节点拥有的最大子节点数为2c-1;c取值范围一般为4或者8;
L=d·c 公式(1),
在无线网络中,任播首节点地址预先设置,其网关ID为1,节点ID为0;任播首节点的地址既作为它的单播地址,也作为任播地址,该任播地址唯一标识一个任播组,该任播组中每个任播成员都是网关节点并且能够连接到互联网;任播首节点负责为任播组成员配置单播地址;
任播首节点保存一个网关ID表,网关ID表具有2i-1个表项,每个表项包含三个域:网关ID,分配状态和生命周期;其中分配状态具有两个值,未分配和已分配;如果一个网关ID的分配状态值为已分配状态,那么该网关ID的生命周期随着时钟递减;如果在该网关ID的生命周期内收到该网关ID对应的网关节点发送的刷新消息,那么该网关ID的生命周期被设置为最大值,如果生命周期衰减到0,那么任播首节点将该网关ID的分配状态更新为未分配状态;如果链路地址为16比特,i一般取值为8,如果链路地址为64比特,那么i取值为32;
如果网关节点没有配置地址,它用自己的硬件ID作为临时链路地址;
每个网关节点保存一个临时路由表和一个永久路由表,临时路由表每个表项包括三个域:下一跳,目的节点域以及生命周期,临时路由表用于地址配置前使用,其目的节点域值为临时链路地址;永久路由表每个表项包括四个域:下一跳,目的节点,路径长度以及生命周期,其中,路径长度为到达目的节点的距离,永久路由表是用于地址配置后使用,目的节点的域值为配置的IPv6地址的网关ID;网关节点获取IPv6地址后定期广播信标帧,信标帧负载为全局网络前缀和永久路由表。
图3为本发明所述的网关节点配置地址流程示意图。如果网关节点G1为任播首节点,其余网关节点从任播首节点G1获取地址并在永久路由表中建立到达任播首节点G1的永久路由表项;
在网关节点G5没有配置地址并侦听邻居网关节点广播的信标帧的情况下,如果网关节点G5侦听到两个以上信标帧且网关节点G2距离网关节点G1最近,那么网关节点G5通过下述过程从网关节G1获取网关节点ID并建立到达网关节点G1的永久路由表项:
步骤101:开始;
步骤102:网关节点G5发送网关ID请求命令帧,网关ID请求命令帧头部结构包括mesh头部和MAC头部,其中,mesh头部的源地址为网关节点G5的临时链路地址,最终地址为网关节点G1的链路地址,MAC头部的源地址为其临时链路地址,目的地址为网关节点G2的链路地址;
步骤103:网关节点G2收到网关ID请求命令帧后,查看到达网关节点G1的永久路由表项,将网关ID请求命令帧的MAC头部的目的地址更新为到达网关节点G1的下一跳节点的链路地址,同时在临时路由表中增加到达网关节点G5的临时路由表项,该表项的下一跳和目的节点均为网关节点G5的临时链路地址,然后发送命令帧;
步骤104:下一跳节点收到网关ID请求命令帧后,在临时路由表中增加到达网关节点G5的临时路由表项,其中目的节点为网关节点G5的临时链路地址,下一跳域值为网关ID请求命令帧的MAC头部的源地址;
步骤105:下一跳节点判断自己是否为网关节点G1,如果是,进行步骤107,否则进行步骤106;
步骤106:下一跳节点查看到达网关节点G1的永久路由表项,将网关ID请求命令帧的MAC头部的目的地址更新为到达网关节点G1的下一跳节点的链路地址,发送网关ID请求命令帧,进行步骤104;,
步骤107:网关节点G1查看网关节点ID表,选择最小未分配的网关节点ID,向网关节点G5返回网关ID响应命令帧,网关ID响应命令帧的mesh头部的源地址是网关节点G1的链路地址,最终地址为网关节点G5的临时链路地址,MAC头部的源地址为网关节点G1的链路地址,目的地址为临时路由表中到达网关节点G5的下一跳节点的链路地址,网关ID响应命令帧负载为分配的网关ID,同时将该网关ID的分配状态设置为已分配,生命周期设置为最大值,然后发送网关ID响应数据帧;
步骤108:下一跳节点收到网关ID响应数据帧后,判断自己是否为网关节点G5,如果是,进行步骤110,否则进行步骤109;
步骤109:下一跳节点查看临时路由表中目的节点为网关节点G5的表项,将网关ID响应数据帧的MAC头部目的地址更新为该表项的下一跳地址,发送网关ID响应数据帧,进行步骤108;
步骤110:网关节点G5将自己的网关ID设置为网关ID响应命令帧负载中的网关ID,将网关ID与全局网络前缀相结合构建成IPv6地址,同时在永久路由表中增加到达网关节点G1的表项,其中下一跳为网关节点G2的链路地址,路径长度为网关节点G2到达网关节点G1的路径长度加1;
步骤111:结束;
每个网关节点获取地址后,要向任播首节点定期发送刷新消息以重置其地址的网关ID的生命周期。
通过上述过程,网关节点可以获取地址并进行通信。
图4为本发明所述的普通节点配置地址流程示意图。每个网关节点和普通节点保存一个节点ID表,具有2j-1个表项,每个表项包含三个域:节点ID,分配状态和生命周期;其中,分配状态具有两个值,已分配状态和未分配状态,如果分配状态为已分配状态,那么生命周期随着时钟递减,如果网关节点或者普通节点在生命周期内收到拥有该节点ID的普通节点广播的信标帧,那么将生命周期设置为最大值,如果生命周期衰减到0,那么将该节点ID的分配状态设置为未分配状态,普通节点获取地址后,定期广播信标帧,信标帧负载为全局网络前缀;如果链路地址为16比特,j一般取值为8,如果链路地址为64比特,那么j取值为32;
普通节点没有配置地址时,用自己的硬件ID作为临时链路地址,并侦听邻居网关节点或者普通节点广播的信标帧,如果普通节点的邻居节点包含网关节点,那么就从邻居网关节点获取地址,否则选择距离网关节点最近的邻居普通节点获取地址;
普通节点C6从邻居网关节点或者邻居普通节点获取地址的过程为:
步骤201:开始;
步骤202:普通节点C6向邻居网关节点或者邻居普通节点发送节点ID请求命令帧,源地址为其临时链路地址;
步骤203:邻居网关节点或者邻居普通节点收到节点ID请求命令帧后,查看节点ID表,选择最小未分配的节点ID,向普通节点C6返回节点ID响应命令帧,节点ID响应命令帧负载为分配的节点ID,同时将该节点ID的分配状态设置为已分配状态,生命周期设置为最大值;
步骤204:普通节点C6收到节点ID响应命令帧后,将自己的网关ID设置为邻居网关节点或者邻居普通节点的网关ID,将自己的节点ID设置为邻居网关节点或者邻居普通节点的节点ID,然后将节点ID扩展c比特,扩展的c比特值设置为节点ID请求命令帧中分配的节点ID值,然后将全球网络前缀和自己的链路地址相结合构建成IPv6地址,同时将邻居网关节点或者邻居普通节点设置为自己的父节点;
步骤205:结束;
如果普通节点C5的节点ID有效长度为L5,普通节点C2的节点ID的有效长度为L2,L2≥L5,C[m,n]表明普通节点C的节点ID中从第m比特到第n比特的值,如果普通节点C2满足公式(2),那么普通节C2为普通节C5的祖先节点;
C5[1,L2]=C2[1,L2] 公式(2),
任播树建立完成后,自动实现路由;如果网关节点收到一个数据帧,该数据帧的目的地址的网关ID与网关节点的网关ID相同,那么网关节点将该数据帧发送到自己的一个子节点,该子节点为目的节点的祖先节点;
数据帧发送过程:该子节点再将数据帧发送到为目的节点的祖先节点的一个子节点;
重复上述数据帧发送过程,最终数据帧按照目的节点所在的分支路由到目的节点。
通过上述过程,普通节点可以获取地址并进行正确通信。
图5为本发明所述的更新路由表流程示意图。网关节点配置地址后,广播的信标帧内容为永久路由表;
网关节点G5通过侦听邻居网关节点的信标帧来更新永久路由表:
步骤301:开始;
步骤302:网关节点G5收到邻居网关节点的信标帧后,判断邻居网关节点是否在自己的永久路由表内,如果是,进行步骤304,否则进行步骤303;
步骤303:网关节点G5在永久路由表中增加邻居网关节点的表项,永久路由表表项中下一跳和目的节点均为邻居网关节点的链路地址,路径长度为1;
步骤304:网关节点G5查看信标帧负载中的永久路由表中的任意一个表项,如果该表项的目的节点不是网关节点G5并且不等于网关节点G5的永久路由表中任何表项的目的节点,那么进行步骤305,否则进行步骤306;
步骤305:网关节点G5在永久路由表中创建一个新表项,该新表项中目的节点为信标帧的永久路由表中该表项的目的节点域,下一跳为广播信标帧的源MAC地址,路径长度等于信标帧的永久路由表中该表项的路径长度加1;
步骤306:对于信标帧中永久路由表的任意一个表项E1,如果该表项E1的目的节点等于网关节点G5的永久路由表中的一个表项E2的目的节点,信标帧中该表项E1的路径长度为d1,网关节点G5中的路由表项E2的路径长度为d2,网关节点G5判断是否满足公式(3),如果是,进行步骤307,否则进行步骤308;
d1>d2+1 公式(3);
步骤307:网关节点G5更新表项E2,即将路径长度更新为d2+1,下一跳更新为发送信标帧的源MAC地址;
步骤308:网关节点G5判断自己是否执行了步骤303或者步骤305或者步骤307中的任意一个步骤,如果是,进行步骤302,否则执行步骤309;
步骤309:结束。
上述过程能够确保路由表的正确性,从而确保通信的正确性。
图6为本发明所述的路由流程示意图。如果普通节点C1的节点ID有效长度为L1,普通节点C2的节点ID有效长度为L2,普通节点C3的节点ID的有效长度为L3,L1≥L3,L2≥L3,C[i1,j1]表明普通节点C的节点ID中从第i1比特到第j1比特的值,如果普通节点C3满足公式(4)和公式(5),那么普通节点C3为普通节点C1和普通节点C2最近的祖先节点;
C1[1,L3]=C2[1,L3]=C3[1,L3] 公式(4),
C1[L3,L3+c-1]≠C2[L3,L3+c-1] 公式(5),
如果一个普通节点与相同无线网络的普通节点进行通信,那么数据帧包含mesh头部和MAC头部;如果数据帧的目的链路地址为普通节点C2的链路地址,那么创建或者收到该数据帧的当前节点通过下述过程将数据帧路由到普通节点C2:
步骤401:开始;
步骤402:当前节点判断普通节点C2是否为当前节点的邻居节点,如果是,执行步骤403,否则执行步骤404;
步骤403:当前节点直接将数据帧发送给普通节点C2,执行步骤410;
步骤404:当前节点判断是否存在一个邻居节点,该邻居节点的网关ID与普通节点C2的网关ID相同,如果是,执行步骤405,否则执行步骤406;
步骤405:当前节点将数据帧发送给该邻居节点,执行步骤402;
步骤406:判断当前节点的网关ID是否与普通节点C2的网关ID相同,如果是,执行步骤407,否则执行步骤408;
步骤407:当前节点按照任播树状结构将数据帧发送到普通节点C2,即当前节点首先将数据帧路由到当前节点和普通节点C2的最近共同祖先,然后由最近的共同祖先按照任播树状结构将数据帧路由到普通节点C2,执行步骤410;
步骤408:当前节点按照任播树状结构将数据帧发送到根节点;
步骤409:根节点收到数据帧后,根据永久路由表将数据帧发送到普通节点C2所在的任播树的根节点,然后根节点根据任播树结构将数据帧路由到普通节点C2;
步骤410:结束。
上述过程能够确保路由和通信的正确性。
图7为本发明所述的通信流程示意图。在普通节点C1与普通节点C2属于不同无线网络的情况下,如果普通节点C1与普通节点C2通信,通信的数据帧的负载为IPv6数据包,那么根据下述步骤实现通信:
步骤501:开始;
步骤502:普通节点C1发送数据帧,目的地址为所在任播树的根节点G1的链路地址;
步骤503:普通节点C1的父节点收到该数据帧后,判断自己是否为根节点G1,如果是,进行步骤506,否则进行步骤504;
步骤504:收到数据帧的节点将收到的数据帧发送给自己的父节点;
步骤505:收到数据帧的节点判断自己是否为根节点G1,如果是,进行步骤506,否则进行步骤504;
步骤506:根节点G1收到数据帧后,将数据帧负载中的IPv6数据包发送到互联网,该数据包按照互联网路由方式将数据包路由到目的节点所在的任播树的根节点G4;
步骤507:根节点G4收到数据帧后,根据任播树将数据帧路由到普通节点C2;
步骤508:普通节点C2向普通节点C1返回数据帧,目的地址为根节点G4的链路地址,帧负载为IPv6数据包;
步骤509:普通节点C2的父节点收到该数据帧后,判断自己是否为根节点G4,如果是,进行步骤512,否则进行步骤510;
步骤510:收到数据帧的节点将收到的数据帧发送给自己的父节点;
步骤511:收到数据帧的节点判断自己是否为根节点G4,如果是,进行步骤512,否则进行步骤510;
步骤512:根节点G4收到数据帧后,将数据帧负载中的IPv6数据包发送到互联网,并按照IPv6路由方式路由到目的节点所在的任播树的根节点G1;
步骤513:根节点G1收到数据帧后,根据任播树将数据帧路由到普通节点C1;
步骤514:结束。
上述过程能够确保路由和通信的正确性,同时降低通信延迟,提高通信质量。
图8为本发明所述的更新链路地址流程示意图。如果普通节点C1失效,那么其子节点C2侦听邻居网关节点和邻居普通节点的信标帧,如果普通节点C2的邻居节点中包含网关节点,则执行步骤201~205重新加入树状结构并从该网关节点获取链路地址,否则普通节点C2选择一个邻居普通节点,该邻居普通节点与所在任播树的树根节点的距离最小,然后执行步骤201-~205重新加入树状结构并从该普通节点获取链路地址;
普通节点C2获取新的链路地址后,进行如下操作:
步骤601:开始;
步骤602:普通节点C2向其子节点发送地址更新命令帧,命令帧的源地址为新获取的链路地址,负载为原来的链路地址;
步骤603:子节点收到地址更新命令帧后,如果子节点的任何一个邻居节点与该邻居节点所在任播树的树根节点的距离都大于或者等于其父节点与所在任播树的树根节点的距离,那么进行步骤604,否则进行步骤605;
步骤604:子节点将自己的网关ID设置为父节点的网关ID,将自己的节点ID设置为父节点的节点ID,然后将自己的节点ID扩展c比特,将扩展的c比特值设置为子节点原来节点ID的有效位的最后c比特值,执行步骤606;
步骤605:子节点选择一个邻居节点,该邻居节点与其所在任播树的树根节点距离最小,然后执行步骤201~步骤205重新加入其所在树状结构并从该邻居节点获取链接地址;
步骤606:子节点判断自己是否有子节点,如果是进行步骤607,否则进行步骤608;
步骤607:子节点向自己子节点发送地址更新命令帧,命令帧的源地址为新获取的链路地址,负载为原来的链路地址,执行步骤603;
步骤608:结束。
即使父节点失效,那么子节点仍然能够进行正确通信,从而增强了通信的健壮性。
图9为本发明所述的网关节点失效的路由流程示意图。如果网关节点或者普通节点失效,那么在其子孙节点在配置新地址之前,仍然采用原来的地址进行通信;
如果网关节点G4失效,网关节点G4的邻居节点C6收到目的节点为普通节点C7的数据帧,普通节点C7与邻居节点C6在同一个无线网络内且不是网关节点G4的子孙节点,如果邻居节点C6判断该数据帧的下一跳节点为网关节点G4,那么进行如下操作:
步骤701:开始;
步骤702:如果节点C6有一个邻居节点,该邻居节点不是网关节点G4的子孙节点,那么进行步骤703,否则进行步骤704:
步骤703:节点C6在数据帧中增加路由头部,把该邻居节点加入到路由头部中,将数据帧转发给该邻居节点,进行步骤709;
步骤704:节点C6在h跳范围内广播查询命令帧,h>1查询命令帧负载为网关节点G4的链路地址,如果收到查询命令帧的节点的网关ID与网关节点G4的网关ID不同,则返回一个查询响应命令帧;h取值范围为2-10;
步骤705:判断节点C6是否收到查询响应命令帧,如果是,进行步骤706,否则进行步骤707;
步骤706:节点C6收到查询响应命令帧,则在数据帧中增加路由头部,把该查询响应命令帧的源节点加入到路由头部中,将数据帧转发给发送查询响应命令帧的源节点,执行步骤709;
步骤707:节点C6判断h是否大于阈值H,H取值一般为10,如果是,进行步骤713,否则执行步骤708;
步骤708:节点C6执行赋值操作h=h+1;执行步骤704;
步骤709:判断收到数据帧的节点与普通节点C7的网关ID是否相同,如果是,进行步骤710,否则进行步骤711;
步骤710:收到数据帧的节点按照任播树状结构将数据帧发送到普通节点C7,即收到数据帧的节点首先将数据帧路由到当前节点和普通节点C7的最近共同祖先,然后由最近的共同祖先按照任播树状结构将数据帧路由到普通节点C7,执行步骤712;
步骤711:收到数据帧的节点按照任播树状结构将数据帧发送到根节点,根节点收到数据帧后,根据永久路由表将数据帧发送到普通节点C7所在的任播树的根节点,然后根节点根据任播树结构将数据帧路由到普通节点C7;
步骤712:普通节点C7返回的数据帧首先到达路由头部指定的节点,然后该节点将返回的数据帧发送给普通节点C6,普通节点C6再将数据帧返回给源节点;
步骤713:结束。
即使网关节点失效,那么普通节点仍然可以进行正常通信,从而增强了网络通信的健壮性。
图10为本发明所述的网关节点失效的通信流程示意图。如果网关节点G4失效,该节点G4的邻居节点C6收到目的节点为普通节点C4的数据帧,节点C4是网关节点G4的子孙节点,如果邻居节点C6判断该数据帧的下一跳节点为网关节点G4,那么进行如下操作:
步骤801:开始;
步骤802:节点C6在h跳范围内广播目的查询命令帧,h>1,目的查询命令帧负载为普通节点C4的链路地址,如果普通节点C4收到目的查询命令帧,则返回一个目的查询响应命令帧;
步骤803:判断节点C6是否收到查询响应命令帧,如果是,进行步骤804,否则进行步骤805;
步骤804:节点C6收到目的查询响应命令帧,则将数据帧转发给发送给普通节点C4,执行步骤807;
步骤805:节点C6判断h是否大于阈值H,H取值为10,如果是,进行步骤808,否则执行步骤806:
步骤806:节点C6执行赋值操作h=h+1,执行步骤802;
步骤807:普通节点C4返回的数据帧首先到达节点C6,节点C6再将数据帧返回给源节点;
步骤808:结束。
即使网关节点失效,那么普通节点仍然可以进行正常通信,从而增强了网络通信的健壮性。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的无线网络路由的实现方法,性能分析如下:当节点增加时,每个节点的平均地址配置代价和延迟也随之增加。当节点数量为40时,路由代价为10,路由延迟为45ms。
表1仿真参数
本发明提供了一种快速的无线网路由实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。
Claims (8)
1.一种快速的无线网络路由实现方法,其特征在于,所述无线网络包含两种节点:网关节点和普通节点;网关节点能够连接到互联网,普通节点通过网关节点实现与互联网的通信;所述无线网络中包含一个以上的网关节点,所有网关节点构成一个任播组;如果该任播组的任播地址与其中一个网关节点的单播地址相同,则该网关节点称为任播首节点;每个网关节点构建一个树状结构,称为任播树,树的根节点为网关节点,一个普通节点选择加入距离自己最近的网关节点所构建的任播树,并通过所在任播树的网关节点实现与互联网的通信;网关节点具有两种传输半径,一种用于网关节点之间的通信,一种用于网关节点与普通节点之间的通信,网关节点之间的通信半径大于网关节点与普通节点之间的通信半径;
所述网关节点和普通节点的IPv6地址由三部分构成,第一部分为全局网络前缀,它唯一标识一个无线网络,一个无线网络中所有网关节点和普通节点的全局网络前缀都相同,其值等于相同无线网络内的网关节点的全局网络前缀;第二部分为i比特的网关ID,它唯一标识一个网关节点,第三部分为j比特的节点ID,它唯一标识一个普通节点;网关ID和节点ID构成链路地址,其长度为16比特或者64比特;
一个普通节点的节点ID的有效长度L与该节点所在任播树的深度d成正比,L≤j,如公式(1)所示,一个网关节点或者普通节点拥有的最大子节点数为2c-1;
L=d·c 公式(1),
在无线网络中,任播首节点地址预先设置,其网关ID为1,节点ID为0;任播首节点的地址既作为它的单播地址,也作为任播地址,该任播地址唯一标识一个任播组,该任播组中每个任播成员都是网关节点并且能够连接到互联网;任播首节点负责为任播组成员配置单播地址;
任播首节点保存一个网关ID表,网关ID表具有2i-1个表项,每个表项包含三个域:网关ID,分配状态和生命周期;其中分配状态具有两个值,未分配和已分配;如果一个网关ID的分配状态值为已分配状态,那么该网关ID的生命周期随着时钟递减;如果在该网关ID的生命周期内收到该网关ID对应的网关节点发送的刷新消息,那么该网关ID的生命周期被设置为最大值,如果生命周期衰减到0,那么任播首节点将该网关ID的分配状态更新为未分配状态;
如果网关节点没有配置地址,它用自己的硬件ID作为临时链路地址;
每个网关节点保存一个临时路由表和一个永久路由表,临时路由表每个表项包括三个域:下一跳,目的节点域以及生命周期,临时路由表用于地址配置前使用,其目的节点域值为临时链路地址;永久路由表每个表项包括四个域:下一跳,目的节点,路径长度以及生命周期,其中,路径长度为到达目的节点的距离,永久路由表是用于地址配置后使用,目的节点的域值为配置的IPv6地址的网关ID;网关节点获取IPv6地址后定期广播信标帧,信标帧负载为全局网络前缀和永久路由表;
如果网关节点G1为任播首节点,其余网关节点从网关节点G1获取地址并在永久路由表中建立到达网关节点G1的永久路由表项;
在网关节点G5没有配置地址并侦听邻居网关节点广播的信标帧的情况下,如果网关节点G5侦听到两个以上信标帧且网关节点G2距离网关节点G1最近,那么网关节点G5通过下述过程从网关节点G1获取网关节点ID并建立到达网关节点G1的永久路由表项:
步骤101:开始;
步骤102:网关节点G5发送网关ID请求命令帧,网关ID请求命令帧头部结构包括mesh头部和MAC头部,其中,mesh头部的源地址为网关节点G5的临时链路地址,最终地址为网关节点G1的链路地址,MAC头部的源地址为其临时链路地址,目的地址为网关节点G2的链路地址;
步骤103:网关节点G2收到网关ID请求命令帧后,查看到达网关节点G1的永久路由表项,将网关ID请求命令帧的MAC头部的目的地址更新为到达网关节点G1的下一跳节点的链路地址,同时在临时路由表中增加到达网关节点G5的临时路由表项,该表项的下一跳和目的节点均为网关节点G5的临时链路地址,然后发送命令帧;
步骤104:下一跳节点收到网关ID请求命令帧后,在临时路由表中增加到达网关节点G5的临时路由表项,其中目的节点为网关节点G5的临时链路地址,下一跳域值为网关ID请求命令帧的MAC头部的源地址;
步骤105:下一跳节点判断自己是否为网关节点G1,如果是,进行步骤107,否则进行步骤106;
步骤106:下一跳节点查看到达网关节点G1的永久路由表项,将网关ID请求命令帧的MAC头部的目的地址更新为到达网关节点G1的下一跳节点的链路地址,发送网关ID请求命令帧,进行步骤104;
步骤107:网关节点G1查看网关节点ID表,选择最小未分配的网关节点ID,向网关节点G5返回网关ID响应命令帧,网关ID响应命令帧的mesh头部的源地址是网关节点G1的链路地址,最终地址为网关节点G5的临时链路地址,MAC头部的源地址为网关节点G1的链路地址,目的地址为临时路由表中到达网关节点G5的下一跳节点的链路地址,网关ID响应命令帧负载为分配的网关ID,同时将该网关ID的分配状态设置为已分配,生命周期设置为最大值,然后发送网关ID响应数据帧;
步骤108:下一跳节点收到网关ID响应数据帧后,判断自己是否为网关节点G5,如果是,进行步骤110,否则进行步骤109;
步骤109:下一跳节点查看临时路由表中目的节点为网关节点G5的表项,将网关ID响应数据帧的MAC头部目的地址更新为该表项的下一跳地址,发送网关ID响应数据帧,进行步骤108;
步骤110:网关节点G5将自己的网关ID设置为网关ID响应命令帧负载中的网关ID,将自己的节点ID设置为0,将网关ID、全局网络前缀以及节点ID相结合构建成IPv6地址;同时在永久路由表中增加到达网关节点G1的表项,其中下一跳为网关节点G2的链路地址,路径长度为网关节点G2到达网关节点G1的路径长度加1;
步骤111:结束;
每个网关节点获取地址后,要向任播首节点定期发送刷新消息以重置其地址的网关ID的生命周期。
2.根据权利要求1所述的一种快速的无线网络路由实现方法,其特征在于,每个网关节点和普通节点保存一个节点ID表,具有2j-1个表项,每个表项包含三个域:节点ID,分配状态和生命周期;其中,分配状态具有两个值,已分配状态和未分配状态,如果分配状态为已分配状态,那么生命周期随着时钟递减,如果网关节点或者普通节点在生命周期内收到拥有该节点ID的普通节点广播的信标帧,那么将生命周期设置为最大值,如果生命周期衰减到0,那么将该节点ID的分配状态设置为未分配状态,普通节点获取地址后,定期广播信标帧,信标帧负载为全局网络前缀;
普通节点没有配置地址时,用自己的硬件ID作为临时链路地址,并侦听邻居网关节点或者普通节点广播的信标帧,如果普通节点的邻居节点包含网关节点,那么就从邻居网关节点获取地址,否则选择距离网关节点最近的邻居普通节点获取地址;
普通节点C6从邻居网关节点或者邻居普通节点获取地址的过程为:
步骤201:开始;
步骤202:普通节点C6向邻居网关节点或者邻居普通节点发送节点ID请求命令帧,源地址为其临时链路地址;
步骤203:邻居网关节点或者邻居普通节点收到节点ID请求命令帧后,查看节点ID表,选择最小未分配的节点ID,向普通节点C6返回节点ID响应命令帧,节点ID响应命令帧负载为分配的节点ID,同时将该节点ID的分配状态设置为已分配状态,生命周期设置为最大值;
步骤204:普通节点C6收到节点ID响应命令帧后,将自己的网关ID设置为邻居网关节点或者邻居普通节点的网关ID,将自己的节点ID设置为邻居网关节点或者邻居普通节点的节点ID,然后将节点ID扩展c比特,扩展的c比特值设置为节点ID请求命令帧中分配的节点ID值,然后将全球网络前缀和自己的链路地址相结合构建成IPv6地址,同时将邻居网关节点或者邻居普通节点设置为自己的父节点;
步骤205:结束;
如果普通节点C5的节点ID有效长度为L5,普通节点C2的节点ID的有效长度为L2,L2≥L5,C[m,n]表明普通节点C的节点ID中从第m比特到第n比特的值,如果普通节点C2满足公式(2),那么普通节点 C2为普通节点 C5的祖先节点;
C5[1,L2]=C2[1,L2] 公式(2),
任播树建立完成后,自动实现路由;如果网关节点收到一个数据帧,该数据帧的目的地址的网关ID与网关节点的网关ID相同,那么网关节点将该数据帧发送到自己的一个子节点,该子节点为目的节点的祖先节点;
数据帧发送过程:该子节点再将数据帧发送到为目的节点的祖先节点的一个子节点;
重复上述数据帧发送过程,最终数据帧按照目的节点所在的分支路由到目的节点。
3.根据权利要求1所述的一种快速的无线网络路由实现方法,其特征在于,网关节点配置地址后,广播的信标帧内容为永久路由表;
网关节点G5通过侦听邻居网关节点的信标帧来更新永久路由表:
步骤301:开始;
步骤302:网关节点G5收到邻居网关节点的信标帧后,判断邻居网关节点是否在自己的永久路由表内,如果是,进行步骤304,否则进行步骤303;
步骤303:网关节点G5在永久路由表中增加邻居网关节点的表项,永久路由表表项中下一跳和目的节点均为邻居网关节点的链路地址,路径长度为1;
步骤304:网关节点G5查看信标帧负载中的永久路由表中的任意一个表项,如果该表项的目的节点不是网关节点G5并且不等于网关节点G5的永久路由表中任何表项的目的节点,那么进行步骤305,否则进行步骤306;
步骤305:网关节点G5在永久路由表中创建一个新表项,该新表项中目的节点为信标帧的永久路由表中该表项的目的节点域,下一跳为广播信标帧的源MAC地址,路径长度等于信标帧的永久路由表中该表项的路径长度加1;
步骤306:对于信标帧中永久路由表的任意一个表项E1,如果该表项E1的目的节点等于网关节点G5的永久路由表中的一个表项E2的目的节点,信标帧中该表项E1的路径长度为d1,网关节点G5中的路由表项E2的路径长度为d2,网关节点G5判断是否满足公式(3),如果是,进行步骤307,否则进行步骤308;
d1>d2+1 公式(3);
步骤307:网关节点G5更新表项E2,即将路径长度更新为d2+1,下一跳更新为发送信标帧的源MAC地址;
步骤308:网关节点G5判断自己是否执行了步骤303或者步骤305或者步骤307中的任意一个步骤,如果是,进行步骤302,否则执行步骤309;
步骤309:结束。
4.根据权利要求3所述的一种快速的无线网络路由实现方法,其特征在于,如果普通节点C1的节点ID有效长度为L1,普通节点C2的节点ID有效长度为L2,普通节点C3的节点ID的有效长度为L3,L1≥L3,L2≥L3,C[i1,j1]表明普通节点C的节点ID中从第i1比特到第j1比特的值,如果普通节点C3满足公式(4)和公式(5),那么普通节点C3为普通节点C1和普通节点C2最近的祖先节点;
C1[1,L3]=C2[1,L3]=C3[1,L3] 公式(4),
C1[L3,L3+c-1]≠C2[L3,L3+c-1] 公式(5),
如果一个普通节点与相同无线网络的普通节点进行通信,那么数据帧包含mesh头部和MAC头部;如果数据帧的目的链路地址为普通节点C2的链路地址,那么创建或者收到该数据帧的当前节点通过下述过程将数据帧路由到普通节点C2:
步骤401:开始;
步骤402:当前节点判断普通节点C2是否为当前节点的邻居节点,如果是,执行步骤403,否则执行步骤404;
步骤403:当前节点直接将数据帧发送给普通节点C2,执行步骤410;
步骤404:当前节点判断是否存在一个邻居节点,该邻居节点的网关ID与普通节点C2的网关ID相同,如果是,执行步骤405,否则执行步骤406;
步骤405:当前节点将数据帧发送给该邻居节点,执行步骤402;
步骤406:判断当前节点的网关ID是否与普通节点C2的网关ID相同,如果是,执行步骤407,否则执行步骤408;
步骤407:当前节点按照任播树状结构将数据帧发送到普通节点C2,即当前节点首先将数据帧路由到当前节点和普通节点C2的最近共同祖先,然后由最近的共同祖先按照任播树状结构将数据帧路由到普通节点C2,执行步骤410;
步骤408:当前节点按照任播树状结构将数据帧发送到根节点;
步骤409:根节点收到数据帧后,根据永久路由表将数据帧发送到普通节点C2所在的任播树的根节点,然后根节点根据任播树结构将数据帧路由到普通节点C2;
步骤410:结束。
5.根据权利要求1所述的一种快速的无线网络路由实现方法,其特征在于,在普通节点C1与普通节点C2属于不同无线网络的情况下,如果普通节点C1与普通节点C2通信,通信的数据帧的负载为IPv6数据包,那么根据下述步骤实现通信:
步骤501:开始;
步骤502:普通节点C1发送数据帧,目的地址为所在任播树的根节点G3的链路地址;
步骤503:普通节点C1的父节点收到该数据帧后,判断自己是否为根节点G3,如果是,进行步骤506,否则进行步骤504;
步骤504:收到数据帧的节点将收到的数据帧发送给自己的父节点;
步骤505:收到数据帧的节点判断自己是否为根节点G3,如果是,进行步骤506,否则进行步骤504;
步骤506:根节点G3收到数据帧后,将数据帧负载中的IPv6数据包发送到互联网,该数据包按照互联网路由方式将数据包路由到目的节点所在的任播树的根节点G4;
步骤507:根节点G4收到数据帧后,根据任播树将数据帧路由到普通节点C2;
步骤508:普通节点C2向普通节点C1返回数据帧,目的地址为根节点G4的链路地址,帧负载为IPv6数据包;
步骤509:普通节点C2的父节点收到该数据帧后,判断自己是否为根节点G4,如果是,进行步骤512,否则进行步骤510;
步骤510:收到数据帧的节点将收到的数据帧发送给自己的父节点;
步骤511:收到数据帧的节点判断自己是否为根节点G4,如果是,进行步骤512,否则进行步骤510;
步骤512:根节点G4收到数据帧后,将数据帧负载中的IPv6数据包发送到互联网,并按照IPv6路由方式路由到目的节点所在的任播树的根节点G3;
步骤513:根节点G3收到数据帧后,根据任播树将数据帧路由到普通节点C1;
步骤514:结束。
6.根据权利要求2所述的一种快速的无线网络路由实现方法,其特征在于,如果普通节点C1失效,那么其子节点C2侦听邻居网关节点和邻居普通节点的信标帧,如果普通节点C2的邻居节点中包含网关节点,则执行步骤201~205重新加入树状结构并从该网关节点获取链路地址,否则普通节点C2选择一个邻居普通节点,该邻居普通节点与所在任播树的树根节点的距离最小,然后执行步骤201~205重新加入树状结构并从该普通节点获取链路地址;
普通节点C2获取新的链路地址后,进行如下操作:
步骤601:开始;
步骤602:普通节点C2向其子节点发送地址更新命令帧,命令帧的源地址为新获取的链路地址,负载为原来的链路地址;
步骤603:子节点收到地址更新命令帧后,如果子节点的任何一个邻居节点与该邻居节点所在任播树的树根节点的距离都大于或者等于其父节点与所在任播树的树根节点的距离,那么进行步骤604,否则进行步骤605;
步骤604:子节点将自己的网关ID设置为父节点的网关ID,将自己的节点ID设置为父节点的节点ID,然后将自己的节点ID扩展c比特,将扩展的c比特值设置为子节点原来节点ID的有效位的最后c比特值,执行步骤606;
步骤605:子节点选择一个邻居节点,该邻居节点与其所在任播树的树根节点距离最小,然后执行步骤201~步骤205重新加入其所在树状结构并从该邻居节点获取链接地址;
步骤606:子节点判断自己是否有子节点,如果是进行步骤607,否则进行步骤608;
步骤607:子节点向自己子节点发送地址更新命令帧,命令帧的源地址为新获取的链路地址,负载为原来的链路地址,执行步骤603;
步骤608:结束。
7.根据权利要求5所述的一种快速的无线网络路由实现方法,其特征在于,如果网关节点或者普通节点失效,那么在其子孙节点在配置新地址之前,仍然采用原来的地址进行通信;
如果网关节点G4失效,网关节点G4的邻居节点C6收到目的节点为普通节点C7的数据帧,普通节点C7与邻居节点C6在同一个无线网络内且不是网关节点G4的子孙节点,如果邻居节点C6判断该数据帧的下一跳节点为网关节点G4,那么进行如下操作:
步骤701:开始;
步骤702:如果节点C6有一个邻居节点,该邻居节点不是网关节点G4的子孙节点,那么进行步骤703,否则进行步骤704:
步骤703:节点C6在数据帧中增加路由头部,把该邻居节点加入到路由头部中,将数据帧转发给该邻居节点,进行步骤709;
步骤704:节点C6在h跳范围内广播查询命令帧,h>1查询命令帧负载为网关节点G4的链路地址,如果收到查询命令帧的节点的网关ID与网关节点G4的网关ID不同,则返回一个查询响应命令帧;
步骤705:判断节点C6是否收到查询响应命令帧,如果是,进行步骤706,否则进行步骤707;
步骤706:节点C6收到查询响应命令帧,则在数据帧中增加路由头部,把该查询响应命令帧的源节点加入到路由头部中,将数据帧转发给发送查询响应命令帧的源节点,执行步骤709;
步骤707:节点C6判断h是否大于阈值H,如果是,进行步骤713,否则执行步骤708;
步骤708:节点C6执行赋值操作h=h+1,执行步骤704;
步骤709:判断收到数据帧的节点与普通节点C7的网关ID是否相同,如果是,进行步骤710,否则进行步骤711;
步骤710:收到数据帧的节点按照任播树状结构将数据帧发送到普通节点C7,即收到数据帧的节点首先将数据帧路由到当前节点和普通节点C7的最近共同祖先,然后由最近的共同祖先按照任播树状结构将数据帧路由到普通节点C7,执行步骤712;
步骤711:收到数据帧的节点按照任播树状结构将数据帧发送到根节点,根节点收到数据帧后,根据永久路由表将数据帧发送到普通节点C7所在的任播树的根节点,然后根节点根据任播树结构将数据帧路由到普通节点C7;
步骤712:普通节点C7返回的数据帧首先到达路由头部指定的节点,然后该节点将返回的数据帧发送给普通节点C6,普通节点C6再将数据帧返回给源节点;
步骤713:结束。
8.根据权利要求5所述的一种快速的无线网络路由实现方法,其特征在于,如果网关节点G4失效,该节点G4的邻居节点C6收到目的节点为普通节点C4的数据帧,节点C4是网关节点G4的子孙节点,如果邻居节点C6判断该数据帧的下一跳节点为网关节点G4,那么进行如下操作:
步骤801:开始;
步骤802:节点C6在h跳范围内广播目的查询命令帧,h>1,目的查询命令帧负载为普通节点C4的链路地址,如果普通节点C4收到目的查询命令帧,则返回一个目的查询响应命令帧;
步骤803:判断节点C6是否收到查询响应命令帧,如果是,进行步骤804,否则进行步骤805;
步骤804:节点C6收到目的查询响应命令帧,则将数据帧转发给发送给普通节点C4,执行步骤807;
步骤805:节点C6判断h是否大于阈值H,如果是,进行步骤808,否则执行步骤806:
步骤806:节点C6执行赋值操作h=h+1,执行步骤802;
步骤807:普通节点C4返回的数据帧首先到达节点C6,节点C6再将数据帧返回给源节点;
步骤808:结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510564268.2A CN105119828B (zh) | 2015-09-08 | 2015-09-08 | 一种快速的无线网络路由实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510564268.2A CN105119828B (zh) | 2015-09-08 | 2015-09-08 | 一种快速的无线网络路由实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105119828A CN105119828A (zh) | 2015-12-02 |
CN105119828B true CN105119828B (zh) | 2018-02-09 |
Family
ID=54667723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510564268.2A Active CN105119828B (zh) | 2015-09-08 | 2015-09-08 | 一种快速的无线网络路由实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105119828B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506368B (zh) * | 2016-10-19 | 2019-01-11 | 常熟理工学院 | 一种基于互联网的数据通信实现方法 |
CN109802888B (zh) * | 2017-11-16 | 2021-11-09 | 中兴通讯股份有限公司 | 一种基于任播地址保护的方法及装置 |
CN110391981B (zh) * | 2018-04-20 | 2021-10-26 | 慧与发展有限责任合伙企业 | 为网状网络中的网关节点建立源路由树的设备、方法及介质 |
CN108881023B (zh) * | 2018-05-30 | 2020-08-25 | 常熟理工学院 | 一种多路径的大数据网络实现方法 |
CN109246785B (zh) * | 2018-08-13 | 2020-07-28 | 常熟理工学院 | 一种未来移动网络的实现方法 |
CN112073530B (zh) * | 2020-09-15 | 2021-10-15 | 常熟理工学院 | 一种基于物联网的智能医疗监测和报警系统的实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488975A (zh) * | 2009-01-13 | 2009-07-22 | 王晓喃 | 实现无线传感器网络与IPv6网络全IP通信的系统 |
CN101902693A (zh) * | 2010-07-21 | 2010-12-01 | 中国科学院计算技术研究所 | 支持节点移动的ip网络中任播的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100725005B1 (ko) * | 2000-11-22 | 2007-06-04 | 주식회사 케이티 | 다중 프로토콜 레이블 스위칭 망에서의 고속 재라우팅 방법 |
-
2015
- 2015-09-08 CN CN201510564268.2A patent/CN105119828B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488975A (zh) * | 2009-01-13 | 2009-07-22 | 王晓喃 | 实现无线传感器网络与IPv6网络全IP通信的系统 |
CN101902693A (zh) * | 2010-07-21 | 2010-12-01 | 中国科学院计算技术研究所 | 支持节点移动的ip网络中任播的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105119828A (zh) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105119828B (zh) | 一种快速的无线网络路由实现方法 | |
CN101803300B (zh) | 为公用服务提供网络和路由协议的方法和系统 | |
CN101267433B (zh) | 一种适应异构网络环境的中心控制源路由协议方法 | |
CN103024747B (zh) | 基于干扰抑制和用户差异性带宽需求的频谱分配方法 | |
CN104080112B (zh) | 一种提高无线自组织网络业务可靠性的方法 | |
CN102695220B (zh) | 一种基于IPv6的移动自组网络移动切换实现方法 | |
CN102364970B (zh) | 一种移动自组网络地址自动配置的实现方法 | |
CN102572015B (zh) | 一种动态移动自组网络IPv6地址配置的实现方法 | |
CN102158812B (zh) | AC-AP架构无线Mesh网组播通信方法 | |
CN102883403A (zh) | 一种移动自组网的构建方法 | |
Sampath et al. | An ACO algorithm for effective cluster head selection | |
CN105246118A (zh) | 一种基于定位信息的无线网络通信实现方法 | |
CN105187529A (zh) | 一种基于定位信息的车联网实现方法 | |
CN103457852A (zh) | 一种多播虚拟网络的抗毁性映射方法 | |
CN109474970A (zh) | 一种适用于无线通信网络的路由方法 | |
CN106686685A (zh) | 多跳移动无线自组织网络拓扑快速发现方法 | |
CN106993321A (zh) | 一种基于簇的网络数据通信方法 | |
CN104010344A (zh) | 一种基于协作组的无线传感器网络虚拟mimo通信策略 | |
CN101938784A (zh) | 信道分配方法、信道调整方法和网络设备 | |
CN105282851A (zh) | 一种信道分配方法和系统 | |
CN102291302A (zh) | 低压配电网电力线载波通信网络中局部路由重构方法 | |
CN105050148B (zh) | 一种无线传感网路由的实现方法 | |
CN109005567A (zh) | 一种基于簇的移动网络实现方法 | |
CN105188104A (zh) | 一种无线网络通信的实现方法 | |
CN103596276A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220330 Address after: 215500 5th floor, building 4, 68 Lianfeng Road, Changfu street, Changshu City, Suzhou City, Jiangsu Province Patentee after: Changshu intellectual property operation center Co.,Ltd. Address before: 215500 School of computer science and engineering, Changshu Institute of Technology (southeast campus), Changshu City, Suzhou City, Jiangsu Province Patentee before: CHANGSHU INSTITUTE OF TECHNOLOGY |