[0101] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0102] 图1为本发明所述接入路由器配置地址流程示意图。
[0103] 图2为本发明所述接入节点配置地址流程示意图。
[0104] 图3为本发明所述车辆节点配置地址流程示意图。
[0105] 图4为本发明所述上传数据流程示意图。
[0106] 图5为本发明所述下载数据流程示意图。
[0107] 图6为本发明所述切换流程示意图。具体实施方式:
[0108] 本发明提供了一种高效的车联网实现方法,车辆节点通过本发明所提供的多跳车联网的数据传输实现方法能够从距离最近的数据提供者获取数据从而有效降低了获取数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
[0109] 图1为本发明所述接入路由器配置地址流程示意图。所述车联网包括接入路由器、接入节点和车辆节点,接入节点分为X个种类,X为大于1的正整数,不同种类的接入节点支持不同的协议,一种接入节点支持一种协议,一个接入节点只配置一个接口;一个接入路由器配置一个上游接口和X个下游接口,上游接口与互联网骨干网相连,一个下游接口链接一个接入节点,不同的下游接口链接不同种类的接入节点;每个车辆节点配置X个接口,每个接口支持一种协议,不同的接口支持不同的协议;车辆节点的每个接口与邻居接入节点或者邻居车辆节点支持相同协议的接口链路相连;
[0110] 接入路由器的每个下游接口由一个接口ID k唯一标识,k取值1~X,接口ID为k的接口简写为接口k,接入路由器的上游接口的接口ID为X+1;车辆节点的每个接口由一个接口ID f唯一标识,f取值1~X,接口ID为f的接口简写为接口f;
[0111] 车辆节点启动后,能够获取所述车联网中的接入路由器和接入节点的地理坐标;
[0112] 接入路由器为自己的每个下游接口配置一个全局地址;接入节点为自己的接口配置一个全局地址,车辆节点为自己的每个接口配置一个全局地址和本地地址;一个全局地址包含64比特长度的网络前缀,2i比特长度接入节点ID,以及(64-2i)比特长度的设备ID;一个本地地址包含64比特长度的网络前缀,i比特长度的横坐标,i比特长度的纵坐标,以及(64-2i)比特长度的设备ID;
[0113] 接入路由器的上游接口的全局地址预先配置,接入路由器的下游接口的全局地址的网络前缀预先设置;接入路由器启动后,执行下述操作为每个下游接口配置一个全局地址:
[0114] 步骤101:开始;
[0115] 步骤102:接入路由器设置一个变量k,变量k的初始值为0;
[0116] 步骤103:接入路由器将变量k的值递增1,如果变量k的值大于X,则执行步骤105,否则执行步骤104;
[0117] 步骤104:接入路由器创建一个全局地址,该全局地址的网络前缀为预先设置的网络前缀,接入节点ID为0,设备ID为k,接入路由器将构建的全局地址设置为接口k的全局地址,执行步骤103;
[0118] 步骤105:结束。
[0119] 图2为本发明所述接入节点配置地址流程示意图。接入路由器为每个下游接口配置一个全局地址后,开始从每个下游接口定期发送一个信标消息,该信标消息的源地址为该下游接口的全局地址;接入节点从链接的接入路由器接收到信标消息后,执行下述操作为自己的接口配置全局地址:
[0120] 步骤201:开始;
[0121] 步骤202:接入节点构建一个全局地址,该全局地址的网络前缀为接收到的信标消息的源地址的网络前缀,接入节点ID为接收到的信标消息的源地址的设备ID,设备ID为0;
[0122] 步骤203:接入节点将构建的全局地址设置为自己接口的地址;
[0123] 步骤204:结束;
[0124] 接入节点为接口配置全局地址后,开始从该接口定期发送一个信标消息,该信标消息的源地址为该接口的全局地址。
[0125] 图3为本发明所述车辆节点配置地址流程示意图。一个接入路由器保存一个设备ID集合用于保存已经分配的设备ID,其初始状态为空;车辆节点维护一个地址表,每个地址表项包含一个接口ID域和一个全局地址域,地址表的初始状态为空;车辆节点V1的接口f1与接入节点AP1链路相连,接入节点AP1与接入路由器AR1链路相连,车辆节点V1从接口f1接收到来自接入节点AP1的信标消息后,执行下述操作为接口f1配置全局地址:
[0126] 步骤301:开始;
[0127] 步骤302:车辆节点V1查看地址表,如果存在一个地址表项,该地址表项的接口ID域值等于f1,全局地址域值的网络前缀等于接收到的信标消息的源地址的网络前缀,则执行步骤321,否则执行步骤303;
[0128] 步骤303:车辆节点V1查看地址表,如果存在一个地址表项,该地址表项的接口ID域值等于f1,全局地址域值的网络前缀不等于接收到的信标消息的源地址的网络前缀,则执行步骤304,否则执行步骤305;
[0129] 步骤304:车辆节点V1删除接口ID域值等于f1,且全局地址域值的网络前缀不等于接收到的信标消息的源地址的网络前缀的地址表项,执行步骤307;
[0130] 步骤305:车辆节点V1查看地址表,如果存在一个地址表项,该地址表项的全局地址域值的网络前缀等于接收到的信标消息的源地址的网络前缀,则执行步骤306,否则执行步骤307;
[0131] 步骤306:车辆节点V1选择全局地址域值的网络前缀等于接收到的信标消息的源地址的网络前缀的地址表项,创建一个全局地址,该全局地址的网络前缀和接入节点ID等于接收到的信标消息的源地址的网络前缀和接入节点ID,设备ID等于该地址表项的全局地址域的设备ID,车辆节点V1将该全局地址标记为接口f1的全局地址并创建一个地址表项,该地址表项的接口ID域值为f1,全局地址域值为构建的全局地址,执行步骤321;
[0132] 步骤307:车辆节点V1创建一个全局地址,该全局地址的网络前缀为接收到的信标消息的源地址的网络前缀,接入节点ID为0,设备ID为接收到的信标消息的源地址的接入节点ID;车辆节点V1创建一个本地地址,该本地地址的网络前缀为接收到的信标消息的源地址的网络前缀,横坐标和纵坐标为自己当前位置的地理横坐标和地理纵坐标,设备ID为一个随机数;车辆节点V1从接口f1发送一个地址消息,该地址消息的源地址为构建的本地地址,目的地址为构建的全局地址,负载为空;
[0133] 步骤308:如果车辆节点接收到该地址消息,则执行步骤309,否则执行步骤310;
[0134] 步骤309:如果接入节点AP1在接收到地址消息的车辆节点的一跳范围内,则车辆节点将该地址消息转发给接入节点AP1,否则车辆节点将该地址消息转发距离接入节点AP1最近的邻居车辆节点,执行步骤308;
[0135] 步骤310:如果接入节点AP1接收到地址消息,则执行步骤311,否则执行步骤312;
[0136] 步骤311:接入节点AP1将接收到的地址消息转发给接入路由器AR1,执行步骤308;
[0137] 步骤312:接入路由器AR1从下游接口f2接收到地址消息后,查看该地址消息的源地址的设备ID是否包含在设备ID集合中,如果包含,则执行步骤313,否则执行步骤314;
[0138] 步骤313:接入路由器AR1选择一个不包含在设备ID集合中随机数,从下游接口f2发送一个确认消息,该确认消息的源地址为接收到的地址消息的目的地址,该确认消息的目的地址为接收到的地址消息的源地址,负载为选择的随机数;然后将选择随机数加入到设备ID集合中,执行步骤315;
[0139] 步骤314:接入路由器AR1从下游接口f2发送一个确认消息,该确认消息的源地址为接收到的地址消息的目的地址,该确认消息的目的地址为接收到的地址消息的源地址,负载为空;然后将接收到的地址消息的源地址的设备ID加入到设备ID集合中;
[0140] 步骤315:如果车辆节点V1接收到该确认消息,则执行步骤319,否则执行步骤316;
[0141] 步骤316:如果车辆节点接收到该确认消息,则执行步骤317,否则执行步骤318;
[0142] 步骤317:如果车辆节点V1在接收到确认消息的车辆节点的一跳范围内,则车辆节点将该确认消息转发给车辆节点V1,否则车辆节点将该确认消息转发距离车辆节点V1最近的邻居车辆节点,执行步骤315;
[0143] 步骤318:接入节点AP1接收到确认消息后,如果车辆节点V1在接入节点AP1的一跳范围内,则接入节点AP1将该确认消息转发给车辆节点V1,否则接入节点AP1将该确认消息转发距离车辆节点V1最近的邻居车辆节点,执行步骤315;
[0144] 步骤319:车辆节点V1从接口f1接收到确认消息后,如果确认消息负载为空,则车辆节点V1将确认消息的目的地址标记为接口f1的全局地址;否则,车辆节点V1构建一个全局地址,该全局地址的网络前缀和接入节点ID等于接收到的确认消息的目的地址的网络前缀和接入节点ID,设备ID等于确认消息负载中的随机数,然后将构建的全局地址标记为接口f1的全局地址;
[0145] 步骤320:车辆节点V1在地址表中创建一个地址表项,该地址表项的接口ID域值为f1,全局地址域值为接口f1的全局地址;
[0146] 步骤321:结束;
[0147] 车辆节点通过执行上述步骤为每个接口配置一个全局地址;
[0148] 车辆节点为每个接口配置一个全局地址后,为每个接口构建一个本地地址,本地地址的网络前缀和设备ID等于该接口的全局地址的网络前缀和设备ID,横坐标和纵坐标分别为该车辆节点当前地理位置的地理横坐标和地理纵坐标;
[0149] 如果车辆节点的地理位置发生变化,则该车辆节点本地地址的横坐标和纵坐标也随之更新;
[0150] 车辆节点为每个接口配置一个本地地址后,从每个接口定期发送信标消息,信标消息的源地址为该接口的本地地址。
[0151] 图4为本发明所述上传数据流程示意图。一种类型的数据由数据ID唯一标识,一种类型的数据能够被分解为一个以上的数据块,每个数据块由数据块ID标识;
[0152] 在数据D1由数据ID DID1唯一标识,数据D1由X个数据块Cy构成,y取值1~X,数据块Cy由数据块ID y唯一标识的条件下,车辆节点V1产生数据D1后,将数据D1上传到服务器S1的过程如下所示:
[0153] 步骤401:开始;
[0154] 步骤402:车辆节点V1将变量f设置为1;
[0155] 步骤403:车辆节点V1构建一个上传消息,该上传消息的源地址为接口f的全局地址,目的地址为服务器S1的地址,负载为数据ID DID1,数据块ID f,数据块Cf;车辆节点V1从接口f发送上传消息;
[0156] 步骤404:车辆节点V1将变量f递增1,如果变量f大于X,则执行步骤405,否则执行步骤403;
[0157] 步骤405:如果车辆节点接收到该上传消息,则执行步骤406,否则执行步骤407;
[0158] 步骤406:如果源接入节点在接收到上传消息的车辆节点的一跳范围内,源接入节点为全局地址的设备ID为0且网络前缀和接入节点ID等于该上传消息的源地址的网络前缀和接入节点ID的接入节点,则该车辆节点将该上传消息转发给源接入节点,否则该车辆节点将该上传消息转发距离源接入节点最近的邻居车辆节点,执行步骤405;
[0159] 步骤407:如果接入节点接收到该上传消息,则执行步骤408,否则执行步骤411;
[0160] 步骤408:如果接收到上传消息的接入节点的网络前缀和接入节点ID等于该上传消息的源地址的网络前缀和接入节点ID,则执行步骤409,否则执行步骤410;
[0161] 步骤409:接收到上传消息的接入节点将该上传消息转发给链接的接入路由器,执行步骤405;
[0162] 步骤410:接收到上传消息的接入节点丢弃该上传消息,执行步骤412;
[0163] 步骤411:从下游接口接收到上传消息的接入路由器从上游接口转发该上传消息,该上传消息通过互联骨干网最终到达服务器S1;
[0164] 步骤412:服务器S1保存接收到的上传消息中的数据块,如果服务器S1接收到数据D1所有的X个数据块,则执行步骤413,否则执行步骤405;
[0165] 步骤413:结束。
[0166] 图5为本发明所述下载数据流程示意图。在数据D1由数据ID DID1唯一标识,数据D1由X个数据块Cy构成,y取值1~X,数据块Cy由数据块ID y唯一标识接入节点维护一个映射表,映射表项包括全局地址域、本地地址域和生命周期域的条件下,如果映射表项的生命周期域值衰减为0,则从映射表从删除该映射表项;
[0167] 车辆节点V2从服务器S1下载数据D1的过程如下所示:
[0168] 步骤501:开始;
[0169] 步骤502:车辆节点V2设置变量f2的值为1;
[0170] 步骤503:车辆节点V2查看地址表,选择接口ID域值等于f2的地址表项,构建一个本地地址,该本地地址的网络前缀和设备ID等于该地址表项的网络前缀和设备ID,横坐标和纵坐标为车辆节点V2当前地理位置的横坐标和纵坐标;车辆节点V2创建一个下载消息,该下载消息的源地址为构建的本地地址,目的地址为服务器S1的地址,负载为数据ID DID1和数据块ID f2,车辆节点V2从接口f2发送下载消息;
[0171] 步骤504:车辆节点V2将变量f2递增1,如果变量f2大于X,则执行步骤505,否则执行步骤503;
[0172] 步骤505:如果车辆节点接收到该下载消息,则执行步骤506,否则执行步骤507;
[0173] 步骤506:如果源接入节点在接收到下载消息的车辆节点的一跳范围内,源接入节点为全局地址的设备ID为0且网络前缀和接入节点ID等于该下载消息的源地址的网络前缀和接入节点ID的接入节点,则该车辆节点将该下载消息转发给源接入节点,否则该车辆节点将该下载消息转发距离源接入节点最近的邻居车辆节点,执行步骤505;
[0174] 步骤507:如果接入节点接收到该下载消息,则执行步骤508,否则执行步骤511;
[0175] 步骤508:如果接收到下载消息的接入节点的网络前缀和接入节点ID等于该下载消息的源地址的网络前缀和接入节点ID,则执行步骤509,否则执行步骤510;
[0176] 步骤509:接收到下载消息的接入节点创建一个全局地址,该全局地址的网络前缀和设备ID等于下载消息源地址的网络前缀和设备ID,接入节点ID等于该接入节点的全局地址的接入节点ID;该接入节点查看映射表,如果存在一个映射表项,该映射表项的全局地址域值等于构建的全局地址,则该接入节点将该映射表项的局部地址域值更新为接收到的下载消息的源地址,生命周期设置为最大值,否则,该接入节点创建一个映射表项,该映射表项的全局地址域值等于构建的全局地址,该映射表项的局部地址域值为接收到的下载消息的源地址,生命周期为最大生命周期值,该接入节点将接收到的下载消息的源地址更新为构建的全局地址,然后将该下载消息转发给链接的接入路由器,执行步骤505;
[0177] 步骤510:接收到下载消息的接入节点丢弃该下载消息,执行步骤512;
[0178] 步骤511:从下游接口接收到下载消息的接入路由器从上游接口转发该下载消息,该下载消息通过互联骨干网最终到达服务器S1;
[0179] 步骤512:服务器S1接收到下载消息后,发送一个数据消息,该数据消息的源地址为接收到的下载消息的目的地址,该数据消息的目的地址为接收到的下载消息的源地址,负载为接收到的下载消息负载中的数据ID和数据块ID,以及下载消息负载中的数据ID和数据块ID标识的数据块;该数据消息通过互联网最终到达目的接入路由器,目的接入路由器的下游接口的网络前缀等于该数据消息的目的地址的网络前缀;目的路由器接收到数据消息后,将通过接口ID等于该数据消息目的地址的接入节点ID的接口转发该数据消息;接入节点接收到该数据消息后,查看映射表,选择全局地址域值等于该数据消息目的地址的映射表项,将该数据消息的目的地址更新为该映射表项的本地地址域值;如果目的车辆节点不在该接入节点的一跳范围内,则该接入节点将该数据消息转发给距离该数据消息目的地址的地理坐标最近的邻居车辆节点,执行步骤513,否则接入节点直接将数据消息转发给目的车辆节点,执行步骤516;
[0180] 步骤513:车辆节点接收到数据消息后,如果目的车辆节点不在接收到数据消息的车辆节点的一跳范围内,则执行步骤514,否则执行步骤515;
[0181] 步骤514:接收到数据消息的车辆节点则将该数据消息转发给距离该数据消息目的地址的地理坐标最近的邻居车辆节点,执行步骤513,
[0182] 步骤515:接收到数据消息的车辆节点直接将数据消息转发给目的车辆节点;
[0183] 步骤516:车辆节点V2接收到数据消息后,保存数据消息中的数据块,如果车辆节点V2接收到数据D1所有的X个数据块,则执行步骤517,否则执行步骤512;
[0184] 步骤517:结束。
[0185] 图6为本发明所述切换流程示意图。在时刻T1,车辆节点V1的接口f1与接入节点AP1链接,接口f1的全局地址为A1,接入节点AP1与接入路由器AR1链接;时刻T2,接口f1与接入节点AP2链接,接入节点AP2与接入路由器AR2链接;
[0186] 车辆节点V1通过接口f1接收到来自于接入节点AP2的信标消息后,执行下述切换操作:
[0187] 步骤601:开始;
[0188] 步骤602:车辆节点V1查看地址表,如果存在一个地址表项,该地址表项的全局地址域值的网络前缀等于接收到的信标消息的源地址的网络前缀,则执行步骤603,否则执行步骤604;
[0189] 步骤603:车辆节点V1选择全局地址域值的网络前缀等于接收到的信标消息的源地址的网络前缀的地址表项,构建一个全局地址,该全局地址的网络前缀和设备ID等于该地址表项的全局地址域值的网络前缀和设备ID,接入节点ID等于接收到的信标消息的源地址的接入节点ID,将构建的全局地址标记为接口f1的新全局地址,并将接口ID域值为f1的地址表项中的全局地址域值更新为接口f1的新全局地址,执行步骤605;
[0190] 步骤604:车辆节点V1执行步骤301~321从接入路由器AR2为接口f1配置新全局地址;
[0191] 步骤605:车辆节点V1查看地址表,如果地址表中的任一个地址表项的全局地址的网络前缀都不等于全局地址A1的网络前缀,则执行步骤606,否则执行步骤612;
[0192] 步骤606:车辆节点V1创建一个全局地址,该全局地址的网络前缀为全局地址A1的网络前缀,接入节点ID为0,设备ID等于全局地址A1的接入节点ID,通过接口f1发送一个回收消息,该回收消息的源地址为接口f1的新全局地址,目的地址为构建的全局地址,负载为全局地址A1;
[0193] 步骤607:如果车辆节点接收到该回收消息,则执行步骤608,否则执行步骤609;
[0194] 步骤608:如果源接入节点在接收到回收消息的车辆节点的一跳范围内,源接入节点为全局地址的设备ID为0且网络前缀和接入节点ID等于该回收消息的源地址的网络前缀和接入节点ID的接入节点,则该车辆节点将该回收消息转发给源接入节点,否则该车辆节点将该回收消息转发距离源接入节点最近的邻居车辆节点,执行步骤607;
[0195] 步骤609:如果接收到回收消息的接入节点的网络前缀和接入节点ID等于该回收消息的源地址的网络前缀和接入节点ID,则执行步骤610,否则执行步骤611;
[0196] 步骤610:接收到回收消息的接入节点将该回收消息转发给链接的接入路由器,执行步骤607;
[0197] 步骤611;从下游接口接收到回收消息的接入路由器从上游接口转发该回收消息,该回收消息通过互联骨干网最终到达目的接入路由器,即目的接入路由器的一个下游接口的地址等于该回收消息的目的地址;目的接入路由器接收到回收消息后,将回收消息负载中的全局地址的设备ID从自己的设备ID集合中删除;
[0198] 步骤612:结束。
[0199] 实施例1
[0200] 基于表1的仿真参数,本实施例模拟了本发明中的车联网实现方法,性能分析如下:车辆节点数量增加的情况下,地址配置代价随之增加,数据获取代价也随之增加,地址配置的平均代价为10,数据获取平均代价为25.
[0201] 表1仿真参数
[0202]
[0203] 本发明提供了一种高效的车联网实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。