本发明涉及一种方法,尤其涉及的是一种基于车载云的网络资源查询和分配方法。
背景技术:
:车载云由于其实用性已经受到广泛关注,成为研究的热点。车辆节点的主要特点之一为车辆节点沿路进行高速移动,因此,如何实现车辆节点的高质量通信为研究的热点之一。车载云建立在车载网之上,目前现有的通信协议应用到车载网中还存在一些问题,主要原因为如下:1)现有协议中,移动节点需要发送和接收大量的控制信息来确保移动过程中的通信畅通,减少数据包的丢失,而传输控制信息会消耗大量的能量,这会大幅度缩减移动节点的寿命;2)现有协议的控制信息数据包开销较大,移动转交延迟较长从而提高了数据包丢失率。因此,如何提高车载云的数据通信效率还有待进一步研究。技术实现要素:发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于车载云的网络资源查询和分配方法。技术方案:本发明公开了一种基于车载云的网络资源查询和分配方法,所述网络车辆节点,所述网络划分为两个以上的簇,一个簇由两个以上的车辆节点构成,其中,这些车辆节点划分为簇首和簇成员,一个簇包含一个簇首和两个以上的簇成员;如果簇成员属于两个以上的簇,则该簇成员又称为簇网关;一个车辆节点由一个硬件id唯一标识,该硬件id可以为mac地址;一个车辆节点配置一种以上的资源,一种资源由一个资源id唯一标识;车辆节点使用消息进行通信,一个消息由消息类型唯一标识,消息类型如下表所示:每个车辆节点维护一个邻居表,一个邻居表项包含硬件id、坐标、资源id集合、角色域和生命周期域;如果角色域值为1,则表示该邻居表项对应的车辆节点为簇首;如果角色域值为2,则表示该邻居表项对应的车辆节点为簇成员;如果角色域值为3,则表示该邻居表项对应的车辆节点为簇网关;如果角色域值为4,则表示该邻居表项对应的车辆节点既不是簇首,也不是簇成员或者簇网关;一个信标消息由消息类型,硬件id、坐标、角色和资源id集合构成;车辆节点v1定期执行下述操作:步骤101:开始;步骤102:车辆节点v1定期发送信标消息,该信标消息的消息类型值为1,硬件id为车辆节点v1的硬件id,坐标为车辆节点v1的坐标,资源id集合由车辆节点v1能够共享的资源的资源id构成;如果车辆节点v1为簇首,则角色域值设为1,如果车辆节点v1为簇成员,则角色域值设为2,如果车辆节点为簇网关,则角色域值设为3,否则,角色域值设为4;步骤103:邻居车辆节点接收到信标消息后,查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该信标消息的硬件id,则将该邻居表项的坐标、角色以及资源id集合分别更新为信标消息的坐标、角色以及资源id集合域值,生命周期设置为最大值,例如100ms;否则该邻居车辆节点创建一个邻居表项,该邻居表项的硬件id等于该信标消息的硬件id,该邻居表项的坐标、角色以及资源id集合分别更新为信标消息的坐标,角色以及资源id集合域值,生命周期设置为最大值,例如100ms;步骤104:结束。车辆节点通过邻居表可以掌握邻居车辆节点的信息,根据角色域值来判断是否有邻居簇首,根据坐标域值可以选择最优的邻居车辆节点实现路由,根据资源id集合可以直接从邻居车辆节点获取所需资源从而快速实现资源查询和配置。本发明所述方法中,检测消息包含消息类型、硬件id、坐标和时间戳;检测响应消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标和负载;加入消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、角色和负载;簇首维护一个成员表,一个成员表项包含硬件id、坐标、资源id集合、角色和生命周期;簇成员维护一个簇首表,一个簇首表项包含硬件id,坐标和生命周期域;如果车辆节点v1准备加入一个簇,则执行下述操作:步骤201:开始;步骤202:车辆节点v1查看邻居表,如果存在一个邻居表项,该邻居表项的角色域值为1,则执行步骤203,否则执行步骤204;步骤203:车辆节点v1选择一个邻居表项,该邻居表项的角色域值等于1;车辆节点v1创建一个簇首表项,该簇首表项的硬件id和坐标域值分别等于该邻居表项的硬件id和坐标域值,生命周期设置为最大值;车辆节点v1发送一个加入消息,该加入消息的消息类型值为4,源硬件id和源坐标分别为车辆节点v1的硬件id和坐标,目的硬件id和目的坐标为空,负载为该邻居表项的硬件id和坐标,资源id集合由车辆节点v1能够共享的资源的资源id构成,角色域值为2,执行步骤215;步骤204:车辆节点v1发送一个检测消息,该检测消息的消息类型值为2,硬件id和坐标域值分别等于车辆节点v1的硬件id和坐标域值,时间戳为当前时间;车辆节点v1设置一个时钟t1;步骤205:车辆节点接收到检测消息后,如果该车辆节点为簇首,则执行步骤208,否则执行步骤206;步骤206:接收到检测消息的车辆节点查看当前时间与检测消息的时间戳之差的绝对值是否大于阈值t1,如果是,则执行步骤209,否则执行步骤207;步骤207:接收到检测消息的车辆节点转发该检测消息,执行步骤205;步骤208:接收到检测消息的车辆节点选择一个邻居表项,该邻居表项的坐标域值与该检测消息的坐标之间距离最小,发送一个检测响应消息,该检测响应消息的消息类型值为3,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,负载为该检测消息的硬件id和坐标;步骤209:车辆节点接收到检测响应消息,如果该检测响应消息的目的坐标和目的硬件id为空,则执行步骤210,否则执行步骤211;步骤210:接收到检测响应消息的车辆节点查看自己的硬件id是否等于该检测响应消息负载中的硬件id,如果是,则执行步骤213,否则执行步骤220;步骤211:接收到检测响应消息的车辆节点查看自己的硬件id是否等于该检测响应消息的目的硬件id,如果是,则执行步骤212,否则执行步骤220;步骤212:接收到检测响应消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该检测响应消息负载中的硬件id,则将该检测响应消息的目的硬件id和目的坐标设置为空,转发该检测响应消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该检测响应消息负载中的坐标距离最近,将该检测响应消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该检测响应消息,执行步骤209;步骤213:如果车辆节点v1在时钟t1内没有接收到检测响应消息,则执行步骤220,否则执行步骤214;步骤214:车辆节点v1接收到检测响应消息后,选择一个邻居表项,该邻居表项的坐标与该检测响应消息的源坐标距离最近,发送一个加入消息,该加入消息的消息类型值为4,源硬件id和源坐标分别等于车辆节点v1的硬件id和坐标,目的硬件id和坐标分别等于该邻居表项的硬件id和坐标,角色域值为2,负载为该检测响应消息的源硬件id和源坐标,资源id集合等于车辆节点v1能够提供的资源的资源id构成的集合;车辆节点v1创建一个簇首表项,该簇首表项的硬件id和坐标分别等于该检测响应消息的源硬件id和源坐标,生命周期设置为最大值;步骤215:车辆节点接收到加入消息,如果该加入消息的目的坐标和目的硬件id为空,则执行步骤216,否则执行步骤217;步骤216:接收到加入消息的车辆节点查看自己的硬件id是否等于该加入消息负载中的硬件id,如果是,则执行步骤219,否则执行步骤220;步骤217:接收到加入消息的车辆节点查看自己的硬件id是否等于该加入消息的目的硬件id,如果是,则执行步骤218,否则执行步骤220;步骤218:接收到加入消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该加入消息负载中的硬件id,则将该加入消息的目的硬件id和目的坐标设置为空,转发该加入消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该加入消息负载中的坐标距离最近,将该加入消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该加入消息,执行步骤215;步骤219:接收到加入消息的车辆节点创建一个成员表项,该成员表项的硬件id和坐标分别等于该加入消息的源硬件id和源坐标,角色域值和资源id集合分别等于该加入消息的角色域值和资源id集合,生命周期设置为最大值;步骤220:结束。车辆节点通过上述过程加入到簇中,上述过程通过邻居表中的坐标域值来查询簇首,并加入到该簇首所标识的簇中,车辆节点通过邻居表能够实现到达簇首的最优路径,所以降低了加入簇的代价和延迟;同时簇首通过保存成员表来获取每个成员能够提供的资源,因此能够有效分配资源;簇首节点通过成员表来获取每个成员当前的地理坐标从而能够通过邻居表实现与每个成员的通信;此外,簇首通过成员表获取每个成员是否为簇网关以便实现更有效的资源分配。本发明所述方法中,如果一个簇成员检测到自己的簇首表项的个数大于1,则将自己标记为簇网关;更新消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、角色和负载;更新响应消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标和负载;簇成员m1定期执行下述操作更新簇首表和成员表:步骤301:开始;步骤302:簇成员m1查看簇首表,针对每个簇首表项,簇成员m1执行下述操作:簇成员m1查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该簇首表项的硬件id,则发送一个更新消息,该更新消息的消息类型值为5,源硬件id和坐标分别等于簇成员m1的硬件id和坐标,目的硬件id和目的坐标设置为空,负载为该邻居表项的硬件id和坐标,如果簇成员m1的簇首表项的个数等于1,则角色域值设为2,否则角色域值设为3;如果不存在所述邻居表项,则簇成员m1选择一个邻居表项,该邻居表项的坐标与该簇首表项的坐标距离最近,发送一个更新消息,该更新消息的消息类型值为5,源硬件id和坐标分别等于簇成员m1的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,负载为该簇首表项的硬件id和坐标,如果簇成员m1的簇首表项的个数等于1,则角色域值设为2,否则角色域值设为3;步骤303:车辆节点接收到更新消息;如果该更新消息的目的坐标和目的硬件id为空,则执行步骤304,否则执行步骤305;步骤304:接收到更新消息的车辆节点查看自己的硬件id是否等于该更新消息负载中的硬件id,如果是,则执行步骤307,否则执行步骤313;步骤305:接收到更新消息的车辆节点查看自己的硬件id是否等于该更新消息的目的硬件id,如果是,则执行步骤306,否则执行步骤313;步骤306:接收到更新消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该更新消息负载中的硬件id,则将该更新消息的目的硬件id和目的坐标设置为空,转发该更新消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该更新消息负载中的坐标距离最近,将该更新消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该更新消息,执行步骤303;步骤307:车辆节点接收到更新消息后,查看成员表,选择一个成员表项,该成员表项的硬件id等于该更新消息的源硬件id,将该成员表项的坐标更新为该更新消息的源坐标,角色域值更新为该更新消息的角色域值,将生命周期设置为最大值;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该更新消息的源硬件id,则发送一个更新响应消息,该更新响应消息的消息类型值为6,源硬件id和坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为空,负载为该邻居表项的硬件id和坐标;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该更新消息的源坐标距离最近,发送一个更新响应消息,该更新响应消息的消息类型值为6,源硬件id和坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,负载为该更新消息的源硬件id和坐标;步骤308:车辆节点接收到更新响应消息,如果该更新响应消息的目的坐标和目的硬件id为空,则执行步骤309,否则执行步骤310;步骤309:接收到更新响应消息的车辆节点查看自己的硬件id是否等于该更新响应消息负载中的硬件id,如果是,则执行步骤312,否则执行步骤313;步骤310:接收到更新响应消息的车辆节点查看自己的硬件id是否等于该更新响应消息的目的硬件id,如果是,则执行步骤311,否则执行步骤313;步骤311:接收到更新响应消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该更新响应消息负载中的硬件id,则将该更新响应消息的目的硬件id和目的坐标设置为空,转发该更新响应消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该更新响应消息负载中的坐标距离最近,将该更新响应消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该更新响应消息,执行步骤308;步骤312:接收到更新响应消息的车辆节点选择一个簇首表项,该簇首表项的硬件id等于该更新响应消息的源硬件id,将该簇首表项的坐标更新为该更新响应消息的源坐标,将生命周期设置为最大值;步骤313:结束。簇成员通过上述过程更新簇首表和成员表,上述过程通过邻居表中的坐标域值来建立簇成员与簇首之间的最优路径,降低了成员表和簇首表的更新代价和延迟;上述过程能够及时有效地更新簇首和簇成员的当前坐标,从而能够确保簇首和簇成员之间能够通过邻居表快速实现通信,有效分配资源。本发明所述方法中,构建消息包含消息类型、硬件id、坐标和时间戳;如果车辆节点v1在执行步骤201~220之后簇首表项的个数为0,则执行下述过程创建簇:步骤401:开始;步骤402:车辆节点v1发送一个构建消息,该构建消息的消息类型值为7,硬件id和坐标域值分别等于车辆节点v1的硬件id和坐标域值,时间戳为当前时间;步骤403:车辆节点接收到构建消息,如果该车辆节点能够提供的资源的资源id集合为空,则执行步骤406,否则执行步骤404:步骤404:接收到构建消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该构建消息的源硬件id,则发送一个加入消息,该加入消息的消息类型值为4,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和坐标分别等于空,如果该车辆节点的簇首表项的个数为0,则角色域值设为2,否则角色域值设为3,负载为该构建消息的源硬件id和源坐标,资源id集合等于该车辆节点能够提供的资源的资源id构成的集合;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该构建消息的源坐标距离最近,发送一个加入消息,该加入消息的消息类型值为4,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,如果该车辆节点的簇首表项的个数为0,则角色域值设为2,否则角色域值设为3,负载为该构建消息的源硬件id和源坐标,资源id集合等于该车辆节点能够提供的资源的资源id构成的集合;步骤405:接收到构建消息的车辆节点创建一个簇首表项,该簇首表项的硬件id和坐标分别等于该构建的源硬件id和源坐标,生命周期设置为最大值;步骤406:接收到构建消息的车辆节点查看判断当前时间与构建消息的时间戳之差的绝对值是否大于阈值t1,如果是,则执行步骤408,否则执行步骤407;步骤407:接收到构建消息的车辆节点转发该构建消息,执行步骤403;步骤408:车辆节点接收到加入消息,如果该加入消息的目的坐标和目的硬件id为空,则执行步骤409,否则执行步骤410;步骤409:接收到加入消息的车辆节点查看自己的硬件id是否等于该加入消息负载中的硬件id,如果是,则执行步骤412,否则执行步骤413;步骤410:接收到加入消息的车辆节点查看自己的硬件id是否等于该加入消息的目的硬件id,如果是,则执行步骤411,否则执行步骤413;步骤411:接收到加入消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该加入消息负载中的硬件id,则将该加入消息的目的硬件id和目的坐标设置为空,转发该加入消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该加入消息负载中的坐标距离最近,将该加入消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该加入消息,执行步骤408;步骤412:接收到加入消息的车辆节点创建一个成员表项,该成员表项的硬件id和坐标分别等于该加入消息的源硬件id和源坐标,角色域值和资源id集合分别等于该加入消息的角色域值和资源id集合,生命周期设置为最大值;步骤413:结束。车辆节点通过上述过程构建簇并建立成员表以保存每个成员的信息,上述过程通过邻居表中的坐标域值实现簇首与簇成员之间的通信,因此降低了构建簇的代价和延迟;簇首节点通过成员表来获取每个成员当前的地理坐标从而能够通过邻居表实现与每个成员的快速正确通信;此外,簇首通过成员表获取每个成员是否为簇网关以便实现更有效的资源分配。本发明所述方法中,请求消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、资源id集合和负载;响应消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、资源id集合和负载;二次请求消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、资源id集合和负载;在簇成员m1需要获取一些资源,这些资源的资源id构成资源id集合s1的条件下,如果簇成员m1的所有邻居表项的资源id集合域值的并集不是集合s1的超集,则簇成员m1通过下述过程获取能够提供集合s1所标识的资源的车辆节点的信息:步骤501:开始;步骤502:簇成员m1查看簇首表,选择一个簇首表项,该簇首表项的坐标与簇成员m1的坐标距离最近;簇成员m1查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该簇首表项的硬件id,则发送一个请求消息,该请求消息的消息类型值为8,源硬件id和源坐标分别等于簇成员m1的硬件id和坐标,目的硬件id和目的坐标设置为空,资源id集合为集合s1,负载为该邻居表项的硬件id和坐标;否则,簇成员m1选择一个邻居表项,该邻居表项的坐标与该簇首表项的坐标距离最近,发送一个请求消息,该请求消息的消息类型值为8,源硬件id和坐标分别等于簇成员m1的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,资源id集合为集合s1,负载为该簇首表项的硬件id和坐标;步骤503:车辆节点接收到请求消息,如果该请求消息的目的坐标和目的硬件id为空,则执行步骤504,否则执行步骤505;步骤504:接收到请求消息的车辆节点判断自己的硬件id是否等于该请求消息负载中的硬件id,如果是,则执行步骤509,否则执行步骤528;步骤505:接收到请求消息的车辆节点判断自己的硬件id是否等于该请求消息的目的硬件id,如果是,则执行步骤506,否则执行步骤528;步骤506:接收到请求消息的车辆节点查看邻居表,如果该车辆节点的邻居表的所有邻居表项的资源id集合域值的并集是该请求消息资源id集合的超集,则执行步骤507,否则执行步骤508;步骤507:接收到请求消息的车辆节点选择一个以上的邻居表项,这些邻居表项的资源id集合域值的并集是该请求消息资源id集合的超集;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该请求消息的源硬件id,则发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为空,资源id集合等于该请求消息的资源id集合,负载为该邻居表项的硬件id和坐标以及所选择的所有邻居表项,这些邻居表项的资源id集合域值的并集是该请求消息资源id集合的超集;否则,该车辆节点选择一个邻居表项e1,该邻居表项的坐标与该请求消息的源坐标距离最近,发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为选中的邻居表项e1的硬件id和坐标,资源id集合等于该请求消息的资源id集合,负载为该请求消息的源硬件id和源坐标以及所选择的所有邻居表项,这些邻居表项的资源id集合域值的并集是该请求消息资源id集合的超集;执行步骤523;步骤508:接收到请求消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该请求消息负载中的硬件id,则将该请求消息的目的硬件id和目的坐标设置为空,转发该请求消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该请求消息负载中的坐标距离最近,将该请求消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,该车辆节点转发该请求消息,执行步骤503;步骤509:车辆节点接收到请求消息后查看成员表;如果该车辆节点的成员表的所有成员表项的资源id集合域值的并集是该请求消息资源id集合的超集,则执行步骤510,否则执行步骤511;步骤510:接收到请求消息的车辆节点选择一个以上的成员表项,这些成员表项的资源id集合域值的并集是该请求消息资源id集合的超集;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该请求消息的源硬件id,则发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为空,资源id集合等于该请求消息的资源id集合,负载为该邻居表项的硬件id和坐标以及所选择的所有成员表项;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该请求消息的源坐标距离最近,该车辆节点发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为选中的邻居表项的硬件id和坐标,资源id集合等于该请求消息的资源id集合,负载为该请求消息的源硬件id和源坐标以及所选择的所有成员表项;执行步骤523;步骤511:接收到请求消息的车辆节点选择所有角色值等于3的成员表项,从这些成员表项中选择一个成员表项,该成员表项的坐标距离该车辆节点的坐标距离最近;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该成员表项的硬件id,则发送一个二次查询消息,该二次查询消息的消息类型值为10,源硬件id和源坐标分别等于该请求消息的源硬件id和源坐标,目的硬件id和目的坐标设置为空,资源id集合等于该请求消息的资源id集合,负载为选择的成员表项的硬件id和坐标;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该成员表项的坐标距离最近,发送一个二次请求消息,该二次请求消息的消息类型值为10,源硬件id和源坐标分别等于接收到的请求消息的硬件id和坐标,目的硬件id和目的坐标设置为选中的邻居表项的硬件id和坐标,资源id集合等于该请求消息的资源id集合,负载为该成员表项的源硬件id和源坐标;步骤512:车辆节点接收到二次请求消息,如果该二次请求消息的目的坐标和目的硬件id为空,则执行步骤513,否则执行步骤514;步骤513:接收到二次请求消息的车辆节点判断自己的硬件id是否等于该二次请求消息负载中的硬件id,如果是,则执行步骤516,否则执行步骤528;步骤514:接收到二次请求消息的车辆节点判断自己的硬件id是否等于该二次请求消息的目的硬件id,如果是,则执行步骤515,否则执行步骤528;步骤515:接收到二次请求消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该二次请求消息负载中的硬件id,则将该二次请求消息的目的硬件id和目的坐标设置为空,转发该二次请求消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该二次请求消息负载中的坐标距离最近,将该二次请求消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该二次请求消息,执行步骤512;步骤516:车辆节点接收到二次请求消息后,查看簇首表,针对每个簇首表项执行下述操作:该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该簇首表项的硬件id,则将该二次请求消息的目的硬件id和目的坐标设置为空,负载更新为该邻居表项的硬件id和坐标;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该簇首表项的坐标距离最近,将该二次请求消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,负载更新为该簇首表项的硬件id和坐标;步骤517:车辆节点接收到二次请求消息;如果该二次请求消息的目的坐标和目的硬件id为空,则执行步骤518,否则执行步骤519;步骤518:接收到二次请求消息的车辆节点判断自己的硬件id是否等于该二次请求消息负载中的硬件id,如果是,则执行步骤521,否则执行步骤528;步骤519:接收到二次请求消息的车辆节点判断自己的硬件id是否等于该二次请求消息的目的硬件id,如果是,则执行步骤520,否则执行步骤528;步骤520:接收到二次请求消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该二次请求消息负载中的硬件id,则将该二次请求消息的目的硬件id和目的坐标设置为空,转发该二次请求消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该二次请求消息负载中的坐标距离最近,将该二次请求消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该二次请求消息,执行步骤517;步骤521:车辆节点接收到二次请求消息后查看成员表,如果该车辆节点的成员表的所有成员表项的资源id集合域值的并集是该二次请求消息资源id集合的超集,则执行步骤522,否则执行步骤528;步骤522:接收到二次请求消息的车辆节点选择一个以上的成员表项,这些成员表项的资源id集合域值的并集是该二次请求消息资源id集合的超集;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该二次请求消息的源硬件id,则发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为空,资源id集合等于该二次请求消息的资源id集合,负载为该邻居表项的硬件id和坐标以及所选择的所有成员表项;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该二次请求消息的源坐标距离最近,发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为选中的邻居表项的硬件id和坐标,资源id集合等于该二次请求消息的资源id集合,负载为该二次请求消息的源硬件id和源坐标以及所选择的所有成员表项;步骤523:车辆节点接收到响应消息,如果该响应消息的目的坐标和目的硬件id为空,则执行步骤524,否则执行步骤525;步骤524:接收到响应消息的车辆节点判断自己的硬件id是否等于该响应消息负载中的硬件id,如果是,则执行步骤527,否则执行步骤528;步骤525:接收到响应消息的车辆节点判断自己的硬件id是否等于该响应消息的目的硬件id,如果是,则执行步骤526,否则执行步骤528;步骤526:接收到响应消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该响应消息负载中的硬件id,则将该响应消息的目的硬件id和目的坐标设置为空,转发该响应消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该响应消息负载中的坐标距离最近,将该响应消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该响应消息,执行步骤523;步骤527:车辆节点接收到响应消息后保存该响应消息负载中的成员表项或者邻居表项;步骤528:结束。车辆节点通过上述过程从簇首获取所需资源,上述过程通过邻居表中的坐标域值实现了簇首与簇成员之间的通信,因此降低了资源配置的代价和延迟;簇首节点通过成员表来获取簇网关的信息,如果本簇内无法提供车辆节点的所需资源,簇首则通过簇网关连接的两个以上的簇首获取资源,从而大幅度提高了资源配置的成功率;簇首节点实时维护每个成员当前的地理坐标从而能够通过邻居表实现与每个成员的快速正确通信,进一步增加了资源配置的高效性。附图说明下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。图1为本发明所述的维护邻居表流程示意图。图2为本发明所述的加入簇流程示意图。图3为本发明所述的更新成员表获取流程示意图。图4为本发明所述的创建簇流程示意图。图5为本发明所述的数据通信流程示意图。具体实施方式:本发明提供了一种基于车载云的网络资源查询和分配方法,所述车辆节点通过本发明所提供的通信方法,可保持移动过程中通信的连续性,降低数据包丢失率,从而提高了服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。图1为本发明所述的维护邻居表流程示意图。所述网络车辆节点,所述网络划分为两个以上的簇,一个簇由两个以上的车辆节点构成,其中,这些车辆节点划分为簇首和簇成员,一个簇包含一个簇首和两个以上的簇成员;如果簇成员属于两个以上的簇,则该簇成员又称为簇网关;一个车辆节点由一个硬件id唯一标识,该硬件id可以为mac地址;一个车辆节点配置一种以上的资源,一种资源由一个资源id唯一标识;车辆节点使用消息进行通信,一个消息由消息类型唯一标识,消息类型如下表所示:消息类型值消息名称1信标消息2检测消息3检测响应消息4加入消息5更新消息6更新响应消息7构建消息8请求消息9响应消息10二次请求消息每个车辆节点维护一个邻居表,一个邻居表项包含硬件id、坐标、资源id集合、角色域和生命周期域;如果角色域值为1,则表示该邻居表项对应的车辆节点为簇首;如果角色域值为2,则表示该邻居表项对应的车辆节点为簇成员;如果角色域值为3,则表示该邻居表项对应的车辆节点为簇网关;如果角色域值为4,则表示该邻居表项对应的车辆节点既不是簇首,也不是簇成员或者簇网关;一个信标消息由消息类型,硬件id、坐标、角色和资源id集合构成;车辆节点v1定期执行下述操作:步骤101:开始;步骤102:车辆节点v1定期发送信标消息,该信标消息的消息类型值为1,硬件id为车辆节点v1的硬件id,坐标为车辆节点v1的坐标,资源id集合由车辆节点v1能够共享的资源的资源id构成;如果车辆节点v1为簇首,则角色域值设为1,如果车辆节点v1为簇成员,则角色域值设为2,如果车辆节点为簇网关,则角色域值设为3,否则,角色域值设为4;步骤103:邻居车辆节点接收到信标消息后,查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该信标消息的硬件id,则将该邻居表项的坐标、角色以及资源id集合分别更新为信标消息的坐标、角色以及资源id集合域值,生命周期设置为最大值,例如100ms;否则该邻居车辆节点创建一个邻居表项,该邻居表项的硬件id等于该信标消息的硬件id,该邻居表项的坐标、角色以及资源id集合分别更新为信标消息的坐标,角色以及资源id集合域值,生命周期设置为最大值,例如100ms;步骤104:结束。车辆节点通过邻居表可以掌握邻居车辆节点的信息,根据角色域值来判断是否有邻居簇首,根据坐标域值可以选择最优的邻居车辆节点实现路由,根据资源id集合可以直接从邻居车辆节点获取所需资源从而快速实现资源查询和配置。图2为本发明所述的加入簇流程示意图。检测消息包含消息类型、硬件id、坐标和时间戳;检测响应消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标和负载;加入消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、角色和负载;簇首维护一个成员表,一个成员表项包含硬件id、坐标、资源id集合、角色和生命周期;簇成员维护一个簇首表,一个簇首表项包含硬件id,坐标和生命周期域;如果车辆节点v1准备加入一个簇,则执行下述操作:步骤201:开始;步骤202:车辆节点v1查看邻居表,如果存在一个邻居表项,该邻居表项的角色域值为1,则执行步骤203,否则执行步骤204;步骤203:车辆节点v1选择一个邻居表项,该邻居表项的角色域值等于1;车辆节点v1创建一个簇首表项,该簇首表项的硬件id和坐标域值分别等于该邻居表项的硬件id和坐标域值,生命周期设置为最大值;车辆节点v1发送一个加入消息,该加入消息的消息类型值为4,源硬件id和源坐标分别为车辆节点v1的硬件id和坐标,目的硬件id和目的坐标为空,负载为该邻居表项的硬件id和坐标,资源id集合由车辆节点v1能够共享的资源的资源id构成,角色域值为2,执行步骤215;步骤204:车辆节点v1发送一个检测消息,该检测消息的消息类型值为2,硬件id和坐标域值分别等于车辆节点v1的硬件id和坐标域值,时间戳为当前时间;车辆节点v1设置一个时钟t1;步骤205:车辆节点接收到检测消息后,如果该车辆节点为簇首,则执行步骤208,否则执行步骤206;步骤206:接收到检测消息的车辆节点查看当前时间与检测消息的时间戳之差的绝对值是否大于阈值t1,如果是,则执行步骤209,否则执行步骤207;步骤207:接收到检测消息的车辆节点转发该检测消息,执行步骤205;步骤208:接收到检测消息的车辆节点选择一个邻居表项,该邻居表项的坐标域值与该检测消息的坐标之间距离最小,发送一个检测响应消息,该检测响应消息的消息类型值为3,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,负载为该检测消息的硬件id和坐标;步骤209:车辆节点接收到检测响应消息,如果该检测响应消息的目的坐标和目的硬件id为空,则执行步骤210,否则执行步骤211;步骤210:接收到检测响应消息的车辆节点查看自己的硬件id是否等于该检测响应消息负载中的硬件id,如果是,则执行步骤213,否则执行步骤220;步骤211:接收到检测响应消息的车辆节点查看自己的硬件id是否等于该检测响应消息的目的硬件id,如果是,则执行步骤212,否则执行步骤220;步骤212:接收到检测响应消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该检测响应消息负载中的硬件id,则将该检测响应消息的目的硬件id和目的坐标设置为空,转发该检测响应消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该检测响应消息负载中的坐标距离最近,将该检测响应消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该检测响应消息,执行步骤209;步骤213:如果车辆节点v1在时钟t1内没有接收到检测响应消息,则执行步骤220,否则执行步骤214;步骤214:车辆节点v1接收到检测响应消息后,选择一个邻居表项,该邻居表项的坐标与该检测响应消息的源坐标距离最近,发送一个加入消息,该加入消息的消息类型值为4,源硬件id和源坐标分别等于车辆节点v1的硬件id和坐标,目的硬件id和坐标分别等于该邻居表项的硬件id和坐标,角色域值为2,负载为该检测响应消息的源硬件id和源坐标,资源id集合等于车辆节点v1能够提供的资源的资源id构成的集合;车辆节点v1创建一个簇首表项,该簇首表项的硬件id和坐标分别等于该检测响应消息的源硬件id和源坐标,生命周期设置为最大值;步骤215:车辆节点接收到加入消息,如果该加入消息的目的坐标和目的硬件id为空,则执行步骤216,否则执行步骤217;步骤216:接收到加入消息的车辆节点查看自己的硬件id是否等于该加入消息负载中的硬件id,如果是,则执行步骤219,否则执行步骤220;步骤217:接收到加入消息的车辆节点查看自己的硬件id是否等于该加入消息的目的硬件id,如果是,则执行步骤218,否则执行步骤220;步骤218:接收到加入消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该加入消息负载中的硬件id,则将该加入消息的目的硬件id和目的坐标设置为空,转发该加入消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该加入消息负载中的坐标距离最近,将该加入消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该加入消息,执行步骤215;步骤219:接收到加入消息的车辆节点创建一个成员表项,该成员表项的硬件id和坐标分别等于该加入消息的源硬件id和源坐标,角色域值和资源id集合分别等于该加入消息的角色域值和资源id集合,生命周期设置为最大值;步骤220:结束。车辆节点通过上述过程加入到簇中,上述过程通过邻居表中的坐标域值来查询簇首,并加入到该簇首所标识的簇中,车辆节点通过邻居表能够实现到达簇首的最优路径,所以降低了加入簇的代价和延迟;同时簇首通过保存成员表来获取每个成员能够提供的资源,因此能够有效分配资源;簇首节点通过成员表来获取每个成员当前的地理坐标从而能够通过邻居表实现与每个成员的通信;此外,簇首通过成员表获取每个成员是否为簇网关以便实现更有效的资源分配。图3为本发明所述的更新成员表获取流程示意图。如果一个簇成员检测到自己的簇首表项的个数大于1,则将自己标记为簇网关;更新消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、角色和负载;更新响应消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标和负载;簇成员m1定期执行下述操作更新簇首表和成员表:步骤301:开始;步骤302:簇成员m1查看簇首表,针对每个簇首表项,簇成员m1执行下述操作:簇成员m1查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该簇首表项的硬件id,则发送一个更新消息,该更新消息的消息类型值为5,源硬件id和坐标分别等于簇成员m1的硬件id和坐标,目的硬件id和目的坐标设置为空,负载为该邻居表项的硬件id和坐标,如果簇成员m1的簇首表项的个数等于1,则角色域值设为2,否则角色域值设为3;如果不存在所述邻居表项,则簇成员m1选择一个邻居表项,该邻居表项的坐标与该簇首表项的坐标距离最近,发送一个更新消息,该更新消息的消息类型值为5,源硬件id和坐标分别等于簇成员m1的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,负载为该簇首表项的硬件id和坐标,如果簇成员m1的簇首表项的个数等于1,则角色域值设为2,否则角色域值设为3;步骤303:车辆节点接收到更新消息;如果该更新消息的目的坐标和目的硬件id为空,则执行步骤304,否则执行步骤305;步骤304:接收到更新消息的车辆节点查看自己的硬件id是否等于该更新消息负载中的硬件id,如果是,则执行步骤307,否则执行步骤313;步骤305:接收到更新消息的车辆节点查看自己的硬件id是否等于该更新消息的目的硬件id,如果是,则执行步骤306,否则执行步骤313;步骤306:接收到更新消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该更新消息负载中的硬件id,则将该更新消息的目的硬件id和目的坐标设置为空,转发该更新消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该更新消息负载中的坐标距离最近,将该更新消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该更新消息,执行步骤303;步骤307:车辆节点接收到更新消息后,查看成员表,选择一个成员表项,该成员表项的硬件id等于该更新消息的源硬件id,将该成员表项的坐标更新为该更新消息的源坐标,角色域值更新为该更新消息的角色域值,将生命周期设置为最大值;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该更新消息的源硬件id,则发送一个更新响应消息,该更新响应消息的消息类型值为6,源硬件id和坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为空,负载为该邻居表项的硬件id和坐标;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该更新消息的源坐标距离最近,发送一个更新响应消息,该更新响应消息的消息类型值为6,源硬件id和坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,负载为该更新消息的源硬件id和坐标;步骤308:车辆节点接收到更新响应消息,如果该更新响应消息的目的坐标和目的硬件id为空,则执行步骤309,否则执行步骤310;步骤309:接收到更新响应消息的车辆节点查看自己的硬件id是否等于该更新响应消息负载中的硬件id,如果是,则执行步骤312,否则执行步骤313;步骤310:接收到更新响应消息的车辆节点查看自己的硬件id是否等于该更新响应消息的目的硬件id,如果是,则执行步骤311,否则执行步骤313;步骤311:接收到更新响应消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该更新响应消息负载中的硬件id,则将该更新响应消息的目的硬件id和目的坐标设置为空,转发该更新响应消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该更新响应消息负载中的坐标距离最近,将该更新响应消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该更新响应消息,执行步骤308;步骤312:接收到更新响应消息的车辆节点选择一个簇首表项,该簇首表项的硬件id等于该更新响应消息的源硬件id,将该簇首表项的坐标更新为该更新响应消息的源坐标,将生命周期设置为最大值;步骤313:结束。簇成员通过上述过程更新簇首表和成员表,上述过程通过邻居表中的坐标域值来建立簇成员与簇首之间的最优路径,降低了成员表和簇首表的更新代价和延迟;上述过程能够及时有效地更新簇首和簇成员的当前坐标,从而能够确保簇首和簇成员之间能够通过邻居表快速实现通信,有效分配资源。图4为本发明所述的创建簇流程示意图。构建消息包含消息类型、硬件id、坐标和时间戳;如果车辆节点v1在执行步骤201~220之后簇首表项的个数为0,则执行下述过程创建簇:步骤401:开始;步骤402:车辆节点v1发送一个构建消息,该构建消息的消息类型值为7,硬件id和坐标域值分别等于车辆节点v1的硬件id和坐标域值,时间戳为当前时间;步骤403:车辆节点接收到构建消息,如果该车辆节点能够提供的资源的资源id集合为空,则执行步骤406,否则执行步骤404:步骤404:接收到构建消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该构建消息的源硬件id,则发送一个加入消息,该加入消息的消息类型值为4,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和坐标分别等于空,如果该车辆节点的簇首表项的个数为0,则角色域值设为2,否则角色域值设为3,负载为该构建消息的源硬件id和源坐标,资源id集合等于该车辆节点能够提供的资源的资源id构成的集合;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该构建消息的源坐标距离最近,发送一个加入消息,该加入消息的消息类型值为4,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,如果该车辆节点的簇首表项的个数为0,则角色域值设为2,否则角色域值设为3,负载为该构建消息的源硬件id和源坐标,资源id集合等于该车辆节点能够提供的资源的资源id构成的集合;步骤405:接收到构建消息的车辆节点创建一个簇首表项,该簇首表项的硬件id和坐标分别等于该构建的源硬件id和源坐标,生命周期设置为最大值;步骤406:接收到构建消息的车辆节点查看判断当前时间与构建消息的时间戳之差的绝对值是否大于阈值t1,如果是,则执行步骤408,否则执行步骤407;步骤407:接收到构建消息的车辆节点转发该构建消息,执行步骤403;步骤408:车辆节点接收到加入消息,如果该加入消息的目的坐标和目的硬件id为空,则执行步骤409,否则执行步骤410;步骤409:接收到加入消息的车辆节点查看自己的硬件id是否等于该加入消息负载中的硬件id,如果是,则执行步骤412,否则执行步骤413;步骤410:接收到加入消息的车辆节点查看自己的硬件id是否等于该加入消息的目的硬件id,如果是,则执行步骤411,否则执行步骤413;步骤411:接收到加入消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该加入消息负载中的硬件id,则将该加入消息的目的硬件id和目的坐标设置为空,转发该加入消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该加入消息负载中的坐标距离最近,将该加入消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该加入消息,执行步骤408;步骤412:接收到加入消息的车辆节点创建一个成员表项,该成员表项的硬件id和坐标分别等于该加入消息的源硬件id和源坐标,角色域值和资源id集合分别等于该加入消息的角色域值和资源id集合,生命周期设置为最大值;步骤413:结束。车辆节点通过上述过程构建簇并建立成员表以保存每个成员的信息,上述过程通过邻居表中的坐标域值实现簇首与簇成员之间的通信,因此降低了构建簇的代价和延迟;簇首节点通过成员表来获取每个成员当前的地理坐标从而能够通过邻居表实现与每个成员的快速正确通信;此外,簇首通过成员表获取每个成员是否为簇网关以便实现更有效的资源分配。图5为本发明所述的数据通信流程示意图。请求消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、资源id集合和负载;响应消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、资源id集合和负载;二次请求消息包含消息类型、源硬件id、源坐标、目的硬件id、目的坐标、资源id集合和负载;在簇成员m1需要获取一些资源,这些资源的资源id构成资源id集合s1的条件下,如果簇成员m1的所有邻居表项的资源id集合域值的并集不是集合s1的超集,则簇成员m1通过下述过程获取能够提供集合s1所标识的资源的车辆节点的信息:步骤501:开始;步骤502:簇成员m1查看簇首表,选择一个簇首表项,该簇首表项的坐标与簇成员m1的坐标距离最近;簇成员m1查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该簇首表项的硬件id,则发送一个请求消息,该请求消息的消息类型值为8,源硬件id和源坐标分别等于簇成员m1的硬件id和坐标,目的硬件id和目的坐标设置为空,资源id集合为集合s1,负载为该邻居表项的硬件id和坐标;否则,簇成员m1选择一个邻居表项,该邻居表项的坐标与该簇首表项的坐标距离最近,发送一个请求消息,该请求消息的消息类型值为8,源硬件id和坐标分别等于簇成员m1的硬件id和坐标,目的硬件id和目的坐标分别等于该邻居表项的硬件id和坐标,资源id集合为集合s1,负载为该簇首表项的硬件id和坐标;步骤503:车辆节点接收到请求消息,如果该请求消息的目的坐标和目的硬件id为空,则执行步骤504,否则执行步骤505;步骤504:接收到请求消息的车辆节点判断自己的硬件id是否等于该请求消息负载中的硬件id,如果是,则执行步骤509,否则执行步骤528;步骤505:接收到请求消息的车辆节点判断自己的硬件id是否等于该请求消息的目的硬件id,如果是,则执行步骤506,否则执行步骤528;步骤506:接收到请求消息的车辆节点查看邻居表,如果该车辆节点的邻居表的所有邻居表项的资源id集合域值的并集是该请求消息资源id集合的超集,则执行步骤507,否则执行步骤508;步骤507:接收到请求消息的车辆节点选择一个以上的邻居表项,这些邻居表项的资源id集合域值的并集是该请求消息资源id集合的超集;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该请求消息的源硬件id,则发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为空,资源id集合等于该请求消息的资源id集合,负载为该邻居表项的硬件id和坐标以及所选择的所有邻居表项,这些邻居表项的资源id集合域值的并集是该请求消息资源id集合的超集;否则,该车辆节点选择一个邻居表项e1,该邻居表项的坐标与该请求消息的源坐标距离最近,发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为选中的邻居表项e1的硬件id和坐标,资源id集合等于该请求消息的资源id集合,负载为该请求消息的源硬件id和源坐标以及所选择的所有邻居表项,这些邻居表项的资源id集合域值的并集是该请求消息资源id集合的超集;执行步骤523;步骤508:接收到请求消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该请求消息负载中的硬件id,则将该请求消息的目的硬件id和目的坐标设置为空,转发该请求消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该请求消息负载中的坐标距离最近,将该请求消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,该车辆节点转发该请求消息,执行步骤503;步骤509:车辆节点接收到请求消息后查看成员表;如果该车辆节点的成员表的所有成员表项的资源id集合域值的并集是该请求消息资源id集合的超集,则执行步骤510,否则执行步骤511;步骤510:接收到请求消息的车辆节点选择一个以上的成员表项,这些成员表项的资源id集合域值的并集是该请求消息资源id集合的超集;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该请求消息的源硬件id,则发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为空,资源id集合等于该请求消息的资源id集合,负载为该邻居表项的硬件id和坐标以及所选择的所有成员表项;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该请求消息的源坐标距离最近,该车辆节点发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为选中的邻居表项的硬件id和坐标,资源id集合等于该请求消息的资源id集合,负载为该请求消息的源硬件id和源坐标以及所选择的所有成员表项;执行步骤523;步骤511:接收到请求消息的车辆节点选择所有角色值等于3的成员表项,从这些成员表项中选择一个成员表项,该成员表项的坐标距离该车辆节点的坐标距离最近;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该成员表项的硬件id,则发送一个二次查询消息,该二次查询消息的消息类型值为10,源硬件id和源坐标分别等于该请求消息的源硬件id和源坐标,目的硬件id和目的坐标设置为空,资源id集合等于该请求消息的资源id集合,负载为选择的成员表项的硬件id和坐标;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该成员表项的坐标距离最近,发送一个二次请求消息,该二次请求消息的消息类型值为10,源硬件id和源坐标分别等于接收到的请求消息的硬件id和坐标,目的硬件id和目的坐标设置为选中的邻居表项的硬件id和坐标,资源id集合等于该请求消息的资源id集合,负载为该成员表项的源硬件id和源坐标;步骤512:车辆节点接收到二次请求消息,如果该二次请求消息的目的坐标和目的硬件id为空,则执行步骤513,否则执行步骤514;步骤513:接收到二次请求消息的车辆节点判断自己的硬件id是否等于该二次请求消息负载中的硬件id,如果是,则执行步骤516,否则执行步骤528;步骤514:接收到二次请求消息的车辆节点判断自己的硬件id是否等于该二次请求消息的目的硬件id,如果是,则执行步骤515,否则执行步骤528;步骤515:接收到二次请求消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该二次请求消息负载中的硬件id,则将该二次请求消息的目的硬件id和目的坐标设置为空,转发该二次请求消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该二次请求消息负载中的坐标距离最近,将该二次请求消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该二次请求消息,执行步骤512;步骤516:车辆节点接收到二次请求消息后,查看簇首表,针对每个簇首表项执行下述操作:该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该簇首表项的硬件id,则将该二次请求消息的目的硬件id和目的坐标设置为空,负载更新为该邻居表项的硬件id和坐标;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该簇首表项的坐标距离最近,将该二次请求消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,负载更新为该簇首表项的硬件id和坐标;步骤517:车辆节点接收到二次请求消息;如果该二次请求消息的目的坐标和目的硬件id为空,则执行步骤518,否则执行步骤519;步骤518:接收到二次请求消息的车辆节点判断自己的硬件id是否等于该二次请求消息负载中的硬件id,如果是,则执行步骤521,否则执行步骤528;步骤519:接收到二次请求消息的车辆节点判断自己的硬件id是否等于该二次请求消息的目的硬件id,如果是,则执行步骤520,否则执行步骤528;步骤520:接收到二次请求消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该二次请求消息负载中的硬件id,则将该二次请求消息的目的硬件id和目的坐标设置为空,转发该二次请求消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该二次请求消息负载中的坐标距离最近,将该二次请求消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该二次请求消息,执行步骤517;步骤521:车辆节点接收到二次请求消息后查看成员表,如果该车辆节点的成员表的所有成员表项的资源id集合域值的并集是该二次请求消息资源id集合的超集,则执行步骤522,否则执行步骤528;步骤522:接收到二次请求消息的车辆节点选择一个以上的成员表项,这些成员表项的资源id集合域值的并集是该二次请求消息资源id集合的超集;该车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该二次请求消息的源硬件id,则发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为空,资源id集合等于该二次请求消息的资源id集合,负载为该邻居表项的硬件id和坐标以及所选择的所有成员表项;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该二次请求消息的源坐标距离最近,发送一个响应消息,该响应消息的消息类型值为9,源硬件id和源坐标分别等于该车辆节点的硬件id和坐标,目的硬件id和目的坐标设置为选中的邻居表项的硬件id和坐标,资源id集合等于该二次请求消息的资源id集合,负载为该二次请求消息的源硬件id和源坐标以及所选择的所有成员表项;步骤523:车辆节点接收到响应消息,如果该响应消息的目的坐标和目的硬件id为空,则执行步骤524,否则执行步骤525;步骤524:接收到响应消息的车辆节点判断自己的硬件id是否等于该响应消息负载中的硬件id,如果是,则执行步骤527,否则执行步骤528;步骤525:接收到响应消息的车辆节点判断自己的硬件id是否等于该响应消息的目的硬件id,如果是,则执行步骤526,否则执行步骤528;步骤526:接收到响应消息的车辆节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件id等于该响应消息负载中的硬件id,则将该响应消息的目的硬件id和目的坐标设置为空,转发该响应消息;否则,该车辆节点选择一个邻居表项,该邻居表项的坐标与该响应消息负载中的坐标距离最近,将该响应消息的目的硬件id和目的坐标分别更新为该邻居表项的硬件id和坐标,转发该响应消息,执行步骤523;步骤527:车辆节点接收到响应消息后保存该响应消息负载中的成员表项或者邻居表项;步骤528:结束。车辆节点通过上述过程从簇首获取所需资源,上述过程通过邻居表中的坐标域值实现了簇首与簇成员之间的通信,因此降低了资源配置的代价和延迟;簇首节点通过成员表来获取簇网关的信息,如果本簇内无法提供车辆节点的所需资源,簇首则通过簇网关连接的两个以上的簇首获取资源,从而大幅度提高了资源配置的成功率;簇首节点实时维护每个成员当前的地理坐标从而能够通过邻居表实现与每个成员的快速正确通信,进一步增加了资源配置的高效性。有益效果:本发明提供了一种基于车载云的网络资源查询和分配方法,所述车辆节点通过本发明所提供的通信方法,可保持移动过程中通信的连续性,降低数据包丢失率,从而提高了服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。实施例1基于表1的仿真参数,本实施例模拟了本发明中的一种基于车载云的网络资源查询和分配方法,性能分析如下:当邻居节点数量增加时,车辆节点加入簇的延迟降低,当邻居节点数量减少时,车辆节点加入簇的延迟增加,数据获取平均延迟为26.4ms。表1仿真参数本发明提供了一种基于车载云的网络资源查询和分配方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域:
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。当前第1页12