发明名称 自适应车辆密度的车载网络单播路由方法
摘要 一种自适应车辆密度的车载网络单播路由方法,其路由过程包括:移动节点的路由过程,以及静态节点的路由过程。移动节点的路由过程包括:邻居状态信息维护、发送报告报文、发送离开报文、发送路由请求、接收路由应答、转发报文。静态节点的路由过程包括:邻居状态信息维护、道路密度值表维护、道路时延表维护、接收路由请求、回复应答报文、通知道路密度变化。在网络密度较低时,移动节点能自动增加通信半径和数据报文生存期,在应用要求的时延范围内,提高成功率;在网络密度较高时,移动节点自动减小通信半径和数据报文生存期,提高成功率、降低时延的同时减小通信过程中的信号碰撞。在成功率、时延和开销之间取得了一个很好的平衡。
申请公布号 CN103619046B 申请公布日期 2016.10.12
申请号 CN201310629146.8 申请日期 2013.11.29
申请人 北京航空航天大学深圳研究院 发明人 蒲菊华;马坤;谢彧;陈佳;陈虞君;熊璋
分类号 H04W40/02(2009.01)I;H04W40/24(2009.01)I 主分类号 H04W40/02(2009.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种自适应车辆密度的车载网络单播路由方法,其特征在于:它包括两方面即:(一)任意移动节点MN的路由过程;(二)任意静态节点SN的路由过程;(一)在自适应车辆密度的车载网络单播路由方法中,任意移动节点MN的路由过程按如下步骤进行:步骤M‑0‑1:移动节点处理周期开始,若任意移动节点MN到达广播HELLO报文周期,则转步骤M‑1广播HELLO<sub>MN</sub>报文,否则转步骤M‑0‑2;步骤M‑0‑2:若任意移动节点MN到达报告周期,则转步骤M‑2发送<img file="FDA0000969073540000011.GIF" wi="259" he="71" />报文和<img file="FDA0000969073540000012.GIF" wi="258" he="71" />报文,否则转步骤M‑0‑3;步骤M‑0‑3:若任意移动节点MN离开路口静态节点SNC,则转步骤M‑3发送<img file="FDA0000969073540000013.GIF" wi="221" he="71" />报文,否则转步骤M‑0‑4;步骤M‑0‑4:若任意移动节点MN需要向另一任意移动节点MND发送数据报文,则MN产生一条数据报文<img file="FDA0000969073540000014.GIF" wi="203" he="71" />数据报文目的节点为另一任意移动节点MND,向MND路由该数据报文,转步骤M‑4,否则转步骤M‑0‑5;步骤M‑0‑5:若任意移动节点MN收到<img file="FDA0000969073540000015.GIF" wi="212" he="71" />报文,则转步骤M‑5,否则转步骤M‑0‑6;步骤M‑0‑6:若任意移动节点MN收到HELLO<sub>MNA</sub>报文,则转步骤M‑6,否则转步骤M‑0‑7;步骤M‑0‑7:若任意移动节点MN收到数据报文,则转步骤M‑7,否则转步骤M‑0‑8;步骤M‑0‑8:若任意移动节点MN收到上述报文之外的其他报文,则转步骤M‑8,否则转步骤M‑0‑9;步骤M‑0‑9:若任意移动节点MN到达清除邻居表周期,则转步骤M‑9清除过期邻居,否则转步骤M‑0‑10;步骤M‑0‑10:若任意移动节点MN到达停止时间,则任意移动节点MN的路由过程结束,否则转步骤M‑0‑1;步骤M‑1:广播HELLO报文MN根据邻居表中的邻居的速度的方差,调整广播周期;若速度方差增大,则增大广播频率,否则减小广播频率;MN按照这个周期广播一跳HELLO报文HELLO<sub>MN</sub>=(TYPE,TST,IP_S<sub>MN</sub>,IP_D<sub>MN</sub>,LOC<sub>MN</sub>,SP<sub>MN</sub>,DIR<sub>MN</sub>,TTL);步骤M‑2:发送REPORT报文步骤M‑2‑1:若MN移动一个传输半径的距离,则转步骤M‑2‑3,否则转步骤M‑2‑2;步骤M‑2‑2:若MN在上个报告周期没有发送REPORT报文,则这个周期发送REPORT报文,转步骤M‑2‑3;否则步骤M‑2结束;步骤M‑2‑3:向静态节点<img file="FDA00009690735400000210.GIF" wi="172" he="63" />发送<img file="FDA0000969073540000022.GIF" wi="258" he="71" />报文,向静态节点<img file="FDA0000969073540000023.GIF" wi="155" he="64" />发送<img file="FDA0000969073540000024.GIF" wi="259" he="71" />报文;<img file="FDA0000969073540000025.GIF" wi="1470" he="63" />其中TYPE表示该报文的报文类型,TST表示生成该报文的时间,IP_S<sub>MN</sub>表示发送该报文的源节点的IP地址,即MN的IP地址,IP_D<sub>SNH</sub>表示MN所在道路的两个静态节点中驶离的那个静态节点<img file="FDA0000969073540000026.GIF" wi="169" he="71" />的IP地址,LOC<sub>MN</sub>表示MN的坐标位置,SP<sub>MN</sub>表示MN的移动速度,DIR<sub>MN</sub>表示MN的移动方向,TTL表示该REPORT报文的生存期;<img file="FDA0000969073540000027.GIF" wi="1461" he="63" />其中TYPE表示该报文的报文类型,TST表示生成该报文的时间,IP_S<sub>MN</sub>表示发送该报文的源节点的IP地址,即MN的IP地址,IP_D<sub>SNT</sub>表示MN所在道路的两个静态节点中驶向的那个静态节点<img file="FDA0000969073540000028.GIF" wi="155" he="71" />的IP地址,LOC<sub>MN</sub>表示MN的坐标位置,SP<sub>MN</sub>表示MN的移动速度,DIR<sub>MN</sub>表示MN的移动方向,TTL表示该报文的生存期;步骤M‑3:发送LEAVE报文任意移动节点MN离开任意一个路口RDC<sub>MN</sub>时,MN以离开的静态节点SNH为目的节点发送LEAVE报文,<maths num="0001"><math><![CDATA[<mrow><msubsup><mi>LEAVE</mi><mrow><mi>M</mi><mi>N</mi></mrow><mrow><mi>S</mi><mi>N</mi><mi>H</mi></mrow></msubsup><mo>=</mo><mrow><mo>(</mo><mi>T</mi><mi>Y</mi><mi>P</mi><mi>E</mi><mo>,</mo><mi>T</mi><mi>S</mi><mi>T</mi><mo>,</mo><mi>I</mi><mi>P</mi><mo>_</mo><msub><mi>S</mi><mrow><mi>M</mi><mi>N</mi></mrow></msub><mo>,</mo><mi>I</mi><mi>P</mi><mo>_</mo><msub><mi>D</mi><mrow><mi>M</mi><mi>N</mi></mrow></msub><mo>,</mo><mi>I</mi><mi>P</mi><mo>_</mo><msub><mi>SN</mi><mrow><mi>M</mi><mi>N</mi></mrow></msub><mo>,</mo><mi>T</mi><mi>T</mi><mi>L</mi><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000969073540000029.GIF" wi="1254" he="63" /></maths>其中IP_SN<sub>MN</sub>=IP<sub>SNC</sub>,又有<img file="FDA0000969073540000039.GIF" wi="323" he="63" />步骤M‑4:发送新数据报文步骤M‑4‑1:判断MN是否位于路口,若MN位于路口,则将数据报文保存到请求队列,转步骤M‑4‑2,否则,转步骤M‑4‑3;步骤M‑4‑2:MN向该路口的静态节点<img file="FDA0000969073540000038.GIF" wi="163" he="63" />发送路由请求报文<img file="FDA0000969073540000033.GIF" wi="307" he="63" /><img file="FDA0000969073540000034.GIF" wi="1205" he="63" />其中TYPE表示报文类型,TST表示发送报文的时间戳,IP_S<sub>MN</sub>表示MN的IP地址,IP_D<sub>MN</sub>表示该报文的目的静态节点<img file="FDA0000969073540000035.GIF" wi="162" he="70" />的IP地址,MSGD表示数据报文的目的节点即MNB,TTL表示该请求报文的生存期,步骤M‑4结束;步骤M‑4‑3:初始化数据报文头部,将距离MN最近的路口设为下一跳路口,将传输半径和数据报文生存期设为默认值,转步骤M‑5‑3;步骤M‑5:收到REPLY报文步骤M‑5‑1:MN收到静态节点<img file="FDA00009690735400000310.GIF" wi="158" he="62" />发送给本节点的REPLY报文:<img file="FDA0000969073540000037.GIF" wi="1662" he="63" />检查请求队列中是否有数据报文,若有,则从请求队列取出数据报文,转步骤M‑5‑2更新数据报文头部,否则丢弃REPLY报文;步骤M‑5‑2:将REPLY报文中的下一跳路口、传输半径和数据报文生存期保存到数据报文的头部,转步骤M‑5‑3;步骤M‑5‑3:若MN的邻居中有距离下一跳路口更近的节点,其中距离下一跳路口最近的节点为下一跳节点MNN,则按RAD调整传输半径,向MNN转发数据报文,本步骤结束,否则转步骤M‑5‑4;步骤M‑5‑4:MN将数据报文保存到等待队列;步骤M‑6:任意移动节点MN收到HELLO报文步骤M‑6‑1:MN收到HELLO<sub>MNA</sub>=(TYPE,TST,IP_S<sub>MNA</sub>,IP_D<sub>MNA</sub>,LOC<sub>MNA</sub>,SP<sub>MNA</sub>,DIR<sub>MNA</sub>,TTL),MN检查邻居表NEI_M<sub>MN</sub>是否存在MNA的状态信息,若不存在,则将携带在HELLO<sub>MNA</sub>中的状态信息存入邻居表NEI_M<sub>MN</sub>中;否则,将邻居表中MNA的信息更新为HELLO<sub>MNA</sub>中的状态信息,转步骤M‑6‑2;步骤M‑6‑2:MN检查等待队列中是否存有数据报文,若有,则取出数据报文,转步骤M‑6‑3;否则步骤M‑6结束;步骤M‑6‑3:取出数据报文中的下一跳路口、传输半径和数据报文生存期,转步骤M‑5‑3;步骤M‑7:收到数据报文;步骤M‑7‑1:MN取出数据报文目的节点MSGD,若MN=MSGD,即为该数据报文的目的节点,则处理数据报文;否则,转步骤M‑6‑3;步骤M‑8:收到HELLO、REPLY之外的其他控制报文步骤M‑8‑1:MN取出报文的目的节点,若MN为该报文的目的节点,则说明收到了错误路由的报文,丢弃该报文;否则,转步骤M‑8‑2;步骤M‑8‑2:若MN的邻居中有距离控制报文目的点的下一跳节点MNN,则向MNN转发该报文,否则丢弃该报文;步骤M‑9:清除过期邻居,MN取出邻居表中生存时间过期的邻居信息并删除;(二)在自适应车辆密度的车载网络单播路由方法中,任意静态节点SN的路由过程按如下步骤进行:步骤S‑0‑1:新的静态节点处理周期开始,若任意静态节点SN收到<img file="FDA0000969073540000041.GIF" wi="243" he="63" />报文,则转步骤S‑1,否则转步骤S‑0‑2;步骤S‑0‑2:若任意静态节点SN收到<img file="FDA0000969073540000042.GIF" wi="219" he="71" />报文,则转步骤S‑2,否则转步骤S‑0‑3;步骤S‑0‑3:若任意静态节点SN收到NOTIFY<sub>SNA</sub>报文,则转步骤S‑3,否则转步骤S‑0‑4;步骤S‑0‑4:若任意静态节点SN收到<img file="FDA0000969073540000043.GIF" wi="288" he="63" />报文,则转步骤S‑4,否则转步骤S‑0‑5;步骤S‑0‑5:若任意静态节点SN收到其他控制报文和数据报文,则转步骤S‑5,否则转步骤S‑0‑6;步骤S‑0‑6:若到达清除拓扑表周期,则转步骤S‑6清除拓扑表中过期信息,否则转步骤S‑0‑7;步骤S‑0‑7:若静态节点SN到达停止时间,则任意静态节点SN的路由过程结束,否则转步骤S‑0‑1;步骤S‑1:静态节点SN收到REPORT报文步骤S‑1‑1:<img file="FDA0000969073540000051.GIF" wi="1515" he="67" />静态节点SN检查拓扑表TOPO<sub>SN</sub>,若TOPO<sub>SN</sub>中有任意移动节点MN的状态信息,则将MN的状态信息替换为<img file="FDA0000969073540000052.GIF" wi="266" he="71" />报文中的状态信息;否则更新TOPO<sub>SN</sub>,将IP_S<sub>MN</sub>的状态信息保存到TOPO<sub>SN</sub>中,转步骤S‑1‑2;步骤S‑1‑2:若道路的密度发生变化,则转步骤S‑1‑3广播NOTIFY报文,否则步骤S‑1结束;步骤S‑1‑3:报文NOTIFY<sub>SN</sub>=(TYPE,TST,IP_S<sub>SN</sub>,DEN<sub>RD</sub>,IP<sub>RD</sub>,TTL):其中TYPE表示该报文的报文类型,TST表示发送报文的时间戳,TTL表示该报文的生存期,IP_S<sub>SN</sub>表示SN的IP地址,DEN<sub>RD</sub>表示道路密度值,IP<sub>RD</sub>表示密度值发生改变的道路的IP地址,广播这个报文;步骤S‑2:收到LEAVE报文步骤S‑2‑1:静态节点SN收到<img file="FDA0000969073540000053.GIF" wi="214" he="71" />报文,取出<img file="FDA0000969073540000054.GIF" wi="215" he="70" />报文的源节点地址IP_S<sub>MN</sub>,检查TOPO<sub>SN</sub>,若TOPO<sub>SN</sub>中有任意移动节点MN的状态信息,则删除这个节点的状态信息,否则丢弃该报文;转步骤S‑2‑2步骤S‑2‑2:SN取出<img file="FDA0000969073540000055.GIF" wi="211" he="70" />报文的时间戳TST另一静态节点IP_SN<sub>MN</sub>,得到本节点与IP_SN<sub>MN</sub>之间的道路时延值;用当前系统时间减去TST即为本节点与IP_SN<sub>MN</sub>之间的道路的当前时延值,DL<sub>RD</sub>=current‑TST,按照公式(1)更新时延表DELAY<sub>SN</sub>中的时延;<maths num="0002"><math><![CDATA[<mrow><msubsup><mi>DL</mi><mrow><mi>R</mi><mi>D</mi></mrow><mrow><mi>n</mi><mi>e</mi><mi>w</mi></mrow></msubsup><mo>=</mo><mi>&alpha;</mi><mo>&CenterDot;</mo><msubsup><mi>DL</mi><mrow><mi>R</mi><mi>D</mi></mrow><mrow><mi>o</mi><mi>l</mi><mi>d</mi></mrow></msubsup><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>&CenterDot;</mo><msubsup><mi>DL</mi><mrow><mi>R</mi><mi>D</mi></mrow><mrow><mi>c</mi><mi>u</mi><mi>r</mi></mrow></msubsup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000969073540000056.GIF" wi="1326" he="71" /></maths>其中,<img file="FDA0000969073540000057.GIF" wi="115" he="71" />为DELAY<sub>SN</sub>中保存的旧道路时延值,<img file="FDA0000969073540000058.GIF" wi="108" he="62" />是当前时刻道路RD的时延,<img file="FDA0000969073540000061.GIF" wi="294" he="62" />α为控制系数;步骤S‑3:收到NOTIFY<sub>SNA</sub>报文步骤S‑3‑1:静态节点SN收到报文NOTIFY<sub>SNA</sub>,取出DEN<sub>RD</sub>和IP<sub>RD</sub>,根据公式(2)更新密度表,转步骤S‑3‑2;<maths num="0003"><math><![CDATA[<mrow><msubsup><mi>DEN</mi><mrow><mi>R</mi><mi>D</mi></mrow><mrow><mi>n</mi><mi>e</mi><mi>w</mi></mrow></msubsup><mo>=</mo><mi>&alpha;</mi><mo>&CenterDot;</mo><msubsup><mi>DEN</mi><mrow><mi>R</mi><mi>D</mi></mrow><mrow><mi>o</mi><mi>l</mi><mi>d</mi></mrow></msubsup><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>&CenterDot;</mo><msubsup><mi>DEN</mi><mrow><mi>R</mi><mi>D</mi></mrow><mrow><mi>c</mi><mi>u</mi><mi>r</mi></mrow></msubsup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000969073540000062.GIF" wi="1342" he="71" /></maths>其中,<img file="FDA0000969073540000063.GIF" wi="158" he="71" />为密度表中保存的旧道路密度值,<img file="FDA0000969073540000064.GIF" wi="157" he="56" />是当前时刻道路RD的密度,<img file="FDA0000969073540000065.GIF" wi="381" he="63" />α为控制系数;步骤S‑3‑2:SN继续广播这个NOTIFY<sub>SNA</sub>报文,直到报文的生存期到期被丢弃;步骤S‑4:收到<img file="FDA0000969073540000066.GIF" wi="286" he="63" />报文步骤S‑4‑1:计算下一跳路口静态节点SN收到<img file="FDA0000969073540000067.GIF" wi="309" he="70" />采用Dijkstra算法,根据密度表,计算SN到MSGD下一跳路口,即下一跳静态节点所在的路口SNN;步骤S‑4‑2:计算传输半径取出静态节点SN和SNN之间的道路RDN的密度值DEN<sub>RDN</sub>,将密度值DEN<sub>RDN</sub>与密度阈值下限<img file="FDA0000969073540000068.GIF" wi="89" he="70" />和密度阈值上限<img file="FDA0000969073540000069.GIF" wi="72" he="63" />进行比较,若<img file="FDA00009690735400000610.GIF" wi="323" he="69" />说明道路连通度较低,需要节点根据公式3增大传输半径和数据报文生存期;否则,若<img file="FDA00009690735400000611.GIF" wi="318" he="63" />说明道路连通度较好,不需要节点改变传输半径和数据报文生存期;否则,说明密度值大于最大密度阈值,道路连通度较高,为避免冲突,需要节点按公式(3)减小传输半径和数据报文生存期;静态节点SN根据公式(3)计算一个适应当前密度的传输半径;<img file="FDA00009690735400000612.GIF" wi="1630" he="286" />其中,<img file="FDA00009690735400000613.GIF" wi="105" he="63" />表示当前的传输半径,R<sub>old</sub>为静态节点SN保存的旧传输半径,DEN<sub>RDN</sub>为当前路口与下一跳路口之间的道路RDN的密度值,MAX_D为SN保存的移动节点中两两节点间最大的距离差;步骤S‑4‑3:计算数据报文生存期静态节点SN取出时延表中当前路口与下一跳路口之间的时延值,即为数据报文在本段路上的生存期<img file="FDA0000969073540000071.GIF" wi="170" he="63" />步骤S‑4‑4:生成并发送REPLY报文静态节点SN根据计算出的下一跳路口SNN,传输半径<img file="FDA0000969073540000072.GIF" wi="99" he="62" />和数据报文生存期<img file="FDA0000969073540000073.GIF" wi="174" he="63" />生成应答报文;REPLY<sub>SN</sub>=(TYPE,TST,IP_N<sub>SN</sub>,RAD,TTL_AD,IP_S<sub>SN</sub>,IP_D<sub>SN</sub>,MSGD,TTL),其中IP_D<sub>MN</sub>表示目的节点的IP地址,RAD表示计算的传输半径值<img file="FDA0000969073540000074.GIF" wi="123" he="63" />TTL_AD表示计算的数据报文生存期<img file="FDA0000969073540000075.GIF" wi="169" he="63" />IP_S<sub>SN</sub>表示该报文的源节点的IP地址,MSGD表示数据报文目的节点,TTL表示该报文的生存期,向目的节点发送REPLY报文;步骤S‑5:收到其他报文SN收到其他报文时,丢弃该报文;步骤S‑6:清除过期的状态信息静态节点SN检查拓扑表TOPO<sub>SN</sub>中超过移动节点的生存期的状态信息,删除这些状态信息,转步骤S‑1‑2。
地址 518057 广东省深圳市南山区高新技术开发区南区虚拟大学园A501室