[0088] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0089] 图1为本发明所述的车辆节点建立邻居表流程示意图。
[0090] 图2为本发明所述的接入节点建立邻居表流程示意图。
[0091] 图3为本发明所述的注册流程示意图。
[0092] 图4为本发明所述的路径建立流程示意图。
[0093] 图5为本发明所述的获取硬件ID集合流程示意图。
[0094] 图6为本发明所述的获取数据流程示意图。具体实施方式:
[0095] 本发明提供了一种基于命名数据网络的车载云实现方法,车辆节点通过本发明所提供的车载云实现方法能够从距离最近的车辆节点以单播方式获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
[0096] 图1为本发明所述的车辆节点建立邻居表流程示意图。所述车载云包括接入节点和车辆节点;每个接入节点和车辆节点各自分别具有唯一的硬件ID,例如MAC地址,每个接入节点各自分别具有唯一的坐标,一个接入节点和所有符合条件1的车辆节点构成一个域;
[0097] 条件1:在所有接入节点中,该车辆节点的当前坐标与该接入节点的坐标之间的距离最近;
[0098] 一种数据由名称唯一标识;
[0099] 车载云内传输的消息由消息类型定义,消息名称对应的消息类型如下表所示:
[0100]消息名称 消息类型
邻居消息 1
注册消息 2
云请求消息 3
云响应消息 4
请求消息 5
响应消息 6
[0101] 每个车辆节点保存一个邻居表,邻居表的每个邻居表项包含硬件ID、车辆坐标和生命周期;
[0102] 车载云内传输的邻居消息包含消息类型、硬件ID和车辆坐标;车辆节点V1定期执行下述操作:
[0103] 步骤101:开始;
[0104] 步骤102:车辆节点V1发送邻居消息,邻居消息的消息类型为1,车辆坐标为车辆节点V1的当前坐标,硬件ID为车辆节点V1的硬件ID;
[0105] 步骤103:接收到邻居消息的其他车辆节点查看自己邻居表,如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,则执行步骤104,否则执行步骤105;
[0106] 步骤104:接收到邻居消息的车辆节点选择一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,将该邻居表项的车辆坐标更新为邻居消息的车辆坐标,将生命周期设置为最大值,生命周期取值范围为10s-30s,执行步骤106;
[0107] 步骤105:接收到邻居消息的车辆节点创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,车辆坐标等于该邻居消息的车辆坐标,将生命周期设置为最大值,生命周期取值范围为10s-30s;
[0108] 步骤106:结束;
[0109] 如果邻居表项的生命周期等于0,则从邻居表中删除该邻居表项。所有的生命周期都随着机器时钟自动衰减,比如生命周期设置为10s,然后机器时钟过了3s后,生命周期变为7s了。
[0110] 车辆节点通过上述过程建立邻居表,获取邻居车辆节点的实时坐标,从而能够选择最优的邻居车辆节点作为下一跳以建立最优路由路径;邻居表项通过生命周期来确保邻居车辆节点的有效性,从而确保邻居车辆节点信息的实时性和有效性。
[0111] 图2为本发明所述的接入节点建立邻居表流程示意图。接入节点AP1定期执行下述操作:
[0112] 步骤201:开始;
[0113] 步骤202:接入节点AP1发送邻居消息,邻居消息的消息类型为1,车辆坐标为接入节点AP1的当前坐标,硬件ID为接入节点AP1的硬件ID;
[0114] 步骤203:接收到邻居消息的车辆节点查看自己的邻居表,如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,则执行步骤204,否则执行步骤205;
[0115] 步骤204:接收到邻居消息的车辆节点选择一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,将该邻居表项的车辆坐标更新为邻居消息的车辆坐标,将生命周期设置为最大值,执行步骤206;
[0116] 步骤205:接收到邻居消息的车辆节点创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,车辆坐标等于该邻居消息的车辆坐标,将生命周期设置为最大值;
[0117] 步骤206:结束;
[0118] 如果邻居表项的生命周期衰减为0,则从邻居表中删除该邻居表项。
[0119] 车辆节点通过上述过程建立邻居表,从而获取邻居车辆节点的实时坐标,从而能够选择最优的邻居车辆节点作为下一跳以建立最优路由路径;邻居表项通过生命周期来确保邻居车辆节点的有效性,从而确保邻居车辆节点信息的实时性和有效性。
[0120] 图3为本发明所述的注册流程示意图。一个注册消息包含硬件ID、名称集合、车辆坐标、下一跳和目的坐标;
[0121] 接入节点保存一个节点表,节点表的节点表项包含硬件ID、名称、坐标和生命周期;
[0122] 在车辆节点V1能提供数据,车辆节点V1提供的数据的名称构成名称集合NS1,车辆节点V1所在域的接入节点为AP1的条件下,车辆节点V1定期执行下述操作:
[0123] 步骤301:开始;
[0124] 步骤302:车辆节点V1查看邻居表,选择一个邻居表项,在所有的邻居表项中,该邻居表项的车辆坐标与接入节点AP1的坐标距离最近;车辆节点V1发送一个注册消息,注册消息的消息类型为2,硬件ID为车辆节点V1的硬件ID,名称集合为集合NS1,车辆坐标等于车辆节点V1的当前坐标,下一跳等于该邻居表项的硬件ID,目的坐标等于接入节点AP1的坐标;
[0125] 步骤303:接入节点AP1如果接收到硬件ID为车辆节点V1的硬件ID的注册消息,则执行步骤306,否则执行步骤304;
[0126] 步骤304:接收到注册消息的其他车辆节点查看自己的硬件ID是否与该注册消息的下一跳相同,如果相同,则执行步骤305,否则执行步骤306;
[0127] 步骤305:接收到注册消息的车辆节点选择一个邻居表项,该邻居表项的车辆坐标与该注册消息目的坐标距离最近,将该注册消息的下一跳更新为该邻居表项的硬件ID,发送该注册消息,执行步骤303;
[0128] 步骤306:接入节点AP1接收到注册消息后查看节点表;针对该注册消息名称集合中的每个名称NA0,接入节点AP1执行下述操作:接入节点AP1判断是否存在一个节点表项,该节点表项的硬件ID等于该注册消息的硬件ID且名称等于NA0;如果存在,则将该节点表项的车辆坐标更新为该注册消息的车辆坐标,将生命周期设置为最大值,否则,接入节点AP1创建一个节点表项,该节点表项的硬件ID等于该注册消息的硬件ID,名称等于NA0,车辆坐标为该注册消息的车辆坐标,将生命周期设置为最大值;
[0129] 步骤307:结束。
[0130] 车辆节点通过上述过程在所在域的接入节点建立节点表项,这样接入节点可以获取所在与的车辆节点的实时坐标,从而建立到达目的车辆节点的最优路由路径,降低数据通信延迟和代价。
[0131] 图4为本发明所述的路径建立流程示意图。在车辆节点V1的硬件ID为HID1,车辆节点V2的硬件ID为HID2,车辆节点V1和车辆节点V2位于同一个域,该域的接入节点为接入节点AP1,从车辆节点V1到车辆节点V2的路径由硬件ID集合标识,该硬件ID集合由该路由所包含的车辆节点的硬件ID构成的条件下,接入节点AP1通过下述过程建立从车辆节点V1到车辆节点V2的路径的硬件ID集合:
[0132] 步骤401:开始;
[0133] 步骤402:接入节点AP1设置一个硬件ID集合变量hs1,变量hs1的初始值为空;接入节点AP1选择一个节点表项E1,节点表项E1的硬件ID等于HID1,接入节点AP1选择一个节点表项E2,节点表项E2的硬件ID等于HID2;如果节点表项E2的车辆坐标与节点表项E1的车辆坐标之间的距离不大于传输半径R,传输半径R取值范围为100m-300m,则执行步骤406,否则执行步骤403;
[0134] 步骤403:接入节点AP1选择一个节点表项E3,节点表项E3的车辆坐标与节点表项E1的车辆坐标之间的距离不大于传输半径R,且在除了节点表项E2以外的所有节点表项中,节点表项E3的车辆坐标与节点表项E2的车辆坐标之间的距离最小,接入节点AP1将节点表项E3的硬件ID加入到变量hs1中并作为最后一个元素;
[0135] 步骤404:接入节点AP1选择一个节点表项E4,节点表项E4的硬件ID等于变量hs1的最后一个元素;如果节点表项E4的车辆坐标与接入节点E2的车辆坐标之间的距离不大于传输半径R,则执行步骤406,否则执行步骤405;
[0136] 步骤405:接入节点AP1选择一个节点表项E5,节点表项E5的车辆坐标与节点表项E4的车辆坐标之间的距离不大于传输半径R,且在除了节点表项E2以外的所有节点表项中,节点表项E5的车辆坐标与节点表项E2的车辆坐标之间的距离最小,接入节点AP1将节点表项E5的硬件ID加入到变量hs1中并作为最后一个元素,执行步骤404;
[0137] 步骤406:接入节点AP1将节点表项E2的硬件ID加入到变量hs1中并作为最后一个元素;
[0138] 步骤407:结束。
[0139] 接入节点通过上述过程利用车辆节点的实时坐标建立一个车辆节点到达另一个车辆节点的最优路径,由于车辆节点到达其他车辆节点的路由路径的长度最小,因此大幅度降低了通信延迟;同时,由于车辆节点无需建立路由操作即可获取到达任何一个车辆节点的路由信息,从而大幅度增加了路由性能和网络性能。
[0140] 图5为本发明所述的获取硬件ID集合流程示意图。在车辆节点V1的硬件ID为HID1,所在域的接入节点为接入节点AP1,从接入节点AP1到车辆节点V1的路由路径由硬件ID集合表示,该硬件ID集合由该路由路径所包含的车辆节点的硬件ID构成的条件下,接入节点AP1执行下述操作获取该硬件ID集合:
[0141] 步骤501:开始;
[0142] 步骤502:接入节点AP1设置一个硬件ID集合参数hs2,参数hs2的初始值为空集,接入节点AP1选择一个节点表项T1,节点表项T1的硬件ID等于HID1;如果接入节点AP1的坐标与节点表项T1的车辆坐标之间的距离不大于传输半径R,则执行步骤506,否则执行步骤503;
[0143] 步骤503:接入节点AP1选择一个节点表项T2,节点表项T2的车辆坐标域值与接入节点AP1的车辆坐标域值之间的距离不大于传输半径R,且在除了节点表项T1以外的所有节点表项中,节点表项T2的车辆坐标域值与节点表项T1的车辆坐标域值之间的距离最小,接入节点AP1将节点表项T2的硬件ID加入到参数hs2并作为最后一个元素;
[0144] 步骤504:接入节点AP1选择节点表项T3,节点表项T3的硬件ID等于参数hs2的最后一个元素,如果节点表项T3的车辆坐标与节点表项T1的车辆坐标之间的距离不大于传输半径R,则执行步骤506,否则执行步骤505;
[0145] 步骤505:接入节点AP1选择一个节点表项T4,节点表项T4的车辆坐标与节点表项T3的车辆坐标之间的距离不大于传输半径R,且在除了节点表项T1以外的所有节点表项中,节点表项T4的车辆坐标与节点表项T1的车辆坐标之间的距离最小,将节点表项T4的硬件ID加入到参数hs2中并作为最后一个元素,执行步骤504;
[0146] 步骤506:接入节点AP1将硬件ID HID1加入到参数hs2中并作为最后一个元素;
[0147] 步骤507:结束。
[0148] 接入节点通过上述过程建立到达所在域任何一个车辆节点的路由路径,上述过程通过节点表项中的车辆坐标来建立路由路径,由于节点表项中保存的车辆坐标实时更新,从而确保了路由路径的有效性以及最优性,提高了数据通信的成功率和性能。
[0149] 图6为本发明所述的获取数据流程示意图。车辆节点通过提供者表来获取数据,提供者表的提供者表项包含名称和硬件ID集合;
[0150] 车辆节点V1所在域的接入节点为AP1;
[0151] 云请求消息包含消息类型、硬件ID、名称集合、下一跳和目的坐标;
[0152] 云响应消息包含消息类型、硬件ID集合、名称集合和负载;
[0153] 请求消息包含消息类型、硬件ID、硬件ID集合、名称和负载;
[0154] 响应消息包含消息类型、硬件ID集合、名称和负载;
[0155] 车辆节点V1需要获取数据,这些数据的名称构成名称集合NS2;
[0156] 步骤601:开始;
[0157] 步骤602:车辆节点V1查看邻居表,选择一个邻居表项,在所有邻居表项中,该邻居表项的车辆坐标与接入节点AP1的坐标距离最近;车辆节点V1发送一个云请求消息,云请求消息的消息类型为3,硬件ID为车辆节点V1的硬件ID,名称集合为集合NS2,下一跳等于该邻居表项的硬件ID,目的坐标等于接入节点AP1的坐标;
[0158] 步骤603:接入节点AP1如果接收到该云请求消息,则执行步骤606,否则执行步骤604;
[0159] 步骤604:接收到云请求消息的其他车辆节点判断自己的硬件ID是否与该云请求消息的下一跳相同,如果相同,则执行步骤605,否则执行步骤606;
[0160] 步骤605:接收到云请求消息的车辆节点选择一个邻居表项,该邻居表项的车辆坐标与该云请求消息目的坐标距离最近,将该云请求消息的下一跳更新为该邻居表项的硬件ID,接收到云请求消息的车辆节点发送该云请求消息,执行步骤603;
[0161] 步骤606:接入节点AP1接收到云请求消息后执行步骤501-507获取硬件ID集合hs2,集合hs2代表接入节点AP1到达一个车辆节点的路径,该车辆节点的硬件ID等于该云请求消息的硬件ID;接入节点AP1创建一个提供者表,针对云请求消息的名称集合中的每个名称NA1,接入节点AP1执行下述操作:选择一个节点表项,该节点表项的名称等于NA1,执行步骤401-407获取硬件ID集合hs1,集合hs1代表硬件ID等于该云请求消息的硬件ID的车辆节点到达硬件ID等于该节点表项的硬件ID的车辆节点的路径,创建一个提供者表项,该提供者表项的硬件ID集合等于集合hs1,名称等于NA1;
[0162] 步骤607:接入节点AP1发送一个云响应消息,该云响应消息的消息类型为4,硬件ID集合为集合hs2,名称集合等于该云请求消息的名称集合,负载为构建的提供者表;
[0163] 步骤608:车辆节点V1如果接收到该云响应消息,则执行步骤611,否则执行步骤609;
[0164] 步骤609:接收到该云响应消息的车辆节点判断自己的硬件ID是否等于该云响应消息的硬件ID集合中的第一个元素,如果等于,则执行步骤610,否则执行步骤611;
[0165] 步骤610:接收到该云响应消息的车辆节点从该云响应消息的硬件ID集合中删除第一个元素,发送该云响应消息,执行步骤608;
[0166] 步骤611:车辆节点V1接收到该云响应消息后,针对该云响应消息负载中的每个提供者表项,车辆节点V1执行下述操作:车辆节点V1发送一个请求消息,该请求消息的消息类型为5,硬件ID等于车辆节点V1的硬件ID,硬件ID集合和名称分别等于该提供者表项的硬件ID集合和名称,负载为该提供者表项的硬件ID集合;
[0167] 步骤612:接收到请求消息的车辆节点查看自己的硬件ID是否等于该请求消息的硬件ID集合中的第一个元素,如果等于,则执行步骤613,否则执行步骤615;
[0168] 步骤613:接收到该请求消息的车辆节点从该请求消息的硬件ID集合中删除第一个元素,如果该请求消息的硬件ID集合为空,则执行步骤615,否则执行步骤614;
[0169] 步骤614:接收到该请求消息的车辆节点转发该请求消息,执行步骤612;
[0170] 步骤615:接收到该请求消息的车辆节点构建一个响应消息,该响应消息的消息类型为6,硬件ID集合等于该请求消息负载中的硬件ID集合,名称等于该请求消息的名称,负载为该请求消息名称所标识的数据;该车辆节点从该响应消息硬件ID集合中删除最后一个元素,将请求消息的硬件ID加入到该响应消息硬件ID集合中并作为第一个元素;该车辆节点发送该响应消息;
[0171] 步骤616:接收到该响应消息的车辆节点查看自己的硬件ID是否等于该响应消息的硬件ID集合中的最后一个元素,如果等于,则执行步骤617,否则执行步骤619;
[0172] 步骤617:接收到该响应消息的车辆节点从该响应消息的硬件ID集合中删除最后一个元素,如果该响应消息的硬件ID集合为空,则执行步骤619,否则执行步骤618;
[0173] 步骤618:接收到该响应消息的车辆节点转发该响应消息,执行步骤616;
[0174] 步骤619:接收到该响应消息的车辆节点保存该响应消息负载中的数据,如果该车辆节点获取了名称集合NS2所定义的所有数据,则执行步骤620,否则执行步骤616;
[0175] 步骤620:结束。
[0176] 车辆节点通过上述过程获取所需数据,车辆节点首先获取提供数据的所有提供者信息,然后从每个提供者获取所需数据,由于上述过程无需建立路由即可实现数据通信,因此降低了数据通信延迟和代价。
[0177] 实施例1
[0178] 基于表1的仿真参数,本实施例模拟了本发明中的一种基于命名数据网络的车载云实现方法,性能分析如下:当能够提供数据的车辆节点数量增加的情况下,车辆节点与能够提供数据的车辆节点之间的距离降低,获取服务数据的成功率随之增加;当能够提供数据的车辆节点数量降低的情况下,车辆节点与能够提供数据的车辆节点之间的距离增加,获取服务数据的成功率随之降低,车辆节点获取服务数据的平均成功率为97.6%。
[0179] 表1仿真参数
[0180]
[0181] 本发明提供了一种基于命名数据网络的车载云实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。