本发明涉及一种实现方法,尤其涉及的是一种智慧城市网络的实现方法。
背景技术:
智慧城市网络中的节点之间通信通过中间节点的转发和路由来实现,因此,实现智慧城市网络需要解决的关键技术之一就是降低数据传输延迟,以便使用户能够快速获取网络服务。随着智慧城市网络技术的发展,智慧城市网络会成为未来网络提供服务的一种模式。
目前,智慧城市网络的实现模式是通过广播来实现,因此延迟和代价都比较大,降低了网络服务性能。因此,如何降低智慧城市网络提供服务的延迟和代价成为近年来研究的热点问题。
技术实现要素:
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种智慧城市网络的实现方法。
技术方案:本发明公开了一种智慧城市网络的实现方法,所述网络包括设备和路由器;每个路由器配置两个以上的接口,所述接口分为两个以上的下游接口和两个以上的上游接口;一个设备配置一个接口;
一个路由器的上游接口与另外一个路由器的上游接口相连,路由器的下游接口与一个设备相连;设备的接口与一个路由器的下游接口相连;一个接口由一个接口id唯一标识,接口id为x的接口记为接口x;
一种类型的数据由一个名称唯一标识,如果一个设备有权限访问一种类型的数据,该设备则称为该种类型数据的消费者;如果一个设备有权限产生一种类型的数据,该设备则称为该种类型数据的提供者;
所有设备采用通信消息来实现通信,通信消息包括三个域,分别为名称域、命令域和数据域,通信消息的格式为:名称、命令、数据;命令域值取值为consumer,provider,push,pull或者空;consumer为消费者,provider为提供者,push为推送数据,pull为获取数据;
路由器保存一个消费者转发表,一个消费者转发表项包含接口id域、名称域和生命周期域;
在设备d1是数据da1的消费者,数据da1由名称na1唯一标识的条件下,设备d1定期执行下述操作维护消费者转发表:
步骤101:开始;
步骤102:设备d1发送一个通信消息,该通信消息的名称域值为na1,命令域值为consumer,数据域值为空;
步骤103:路由器从接口x1接收到通信消息后,根据通信消息的命令域值,路由器查看消费者转发表,如果存在一个消费者转发表项,该消费者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x1,生命周期大于最大生命周期m1和阈值th1之差的绝对值,则执行步骤110,否则执行步骤104;最大生命周期m1大于阈值th1;,例如m1取值为1s,阈值th1取值为50ms,阈值th1越小,消费者转发表项更新频率越高;
步骤104:从接口x1接收到通信消息的路由器查看消费者转发表,如果存在一个消费者转发表项,该消费者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x1,则执行步骤105,否则执行步骤106;
步骤105:从接口x1接收到通信消息的路由器查看消费者转发表,选择一个消费者转发表项,该消费者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x1,将该消费者转发表项的生命周期设置为最大值,执行步骤107;
步骤106:从接口x1接收到通信消息的路由器创建一个消费者转发表项,该消费者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x1,生命周期设置为最大值;
步骤107:从接口x1接收到通信消息的路由器判断自己是否从下游接口接收到该通信消息,如果是,则执行步骤108,否则执行步骤109;
步骤108:从接口x1接收到通信消息的路由器从每个上游接口转发该通信消息,执行步骤103;
步骤109:从接口x1接收到通信消息的路由器从除了接口x1以外的每个上游接口转发该通信消息,执行步骤103;
步骤110:结束。
消费者通过上述过程建立消费者转发表项从而建立每个路由器到达自己的路由路径,由于上述过程中路由器只处理第一个接收到的通信消息,因此确保了路由器到达消费者的路由路径性能最优;另外,上述过程通过阈值th1来控制消费者转发表项的更新频率,从而确保的消费者转发表项的有效性和实时性。
本发明所述方法中,路由器保存一个提供者转发表,一个提供者转发表项包含接口id域、名称域和生命周期域;
在设备d2是数据da1的提供者,数据da1由名称na1唯一标识的条件下,设备d2定期执行下述操作维护提供者转发表:
步骤201:开始;
步骤202:设备d2发送一个通信消息,该通信消息的名称域值为na1,命令域值为provider,数据域值为空;
步骤203:路由器从接口x2接收到通信消息后,根据通信消息的命令域值,路由器查看提供者转发表,如果存在一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x2,生命周期大于最大生命周期m1和阈值th1之差的绝对值,则执行步骤210,否则执行步骤204;最大生命周期m1大于阈值th1;例如m1取值为1s,阈值th1取值为50ms,阈值th1越小,提供者转发表项更新频率越高;
步骤204:从接口x2接收到通信消息的路由器查看提供者转发表,如果存在一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x2,则执行步骤205,否则执行步骤206;
步骤205:从接口x2接收到通信消息的路由器查看提供者转发表,选择一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x2,将该提供者转发表项的生命周期设置为最大值,执行步骤207;
步骤206:从接口x2接收到通信消息的路由器创建一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x2,生命周期设置为最大值;
步骤207:从接口x2接收到通信消息的路由器判断自己是否从下游接口接收到该通信消息,如果是,则执行步骤208,否则执行步骤209;
步骤208:从接口x2接收到通信消息的路由器从每个上游接口转发该通信消息,执行步骤203;
步骤209:从接口x2接收到通信消息的路由器从除了接口x2以外的每个上游接口转发该通信消息,执行步骤203;
步骤210:结束。
提供者通过上述过程建立提供者转发表项从而建立每个路由器到达自己的路由路径,由于上述过程通过阈值th1来控制提供者转发表项的更新频率,从而确保的提供者转发表项的有效性和实时性;同时,上述过程中路由器只处理第一个接收到的通信消息,因此确保了路由器到达提供者的路由路径性能最优,提高了数据通信性能。
本发明所述方法中,消费者保存一个数据表,每个数据表项包含名称域、数值域和生命周期域;
提供者保存一个数据表,每个数据表项包含名称域、数值域和生命周期域;
路由器保存一个数据表,每个数据表项包含名称域、数值域和生命周期域;
数据表的最大长度为l1;l1为数据表长度,其值由路由器或者提供者的资源能力有关,一般设置为100mb;
在设备d2是数据da2的提供者,数据da2由名称na2唯一标识的条件下,设备d2产生数据da2后,通过下述过程推送数据da2:
步骤301:开始;
步骤302:设备d2创建一个数据表项,该数据表项的名称域值等于na2,数值域值等于数据da2,生命周期设置为最大生命周期;设备d2发送一个通信消息,该通信消息的名称域值为na2,命令域值为push,数据域值为da2;
步骤303:判断是设备还是路由器接收到该通信消息,如果是设备则执行步骤308,否则执行步骤304;
步骤304:路由器接收到该通信消息后,查看数据表,如果数据表的当前长度大于数据表最大长度l1与数据da2的长度之差的绝对值,则执行步骤305,否则执行步骤306;
步骤305:接收到该通信消息的路由器选择生命周期最小的数据表项,并删除所述选中的数据表项,执行步骤304;
步骤306:接收到该通信消息的路由器创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;
步骤307:接收到该通信消息的路由器选择所有名称域值等于该通信消息的名称域值的消费者转发表项,针对每个选中的消费者转发表项,该路由器从该消费者转发表项的接口id所标识的接口转发该通信消息,执行步骤303;
步骤308:设备接收到该通信消息后,创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;
步骤309:结束。
提供者产生数据后通过上述过程将产生的数据推送到有权限获取该数据的消费者,上述过程通过消费者转发表将数据推送到消费者,由于消费者转发表保存了到达消费者的最优路由路径,因此大幅度降低了数据推送的代价和延迟。另外,如果数据表没有空间保存最新的数据,上述过程则通过删除陈旧的数据来保存最新数据,从而确保了数据的实时性和有效性。
本发明所述方法中,路由器保存一个返回表,一个返回表项包含名称域、接口id域和生命周期域;
数据da1由名称na1唯一标识,如果网络的一跳数据传输延迟等于或者小于阈值th2,设备d3通过下述过程获取数据da1:阈值th2取值范围为8-10ms;
步骤401:开始;
步骤402:设备d3发送通信消息,该通信消息的名称为na1,命令域值为pull,数据域值为空;
步骤403:判断是设备还是路由器接收到通信消息,如果是设备则执行步骤414,否则执行步骤404;
步骤404:路由器从接口y1接收到通信消息后,判断该通信消息的数据域值是否为空,如果是,则执行步骤405,否则执行步骤411;
步骤405:从接口y1接收到通信消息的路由器查看返回表,如果存在一个返回表项,该返回表项的名称域值等于该通信消息的名称域值,接口id等于y1,则执行步骤403,否则执行步骤406;
步骤406:从接口y1接收到通信消息的路由器查看返回表,如果存在一个返回表项,该返回表项的名称域值等于该通信消息的名称域值,则执行步骤407,否则执行步骤408;
步骤407:从接口y1接收到通信消息的路由器创建一个返回表项,该返回表项的接口id等于y1,名称域值等于该通信消息的名称域值,生命周期设置为最大值,执行步骤403;
步骤408:从接口y1接收到通信消息的路由器创建一个返回表项,该返回表项的接口id等于y1,名称域值等于该通信消息的名称域值,生命周期设置为最大值;该路由器查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该通信消息的名称,则执行步骤409,否则执行步骤410;
步骤409:从接口y1接收到通信消息的路由器选择一个数据表项,该数据表项的名称域值等于该通信消息的名称;该路由器构建一个通信消息,该通信消息的名称等于该数据表项的名称域值,命令域值为pull,数据域值等于该数据表项的数值域值;该路由器选择所有名称域值等于该数据表项的名称域值的返回表项,针对每个选中的返回表项,路由器从该返回表项的接口id所标识的接口发送该通信消息,删除该返回表项,执行步骤403;
步骤410:从接口y1接收到通信消息的路由器选择一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称,从该提供者转发表项的接口id所标识的接口发送该通信消息,执行步骤403;
步骤411:从接口y1接收到通信消息的路由器查看数据表;如果数据表的长度大于数据表最大长度l1与该通信消息的数据域值的长度之差的绝对值,则执行步骤412,否则执行步骤413;
步骤412:从接口y1接收到通信消息的路由器选择生命周期最小的数据表项,并删除所述选中的数据表项,执行步骤411;
步骤413:从接口y1接收到通信消息的路由器创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;该路由器选择所有名称域值等于所创建的数据表项的名称域值的返回表项,针对每个选中的返回表项,该路由器从该返回表项的接口id所标识的接口发送该通信消息,删除该返回表项,执行步骤403;
步骤414:设备接收到通信消息后,查看该通信消息的数据域值是否为空,如果是,则执行步骤415,否则执行步骤416;
步骤415:接收到通信消息的设备选择一个数据表项,该数据表项的名称域值等于该通信消息的名称;该设备发送一个通信消息,该通信消息的名称等于该数据表项的名称域值,命令域值为pull,数据域值等于该数据表项的数值域值,执行步骤403;
步骤416:接收到通信消息的设备创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;
步骤417:结束。
消费者通过上述过程获取所需要的数据,上述过程通过返回表无需建立路由即可将数据返回到消费者,同时通过返回表实现了请求聚合,即两个以上的消费者通过一次数据通信过程获取所需数据,从而大幅度降低了数据通信延迟和代价;此外,路由器通过数据表可以直接提供消费者所需数据,从而进一步降低了数据通信延迟和代价;另外,如果数据表没有空间保存最新的数据,上述过程则通过删除陈旧的数据来保存最新数据,从而确保了数据的实时性和有效性。
本发明所述方法中,数据da1由名称na1唯一标识,如果网络的一跳数据传输延迟大于阈值th2,阈值th2取值范围为8-10ms,设备d3通过下述过程获取数据da1:
步骤501:开始;
步骤502:设备d3发送通信消息,该通信消息的名称为na1,命令域值为pull,数据域值为空;
步骤503:判断是设备还是路由器接收到通信消息,如果是设备则执行步骤516,否则执行步骤504;
步骤504:路由器从接口z1接收到通信消息后,判断该通信消息的数据域值是否为空,如果是,则执行步骤505,否则执行步骤511;
步骤505:从接口z1接收到通信消息的路由器查看返回表,如果存在一个返回表项,该返回表项的名称域值等于该通信消息的名称域值,接口id等于z1,则执行步骤503,否则执行步骤506;
步骤506:从接口z1接收到通信消息的路由器查看返回表,如果存在一个返回表项,该返回表项的名称域值等于该通信消息的名称域值,则执行步骤507,否则执行步骤508;
步骤507:从接口z1接收到通信消息的路由器创建一个返回表项,该返回表项的接口id等于z1,名称域值等于该通信消息的名称域值,生命周期设置为最大值,执行步骤503;
步骤508:从接口z1接收到通信消息的路由器创建一个返回表项,该返回表项的接口id等于z1,名称域值等于该通信消息的名称域值,生命周期设置为最大值;该路由器查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该通信消息的名称,则执行步骤509,否则执行步骤510;
步骤509:从接口z1接收到通信消息的路由器选择一个数据表项,该数据表项的名称域值等于该通信消息的名称;该路由器构建一个通信消息,该通信消息的名称等于该数据表项的名称域值,命令域值为pull,数据域值等于该数据表项的数值域值;该路由器选择所有名称域值等于该数据表项的名称域值的返回表项,针对每个选中的返回表项,路由器从该返回表项的接口id所标识的接口发送该通信消息,删除该返回表项,执行步骤503;
步骤510:从接口z1接收到通信消息的路由器选择一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称,从该提供者转发表项的接口id所标识的接口发送该通信消息,执行步骤503;
步骤511:从接口z1接收到通信消息的路由器查看数据表;如果数据表的长度大于数据表最大长度l1与该通信消息的数据域值的长度之差的绝对值,则执行步骤512,否则执行步骤513;
步骤512:从接口z1接收到通信消息的路由器选择生命周期最小的数据表项,并删除所述选中的数据表项,执行步骤511;
步骤513:从接口z1接收到通信消息的路由器创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;该路由器选择所有名称域值等于所创建的数据表项的名称域值的返回表项,如果选中的返回表项的个数为0,则执行步骤515,否则执行步骤514;
步骤514:从接口z1接收到通信消息的路由器选择所有名称域值等于该通信消息的名称域值的返回表项,针对每个选中的返回表项,该路由器从该返回表项的接口id所标识的接口发送该通信消息,删除该返回表项,执行步骤503;
步骤515:从接口z1接收到通信消息的路由器选择所有名称域值等于该通信消息的名称域值的消费者转发表项,针对每个选中的消费者转发表项,该路由器从该消费者转发表项的接口id所标识的接口发送该通信消息,执行步骤503;
步骤516:设备接收到通信消息后,判断该通信消息的数据域值是否为空,如果是,则执行步骤517,否则执行步骤518;
步骤517:接收到通信消息的设备选择一个数据表项,该数据表项的名称域值等于该通信消息的名称;该设备发送一个通信消息,该通信消息的名称等于该数据表项的名称域值,命令域值为pull,数据域值等于该数据表项的数值域值,执行步骤503;
步骤518:接收到通信消息的设备创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;
步骤519:结束。
消费者通过上述过程获取所需要的数据,上述过程通过返回表实现了请求聚合,即两个以上的消费者通过一次数据通信过程获取所需数据,返回表无需建立路由即可将数据返回到消费者,因此大幅度降低了数据通信延迟和代价;如果由于传输延迟过大而导致无法根据返回表项进行路由,上述过程则通过消费者转发表将数据推动到消费者,从而确保了数据通信的健壮性和稳定性;此外,路由器通过数据表可以直接提供消费者所需数据,从而进一步降低了数据通信延迟和代价;另外,如果数据表没有空间保存最新的数据,上述过程则通过删除陈旧的数据来保存最新数据,从而确保了数据的实时性和有效性。
有益效果:本发明提供了一种智慧城市网络的实现方法,在本发明中,设备能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的维护消费者转发表流程示意图。
图2为本发明所述的维护提供者转发表流程示意图。
图3为本发明所述的推送数据流程示意图。
图4为本发明所述的获取数据流程示意图。
图5为本发明所述的数据通信流程示意图。
具体实施方式:
本发明提供了一种智慧城市网络的实现方法,在本发明中,设备能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。
图1为本发明所述的维护消费者转发表流程示意图。所述网络包括设备和路由器;每个路由器配置两个以上的接口,所述接口分为两个以上的下游接口和两个以上的上游接口;一个设备配置一个接口;
一个路由器的上游接口与另外一个路由器的上游接口相连,路由器的下游接口与一个设备相连;设备的接口与一个路由器的下游接口相连;一个接口由一个接口id唯一标识,接口id为x的接口记为接口x;
一种类型的数据由一个名称唯一标识,如果一个设备有权限访问一种类型的数据,该设备则称为该种类型数据的消费者;如果一个设备有权限产生一种类型的数据,该设备则称为该种类型数据的提供者;
所有设备采用通信消息来实现通信,通信消息包括三个域,分别为名称域、命令域和数据域,通信消息的格式为:名称、命令、数据;命令域值取值为consumer,provider,push,pull或者空;consumer为消费者,provider为提供者,push为推送数据,pull为获取数据;
路由器保存一个消费者转发表,一个消费者转发表项包含接口id域、名称域和生命周期域;
在设备d1是数据da1的消费者,数据da1由名称na1唯一标识的条件下,设备d1定期执行下述操作维护消费者转发表:
步骤101:开始;
步骤102:设备d1发送一个通信消息,该通信消息的名称域值为na1,命令域值为consumer,数据域值为空;
步骤103:路由器从接口x1接收到通信消息后,根据通信消息的命令域值,路由器查看消费者转发表,如果存在一个消费者转发表项,该消费者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x1,生命周期大于最大生命周期m1和阈值th1之差的绝对值,则执行步骤110,否则执行步骤104;最大生命周期m1大于阈值th1;,例如m1取值为1s,阈值th1取值为50ms,阈值th1越小,消费者转发表项更新频率越高;
步骤104:从接口x1接收到通信消息的路由器查看消费者转发表,如果存在一个消费者转发表项,该消费者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x1,则执行步骤105,否则执行步骤106;
步骤105:从接口x1接收到通信消息的路由器查看消费者转发表,选择一个消费者转发表项,该消费者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x1,将该消费者转发表项的生命周期设置为最大值,执行步骤107;
步骤106:从接口x1接收到通信消息的路由器创建一个消费者转发表项,该消费者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x1,生命周期设置为最大值;
步骤107:从接口x1接收到通信消息的路由器判断自己是否从下游接口接收到该通信消息,如果是,则执行步骤108,否则执行步骤109;
步骤108:从接口x1接收到通信消息的路由器从每个上游接口转发该通信消息,执行步骤103;
步骤109:从接口x1接收到通信消息的路由器从除了接口x1以外的每个上游接口转发该通信消息,执行步骤103;
步骤110:结束。
消费者通过上述过程建立消费者转发表项从而建立每个路由器到达自己的路由路径,由于上述过程中路由器只处理第一个接收到的通信消息,因此确保了路由器到达消费者的路由路径性能最优;另外,上述过程通过阈值th1来控制消费者转发表项的更新频率,从而确保的消费者转发表项的有效性和实时性。
图2为本发明所述的维护提供者转发表流程示意图。路由器保存一个提供者转发表,一个提供者转发表项包含接口id域、名称域和生命周期域;
在设备d2是数据da1的提供者,数据da1由名称na1唯一标识的条件下,设备d2定期执行下述操作维护提供者转发表:
步骤201:开始;
步骤202:设备d2发送一个通信消息,该通信消息的名称域值为na1,命令域值为provider,数据域值为空;
步骤203:路由器从接口x2接收到通信消息后,根据通信消息的命令域值,路由器查看提供者转发表,如果存在一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x2,生命周期大于最大生命周期m1和阈值th1之差的绝对值,则执行步骤210,否则执行步骤204;最大生命周期m1大于阈值th1;例如m1取值为1s,阈值th1取值为50ms,阈值th1越小,提供者转发表项更新频率越高;
步骤204:从接口x2接收到通信消息的路由器查看提供者转发表,如果存在一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x2,则执行步骤205,否则执行步骤206;
步骤205:从接口x2接收到通信消息的路由器查看提供者转发表,选择一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x2,将该提供者转发表项的生命周期设置为最大值,执行步骤207;
步骤206:从接口x2接收到通信消息的路由器创建一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称域值,接口id域值等于x2,生命周期设置为最大值;
步骤207:从接口x2接收到通信消息的路由器判断自己是否从下游接口接收到该通信消息,如果是,则执行步骤208,否则执行步骤209;
步骤208:从接口x2接收到通信消息的路由器从每个上游接口转发该通信消息,执行步骤203;
步骤209:从接口x2接收到通信消息的路由器从除了接口x2以外的每个上游接口转发该通信消息,执行步骤203;
步骤210:结束。
提供者通过上述过程建立提供者转发表项从而建立每个路由器到达自己的路由路径,由于上述过程通过阈值th1来控制提供者转发表项的更新频率,从而确保的提供者转发表项的有效性和实时性;同时,上述过程中路由器只处理第一个接收到的通信消息,因此确保了路由器到达提供者的路由路径性能最优,提高了数据通信性能。
图3为本发明所述的推送数据流程示意图。消费者保存一个数据表,每个数据表项包含名称域、数值域和生命周期域;
提供者保存一个数据表,每个数据表项包含名称域、数值域和生命周期域;
路由器保存一个数据表,每个数据表项包含名称域、数值域和生命周期域;
数据表的最大长度为l1;l1为数据表长度,其值由路由器或者提供者的资源能力有关,一般设置为100mb;
在设备d2是数据da2的提供者,数据da2由名称na2唯一标识的条件下,设备d2产生数据da2后,通过下述过程推送数据da2:
步骤301:开始;
步骤302:设备d2创建一个数据表项,该数据表项的名称域值等于na2,数值域值等于数据da2,生命周期设置为最大生命周期;设备d2发送一个通信消息,该通信消息的名称域值为na2,命令域值为push,数据域值为da2;
步骤303:判断是设备还是路由器接收到该通信消息,如果是设备则执行步骤308,否则执行步骤304;
步骤304:路由器接收到该通信消息后,查看数据表,如果数据表的当前长度大于数据表最大长度l1与数据da2的长度之差的绝对值,则执行步骤305,否则执行步骤306;
步骤305:接收到该通信消息的路由器选择生命周期最小的数据表项,并删除所述选中的数据表项,执行步骤304;
步骤306:接收到该通信消息的路由器创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;
步骤307:接收到该通信消息的路由器选择所有名称域值等于该通信消息的名称域值的消费者转发表项,针对每个选中的消费者转发表项,该路由器从该消费者转发表项的接口id所标识的接口转发该通信消息,执行步骤303;
步骤308:设备接收到该通信消息后,创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;
步骤309:结束。
提供者产生数据后通过上述过程将产生的数据推送到有权限获取该数据的消费者,上述过程通过消费者转发表将数据推送到消费者,由于消费者转发表保存了到达消费者的最优路由路径,因此大幅度降低了数据推送的代价和延迟。另外,如果数据表没有空间保存最新的数据,上述过程则通过删除陈旧的数据来保存最新数据,从而确保了数据的实时性和有效性。
图4为本发明所述的获取数据流程示意图。路由器保存一个返回表,一个返回表项包含名称域、接口id域和生命周期域;
数据da1由名称na1唯一标识,如果网络的一跳数据传输延迟等于或者小于阈值th2,设备d3通过下述过程获取数据da1:阈值th2取值范围为8-10ms;
步骤401:开始;
步骤402:设备d3发送通信消息,该通信消息的名称为na1,命令域值为pull,数据域值为空;
步骤403:判断是设备还是路由器接收到通信消息,如果是设备则执行步骤414,否则执行步骤404;
步骤404:路由器从接口y1接收到通信消息后,判断该通信消息的数据域值是否为空,如果是,则执行步骤405,否则执行步骤411;
步骤405:从接口y1接收到通信消息的路由器查看返回表,如果存在一个返回表项,该返回表项的名称域值等于该通信消息的名称域值,接口id等于y1,则执行步骤403,否则执行步骤406;
步骤406:从接口y1接收到通信消息的路由器查看返回表,如果存在一个返回表项,该返回表项的名称域值等于该通信消息的名称域值,则执行步骤407,否则执行步骤408;
步骤407:从接口y1接收到通信消息的路由器创建一个返回表项,该返回表项的接口id等于y1,名称域值等于该通信消息的名称域值,生命周期设置为最大值,执行步骤403;
步骤408:从接口y1接收到通信消息的路由器创建一个返回表项,该返回表项的接口id等于y1,名称域值等于该通信消息的名称域值,生命周期设置为最大值;该路由器查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该通信消息的名称,则执行步骤409,否则执行步骤410;
步骤409:从接口y1接收到通信消息的路由器选择一个数据表项,该数据表项的名称域值等于该通信消息的名称;该路由器构建一个通信消息,该通信消息的名称等于该数据表项的名称域值,命令域值为pull,数据域值等于该数据表项的数值域值;该路由器选择所有名称域值等于该数据表项的名称域值的返回表项,针对每个选中的返回表项,路由器从该返回表项的接口id所标识的接口发送该通信消息,删除该返回表项,执行步骤403;
步骤410:从接口y1接收到通信消息的路由器选择一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称,从该提供者转发表项的接口id所标识的接口发送该通信消息,执行步骤403;
步骤411:从接口y1接收到通信消息的路由器查看数据表;如果数据表的长度大于数据表最大长度l1与该通信消息的数据域值的长度之差的绝对值,则执行步骤412,否则执行步骤413;
步骤412:从接口y1接收到通信消息的路由器选择生命周期最小的数据表项,并删除所述选中的数据表项,执行步骤411;
步骤413:从接口y1接收到通信消息的路由器创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;该路由器选择所有名称域值等于所创建的数据表项的名称域值的返回表项,针对每个选中的返回表项,该路由器从该返回表项的接口id所标识的接口发送该通信消息,删除该返回表项,执行步骤403;
步骤414:设备接收到通信消息后,查看该通信消息的数据域值是否为空,如果是,则执行步骤415,否则执行步骤416;
步骤415:接收到通信消息的设备选择一个数据表项,该数据表项的名称域值等于该通信消息的名称;该设备发送一个通信消息,该通信消息的名称等于该数据表项的名称域值,命令域值为pull,数据域值等于该数据表项的数值域值,执行步骤403;
步骤416:接收到通信消息的设备创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;
步骤417:结束。
消费者通过上述过程获取所需要的数据,上述过程通过返回表无需建立路由即可将数据返回到消费者,同时通过返回表实现了请求聚合,即两个以上的消费者通过一次数据通信过程获取所需数据,从而大幅度降低了数据通信延迟和代价;此外,路由器通过数据表可以直接提供消费者所需数据,从而进一步降低了数据通信延迟和代价;另外,如果数据表没有空间保存最新的数据,上述过程则通过删除陈旧的数据来保存最新数据,从而确保了数据的实时性和有效性。
图5为本发明所述的数据通信流程示意图。数据da1由名称na1唯一标识,如果网络的一跳数据传输延迟大于阈值th2,阈值th2取值范围为8-10ms,设备d3通过下述过程获取数据da1:
步骤501:开始;
步骤502:设备d3发送通信消息,该通信消息的名称为na1,命令域值为pull,数据域值为空;
步骤503:判断是设备还是路由器接收到通信消息,如果是设备则执行步骤516,否则执行步骤504;
步骤504:路由器从接口z1接收到通信消息后,判断该通信消息的数据域值是否为空,如果是,则执行步骤505,否则执行步骤511;
步骤505:从接口z1接收到通信消息的路由器查看返回表,如果存在一个返回表项,该返回表项的名称域值等于该通信消息的名称域值,接口id等于z1,则执行步骤503,否则执行步骤506;
步骤506:从接口z1接收到通信消息的路由器查看返回表,如果存在一个返回表项,该返回表项的名称域值等于该通信消息的名称域值,则执行步骤507,否则执行步骤508;
步骤507:从接口z1接收到通信消息的路由器创建一个返回表项,该返回表项的接口id等于z1,名称域值等于该通信消息的名称域值,生命周期设置为最大值,执行步骤503;
步骤508:从接口z1接收到通信消息的路由器创建一个返回表项,该返回表项的接口id等于z1,名称域值等于该通信消息的名称域值,生命周期设置为最大值;该路由器查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该通信消息的名称,则执行步骤509,否则执行步骤510;
步骤509:从接口z1接收到通信消息的路由器选择一个数据表项,该数据表项的名称域值等于该通信消息的名称;该路由器构建一个通信消息,该通信消息的名称等于该数据表项的名称域值,命令域值为pull,数据域值等于该数据表项的数值域值;该路由器选择所有名称域值等于该数据表项的名称域值的返回表项,针对每个选中的返回表项,路由器从该返回表项的接口id所标识的接口发送该通信消息,删除该返回表项,执行步骤503;
步骤510:从接口z1接收到通信消息的路由器选择一个提供者转发表项,该提供者转发表项的名称域值等于该通信消息的名称,从该提供者转发表项的接口id所标识的接口发送该通信消息,执行步骤503;
步骤511:从接口z1接收到通信消息的路由器查看数据表;如果数据表的长度大于数据表最大长度l1与该通信消息的数据域值的长度之差的绝对值,则执行步骤512,否则执行步骤513;
步骤512:从接口z1接收到通信消息的路由器选择生命周期最小的数据表项,并删除所述选中的数据表项,执行步骤511;
步骤513:从接口z1接收到通信消息的路由器创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;该路由器选择所有名称域值等于所创建的数据表项的名称域值的返回表项,如果选中的返回表项的个数为0,则执行步骤515,否则执行步骤514;
步骤514:从接口z1接收到通信消息的路由器选择所有名称域值等于该通信消息的名称域值的返回表项,针对每个选中的返回表项,该路由器从该返回表项的接口id所标识的接口发送该通信消息,删除该返回表项,执行步骤503;
步骤515:从接口z1接收到通信消息的路由器选择所有名称域值等于该通信消息的名称域值的消费者转发表项,针对每个选中的消费者转发表项,该路由器从该消费者转发表项的接口id所标识的接口发送该通信消息,执行步骤503;
步骤516:设备接收到通信消息后,判断该通信消息的数据域值是否为空,如果是,则执行步骤517,否则执行步骤518;
步骤517:接收到通信消息的设备选择一个数据表项,该数据表项的名称域值等于该通信消息的名称;该设备发送一个通信消息,该通信消息的名称等于该数据表项的名称域值,命令域值为pull,数据域值等于该数据表项的数值域值,执行步骤503;
步骤518:接收到通信消息的设备创建一个数据表项,该数据表项的名称域值等于该通信消息的名称域值,数值域值等于该通信消息的数据域值,生命周期设置为最大生命周期;
步骤519:结束。
消费者通过上述过程获取所需要的数据,上述过程通过返回表实现了请求聚合,即两个以上的消费者通过一次数据通信过程获取所需数据,返回表无需建立路由即可将数据返回到消费者,因此大幅度降低了数据通信延迟和代价;如果由于传输延迟过大而导致无法根据返回表项进行路由,上述过程则通过消费者转发表将数据推动到消费者,从而确保了数据通信的健壮性和稳定性;此外,路由器通过数据表可以直接提供消费者所需数据,从而进一步降低了数据通信延迟和代价;另外,如果数据表没有空间保存最新的数据,上述过程则通过删除陈旧的数据来保存最新数据,从而确保了数据的实时性和有效性。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的一种智慧城市网络的实现方法,性能分析如下:当一跳延迟增加时,数据通信延迟增加,当一跳延迟降低时,数据通信延迟减少,数据通信平均延迟为2047s。
表1仿真参数
本发明提供了一种智慧城市网络的实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。