1.一种智能车载网的数据传输实现方法,其特征在于,所述车载网包括接入节点、服务器和车辆节点三种节点,一个服务器与一个接入节点集成在一起,一个接入节点具有唯一的地理坐标,一个接入节点和与其集成在一起的服务器共享同一个地理坐标;一个接入节点、与该接入节点集成在一起的服务器以及符合条件1的车辆节点构成一个域;
条件1:在车载网的所有接入节点中,车辆节点与该接入节点的距离最近;
一种数据由一个数据类型唯一确定;
一个接入节点具有一个无线接口和两个以上有线接口,接入节点通过无线接口与车辆节点进行通信,通过有线接口与接入节点链路相连;一个接入节点保存所有邻居接入节点的地理坐标;
车辆节点通过消息进行通信,一个消息包含名字域和负载域,一个名字包含源地理坐标域、目的地理坐标域、命令域、跳数域和数据类型域;源地理坐标域为发送消息的车辆节点、服务器或者接入节点的地理坐标,目的地理坐标为目标接入节点、服务器或者车辆节点的地理坐标,命令域的定义如表1所示,跳数域定义了一个消息的传输范围,跳数域只有在目的地理坐标域值为0或者命令域值为5的情况下才有效,跳数域的初始值为预先设置;数据类型域定义了目标数据;如果目的地理坐标域值为0,则跳数域定义的传输范围内的所有接入节点或者服务器均为目标接入节点或者服务器;
表1:
命令类型 命令域值
注册命令 1
发布命令 2
删除命令 3
获取数据命令 4
返回数据命令 5
获取数据成功命令 6
一个服务器保存一个数据表,一个数据表项包含数据类型域、数据值域和生命周期域,如果一个数据表项的生命周期域衰减为0,则将其从数据表中删除;
一个服务器保存一个转发表,一个转发表项包含数据类型域和地理坐标域,数据类型域标识一个类型的数据,地理坐标域为保存数据类型域定义的数据的服务器的地理坐标;
在数据C1由数据类型CY1唯一标识,域D1中的接入节点为AP1,与接入节点AP1集成在一起的服务器为S1,接入节点AP1的地理坐标为(x1,y1)的条件下,如果车辆节点V1位于域D1中并产生了数据C1,车辆节点V1执行下述注册过程:步骤101:开始;
步骤102:车辆节点V1构建一个名字N1,在名字N1中,源地理坐标为车辆节点V1当前的地理坐标,目的地理坐标为(x1,y1),命令域值为1,跳数域值为0,数据类型域值为CY1;车辆节点V1发送一个消息,该消息的名字域值为名字N1,负载域值为数据C1;
步骤103:如果接入节点AP1接收到名字为N1且数据为C1的消息,则将该消息转发给服务器S1并执行步骤107,否则执行步骤104;
步骤104:如果域D1中的车辆节点E1从车辆节点E2接收到名字为N1且数据为C1的消息且满足条件2,则执行步骤105,否则执行步骤106;
条件2:车辆节点E1的当前地理坐标与名字N1中的目的地理坐标的距离小于车辆节点E2的当前地理坐标与名字N1中的目的地理坐标的距离;
步骤105:车辆节点E1则将接收到的消息转发到邻居节点,执行步骤103;
步骤106:车辆节点E1丢弃接收到的消息;执行步骤103;
步骤107:服务器S1接收到名字为N1且数据为C1的消息后,在数据表中创建一个数据表项,该数据表项的数据类型为名字N1中的数据类型,数据值为数据C1,生命周期为最大生命周期;
步骤108:如果服务器S1检测到在数据表中只有一个数据表项的数据类型为CY1,则执行步骤109,否则执行步骤112;
步骤109:服务器S1创建一个名字N2,名字N2中,源地理坐标为服务器S1的地理坐标,目的地理坐标为0,命令域值为2,跳数域值为预先设定的值,数据类型域值为CY1;服务器S1构建一个消息,该消息的名字域值为名字N2,负载域值为空,服务器S1将该消息转发给接入节点AP1,接入节点AP1接收到该消息后,从每个与接入节点连接的有线接口发送该消息;
步骤110:接入节点接收到名字域值为N2的消息后,将该消息转发给集成在一起的服务器,该服务器在转发表中创建一个转发表项,该转发表项的数据类型域值为名字N2的数据类型域值,地理坐标为名字N2中的源地理坐标;该接入节点将名字N2中的跳数域值递减1,如果跳数域值的值不等于0,则执行步骤111,否则执行步骤112;
步骤111:接收到名字域值为N2的消息的接入节点从除了接收到该消息的接口之外的所有与接入节点连接的有线接口发送该消息,执行步骤110;
步骤112:结束。
2.根据权利要求1所述的一种智能车载网的数据传输实现方法,其特征在于,如果服务器S1检测到数据表中的一个数据表项的生命周期衰减为0,该数据表项的数据类型为CY1,那么从数据表中删除该数据表项;如果服务器S1检测到此时数据表中没有数据类型为CY1的数据表项,服务器S1则执行转发表更新过程:步骤201:开始;
步骤202:服务器S1创建一个名字N3,名字N3中,源地理坐标为服务器S1的地理坐标,目的地理坐标为0,命令域值为3,跳数域值为预先设定的值,数据类型域值为CY1;服务器S1构建一个消息,该消息的名字域值为名字N3,负载域值为空,服务器S1将该消息转发给集成在一起的接入节点AP1,接入节点AP1接收到该消息后,从每个与接入节点连接的有线接口发送该消息;
步骤203:接入节点接收到名字域值为N3的消息后,将该消息转发给集成在一起的服务器,该服务器从转发表中删除数据类型域值等于名字N3中的数据类型域值且地理坐标域值为名字N3中的源地理坐标域值的转发表项;该接入节点将名字N3中的跳数域值递减1,如果跳数域值的值不等于0,则执行步骤204,否则执行步骤205;
步骤204:接收到名字域值为N3的消息的接入节点从除了接收到该消息的接口之外的所有与接入节点连接的有线接口发送该消息,执行步骤203;
步骤205:结束。
3.根据权利要求2所述的一种智能车载网的数据传输实现方法,其特征在于,在数据C1由数据类型CY1唯一标识,域D1中的接入节点为AP1,与接入节点AP1集成在一起的服务器为S1,接入节点AP1的地理坐标为(x1,y1),服务器S1的数据表中存在数据类型为CY1的数据表项的条件下,如果车辆节点V2位于域D1,其地理坐标为(x2,y2),车辆节点V2通过下述过程获取数据C1:步骤301:开始;
步骤302:车辆节点V2构建一个名字N4,在名字N4中,源地理坐标为地理坐标(x2,y2),目的地理坐标为(x1,y1),命令域值为4,跳数域值为0,数据类型域值为CY1;车辆节点V2发送一个消息,该消息的名字域值为名字N4,负载域值为空;
步骤303:如果接入节点AP1接收到名字为N4的消息,则将该消息转发给服务器S1,执行步骤309;否则执行步骤304;
步骤304:如果接收到名字为N4的消息的车辆节点能够提供数据C1,则执行步骤305,否则执行步骤306;
步骤305:接收到名字为N4的消息的车辆节点构建名字N5,在名字N5中,源地理坐标为(0,0),目的地理坐标为(x2,y2),命令域值为5,跳数域值为初始值,数据类型域值为CY1;该车辆节点发送一个消息,该消息的名字域值为名字N5,负载域值为数据C1,执行步骤310;
步骤306:如果接收到名字为N4的消息的车辆节点从车辆节点E3接收到该消息且该车辆节点与名字N4中的目的地理坐标的距离小于车辆节点E3与名字N4中的目的地理坐标的距离,则执行步骤307,否则执行步骤308;
步骤307:接收到名字为N4的消息的车辆节点将该消息转发到邻居车辆节点或者邻居接入节点,执行步骤303;
步骤308:接收到名字为N4的消息的车辆节点丢弃该消息,执行步骤303;
步骤309:服务器S1查看数据表并选择数据类型等于名字N4的数据类型的数据表项,服务器S1构建名字N5,在名字N5中,源地理坐标为(0,0),目的地理坐标为(x2,y2),命令域值为5,跳数域值为初始值,数据类型域值为CY1;服务器S1构建一个消息,该消息的名字域值为名字N5,负载域值为数据表项中的数据值,即数据C1,然后服务器S1将该消息转发给接入节点AP1,接入节点AP1从无线接口发送该消息;
步骤310:如果车辆节点V2接收到名字为N5的消息,则执行步骤314;否则执行步骤311;
步骤311:如果接收到名字为N5的消息的车辆节点从车辆节点E4接收到该消息且该车辆节点与名字N5中的目的地理坐标的距离小于车辆节点E4与名字N5中的目的地理坐标的距离,则执行步骤313,否则执行步骤312;
步骤312:接收到名字为N5的消息的车辆节点丢弃该消息,执行步骤310;
步骤313:接收到名字为N5的消息的车辆节点将该消息转发到邻居车辆节点,如果该车辆节点位于名字N5的目的地理坐标所在位置的一跳范围内,则执行步骤315,否则执行步骤
310;
步骤314:车辆节点V2收到名字为N5的消息后,保存该消息负载中的数据C1;车辆节点V2构建名字N6,在名字N6中,源地理坐标为(x2,y2),目的地理坐标为0,命令域值为6,跳数域值为1,数据类型域值为CY1;车辆节点发送一个消息,该消息的名字域值为名字N5,负载域值为空,执行步骤319;
步骤315:如果接收到名字为N5的消息的车辆节点在预定时间内接收到名字为N6的消息,则执行步骤319,否则执行步骤316;
步骤316:接收到名字为N5的消息的车辆节点将名字N5中的跳数值递减1,如果此时名字N5中的跳数值等于0,则执行步骤319,否则执行步骤317;
步骤317:接收到名字为N5的消息的车辆节点将该消息转发到邻居车辆节点;
步骤318:如果车辆节点V2接收到名字为N5的消息,则执行步骤314,否则执行步骤315;
步骤319:结束。
4.根据权利要求3所述的一种智能车载网的数据传输实现方法,其特征在于,一个服务器保存一个请求表,每个请求表项包含数据类型域和名字域;在数据C1由数据类型CY1唯一标识,域D5中的接入节点为AP5,与接入节点AP1集成在一起的服务器为S5,接入节点AP5的地理坐标为(x5,y5),服务器S5的数据表中不存在数据类型为CY1的数据表项但是在转发表至少存在一项数据类型为CY1的转发表项的条件下,如果车辆节点V4位于域D5,其地理坐标为(x4,y4),车辆节点V4通过下述过程获取数据C1:步骤401:开始;
步骤402:车辆节点V4构建一个名字A1,在名字A1中,源地理坐标为地理坐标(x4,y4),目的地理坐标为(x5,y5),命令域值为4,跳数域值为0,数据类型域值为CY1;车辆节点V4发送一个消息,该消息的名字域值为名字A1,负载域值为空;
步骤403:如果车辆节点接收到名字为A1的消息,则执行步骤404;否则执行步骤409;
步骤404:如果接收到名字为A1的消息的车辆节点能够提供数据C1,则执行步骤405,否则执行步骤406;
步骤405:接收到名字为A1的消息的车辆节点构建名字A2,在名字A2中,源地理坐标为(0,0),目的地理坐标为(x4,y4),命令域值为5,跳数域值为初始值,数据类型域值为CY1;该车辆节点发送一个消息,该消息的名字域值为名字A2,负载域值为数据C1,执行步骤413;
步骤406:如果接收到名字为A1的消息的车辆节点从车辆节点H1接收到该消息且该车辆节点与名字A1中的目的地理坐标的距离小于车辆节点H1与名字A1中的目的地理坐标的距离,则执行步骤407,否则执行步骤408;
步骤407:接收到名字为A1的消息的车辆节点将该消息转发到邻居车辆节点或者邻居接入节点,执行步骤403;
步骤408:接收到名字为A1的消息的车辆节点丢弃该消息,执行步骤403;
步骤409:接收到名字为A1的消息的接入节点查看请求表,如果不存在数据类型为名字A1中的数据类型且名字域值为名字A1的请求表项,则该接入节点创建一个请求表项,该请求表项的数据类型为名字A1中的数据类型且名字域值为名字A1;该接入节点将接收到的消息转发给与自己集成在一起的服务器,服务器收到该消息后查看自己的数据表,如果服务器的数据表中存在数据类型域值等于名字A1中的数据类型的数据表项,则执行步骤410,否则执行步骤411;
步骤410:服务器查看请求表并选择所有数据类型域值为名字A1中的数据类型值的请求表项,对于每个选择的请求表项,服务器执行下述操作:服务器构建一个名字,在该名字中,源地理坐标为(0,0),目的地理坐标为选择的请求表项的名字域值中的源地理坐标,命令域值为5,跳数域值为初始值,数据类型域值为名字A1中的数据类型;服务器构建一个消息,该消息的名字域值为构建的名字,负载域值为数据类型域值等于名字A1中的数据类型的数据表项的数据值;服务器将构建的消息转发给集成在一起的接入节点;接入节点收到该消息后,如果该消息的名字域值中的目的地理坐标属于该接入节点所在的域,接入节点则从无线接口转发该消息,否则接入节点计算邻居接入节点与该消息名字域值中的目的地理坐标的距离,然后选择距离最近的接入节点,并从与该接入节点相连的有线接口转发该消息;执行步骤413;
步骤411:如果接收到名字为A1的消息的接入节点的请求表中只有一项请求表项的数据类型域值为名字N1的数据类型域值,则执行步骤412,否则执行步骤413;
步骤412:接收到名字为A1的消息的接入节点查看请求表中所有数据类型等于名字A1中的数据类型的转发表项,然后从这些转发表项中选择地理坐标域值与自己最近的转发表项,接收到名字为A1的消息的接入节点将名字A1中的目的地理坐标域值更新为该转发表项中的地理坐标域值;接入节点计算邻居接入节点与名字A1中的目的地理坐标的距离,然后选择距离最近的接入节点,并从与该接入节点相连的有线接口转发该消息,执行步骤403;
步骤413:如果车辆节点V4接收到名字为A2的消息,则执行步骤419,否则执行步骤414;
步骤414:如果车辆节点接收到名字为A2的消息,则行步骤415,否则执行步骤418;
步骤415:如果接收到名字为A2的消息的车辆节点从车辆节点H2接收到该消息且该车辆节点与名字A2中的目的地理坐标的距离小于车辆节点H2与名字A2中的目的地理坐标的距离,则执行步骤417,否则执行步骤416;
步骤416:接收到名字为A2的消息的车辆节点丢弃该消息,执行步骤413;
步骤417:接收到名字为A2的消息的车辆节点将该消息转发到邻居车辆节点,如果该车辆节点位于名字A2的目的地理坐标所在位置的一跳范围内,则执行步骤420,否则执行步骤
413;
步骤418:接收到名字为A2的消息的接入节点将该消息转发到集成在一起的服务器,服务器查看请求表并选择所有数据类型域值等于名字A2中的数据类型值的请求表项,对于每个选中的请求表项,服务器执行下述操作:服务器构建一个名字,在该名字中,源地理坐标为(0,0),目的地理坐标为选择的请求表项的名字域值中的源地理坐标,命令域值为5,跳数域值为初始值,数据类型域值为名字A2中的数据类型;服务器构建一个消息,该消息的名字域值为构建的名字,负载域值为接收到的消息的负载域值;服务器将构建的消息转发给集成在一起的接入节点;接入节点收到该消息后,如果该消息的名字域值中的目的地理坐标属于该接入节点所在的域,接入节点则从无线接口转发该消息,否则接入节点计算邻居接入节点与该消息名字域值中的目的地理坐标的距离,然后选择距离最近的接入节点,并从与该接入节点相连的有线接口转发该消息;执行步骤413;
步骤419:车辆节点V4收到名字为A2的消息后,保存该消息负载中的数据C1;车辆节点V4构建名字A3,在名字A3中,源地理坐标为(x4,y4),目的地理坐标为0,命令域值为6,跳数域值为1,数据类型域值为CY1;车辆节点发送一个消息,该消息的名字域值为名字A3,负载域值为空,执行步骤424;
步骤420:如果接收到名字为A2的消息的车辆节点在预定时间内接收到名字为A3的消息,则执行步骤424,否则执行步骤421;
步骤421:接收到名字为A2的消息的车辆节点将名字A2中的跳数值递减1,如果此时名字A2中的跳数值等于0,则执行步骤424,否则执行步骤422;
步骤422:接收到名字为A2的消息的车辆节点将该消息转发到邻居车辆节点;
步骤423:如果车辆节点V4接收到名字为A2的消息,则执行步骤419,否则执行步骤420;
步骤424:结束。