[0005] 发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于车载云的网络数据通信方法。
[0006] 技术方案:本发明公开了一种基于车载云的网络数据通信方法,所述网络包括接入节点和车辆节点,每个接入节点的地理坐标具有唯一性;一个接入节点和两个以上的车辆节点构成一个域,所述车辆节点在所有的接入节点中距离自己所在域的接入节点距离最近;
[0007] 车辆节点通过消息实现通信,一个消息包括名称集合域、数据坐标域、源坐标域、目的坐标域和负载;
[0008] 一种数据由一个名称唯一标识;对于每种数据,接入节点维护一个数据表,该数据表的表名等于标识该种数据的名称;一个数据表项包含坐标域、数据域和生命周期域,其中,生命周期域值为预先设置的值,例如500ms;
[0009] 如果接入节点AP1位于域D1中,接入节点AP1通过下述过程构建车载云:
[0010] 步骤101:开始;
[0011] 步骤102:接入节点AP1发送一个创建消息,该创建消息的名称集合域值为创建的数据的名称集合,数据坐标为空,源坐标为接入节点AP1的坐标,目的坐标为空,负载为空;
[0012] 步骤103:车辆节点收到该创建消息后,判断该车辆节点是否位于域D1中,是则执行步骤104,否则执行步骤107;
[0013] 步骤104:判断位于域D1中的车辆节点是否能提供接收到的创建消息名称集合中名称所标识的一种或者两种以上的数据,如果能,则执行步骤105,否则执行步骤106;
[0014] 步骤105:接收到创建消息的车辆节点针对每个能提供的数据创建一个二元组<名称,数据>,其中名称为标识所提供数据的名称,数据为自己所能提供的数据,车辆节点发送一个云数据消息,该云数据消息的名称集合域值为所提供的数据的名称的集合,数据坐标为该车辆节点的坐标,源坐标为该车辆节点的坐标,目的坐标为接收到的创建消息的源坐标,负载为构建的二元组;
[0015] 步骤106:接收到创建消息的车辆节点将创建消息转发给邻居车辆节点,执行步骤103;
[0016] 步骤107:判断是否接入节点AP1接收到云数据消息,如果是则执行步骤 109,否则执行步骤108;
[0017] 步骤108:车辆节点接收到云数据消息后,将该云数据消息转发到距离该云数据消息中的目的坐标最近的车辆节点或者接入节点AP1,执行步骤107;如果存在两个以上距离最近的车辆节点或者接入节点AP1,则将该云数据消息转发到接入节点AP1;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该云数据消息转发到该车辆节点;
[0018] 步骤109:接入节点AP1接收到云数据消息后,对于云数据消息负载中的每个二元组执行下述操作:接入节点AP1查看自己的数据表,如果任何一个数据表的表名都不等于该二元组的名称,接入节点AP1则创建一个数据表,该数据表的表名等于该二元组的名称,否则接入节点AP1不创建任何数据表;然后,接入节点AP1在该数据表中创建一个数据表项,该数据表项的坐标域值等于该云数据消息的数据坐标,数据域值等于该二元组中的数据值,生命周期为预定值;
[0019] 步骤110:接入节点AP1发送一个分享消息,该分享消息的名称集合域值为空,数据坐标为空,源坐标为接入节点AP1的坐标,目的坐标为空,负载为保存的数据表;接入节点AP1将自己标记为一个云成员;
[0020] 步骤111:判断接收到分享消息的车辆节点是否位于域D1中,如果是则执行步骤112,否则执行步骤113;
[0021] 步骤112:接收到分享消息的车辆节点保存分享消息负载中的所有数据表,将自己标记为云成员;
[0022] 步骤113:结束。
[0023] 多个车辆节点通过上述过程能够合作共同构建车载云,车载云成员能够分享数据,这样,车辆节点能够从距离最近的车载云成员获取快速获取数据,从而降低了数据通信延迟和代价。
[0024] 本发明所述方法中,在车辆节点V5位于域D1中,域D1中的接入节点为接入节点AP1,接入节点AP1的坐标为(x1,y1),车辆节点V5准备获取坐标为 (x2,y2)且名称集合为NS1中所有名称所标识的数据的条件下,如果坐标(x2, y2)位于域D1中,车辆节点V5则执行下述过程获取数据:
[0025] 步骤201:开始;
[0026] 步骤202:车辆节点V5构建请求消息,该请求消息的名称集合域值等于名称集合NS1,数据坐标为(x2,y2),源坐标为车辆节点V5当前的坐标,目的坐标为(x1,y1),将该请求消息转发到距离目的坐标最近的邻居车辆节点或者接入节点AP1;如果存在两个以上距离最近的车辆节点或者接入节点AP1,则将该请求消息转发到接入节点AP1;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该请求消息转发到该车辆节点;
[0027] 步骤203:判断是否接入节点AP1接收到该请求消息,如果是则执行步骤 207,否则执行步骤204;
[0028] 步骤204:判断接收到请求消息的车辆节点是否能提供坐标为(x2,y2)且请求消息名称集合中所有名称所标识的数据,如果是则执行步骤205,否则执行步骤206;
[0029] 步骤205:接收到请求消息的车辆节点针对请求消息名称集合中的每个名称创建一个二元组<名称,数据表项>,其中,二元组中的名称等于名称集合中的该名称,数据表项为表名等于二元组中的名称的数据表中的一个数据表项,该数据表项的坐标域值等于该请求消息的数据坐标;该车辆节点发送一个响应消息,响应消息中名称集合和数据坐标等于接收到的请求消息的名称集合和数据坐标,源坐标为该车辆节点的坐标,目的坐标为该请求消息的源坐标,负载为所有创建的二元组,执行步骤208;
[0030] 步骤206:接收到请求消息的车辆节点将该请求消息转发到距离目的坐标最近的邻居车辆节点或者接入节点AP1,执行步骤203;如果存在两个以上距离最近的车辆节点或者接入节点AP1,则将该请求消息转发到接入节点AP1;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该请求消息转发到该车辆节点;
[0031] 步骤207:接收到请求消息的接入节点AP1针对请求消息名称集合中的每个名称创建一个二元组<名称,数据表项>,其中,二元组中的名称等于名称集合中的该名称,数据表项为表名等于名称集合中该名称的数据表中坐标域值为该请求消息的数据坐标的数据表项;接入节点AP1发送一个响应消息,响应消息中名称集合和数据坐标等于接收到的请求消息的名称集合和数据坐标,源坐标为接入节点AP1的坐标,目的坐标为该请求消息的源坐标,负载为所提供的数据表项;
[0032] 步骤208:判断是否车辆节点V5接收到响应消息,如果是则执行步骤210,否则执行步骤209;
[0033] 步骤209:接收到响应消息的车辆节点将该响应消息转发到距离目的坐标最近的邻居车辆节点,执行步骤208;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该响应消息转发到该车辆节点;
[0034] 步骤210:车辆节点V5接收到响应消息后,针对响应消息负载中的每个二元组执行下述操作:如果车辆节点V5没有表名等于该二元组中的名称的数据表,则创建一个数据表,该数据表的表名为该二元组中的名称,否则车辆节点V5则不创建任何数据表;然后,车辆节点V5将该二元组中的数据表项加入到名表为该二元组中的名称的数据表中;
[0035] 步骤211:结束。
[0036] 由于车载云成员遍布整个域并且能够分享数据和提供数据,这样,车辆节点能够从域内距离最近的车载云成员以单播方式获取快速获取数据,从而降低了数据通信延迟和代价。
[0037] 本发明所述方法中,每个接入节点维护一个请求表,一个请求表项包含名称集合域、数据坐标域、源坐标域以及序列号域;
[0038] 在车辆节点V6位于域D3中,域D3中的接入节点为接入节点AP3,接入节点AP3的坐标为(x3,y3),如果坐标(x2,y2)位于域D1中,域D1中的接入节点为接入节点AP1,接入节点AP1的坐标为(x1,y1)的条件下,车辆节点V6准备获取坐标为(x2,y2)且名称集合为NS1中所有名称所标识的数据,则执行下述过程获取数据:
[0039] 步骤301:开始;
[0040] 步骤302:车辆节点V6构建请求消息,该请求消息的名称集合域值等于名称集合NS1,数据坐标为(x2,y2),源坐标为车辆节点V6当前的坐标,目的坐标为(x3,y3),负载为序列号,该序列号为随机数,将该请求消息转发到距离目的坐标最近的邻居车辆节点或者接入节点AP3;如果存在两个以上距离最近的车辆节点或者接入节点AP3,则将该请求消息转发到接入节点AP3;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该请求消息转发到该车辆节点;
[0041] 步骤303:判断是否接入节点AP3接收到该请求消息,如果是则执行步骤 307,否则执行步骤304;
[0042] 步骤304:判断接收到请求消息的车辆节点是否能提供坐标为(x2,y2)且请求消息名称集合中所有名称所标识的数据,如果是则执行步骤305,否则执行步骤306;
[0043] 步骤305:接收到请求消息的车辆节点针对请求消息名称集合中的每个名称创建一个二元组<名称,数据表项>,其中,二元组中的名称等于名称集合中的该名称,数据表项为表名等于二元组中的名称的数据表中的一个数据表项,该数据表项的坐标域值等于该请求消息的数据坐标;该车辆节点发送一个响应消息,响应消息中名称集合和数据坐标等于接收到的请求消息的名称集合和数据坐标,源坐标为该车辆节点的坐标,目的坐标为该请求消息的源坐标,负载为所有创建的二元组,执行步骤316;
[0044] 步骤306:接收到请求消息的车辆节点将该请求消息转发到距离目的坐标最近的邻居车辆节点或者接入节点AP3,执行步骤303;如果存在两个以上距离最近的车辆节点或者接入节点AP3,则将该请求消息转发到接入节点AP3;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该请求消息转发到该车辆节点;
[0045] 步骤307:接入节点AP3接收到请求消息后,在请求表中创建一个请求表项,该请求表项的名称集合域值、数据坐标域值、源坐标域值和序列号分别等于该请求消息中的名称集合域值、数据坐标域值、源坐标域值和序列号;如果请求表中只存在一个请求表项,该请求表项的名称集合域值和数据坐标域值等于该请求消息中的名称集合域值和数据域值,则执行步骤308,否则执行步骤313;
[0046] 步骤308:接入节点AP3将接收到的请求消息中的源坐标更新为接入节点 AP3的坐标,将目的坐标更新为距离数据坐标最近的接入节点AP1的坐标,该请求消息转发到距离目的坐标最近的接入节点;如果存在两个以上距离最近的接入节点,则随机选取一个接入节点,将该请求消息转发到该接入节点;
[0047] 步骤309:判断是否接入节点AP1接收到请求消息,如果是则执行步骤312,否则执行步骤310;
[0048] 步骤310:接收到请求消息的接入节点在请求表中创建一个请求表项,该请求表项的名称集合域值、数据坐标域值、源坐标域值和序列号分别等于该请求消息中的名称集合域值、数据坐标域值、源坐标域值和序列号;如果请求表中只存在一个请求表项,该请求表项的名称集合域值和数据坐标域值等于该请求消息中的名称集合域值和数据域值,则执行步骤311,否则执行步骤313;
[0049] 步骤311:接收到请求消息的接入节点将该请求消息转发到距离目的坐标最近的接入节点,执行步骤309;如果存在两个以上距离最近的接入节点,则随机选取一个接入节点,将该请求消息转发到该接入节点;
[0050] 步骤312:接入节点AP1接收到请求消息后,针对请求消息名称集合中的每个名称创建一个二元组<名称,数据表项>,其中,二元组中的名称等于名称集合中的该名称,数据表项为表名等于名称集合中该名称的数据表中坐标域值为该请求消息的数据坐标的数据表项;接入节点AP1创建一个响应消息,响应消息中名称集合和数据坐标等于接收到的请求消息的名称集合和数据坐标,源坐标为接入节点AP1的坐标,目的坐标为该请求消息的源坐标,负载为所有创建的二元组;
[0051] 步骤313:创建或者接收到响应消息的接入节点选择所有名称集合域值和数据坐标域值等于该响应消息的名称集合域值和数据坐标域值的请求表项,对于每个请求表项执行下述操作:该接入节点将响应消息的目的坐标更新为该请求表项的源坐标,如果该响应消息的目的坐标位于该接入节点所在的域内,则执行步骤 315,否则执行步骤314;
[0052] 步骤314:创建或者接收到响应消息的接入节点将该响应消息转发到距离目的坐标最近的接入节点,执行步骤313;如果存在两个以上距离最近的接入节点, 则随机选取一个接入节点,将该响应消息转发到该接入节点;
[0053] 步骤315:创建或者接收到响应消息的接入节点将该响应消息转发到距离目的坐标最近的车辆节点;
[0054] 步骤316:判断是否车辆节点V6接收到响应消息,如果是则执行步骤318,否则执行步骤317;
[0055] 步骤317:接收到响应消息的车辆节点将该响应消息转发到距离目的坐标最近的邻居车辆节点,执行步骤316;如果存在两个以上距离最近的邻居车辆节点, 则随机选取一个邻居车辆节点,将该请求消息转发到该邻居车辆节点;
[0056] 步骤318:车辆节点V6接收到响应消息后,针对响应消息负载中的每个二元组执行下述操作:如果车辆节点V6没有表名等于该二元组中的名称的数据表,则创建一个数据表,该数据表的表名为该二元组中的名称,将该二元组中的数据表项加入到名表为该二元组中的名称的数据表中;
[0057] 步骤319:结束。
[0058] 由于车载云成员遍布多个域并且车载云成员能够分享数据和提供数据,这样,车辆节点能够从目的坐标所在域中距离最近的车载云成员以单播方式获取快速获取数据,从而降低了数据通信延迟和代价。
[0059] 本发明所述方法中,车辆节点V6发送请求消息后,如果其坐标发生变化,则执行下述更新操作:
[0060] 步骤401:开始;
[0061] 步骤402:车辆节点V6构建更新消息,该更新消息的名称集合域值等于名称集合NS1,数据坐标为(x2,y2),源坐标为车辆节点V6当前的坐标,目的坐标为(x3,y3),负载为发送的请求消息中的序列号,将该更新消息转发到距离目的坐标最近的邻居车辆节点或者接入节点AP3;如果存在两个以上距离最近的车辆节点或者接入节点AP3,则将该更新消息转发到接入节点AP3;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该更新消息转发到该车辆节点;
[0062] 步骤403:判断是否接入节点AP3接收到该更新消息,如果是则执行步骤 405,否则执行步骤404;
[0063] 步骤404:接收到更新消息的车辆节点将该更新消息转发到距离目的坐标最近的邻居车辆节点或者接入节点AP3,执行步骤403;如果存在两个以上距离最近的车辆节点或者接入节点AP3,则将该更新消息转发到接入节点AP3;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该更新消息转发到该车辆节点;
[0064] 步骤405:接入节点AP3接收到更新消息后,选择一个请求表项,该请求表项的名称集合域值、数据坐标域值和序列号分别等于该更新消息中的名称集合域值、数据坐标域值和序列号;将该请求表项的源坐标更新为该更新消息中的源坐标;
[0065] 步骤406:结束。
[0066] 车辆节点通过上述过程能够快速更新自己的新坐标从而确保数据通信的正确性。
[0067] 本发明所述方法中,T1时刻,车辆节点V6位于域D3中,域D3中的接入节点为接入节点AP3,接入节点AP3的坐标为(x3,y3),车辆节点V6发送了请求消息;T2时刻,车辆节点V6位于域D4中,域D4中的接入节点为接入节点 AP4,接入节点AP4的坐标为(x4,y4),如果车辆节点V6在时刻T2时刻之前没有接收到响应消息,则执行下述切换操作:
[0068] 步骤501:开始;
[0069] 步骤502:车辆节点V6构建切换消息,该切换消息的名称集合和数据坐标分别等于发送的请求消息中名称集合和数据坐标,源坐标为车辆节点V6当前的坐标,目的坐标为(x4,y4),负载为发送的请求消息中的序列号和接入节点AP3 的坐标(x3,y3),将该切换消息转发到距离目的坐标最近的邻居车辆节点或者接入节点AP4;如果存在两个以上距离最近的车辆节点或者接入节点AP4,则将该切换消息转发到接入节点AP4;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该切换消息转发到该车辆节点;
[0070] 步骤503:判断是否接入节点AP4接收到该切换消息,如果是则执行步骤 505,否则执行步骤504;
[0071] 步骤504:接收到切换消息的车辆节点将该切换消息转发到距离目的坐标最近的邻居车辆节点或者接入节点AP4,执行步骤503;如果存在两个以上距离最近的车辆节点或者接入节点AP4,则将该切换消息转发到接入节点AP4;如果存在两个以上距离最近的车辆节点,则随机选取一个车辆节点,将该切换消息转发到该车辆节点;
[0072] 步骤505:接入节点AP4接收到切换消息后,创建一个请求表项,该请求表项的名称集合域值、数据坐标域值、源坐标和序列号分别等于该切换消息中的名称集合域值、数据坐标域值、源坐标和序列号;接入节点AP4将接收到的切换消息中的源坐标更新为自己的坐标,目的坐标更新为该切换消息负载中的坐标,将该切换消息转发到距离目的坐标最近的接入节点;
[0073] 步骤506:判断是否接入节点AP3接收到该切换消息,如果是则执行步骤 508,否则执行步骤507;
[0074] 步骤507:接收到切换消息的接入节点将该切换消息转发到距离目的坐标最近的邻居接入节点,执行步骤506;
[0075] 步骤508:接入节点AP3接收到切换消息后,选择一个请求表项,该请求表项的序列号等于该切换消息负载中的序列号;如果该切换消息的数据坐标位于域 D4内,或者存在一个请求表项,该请求表项的名称集合域和数据坐标域分别等于切换消息的名称集合和数据坐标且源坐标域等于该切换消息的源坐标,则执行步骤509,否则执行步骤510;
[0076] 步骤509:接入节点AP3选择一个请求表项,该请求表项的序列号等于该切换消息负载中的序列号,删除该请求表项;执行步骤511;
[0077] 步骤510:接入节点AP3选择一个请求表项,该请求表项的序列号等于该切换消息负载中的序列号,将该请求表项的源坐标更新为该切换消息中的源坐标;
[0078] 步骤511:结束。
[0079] 车辆节点通过上述过程能够快速实现移动切换从而避免了车辆节点在移动过程中引起的丢包率,确保了车辆节点在移动过程中仍能正确获取数据,从而确保了数据通信的正确性和连续性。
[0080] 有益效果:本发明提供了一种基于车载云的网络数据通信方法,车辆节点通过本发明所提供的车载云实现方法能够从距离最近的云成员以单播方式获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。