专利摘要
本发明一种基于定位信息的车载云数据通信方法,所述车载云建立在车载网之上,所述车载网包括接入节点和车辆节点两种节点;车辆节点通过距离自己最近的接入节点实现通信,一个接入节点以及通过该接入节点实现通信的所有车辆节点构成一个子网;一个车辆节点既能够作为数据的提供者,也能够作为数据的消费者;本发明车辆节点通过本发明所提供的车载云实现方法能够从距离最近的云成员以单播方式获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
权利要求
1.一种基于定位信息的车载云数据通信方法,其特征在于,所述车载云建立在车载网之上,所述车载网包括接入节点和车辆节点两种节点;车辆节点通过距离自己最近的接入节点实现通信,一个接入节点以及通过该接入节点实现通信的所有车辆节点构成一个子网;一个车辆节点既能够作为数据的提供者,也能够作为数据的消费者;
一种与地理位置相关的数据由一个数据名称定义,一个数据名称由地理坐标和数据ID构成,地理坐标定义与该数据相关的地理位置,数据ID定义数据的种类;一种与地理位置相关的数据被划分为两个以上的数据块,每个数据块由一个数据块ID唯一标识;一个子网内能提供一种与地理位置相关的数据的所有车辆节点构建成一个簇,这个簇由定义该数据的数据名称唯一标识;
车辆节点使用数据地址来获取数据,数据地址由数据名称和数据块ID集合构成;车辆节点或者接入节点由定位地址唯一标识,一个定位地址由定位横坐标、定位纵坐标以及车辆节点ID构成,接入节点的定位地址的车辆节点ID为0;
车辆节点或者接入节点发送的消息格式由4个部分构成,源地址、目的地址、消息类型和负载;
消息类型如下表所示:
在一个簇中,所有簇成员保存一个数据表,该数据表的表名为该簇的簇名称;一个数据表表项由三个域构成:数据块ID域、,数据块域和数据生命周期域;一个数据表中所有数据表项的数据生命周期都相同;如果一个数据表中的数据表项的数据生命周期衰减为0,则从该数据表中删除该数据表项;如果数据表为空,则删除该数据表;
数据消费者采用数据索引表和数据请求表获取数据;数据索引表用于保存簇成员的信息,数据请求表用于实现数据请求的聚合;
数据索引表中,一个数据索引表项包括数据名称域、数据块ID集合域值、定位地址域值、数据生命周期和簇成员生命周期域;数据请求表中,一个数据请求表项包括数据地址域、定位地址域和接口域;
数据C1由数据名称N1定义,数据名称N1中,地理坐标为(x1,y1),数据ID为CID1,数据C1由N个数据块构成,每个数据块由数据块ID ci标识,i=1……N,接入节点AP1位于子网S1中;
车辆节点V1的地理坐标为(x1,y1),它创建数据C1的过程包括如下步骤:
步骤101:开始;
步骤102:车辆节点V1创建一个数据地址和一个定位地址;数据地址中,数据名称域值为N1,数据块ID集合有N个数据块ID ci构成;定位地址中的定位横坐标为x1,定位纵坐标为y1,车辆节点ID为车辆节点V1的车辆节点ID;车辆节点V1发送数据创建消息,该数据创建消息的源地址为构建的定位地址,目的地址为构建的数据地址,消息类型为1,负载为距离参数Hop,其值为初始值;
步骤103:如果接收到数据创建消息的车辆节点位于子网S1中,则执行步骤105,否则执行步骤104;
步骤104:车辆节点丢弃该数据创建消息,执行步骤116;
步骤105:接收到数据创建消息的车辆节点将距离参数Hop递减1,如果距离参数Hop值大于0,则转发该数据创建消息;
步骤106:如果接收到数据创建消息的车辆节点能够提供数据C1的部分数据块,则执行步骤107,否则执行步骤108;
步骤107:车辆节点构建数据创建响应消息,该数据创建响应消息的源地址为自己的定位地址,目的地址为数据创建消息中的源地址,消息类型域值为2,负载为能够提供的部分数据块;车辆节点将该数据创建响应消息发送到与该数据创建响应消息的目的地址中的坐标距离最近的邻居节点;
步骤108:如果与车辆节点V1距离大于一跳的车辆节点接收到数据创建响应消息,则执行步骤109,否则执行步骤110;
步骤109:接收到数据创建响应消息的车辆节点将该数据创建响应消息转发给距离该数据创建响应消息的目的地址中的坐标距离最近的邻居节点,执行步骤108;
步骤110:如果在车辆节点V1一跳范围内的车辆节点接收到数据创建响应消息,则执行步骤111,否则执行步骤112;
步骤111:接收到数据创建响应消息的车辆节点在一跳范围内广播该消息,执行步骤108;
步骤112:车辆节点V1判断所有接收到的数据创建响应消息中的数据块是否能构建成C1,如果能,则执行步骤114,否则执行步骤113;
步骤113:车辆节点V1将参数距离参数Hop的初始值递增1,然后执行步骤102;
步骤114:车辆节点V1创建一个数据表,表名为N1,该数据表包括N个数据表项,每个数据表项中,数据块ID为ci,数据块域值为数据创建响应消息中的数据块域值,数据生命周期为预先设置的生命周期;N个数据表项的数据生命周期值都相同;车辆节点V1转换为簇成员节点,对于每个返回数据创建响应消息的车辆节点,车辆节点V1发送一个数据共享消息,数据共享消息源地址为车辆节点V1的定位地址,目的地址为返回数据创建响应消息的车辆节点的定位地址,数据类型为3,负载为创建的数据表,同时,车辆节点向接入节点AP1发送一个数据共享消息,数据共享消息源地址为车辆节点的定位地址,目的地址为接入节点AP1的定位地址,数据类型为3,负载为创建的数据表;
步骤115:车辆节点收到数据共享消息后,变成簇成员同时保存数据共享消息中的数据表;接入节点AP1收到数据共享消息后,变成簇首节点,同时保存数据共享消息中的数据表;
步骤116:结束。
2.根据权利要求1所述的一种基于定位信息的车载云数据通信方法,其特征在于,在车辆节点V6是一个簇成员,能提供数据C1中的部分数据块或者全部数据块,数据C1由名称地址N1定义的条件下,如果车辆节点V6从子网S1移动到子网S2,子网S2的接入节点为AP2,那么执行下述移动切换操作:
步骤201:开始;
步骤202:车辆节点V6构建一个注册消息,该注册消息的源地址为车辆节点V6的定位地址,目的地址为接入节点AP2的定位地址,消息类型为4,负载为数据名称N1,表名称为N1的数据表中所有表项的数据块ID域值集合以及数据生存时间,然后车辆节点V6发送该注册消息;
步骤203:接入节点AP2收到注册消息后,创建一个数据索引表项,该数据索引表项的数据名称域值为N1,数据块ID集合为注册消息负载中的数据块ID集合域值,数据生命周期域值为注册消息负载中的数据生命周期域值,定位地址域值为注册消息的源地址,簇成员生命周期域值设置为最大初始值,该初始值大于两个信标帧的时间间隔;
步骤204:结束;
上述移动切换过程结束后,子网S2中的车辆节点能够直接从车辆节点V6获取数据C1的数据块;车辆节点V6完成移动切换后,定期向接入节点AP2发送信标消息,该信标消息的源地址为车辆节点V6的定位地址,该定位地址中的地理横坐标和地理纵坐标为车辆节点V6当前的地理横坐标和地理纵坐标;接入节点AP2收到来自车辆节点V6的信标消息后,查找数据索引表中定位地址域值中的车辆节点ID等于信标消息中源地址的车辆节点ID的数据索引表项;接入节点AP2用信标消息中的源地址更新所述数据索引表项中的定位地址域值,同时将数据索引表项中的簇成员生命周期设置为最大值;如果车辆节点V6检测到表名称为N1的数据表项中的数据生命周期到期,则删除该表,同时车辆节点V6不再向接入节点AP2定期发送信标消息;如果一个数据索引表项中数据生命周期域值或者簇成员生命周期域值过期,则该数据索引表项从数据索引表中删除。
3.根据权利要求2所述的一种基于定位信息的车载云数据通信方法,其特征在于,在车辆节点V6位于子网S1中,子网S1中的接入节点为AP1,数据C1由数据名称N1定义,数据名称N1中的地理坐标为(x1,y1),数据ID为CID1的条件下,车辆节点V6需要获取数据C1的数据块,所述数据块的数据块ID集合为U,如果满足条件1或者条件2,那么车辆节点V6则根据下述过程获取数据:
条件1:在所有的接入节点中,接入节点AP1与地理坐标(x1,y1)所在的位置距离最近;
条件2:接入节点AP1查看数据索引表中数据名称域值为N1的数据索引表项,所述数据索引表项的数据块ID集合域值的并集是数据块ID集合U的超集;
步骤301:开始;
步骤302:车辆节点V6构建一个数据地址和定位地址,在数据地址中,数据名称域值为N1,数据块ID集合为U,在定位地址中,横坐标和纵坐标为车辆节点V6的地理横坐标和地理纵坐标,车辆节点ID为车辆节点V6的车辆节点ID;车辆节点V6创建一个数据请求消息,该数据请求消息的源地址为构建的定位地址,目的地址为构建的数据地址,消息类型为5,然后车辆节点V6将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点;
步骤303:如果能提供数据C1的簇成员节点接收到数据请求消息,那么执行步骤304,否则执行步骤307;
步骤304:如果该簇成员节点能提供数据请求消息目的数据地址中的数据块ID集合所定义的所有数据块,那么执行步骤305,否则执行步骤306;
步骤305:簇成员节点返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,然后执行步骤314;
步骤306:簇成员节点返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息负载中数据地址中的数据块ID集合中任一个元素的所有数据表项;从数据请求消息目的地址的数据块ID集合中减去数据响应消息中所有数据表项中的数据块ID集合;将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点或者接入节点,执行步骤303;
步骤307:如果接入节点AP1接收到数据请求消息,则执行步骤308,否则执行步骤313;
步骤308:判断接入节点AP1是否有表名称为N1的数据表,如果有,则执行步骤309,否则执行步骤310;
步骤309:接入节点AP1返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为表名称为N1的数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
步骤310:在所有的接入节点中,判断接入节点AP1是否与地理坐标(x1,y1)所在的位置距离最近,如果是,执行步骤311,否则执行步骤312;
步骤311:接入节点AP1发送一个数据生成消息,数据生成消息目的地址为数据请求消息中的目的地址,消息类型为7,消息源地址为接入节点AP1的定位地址;位于坐标(x1,y1)的车辆节点收到数据生成消息后,执行步骤101~步骤116生成数据C1,然后向接入节点发送数据分享消息,数据分享消息负载为表名称为N1的数据表,接收节点AP1收到数据分享消息后,变成簇首节点,保存该数据表,然后返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
步骤312:接入节点AP1从数据索引表中选择满足下述两个条件的数据索引表项,对于选择的每一个数据索引表项创建一个数据地址,该数据地址的数据名称域值为N1,数据块ID集合为该表项中的数据块ID集合;接入节点AP1发送一个数据请求消息,该数据请求消息的源地址为车辆节点V6的定位地址,目的地址为该数据索引表项中的定位地址,负载为构建的数据地址;目的簇成员节点收到数据请求消息后,返回一个数据响应消息,该数据响应消息的源地址为数据请求消息中的数据地址,目的地址为车辆节点V6的定位地址,负载为数据表中数据块ID域值等于数据请求消息负载中数据地址的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
条件3:数据名称域值为N1;
条件4:所述数据表项中的数据块ID集合的并集是数据块ID集合U的超集;
步骤313:车辆节点接收到数据请求消息后,将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点或者接入节点,执行步骤303;
步骤314:如果车辆节点V6收到数据响应消息,则执行步骤316,否则执行步骤315;
步骤315:如果车辆节点在距离数据响应消息的目的地址的横坐标和纵坐标所确定的位置的一跳范围内,则广播该数据响应消息,执行步骤314,否则将该数据响应消息转发到与数据响应消息目的地址中横坐标和纵坐标所确定的位置距离最近的邻居车辆节点,执行步骤314;
步骤316:车辆节点V6接收到所有数据响应消息后,它创建一个数据表,该数据表的表名为N1,然后将数据响应消息中所有数据表项添加到数据表,同时自己转换为簇成员节点;
步骤317:在所有的接入节点中,判断接入节点AP1是否与地理坐标(x1,y1)所在的位置距离最近,如果是,执行步骤319,否则执行步骤318;
步骤318:车辆节点V6执行步骤201~204实现移动切换;
步骤319:结束。
4.根据权利要求2所述的一种基于定位信息的车载云数据通信方法,其特征在于,在车辆节点V6位于子网S3中,子网S3中的接入节点为AP3,数据C1由数据名称N1定义,数据名称N1的地理坐标为(x1,y1),数据ID为CID1的条件下,车辆节点V6需要获取数据C1的数据块,所述数据块的数据块ID集合为U,如果满足条件5或者条件6,车辆节点V6则根据下述过程获取数据:
条件5:在所有的接入节点中,接入节点AP1距离地理坐标为(x1,y1)最近,且接入节点AP3没有数据名称为N1的数据检索表项;
条件6:在所有的接入节点中,接入节点AP1距离地理坐标为(x1,y1)最近,且接入节点AP3有数据名称为N1的数据检索表项,所述数据检索表项的数据块ID集合域值的并集是数据块ID集合U的子集;
步骤401:开始;
步骤402:车辆节点V6构建一个数据地址和一个定位地址,在数据地址中,数据名称域值为N1,数据块ID集合为U,在定位地址中,横坐标和纵坐标为车辆节点V6的地理横坐标和地理纵坐标,车辆节点ID为车辆节点V6的车辆节点ID;车辆节点V6创建一个数据请求消息,该数据请求消息的源地址为自己的定位地址,目的地址为构建的数据地址,消息类型为5,车辆节点V6将数据请求消息转发到距离所在子网S3的接入节点AP3最近的邻居车辆节点;
步骤403:接入节点从接口f接收到数据请求消息后,在数据请求表中创建一个数据请求表项,该数据请求表项的数据地址为数据请求消息的目的地址,定位地址为数据请求消息的源地址,接口域值为f;
步骤404:如果接入节点在数据请求表中只有一项数据地址等于数据请求消息的目的地址的数据请求表项,则执行步骤405,否则执行步骤414;
步骤405:判断接入节点是否为接入节点AP1,如果是,执行步骤406,否则执行步骤409;
步骤406:判断接入节点AP1是否有表名为N1的数据表,如果是,执行步骤407,否则执行步骤408;
步骤407:接入节点AP1创建一个数据响应消息,该数据响应消息的源地址为数据请求表中的目的地址,目的地址为数据请求消息的源地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤414;
步骤408:接入节点AP1发送一个数据生成消息,数据生成消息目的地址为数据请求消息中的目的地址,消息类型为7,消息源地址为接入节点AP1的定位地址;位于坐标(x1,y1)的车辆节点收到数据生成消息后,执行步骤101~步骤116生成数据C1,然后向接入节点AP1发送数据分享消息,数据分享消息负载为表名称为N1的数据表,接收节点AP1收到数据分享消息后,变成簇首节点,保存该数据表;接入节点AP1创建一个数据响应消息,该数据响应消息的源地址为数据请求表中的目的地址,目的地址为数据请求消息的源地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤414;
步骤409:判断接收到数据请求消息中的接入节点在数据索引表中是否存在数据名称为N1的数据索引表项,如果是,执行步骤410,否则执行步骤413;
步骤410:接入节点从数据索引表中选择满足下述条件7和8的数据索引表项,对于选择的每一个数据索引表项创建一个数据地址,该数据地址的数据名称域值为N1,数据块ID集合为该数据索引表项中的数据块ID集合;接入节点发送一个数据请求消息,该数据请求消息的源地址为车辆节点V6的定位地址,目的地址为该数据索引表项中的定位地址,负载为构建的数据地址;目的簇成员节点收到数据请求消息后,发送一个数据响应消息,该数据响应消息的源地址为数据请求消息中的数据地址,目的地址为接入节点的定位地址,负载为数据表中数据块ID域值等于数据请求消息负载中的数据地址中的数据块ID集合中每一个元素的数据表项;接入节点收到所有的数据响应消息后,构建一个数据响应消息,该数据响应消息的源地址为接收到的数据请求消息中的目的地址,负载为所接收到的数据响应消息中的所有负载的集合;
条件7:数据名称域值为N1且定位地址为车辆节点的定位地址,即定位地址的车辆节点ID不为0;
条件8:所述数据索引表项中的数据块ID集合的并集是数据请求消息的目的地址中的数据块ID集合的最大子集或者超集;
步骤411:如果接入节点选择的所有数据索引表项中的数据块ID集合的并集是数据请求消息的目的地址中的数据块ID集合的超集,那么执行步骤414,否则执行步骤412;
步骤412:接入节点从数据请求消息负载中的数据地址的数据块ID集合中减去所选择的所有索引表项中的数据块ID集合的并集;接入节点将数据请求消息转发到距离接入节点AP1最近的邻居接入节点,执行步骤403;
步骤413:接入节点将数据请求消息转发到距离接入节点AP1最近的邻居接入节点,执行步骤403;
步骤414:如果接入节点创建或者收到数据响应消息,则执行步骤415,否则执行步骤416;
步骤415:接入节点查看数据请求表,选择数据地址为数据响应消息源地址的数据请求表项,然后对于每个数据请求表项,进行如下操作:接入节点用该数据请求表项的定位地址更新数据响应消息的目的地址,从该数据请求表项的接口域转发该数据响应消息,如果数据响应消息负载中的数据块ID集合是数据响应消息的源地址中的数据块ID集合的超集,接入节点则删除该数据请求表项;最后执行步骤414;
步骤416:如果车辆节点V6收到数据响应消息,则执行步骤418,否则执行步骤417;
步骤417:如果接收到数据响应消息的车辆节点在数据响应消息的目的地址的横坐标和纵坐标所确定的位置的一跳范围内,则广播该数据响应消息,执行步骤416,否则将该数据响应消息转发到与数据响应消息目的地址中横坐标和纵坐标所确定的位置距离最近的邻居车辆节点,执行步骤416;
步骤418:车辆节点V6接收到所有数据响应消息后,创建一个数据表,该数据表的表名为N1,然后将数据响应消息中的所有数据表项添加到数据表,同时自己转换为簇成员节点;
步骤419:车辆节点V6执行步骤201~204实现移动切换;
步骤420:结束。
说明书
技术领域
本发明涉及一种数据通信方法,尤其涉及的是一种基于定位信息的车载云数据通信方法。
背景技术
车载云是建立在车载网之上且能提供本地服务的一种服务模式。近年来,很多研究工作致力于车载云,以便使车辆驾驶人能够快速获取网络服务。随着车载网技术的发展,车载云会成为未来提供服务的一种模式。
目前,车载云的实现模式是通过广播来实现,因此延迟和代价都比较大,降低了网络服务性能。因此,如何降低车载云提供服务的延迟和代价成为近年来研究的热点问题。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于定位信息的车载云数据通信方法。本发明通过单播取代广播的方式来实现车载云,从而降低车载云提供服务的延迟和代价,从而有效提高网络服务性能。
技术方案:本发明公开了一种基于定位信息的车载云数据通信方法,所述车载云建立在车载网之上,所述车载网包括接入节点和车辆节点两种节点;车辆节点通过距离自己最近的接入节点实现通信,一个接入节点以及通过该接入节点实现通信的所有车辆节点构成一个子网;一个车辆节点既能够作为数据的提供者,也能够作为数据的消费者;
一种与地理位置相关的数据由一个数据名称定义,一个数据名称由地理坐标和数据ID构成,地理坐标定义与该数据相关的地理位置,数据ID定义数据的种类;一种与地理位置相关的数据被划分为两个以上的数据块,每个数据块由一个数据块ID唯一标识;一个子网内能提供一种与地理位置相关的数据的所有车辆节点构建成一个簇,这个簇由定义该数据的数据名称唯一标识;
车辆节点使用数据地址来获取数据,数据地址由数据名称和数据块ID集合构成;车辆节点或者接入节点由定位地址唯一标识,一个定位地址由定位横坐标、定位纵坐标以及车辆节点ID构成,接入节点的定位地址的车辆节点ID为0,车辆节点的车辆节点ID可以是其硬件ID,例如MAC地址;
车辆节点或者接入节点发送的消息格式由4个部分构成,源地址、目的地址、消息类型和负载;
消息类型如下表所示:
在一个簇中,所有簇成员保存一个数据表,该数据表的表名为该簇的簇名称;一个数据表表项由三个域构成:数据块ID域、,数据块域和数据生命周期域;一个数据表中所有数据表项的数据生命周期都相同;如果一个数据表中的数据表项的数据生命周期衰减为0,则从该数据表中删除该数据表项;如果数据表为空,则删除该数据表;
数据消费者采用数据索引表和数据请求表获取数据;数据索引表用于保存簇成员的信息,数据请求表用于实现数据请求的聚合;
数据索引表中,一个数据索引表项包括数据名称域、数据块ID集合域值、定位地址域值、数据生命周期和簇成员生命周期域;数据请求表中,一个数据请求表项包括数据地址域、定位地址域和接口域;
数据C1由数据名称N1定义,数据名称N1中,地理坐标为(x1,y1),数据ID为CID1,数据C1由N个数据块构成,N取值为自然数,每个数据块由数据块ID ci标识,i=1……N,接入节点AP1位于子网S1中;
车辆节点V1的地理坐标为(x1,y1),它创建数据C1的过程包括如下步骤:
步骤101:开始;
步骤102:车辆节点V1创建一个数据地址和一个定位地址;数据地址中,数据名称域值为N1,数据块ID集合有N个数据块ID ci构成;定位地址中的定位横坐标为x1,定位纵坐标为y1,车辆节点ID为车辆节点V1的车辆节点ID;车辆节点V1发送数据创建消息,该数据创建消息的源地址为构建的定位地址,目的地址为构建的数据地址,消息类型为1,负载为距离参数Hop,其值为初始值;
步骤103:如果接收到数据创建消息的车辆节点位于子网S1中,则执行步骤105,否则执行步骤104;
步骤104:车辆节点丢弃该数据创建消息,执行步骤116;
步骤105:接收到数据创建消息的车辆节点将距离参数Hop递减1,如果距离参数Hop值大于0,则转发该数据创建消息;
步骤106:如果接收到数据创建消息的车辆节点能够提供数据C1的部分数据块,则执行步骤107,否则执行步骤108;
步骤107:车辆节点构建数据创建响应消息,该数据创建响应消息的源地址为自己的定位地址,目的地址为数据创建消息中的源地址,消息类型域值为2,负载为能够提供的部分数据块;车辆节点将该数据创建响应消息发送到与该数据创建响应消息的目的地址中的坐标距离最近的邻居节点;
步骤108:如果与车辆节点V1距离大于一跳的车辆节点接收到数据创建响应消息,则执行步骤109,否则执行步骤110;
步骤109:接收到数据创建响应消息的车辆节点将该数据创建响应消息转发给距离该数据创建响应消息的目的地址中的坐标距离最近的邻居节点,执行步骤108;
步骤110:如果在车辆节点V1一跳范围内的车辆节点接收到数据创建响应消息,则执行步骤111,否则执行步骤112;
步骤111:接收到数据创建响应消息的车辆节点在一跳范围内广播该消息,执行步骤108;
步骤112:车辆节点V1判断所有接收到的数据创建响应消息中的数据块是否能构建成C1,如果能,则执行步骤114,否则执行步骤113;
步骤113:车辆节点V1将参数距离参数Hop的初始值递增1,然后执行步骤102;
步骤114:车辆节点V1创建一个数据表,表名为N1,该数据表包括N个数据表项,每个数据表项中,数据块ID为ci,数据块域值为数据创建响应消息中的数据块域值,数据生命周期为预先设置的生命周期,例如100min;N个数据表项的数据生命周期值都相同;车辆节点V1转换为簇成员节点,对于每个返回数据创建响应消息的车辆节点,车辆节点V1发送一个数据共享消息,数据共享消息源地址为车辆节点V1的定位地址,目的地址为返回数据创建响应消息的车辆节点的定位地址,数据类型为3,负载为创建的数据表,同时,车辆节点向接入节点AP1发送一个数据共享消息,数据共享消息源地址为车辆节点的定位地址,目的地址为接入节点AP1的定位地址,数据类型为3,负载为创建的数据表;
步骤115:车辆节点收到数据共享消息后,变成簇成员同时保存数据共享消息中的数据表;接入节点AP1收到数据共享消息后,变成簇首节点,同时保存数据共享消息中的数据表;
步骤116:结束。
上述过程能够快速建立数据从而车辆节点能够快速正确地获取所需数据。
本发明所述方法中,在车辆节点V6是一个簇成员,能提供数据C1中的部分数据块或者全部数据块,数据C1由名称地址N1定义的条件下,如果车辆节点V6从子网S1移动到子网S2,子网S2的接入节点为AP2,那么执行下述移动切换操作:
步骤201:开始;
步骤202:车辆节点V6构建一个注册消息,该注册消息的源地址为车辆节点V6的定位地址,目的地址为接入节点AP2的定位地址,消息类型为4,负载为数据名称N1,表名称为N1的数据表中所有表项的数据块ID域值集合以及数据生存时间,然后车辆节点V6发送该注册消息;
步骤203:接入节点AP2收到注册消息后,创建一个数据索引表项,该数据索引表项的数据名称域值为N1,数据块ID集合为注册消息负载中的数据块ID集合域值,数据生命周期域值为注册消息负载中的数据生命周期域值,定位地址域值为注册消息的源地址,簇成员生命周期域值设置为最大初始值,该初始值大于两个信标帧的时间间隔,例如200ms;
步骤204:结束;
上述移动切换过程结束后,子网S2中的车辆节点能够直接从车辆节点V6获取数据C1的数据块;车辆节点V6完成移动切换后,定期向接入节点AP2发送信标消息,该信标消息的源地址为车辆节点V6的定位地址,该定位地址中的地理横坐标和地理纵坐标为车辆节点V6当前的地理横坐标和地理纵坐标;接入节点AP2收到来自车辆节点V6的信标消息后,查找数据索引表中定位地址域值中的车辆节点ID等于信标消息中源地址的车辆节点ID的数据索引表项;接入节点AP2用信标消息中的源地址更新所述数据索引表项中的定位地址域值,同时将数据索引表项中的簇成员生命周期设置为最大值;如果车辆节点V6检测到表名称为N1的数据表项中的数据生命周期到期,则删除该表,同时车辆节点V6不再向接入节点AP2定期发送信标消息;如果一个数据索引表项中数据生命周期域值或者簇成员生命周期域值过期,则该数据索引表项从数据索引表中删除。
上述移动切换过程能够确保车辆节点在移动过程中仍能快速正确地获取所需数据。
本发明所述方法中,在车辆节点V6位于子网S1中,子网S1中的接入节点为AP1,数据C1由数据名称N1定义,数据名称N1中的地理坐标为(x1,y1),数据ID为CID1的条件下,车辆节点V6需要获取数据C1的数据块,所述数据块的数据块ID集合为U,如果满足条件1或者条件2,那么车辆节点V6则根据下述过程获取数据:
条件1:在所有的接入节点中,接入节点AP1与地理坐标(x1,y1)所在的位置距离最近;
条件2:接入节点AP1查看数据索引表中数据名称域值为N1的数据索引表项,所述数据索引表项的数据块ID集合域值的并集是数据块ID集合U的超集;
步骤301:开始;
步骤302:车辆节点V6构建一个数据地址和定位地址,在数据地址中,数据名称域值为N1,数据块ID集合为U,在定位地址中,横坐标和纵坐标为车辆节点V6的地理横坐标和地理纵坐标,车辆节点ID为车辆节点V6的车辆节点ID;车辆节点V6创建一个数据请求消息,该数据请求消息的源地址为构建的定位地址,目的地址为构建的数据地址,消息类型为5,然后车辆节点V6将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点;
步骤303:如果能提供数据C1的簇成员节点接收到数据请求消息,那么执行步骤304,否则执行步骤307;
步骤304:如果该簇成员节点能提供数据请求消息目的数据地址中的数据块ID集合所定义的所有数据块,那么执行步骤305,否则执行步骤306;
步骤305:簇成员节点返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,然后执行步骤314;
步骤306:簇成员节点返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息负载中数据地址中的数据块ID集合中任一个元素的所有数据表项;从数据请求消息目的地址的数据块ID集合中减去数据响应消息中所有数据表项中的数据块ID集合;将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点或者接入节点,执行步骤303;
步骤307:如果接入节点AP1接收到数据请求消息,则执行步骤308,否则执行步骤313;
步骤308:判断接入节点AP1是否有表名称为N1的数据表,如果有,则执行步骤309,否则执行步骤310;
步骤309:接入节点AP1返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为表名称为N1的数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
步骤310:在所有的接入节点中,判断接入节点AP1是否与地理坐标(x1,y1)所在的位置距离最近,如果是,执行步骤311,否则执行步骤312;
步骤311:接入节点AP1发送一个数据生成消息,数据生成消息目的地址为数据请求消息中的目的地址,消息类型为7,消息源地址为接入节点AP1的定位地址;位于坐标(x1,y1)的车辆节点收到数据生成消息后,执行步骤101~步骤116生成数据C1,然后向接入节点发送数据分享消息,数据分享消息负载为表名称为N1的数据表,接收节点AP1收到数据分享消息后,变成簇首节点,保存该数据表,然后返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
步骤312:接入节点AP1从数据索引表中选择满足下述两个条件的数据索引表项,对于选择的每一个数据索引表项创建一个数据地址,该数据地址的数据名称域值为N1,数据块ID集合为该表项中的数据块ID集合;接入节点AP1发送一个数据请求消息,该数据请求消息的源地址为车辆节点V6的定位地址,目的地址为该数据索引表项中的定位地址,负载为构建的数据地址;目的簇成员节点收到数据请求消息后,返回一个数据响应消息,该数据响应消息的源地址为数据请求消息中的数据地址,目的地址为车辆节点V6的定位地址,负载为数据表中数据块ID域值等于数据请求消息负载中数据地址的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
条件3:数据名称域值为N1;
条件4:所述数据表项中的数据块ID集合的并集是数据块ID集合U的超集;
步骤313:车辆节点接收到数据请求消息后,将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点或者接入节点,执行步骤303;
步骤314:如果车辆节点V6收到数据响应消息,则执行步骤316,否则执行步骤315;
步骤315:如果车辆节点在距离数据响应消息的目的地址的横坐标和纵坐标所确定的位置的一跳范围内,则广播该数据响应消息,执行步骤314,否则将该数据响应消息转发到与数据响应消息目的地址中横坐标和纵坐标所确定的位置距离最近的邻居车辆节点,执行步骤314;
步骤316:车辆节点V6接收到所有数据响应消息后,它创建一个数据表,该数据表的表名为N1,然后将数据响应消息中所有数据表项添加到数据表,同时自己转换为簇成员节点;
步骤317:在所有的接入节点中,判断接入节点AP1是否与地理坐标(x1,y1)所在的位置距离最近,如果是,执行步骤319,否则执行步骤318;
步骤318:车辆节点V6执行步骤201~204实现移动切换;
步骤319:结束。
上述过程能够确保车辆节点快速正确地获取所需数据。
本发明所述方法中,在车辆节点V6位于子网S3中,子网S3中的接入节点为AP3,数据C1由数据名称N1定义,数据名称N1的地理坐标为(x1,y1),数据ID为CID1的条件下,车辆节点V6需要获取数据C1的数据块,所述数据块的数据块ID集合为U,如果满足条件5或者条件6,车辆节点V6则根据下述过程获取数据:
条件5:在所有的接入节点中,接入节点AP1距离地理坐标为(x1,y1)最近,且接入节点AP3没有数据名称为N1的数据检索表项;
条件6:在所有的接入节点中,接入节点AP1距离地理坐标为(x1,y1)最近,且接入节点AP3有数据名称为N1的数据检索表项,所述数据检索表项的数据块ID集合域值的并集是数据块ID集合U的子集;
步骤401:开始;
步骤402:车辆节点V6构建一个数据地址和一个定位地址,在数据地址中,数据名称域值为N1,数据块ID集合为U,在定位地址中,横坐标和纵坐标为车辆节点V6的地理横坐标和地理纵坐标,车辆节点ID为车辆节点V6的车辆节点ID;车辆节点V6创建一个数据请求消息,该数据请求消息的源地址为自己的定位地址,目的地址为构建的数据地址,消息类型为5,车辆节点V6将数据请求消息转发到距离所在子网S3的接入节点AP3最近的邻居车辆节点;
步骤403:接入节点从接口f接收到数据请求消息后,在数据请求表中创建一个数据请求表项,该数据请求表项的数据地址为数据请求消息的目的地址,定位地址为数据请求消息的源地址,接口域值为f;
步骤404:如果接入节点在数据请求表中只有一项数据地址等于数据请求消息的目的地址的数据请求表项,则执行步骤405,否则执行步骤414;
步骤405:判断接入节点是否为接入节点AP1,如果是,执行步骤406,否则执行步骤409;
步骤406:判断接入节点AP1是否有表名为N1的数据表,如果是,执行步骤407,否则执行步骤408;
步骤407:接入节点AP1创建一个数据响应消息,该数据响应消息的源地址为数据请求表中的目的地址,目的地址为数据请求消息的源地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤414;
步骤408:接入节点AP1发送一个数据生成消息,数据生成消息目的地址为数据请求消息中的目的地址,消息类型为7,消息源地址为接入节点AP1的定位地址;位于坐标(x1,y1)的车辆节点收到数据生成消息后,执行步骤101~步骤116生成数据C1,然后向接入节点AP1发送数据分享消息,数据分享消息负载为表名称为N1的数据表,接收节点AP1收到数据分享消息后,变成簇首节点,保存该数据表;接入节点AP1创建一个数据响应消息,该数据响应消息的源地址为数据请求表中的目的地址,目的地址为数据请求消息的源地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤414;
步骤409:判断接收到数据请求消息中的接入节点在数据索引表中是否存在数据名称为N1的数据索引表项,如果是,执行步骤410,否则执行步骤413;
步骤410:接入节点从数据索引表中选择满足下述条件7和8的数据索引表项,对于选择的每一个数据索引表项创建一个数据地址,该数据地址的数据名称域值为N1,数据块ID集合为该数据索引表项中的数据块ID集合;接入节点发送一个数据请求消息,该数据请求消息的源地址为车辆节点V6的定位地址,目的地址为该数据索引表项中的定位地址,负载为构建的数据地址;目的簇成员节点收到数据请求消息后,发送一个数据响应消息,该数据响应消息的源地址为数据请求消息中的数据地址,目的地址为接入节点的定位地址,负载为数据表中数据块ID域值等于数据请求消息负载中的数据地址中的数据块ID集合中每一个元素的数据表项;接入节点收到所有的数据响应消息后,构建一个数据响应消息,该数据响应消息的源地址为接收到的数据请求消息中的目的地址,负载为所接收到的数据响应消息中的所有负载的集合;
条件7:数据名称域值为N1且定位地址为车辆节点的定位地址,即定位地址的车辆节点ID不为0;
条件8:所述数据索引表项中的数据块ID集合的并集是数据请求消息的目的地址中的数据块ID集合的最大子集或者超集;
步骤411:如果接入节点选择的所有数据索引表项中的数据块ID集合的并集是数据请求消息的目的地址中的数据块ID集合的超集,那么执行步骤414,否则执行步骤412;
步骤412:接入节点从数据请求消息负载中的数据地址的数据块ID集合中减去所选择的所有索引表项中的数据块ID集合的并集;接入节点将数据请求消息转发到距离接入节点AP1最近的邻居接入节点,执行步骤403;
步骤413:接入节点将数据请求消息转发到距离接入节点AP1最近的邻居接入节点,执行步骤403;
步骤414:如果接入节点创建或者收到数据响应消息,则执行步骤415,否则执行步骤416;
步骤415:接入节点查看数据请求表,选择数据地址为数据响应消息源地址的数据请求表项,然后对于每个数据请求表项,进行如下操作:接入节点用该数据请求表项的定位地址更新数据响应消息的目的地址,从该数据请求表项的接口域转发该数据响应消息,如果数据响应消息负载中的数据块ID集合是数据响应消息的源地址中的数据块ID集合的超集,接入节点则删除该数据请求表项;最后执行步骤414;
步骤416:如果车辆节点V6收到数据响应消息,则执行步骤418,否则执行步骤417;
步骤417:如果接收到数据响应消息的车辆节点在数据响应消息的目的地址的横坐标和纵坐标所确定的位置的一跳范围内,则广播该数据响应消息,执行步骤416,否则将该数据响应消息转发到与数据响应消息目的地址中横坐标和纵坐标所确定的位置距离最近的邻居车辆节点,执行步骤416;
步骤418:车辆节点V6接收到所有数据响应消息后,创建一个数据表,该数据表的表名为N1,然后将数据响应消息中的所有数据表项添加到数据表,同时自己转换为簇成员节点;
步骤419:车辆节点V6执行步骤201~204实现移动切换;
步骤420:结束。
上述过程能够确保车辆节点快速正确地获取所需数据。
有益效果:本发明提供了一种基于位置信息的车载云数据通信方法,车辆节点通过本发明所提供的车载云实现方法能够从距离最近的云成员以单播方式获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的创建数据流程示意图。
图2为本发明所述的移动切换流程示意图。
图3为本发明所述的获取本地数据流程示意图。
图4为本发明所述的获取远程数据流程示意图。
具体实施方式:
本发明提供了一种基于位置信息的车载云数据通信方法,车辆节点通过本发明所提供的车载云实现方法能够从距离最近的云成员以单播方式获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
图1为本发明所述的创建数据流程示意图。所述车载云建立在车载网之上,所述车载网包括接入节点和车辆节点两种节点;车辆节点通过距离自己最近的接入节点实现通信,一个接入节点以及通过该接入节点实现通信的所有车辆节点构成一个子网;一个车辆节点既能够作为数据的提供者,也能够作为数据的消费者;
一种与地理位置相关的数据由一个数据名称定义,一个数据名称由地理坐标和数据ID构成,地理坐标定义与该数据相关的地理位置,数据ID定义数据的种类;一种与地理位置相关的数据被划分为两个以上的数据块,每个数据块由一个数据块ID唯一标识;一个子网内能提供一种与地理位置相关的数据的所有车辆节点构建成一个簇,这个簇由定义该数据的数据名称唯一标识;
车辆节点使用数据地址来获取数据,数据地址由数据名称和数据块ID集合构成;车辆节点或者接入节点由定位地址唯一标识,一个定位地址由定位横坐标、定位纵坐标以及车辆节点ID构成,接入节点的定位地址的车辆节点ID为0,车辆节点的车辆节点ID可以是其硬件ID,例如MAC地址;
车辆节点或者接入节点发送的消息格式由4个部分构成,源地址、目的地址、消息类型和负载;
消息类型如下表所示:
在一个簇中,所有簇成员保存一个数据表,该数据表的表名为该簇的簇名称;一个数据表表项由三个域构成:数据块ID域、,数据块域和数据生命周期域;一个数据表中所有数据表项的数据生命周期都相同;如果一个数据表中的数据表项的数据生命周期衰减为0,则从该数据表中删除该数据表项;如果数据表为空,则删除该数据表;
数据消费者采用数据索引表和数据请求表获取数据;数据索引表用于保存簇成员的信息,数据请求表用于实现数据请求的聚合;
数据索引表中,一个数据索引表项包括数据名称域、数据块ID集合域值、定位地址域值、数据生命周期和簇成员生命周期域;数据请求表中,一个数据请求表项包括数据地址域、定位地址域和接口域;
数据C1由数据名称N1定义,数据名称N1中,地理坐标为(x1,y1),数据ID为CID1,数据C1由N个数据块构成,N取值为自然数,每个数据块由数据块ID ci标识,i=1……N,接入节点AP1位于子网S1中;
车辆节点V1的地理坐标为(x1,y1),它创建数据C1的过程包括如下步骤:
步骤101:开始;
步骤102:车辆节点V1创建一个数据地址和一个定位地址;数据地址中,数据名称域值为N1,数据块ID集合有N个数据块ID ci构成;定位地址中的定位横坐标为x1,定位纵坐标为y1,车辆节点ID为车辆节点V1的车辆节点ID;车辆节点V1发送数据创建消息,该数据创建消息的源地址为构建的定位地址,目的地址为构建的数据地址,消息类型为1,负载为距离参数Hop,其值为初始值;
步骤103:如果接收到数据创建消息的车辆节点位于子网S1中,则执行步骤105,否则执行步骤104;
步骤104:车辆节点丢弃该数据创建消息,执行步骤116;
步骤105:接收到数据创建消息的车辆节点将距离参数Hop递减1,如果距离参数Hop值大于0,则转发该数据创建消息;
步骤106:如果接收到数据创建消息的车辆节点能够提供数据C1的部分数据块,则执行步骤107,否则执行步骤108;
步骤107:车辆节点构建数据创建响应消息,该数据创建响应消息的源地址为自己的定位地址,目的地址为数据创建消息中的源地址,消息类型域值为2,负载为能够提供的部分数据块;车辆节点将该数据创建响应消息发送到与该数据创建响应消息的目的地址中的坐标距离最近的邻居节点;
步骤108:如果与车辆节点V1距离大于一跳的车辆节点接收到数据创建响应消息,则执行步骤109,否则执行步骤110;
步骤109:接收到数据创建响应消息的车辆节点将该数据创建响应消息转发给距离该数据创建响应消息的目的地址中的坐标距离最近的邻居节点,执行步骤108;
步骤110:如果在车辆节点V1一跳范围内的车辆节点接收到数据创建响应消息,则执行步骤111,否则执行步骤112;
步骤111:接收到数据创建响应消息的车辆节点在一跳范围内广播该消息,执行步骤108;
步骤112:车辆节点V1判断所有接收到的数据创建响应消息中的数据块是否能构建成C1,如果能,则执行步骤114,否则执行步骤113;
步骤113:车辆节点V1将参数距离参数Hop的初始值递增1,然后执行步骤102;
步骤114:车辆节点V1创建一个数据表,表名为N1,该数据表包括N个数据表项,每个数据表项中,数据块ID为ci,数据块域值为数据创建响应消息中的数据块域值,数据生命周期为预先设置的生命周期,例如100min;N个数据表项的数据生命周期值都相同;车辆节点V1转换为簇成员节点,对于每个返回数据创建响应消息的车辆节点,车辆节点V1发送一个数据共享消息,数据共享消息源地址为车辆节点V1的定位地址,目的地址为返回数据创建响应消息的车辆节点的定位地址,数据类型为3,负载为创建的数据表,同时,车辆节点向接入节点AP1发送一个数据共享消息,数据共享消息源地址为车辆节点的定位地址,目的地址为接入节点AP1的定位地址,数据类型为3,负载为创建的数据表;
步骤115:车辆节点收到数据共享消息后,变成簇成员同时保存数据共享消息中的数据表;接入节点AP1收到数据共享消息后,变成簇首节点,同时保存数据共享消息中的数据表;
步骤116:结束。
上述过程能够快速建立数据从而车辆节点能够快速正确地获取所需数据。
图2为本发明所述的移动切换流程示意图。在车辆节点V6是一个簇成员,能提供数据C1中的部分数据块或者全部数据块,数据C1由名称地址N1定义的条件下,如果车辆节点V6从子网S1移动到子网S2,子网S2的接入节点为AP2,那么执行下述移动切换操作:
步骤201:开始;
步骤202:车辆节点V6构建一个注册消息,该注册消息的源地址为车辆节点V6的定位地址,目的地址为接入节点AP2的定位地址,消息类型为4,负载为数据名称N1,表名称为N1的数据表中所有表项的数据块ID域值集合以及数据生存时间,然后车辆节点V6发送该注册消息;
步骤203:接入节点AP2收到注册消息后,创建一个数据索引表项,该数据索引表项的数据名称域值为N1,数据块ID集合为注册消息负载中的数据块ID集合域值,数据生命周期域值为注册消息负载中的数据生命周期域值,定位地址域值为注册消息的源地址,簇成员生命周期域值设置为最大初始值,该初始值大于两个信标帧的时间间隔,例如200ms;
步骤204:结束;
上述移动切换过程结束后,子网S2中的车辆节点能够直接从车辆节点V6获取数据C1的数据块;车辆节点V6完成移动切换后,定期向接入节点AP2发送信标消息,该信标消息的源地址为车辆节点V6的定位地址,该定位地址中的地理横坐标和地理纵坐标为车辆节点V6当前的地理横坐标和地理纵坐标;接入节点AP2收到来自车辆节点V6的信标消息后,查找数据索引表中定位地址域值中的车辆节点ID等于信标消息中源地址的车辆节点ID的数据索引表项;接入节点AP2用信标消息中的源地址更新所述数据索引表项中的定位地址域值,同时将数据索引表项中的簇成员生命周期设置为最大值;如果车辆节点V6检测到表名称为N1的数据表项中的数据生命周期到期,则删除该表,同时车辆节点V6不再向接入节点AP2定期发送信标消息;如果一个数据索引表项中数据生命周期域值或者簇成员生命周期域值过期,则该数据索引表项从数据索引表中删除。
上述移动切换过程能够确保车辆节点在移动过程中仍能快速正确地获取所需数据。
图3为本发明所述的获取本地数据流程示意图。在车辆节点V6位于子网S1中,子网S1中的接入节点为AP1,数据C1由数据名称N1定义,数据名称N1中的地理坐标为(x1,y1),数据ID为CID1的条件下,车辆节点V6需要获取数据C1的数据块,所述数据块的数据块ID集合为U,如果满足条件1或者条件2,那么车辆节点V6则根据下述过程获取数据:
条件1:在所有的接入节点中,接入节点AP1与地理坐标(x1,y1)所在的位置距离最近;
条件2:接入节点AP1查看数据索引表中数据名称域值为N1的数据索引表项,所述数据索引表项的数据块ID集合域值的并集是数据块ID集合U的超集;
步骤301:开始;
步骤302:车辆节点V6构建一个数据地址和定位地址,在数据地址中,数据名称域值为N1,数据块ID集合为U,在定位地址中,横坐标和纵坐标为车辆节点V6的地理横坐标和地理纵坐标,车辆节点ID为车辆节点V6的车辆节点ID;车辆节点V6创建一个数据请求消息,该数据请求消息的源地址为构建的定位地址,目的地址为构建的数据地址,消息类型为5,然后车辆节点V6将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点;
步骤303:如果能提供数据C1的簇成员节点接收到数据请求消息,那么执行步骤304,否则执行步骤307;
步骤304:如果该簇成员节点能提供数据请求消息目的数据地址中的数据块ID集合所定义的所有数据块,那么执行步骤305,否则执行步骤306;
步骤305:簇成员节点返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,然后执行步骤314;
步骤306:簇成员节点返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息负载中数据地址中的数据块ID集合中任一个元素的所有数据表项;从数据请求消息目的地址的数据块ID集合中减去数据响应消息中所有数据表项中的数据块ID集合;将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点或者接入节点,执行步骤303;
步骤307:如果接入节点AP1接收到数据请求消息,则执行步骤308,否则执行步骤313;
步骤308:判断接入节点AP1是否有表名称为N1的数据表,如果有,则执行步骤309,否则执行步骤310;
步骤309:接入节点AP1返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为表名称为N1的数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
步骤310:在所有的接入节点中,判断接入节点AP1是否与地理坐标(x1,y1)所在的位置距离最近,如果是,执行步骤311,否则执行步骤312;
步骤311:接入节点AP1发送一个数据生成消息,数据生成消息目的地址为数据请求消息中的目的地址,消息类型为7,消息源地址为接入节点AP1的定位地址;位于坐标(x1,y1)的车辆节点收到数据生成消息后,执行步骤101~步骤116生成数据C1,然后向接入节点发送数据分享消息,数据分享消息负载为表名称为N1的数据表,接收节点AP1收到数据分享消息后,变成簇首节点,保存该数据表,然后返回一个数据响应消息,该数据响应消息的源地址为自己的定位地址,目的地址为车辆节点V6的定位地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
步骤312:接入节点AP1从数据索引表中选择满足下述两个条件的数据索引表项,对于选择的每一个数据索引表项创建一个数据地址,该数据地址的数据名称域值为N1,数据块ID集合为该表项中的数据块ID集合;接入节点AP1发送一个数据请求消息,该数据请求消息的源地址为车辆节点V6的定位地址,目的地址为该数据索引表项中的定位地址,负载为构建的数据地址;目的簇成员节点收到数据请求消息后,返回一个数据响应消息,该数据响应消息的源地址为数据请求消息中的数据地址,目的地址为车辆节点V6的定位地址,负载为数据表中数据块ID域值等于数据请求消息负载中数据地址的数据块ID集合中每一个元素的所有数据表项,执行步骤314;
条件3:数据名称域值为N1;
条件4:所述数据表项中的数据块ID集合的并集是数据块ID集合U的超集;
步骤313:车辆节点接收到数据请求消息后,将数据请求消息转发到距离接入节点AP1最近的邻居车辆节点或者接入节点,执行步骤303;
步骤314:如果车辆节点V6收到数据响应消息,则执行步骤316,否则执行步骤315;
步骤315:如果车辆节点在距离数据响应消息的目的地址的横坐标和纵坐标所确定的位置的一跳范围内,则广播该数据响应消息,执行步骤314,否则将该数据响应消息转发到与数据响应消息目的地址中横坐标和纵坐标所确定的位置距离最近的邻居车辆节点,执行步骤314;
步骤316:车辆节点V6接收到所有数据响应消息后,它创建一个数据表,该数据表的表名为N1,然后将数据响应消息中所有数据表项添加到数据表,同时自己转换为簇成员节点;
步骤317:在所有的接入节点中,判断接入节点AP1是否与地理坐标(x1,y1)所在的位置距离最近,如果是,执行步骤319,否则执行步骤318;
步骤318:车辆节点V6执行步骤201~204实现移动切换;
步骤319:结束。
上述过程能够确保车辆节点快速正确地获取所需数据。
图4为本发明所述的获取远程数据流程示意图。在车辆节点V6位于子网S3中,子网S3中的接入节点为AP3,数据C1由数据名称N1定义,数据名称N1的地理坐标为(x1,y1),数据ID为CID1的条件下,车辆节点V6需要获取数据C1的数据块,所述数据块的数据块ID集合为U,如果满足条件5或者条件6,车辆节点V6则根据下述过程获取数据:
条件5:在所有的接入节点中,接入节点AP1距离地理坐标为(x1,y1)最近,且接入节点AP3没有数据名称为N1的数据检索表项;
条件6:在所有的接入节点中,接入节点AP1距离地理坐标为(x1,y1)最近,且接入节点AP3有数据名称为N1的数据检索表项,所述数据检索表项的数据块ID集合域值的并集是数据块ID集合U的子集;
步骤401:开始;
步骤402:车辆节点V6构建一个数据地址和一个定位地址,在数据地址中,数据名称域值为N1,数据块ID集合为U,在定位地址中,横坐标和纵坐标为车辆节点V6的地理横坐标和地理纵坐标,车辆节点ID为车辆节点V6的车辆节点ID;车辆节点V6创建一个数据请求消息,该数据请求消息的源地址为自己的定位地址,目的地址为构建的数据地址,消息类型为5,车辆节点V6将数据请求消息转发到距离所在子网S3的接入节点AP3最近的邻居车辆节点;
步骤403:接入节点从接口f接收到数据请求消息后,在数据请求表中创建一个数据请求表项,该数据请求表项的数据地址为数据请求消息的目的地址,定位地址为数据请求消息的源地址,接口域值为f;
步骤404:如果接入节点在数据请求表中只有一项数据地址等于数据请求消息的目的地址的数据请求表项,则执行步骤405,否则执行步骤414;
步骤405:判断接入节点是否为接入节点AP1,如果是,执行步骤406,否则执行步骤409;
步骤406:判断接入节点AP1是否有表名为N1的数据表,如果是,执行步骤407,否则执行步骤408;
步骤407:接入节点AP1创建一个数据响应消息,该数据响应消息的源地址为数据请求表中的目的地址,目的地址为数据请求消息的源地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤414;
步骤408:接入节点AP1发送一个数据生成消息,数据生成消息目的地址为数据请求消息中的目的地址,消息类型为7,消息源地址为接入节点AP1的定位地址;位于坐标(x1,y1)的车辆节点收到数据生成消息后,执行步骤101~步骤116生成数据C1,然后向接入节点AP1发送数据分享消息,数据分享消息负载为表名称为N1的数据表,接收节点AP1收到数据分享消息后,变成簇首节点,保存该数据表;接入节点AP1创建一个数据响应消息,该数据响应消息的源地址为数据请求表中的目的地址,目的地址为数据请求消息的源地址,消息类型为6,负载为数据表中数据块ID域值等于数据请求消息目的地址中的数据块ID集合中每一个元素的所有数据表项,执行步骤414;
步骤409:判断接收到数据请求消息中的接入节点在数据索引表中是否存在数据名称为N1的数据索引表项,如果是,执行步骤410,否则执行步骤413;
步骤410:接入节点从数据索引表中选择满足下述条件7和8的数据索引表项,对于选择的每一个数据索引表项创建一个数据地址,该数据地址的数据名称域值为N1,数据块ID集合为该数据索引表项中的数据块ID集合;接入节点发送一个数据请求消息,该数据请求消息的源地址为车辆节点V6的定位地址,目的地址为该数据索引表项中的定位地址,负载为构建的数据地址;目的簇成员节点收到数据请求消息后,发送一个数据响应消息,该数据响应消息的源地址为数据请求消息中的数据地址,目的地址为接入节点的定位地址,负载为数据表中数据块ID域值等于数据请求消息负载中的数据地址中的数据块ID集合中每一个元素的数据表项;接入节点收到所有的数据响应消息后,构建一个数据响应消息,该数据响应消息的源地址为接收到的数据请求消息中的目的地址,负载为所接收到的数据响应消息中的所有负载的集合;
条件7:数据名称域值为N1且定位地址为车辆节点的定位地址,即定位地址的车辆节点ID不为0;
条件8:所述数据索引表项中的数据块ID集合的并集是数据请求消息的目的地址中的数据块ID集合的最大子集或者超集;
步骤411:如果接入节点选择的所有数据索引表项中的数据块ID集合的并集是数据请求消息的目的地址中的数据块ID集合的超集,那么执行步骤414,否则执行步骤412;
步骤412:接入节点从数据请求消息负载中的数据地址的数据块ID集合中减去所选择的所有索引表项中的数据块ID集合的并集;接入节点将数据请求消息转发到距离接入节点AP1最近的邻居接入节点,执行步骤403;
步骤413:接入节点将数据请求消息转发到距离接入节点AP1最近的邻居接入节点,执行步骤403;
步骤414:如果接入节点创建或者收到数据响应消息,则执行步骤415,否则执行步骤416;
步骤415:接入节点查看数据请求表,选择数据地址为数据响应消息源地址的数据请求表项,然后对于每个数据请求表项,进行如下操作:接入节点用该数据请求表项的定位地址更新数据响应消息的目的地址,从该数据请求表项的接口域转发该数据响应消息,如果数据响应消息负载中的数据块ID集合是数据响应消息的源地址中的数据块ID集合的超集,接入节点则删除该数据请求表项;最后执行步骤414;
步骤416:如果车辆节点V6收到数据响应消息,则执行步骤418,否则执行步骤417;
步骤417:如果接收到数据响应消息的车辆节点在数据响应消息的目的地址的横坐标和纵坐标所确定的位置的一跳范围内,则广播该数据响应消息,执行步骤41
一种基于定位信息的车载云数据通信方法专利购买费用说明
Q:办理专利转让的流程及所需资料
A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。
1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。
2:按规定缴纳著录项目变更手续费。
3:同时提交相关证明文件原件。
4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。
Q:专利著录项目变更费用如何缴交
A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式
Q:专利转让变更,多久能出结果
A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。
动态评分
0.0