[0073] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0074] 图1为本发明所述的维护节点表流程示意图。
[0075] 图2为本发明所述的维护服务器表流程示意图。
[0076] 图3为本发明所述的维护邻居表流程示意图。
[0077] 图4为本发明所述的维护静态表流程示意图。
[0078] 图5为本发明所述的数据通信流程示意图。
[0079] 图6为本发明所述的数据获取流程示意图。具体实施方式:
[0080] 本发明提供了一种命名数据网络的缓存和路由实现方法,用户通过本发明提供的方法能够快速获取数据,从而降低数据通信延迟和代价,提高服务质量。本发明可应用于智能家居、环境监测、路况监测等诸多领域,具有广泛的应用前景。
[0081] 图1为本发明所述的维护节点表流程示意图。所述网络包含节点、服务器和路由器;
[0082] 一个路由器包含两个以上的上游接口和两个以上的下游接口,上游接口与路由器相连,下游接口与节点或者服务器相连;一个节点或者服务器具有一个接口,与路由器相连;每个接口由接口ID唯一标识,接口ID为大于0的正整数;接口ID为f的接口记为接口f;
[0083] 一种数据由一个名称唯一标识;一个路由器具有唯一的坐标;一个节点、服务器或者路由器由一个地址唯一标识;一个地址包含坐标和接口ID;一个节点或者服务器通过电子地图获取每个路由器的坐标;一个消息由消息类型唯一标识,如下表所示:节点或者服务器预先配置电子地图,电子地图包含每个路由的坐标;
[0084]消息类型的值 消息名称
1 节点消息
2 服务器消息
3 邻居消息
4 发布消息
5 请求消息
6 数据消息
[0085] 一个路由器保存一个节点表,一个节点表项包含地址和生命周期域;一个节点消息包含消息类型和地址;节点N1与路由器R1相连,定期执行下述操作:
[0086] 步骤101:开始;
[0087] 步骤102:节点N1构建一个地址,该地址的坐标为路由器R1的坐标,接口ID为0;节点N1发送一个节点消息,该节点消息的消息类型值为1,地址为创建的地址;
[0088] 步骤103:路由器R1从接口f1接收到该节点消息,将该节点消息的地址域值的接口ID设置为f1;路由器R1查看节点表,如果存在一个节点表项,该节点表项的地址等于该节点消息的地址,则将该节点表项的生命周期设置为最大值;否则,路由器R1创建一个节点表项,该节点表项的地址等于该节点消息的地址,将生命周期设置为最大值;
[0089] 步骤104:结束。
[0090] 节点通过上述过程在相连的路由器建立节点表,这样路由器可以获取相连的节点的信息,由于节点地址包含接口ID,因此路由器通过节点的地址可以实现消息的正确转发,从而实现正确通信。另外,上述过程通过生命周期来确保节点表的有效性,因为也确保了通信的有效性和正确性。
[0091] 图2为本发明所述的维护服务器表流程示意图。路由器保存一个服务器表,一个服务器表项包含地址、名称和生命周期域;一个服务器或者路由器保存一个数据表,一个数据表项包含名称、数据值和生命周期;一个服务器消息包含消息类型、名称和地址;服务器S1与路由器R1相连,能提供数据DA1,数据DA1由名称NA1标识,定期执行下述操作:
[0092] 步骤201:开始;
[0093] 步骤202:服务器S1创建一个数据表项,该数据表项的名称为NA1,数据值为DA1,生命周期为最大值;服务器S1构建一个地址,该地址的坐标为路由器R1的坐标,接口ID为0;服务器S1发送一个服务器消息,该服务器消息的消息类型值为2,名称为NA1,地址为创建的地址;
[0094] 步骤203:路由器R1从接口f2接收到该服务器消息,将该服务器消息的地址域值的接口ID设置为f2;路由器R1查看服务器表,如果存在一个服务器表项,该服务器表项的地址和名称分别等于该服务器消息的地址和名称,则将该服务器表项的生命周期设置为最大值;否则,路由器R1创建一个服务器表项,该服务器表项的地址和名称分别等于该服务器消息的地址和名称,将生命周期设置为最大值;
[0095] 步骤204:结束。
[0096] 服务器通过上述过程在相连的路由器建立服务器表,这样路由器可以获取相连的服务器的信息,由于服务器地址包含接口ID,因此路由器通过服务器的地址可以实现消息的正确转发,从而实现正确通信。另外,上述过程通过生命周期来确保服务器表的有效性,因为也确保了通信的有效性和正确性。
[0097] 图3为本发明所述的维护邻居表流程示意图。路由器保存一个邻居表,一个邻居表项包含地址、接口ID和生命周期;一个邻居消息包含消息类型和地址;路由器R1定期执行下述操作:
[0098] 步骤301:开始;
[0099] 步骤302:路由器R1构建一个地址,该地址的坐标等于路由器R1自己的坐标,接口ID等于0,路由器R1从每个上游接口发送一个邻居消息,该邻居消息的消息类型值为3,地址为创建的地址;
[0100] 步骤303:其他路由器从接口x1接收到该邻居消息后查看邻居表,如果存在一个邻居表项,该邻居表项的地址等于该邻居消息的地址,则将该邻居表项的接口ID更新为x1,将生命周期设置为最大值;否则,该路由器创建一个邻居表项,该邻居表项的地址等于该邻居消息的地址,接口ID等于x1,生命周期设置为最大值;
[0101] 步骤304:结束。
[0102] 路由器通过上述过程建立邻居表,这样路由器可以根据邻居表地址域值中的坐标选择下一跳从而构建到达目的路由器的最优路由路径,降低数据通信延迟;邻居表通过接口ID实现消息的正确转发,从而确保了数据通信的正确性。
[0103] 图4为本发明所述的维护静态表流程示意图。路由器保存一个静态表,每个静态表项包含地址、名称和生命周期;发布消息包含消息类型、名称和地址;路由器R1定期执行下述操作:
[0104] 步骤401:开始;
[0105] 步骤402:路由器R1查看服务器表,针对每个服务器表项,路由器R1执行下述操作:路由器R1从每个上游接口发送一个发布消息,该发布消息的消息类型值为4,名称和地址分别等于该服务器表项的名称和地址;
[0106] 步骤403:其他路由器从接口x2接收到发布消息后查看静态表,如果存在一个静态表项,该静态表项的名称和地址分别等于该发布消息的名称和地址,且生命周期大于阈值TH1,则执行步骤408,否则执行步骤404;阈值TH1取值范围为最大生命周期的90%‑95%;
[0107] 步骤404:从接口x2接收到发布消息的路由器查看静态表,如果存在一个静态表项,该静态表项的名称和地址分别等于该发布消息的名称和地址,则执行步骤405,否则执行步骤406;
[0108] 步骤405:从接口x2接收到发布消息的路由器查看静态表,选择一个静态表项,该静态表项的名称和地址分别等于该发布消息的名称和地址,将该静态表项的生命周期设置为最大值,执行步骤407;
[0109] 步骤406:从接口x2接收到发布消息的路由器创建一个静态表项,该静态表项的名称和地址分别等于该发布消息的名称和地址,生命周期为最大值;
[0110] 步骤407:从接口x2接收到发布消息的路由器从除了接口x2以外的所有上游接口转发该发布消息,执行步骤403;
[0111] 步骤408:结束。
[0112] 路由器通过上述过程建立静态表,这样节点可以通过静态表从服务器获取数据,从而确保数据通信的正确性和实时性;上述过程通过生命周期来确保静态表的有效性,从而提高了数据通信的成功率。
[0113] 图5为本发明所述的数据通信流程示意图。路由器保存一个数据表,每个数据表项包含名称、数值和生命周期;每个路由器保存一个动态表,一个动态表项包含地址、名称和生命周期;一个请求消息包含源地址、目的地址、路由器地址和名称;一个数据消息包含源地址、目的地址、路由器地址、名称和负载;节点N2与路由器R2相连,数据DA1由名称NA1标识;如果路由器R2检测到任何动态表项的名称域值都不等于NA1,节点N2则通过下述过程获取数据DA1:
[0114] 步骤501:开始;
[0115] 步骤502:节点N2构建一个地址,该地址的坐标为路由器R2的坐标,接口ID为0;节点N2发送一个请求消息,该请求消息的消息类型值为5,源地址为创建的地址,目的地址和路由器地址为空,名称为NA1;
[0116] 步骤503:路由器R2从接口z1接收到请求消息,将该请求消息的源地址的接口ID设置为z1;路由器R2选择一个静态表项,该静态表项的名称等于该请求消息的名称,将该请求消息的目的地址设置为该静态表项的地址;路由器R2构建一个地址,该地址的坐标为((x1+x2)/2,(y1+y2)/2),接口ID为0,(x1,y1)为该请求消息源地址的坐标,(x2,y2)为该请求消息目的地址的坐标,将该请求消息的路由器地址设置为构建的地址;路由器R2创建一个动态表项,该动态表项的名称为该请求消息的名称,地址为该请求消息的路由器地址,生命周期为最大值;路由器R2选择一个邻居表项,该邻居表项的地址的坐标与该请求消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该请求消息;
[0117] 步骤504:路由器接收到请求消息后查看动态表;如果存在一个动态表项,该动态表项的名称等于该请求消息的名称且地址等于该请求消息的路由器地址,则将该动态表项的生命周期设置为最大值;否则该路由器创建一个动态表项,该动态表项的名称等于该请求消息的名称且地址等于该请求消息的路由器地址,将该动态表项的生命周期设置为最大值;如果该路由器的坐标等于该请求消息的目的地址的坐标,则执行步骤506,否则执行步骤505;
[0118] 步骤505:接收到请求消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该请求消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该请求消息,执行步骤504;
[0119] 步骤506:接收到请求消息的路由器选择一个接口,该接口的接口ID等于该请求消息目的地址的接口ID,从该接口转发该请求消息;服务器接收到该请求消息后,选择一个数据表项,该数据表项的名称等于该请求消息的名称,发送一个数据消息,该数据消息的消息类型值为6,源地址等于该请求消息的目的地址,目的地址等于该请求消息的源地址,路由器地址和名称分别等于该请求消息的路由器地址和名称,负载为该数据表项的数据值;
[0120] 步骤507:路由器接收到该数据消息,如果该路由器的坐标等于该数据消息路由器地址的坐标,则执行步骤508,否则执行步骤510;
[0121] 步骤508:接收到该数据消息的路由器将该数据消息的路由器地址设置为0并查看数据表;如果存在一个数据表项,该数据表项的名称等于该数据消息的名称,则将该数据表项的生命周期设置为最大值;否则该路由器创建一个数据表项,该数据表项的名称等于该数据消息的名称,数据值等于该数据消息负载中的数据,生命周期设置为最大值;
[0122] 步骤509:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤507;
[0123] 步骤510:接收到该数据消息的路由器查看动态表,如果存在一个动态表项,该动态表项的名称等于该数据消息的名称且地址等于该数据消息的路由器地址,则将该动态表项的生命周期设置为最大值;否则该路由器创建一个动态表项,该动态表项的名称等于该数据消息的名称且地址等于该数据消息的路由器地址,将该动态表项的生命周期设置为最大值;
[0124] 步骤511:接收到该数据消息的路由器判断该数据消息的路由器地址是否为0,如果是,则执行步骤513,否则执行步骤512;
[0125] 步骤512:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息路由器地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤507;
[0126] 步骤513:接收到该数据消息的路由器判断自己的坐标是否等于该数据消息的目的地址的坐标,如果是,则执行步骤515,否则执行步骤514;
[0127] 步骤514:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤507;
[0128] 步骤515:接收到数据消息的路由器选择一个接口,该接口的接口ID等于该数据消息目的地址的接口ID,从该接口转发该数据消息;节点N2接收到该数据消息后,保存该数据消息负载中的数据;
[0129] 步骤516:结束。
[0130] 节点通过上述过程从服务器获取数据,由于上述过程通过邻居表来建立到达服务器的最优路由路径,从而降低了数据通信延迟和代价;此外,由于节点和服务器的地址包含接口ID,从而实现了数据的正确转发,确保了数据通信的成功率。
[0131] 图6为本发明所述的数据获取流程示意图。节点N3与路由器R3相连,数据DA1由名称NA1标识;如果路由器R3检测到至少有一个动态表项的名称域值等于NA1,节点N3则通过下述过程获取数据DA1:
[0132] 步骤601:开始;
[0133] 步骤602:节点N3构建一个地址,该地址的坐标为路由器R3的坐标,接口ID为0;节点N3发送一个请求消息,该请求消息的消息类型值为5,源地址为创建的地址,目的地址和路由器地址为空,名称为NA1;
[0134] 步骤603:路由器R3从接口z2接收到请求消息,将该请求消息的源地址的接口ID设置为z2;路由器R3选择所有名称等于该请求消息的动态表项,从这些动态表项中选择一个动态表项,该动态表项的地址的坐标与自己的坐标距离最近,将该请求消息的目的地址设置为该动态表项的地址;路由器R3构建一个地址,该地址的坐标为((x3+x4)/2,(y3+y4)/2),接口ID为0,(x3,y3)为该请求消息源地址的坐标,(x4,y4)为该请求消息目的地址的坐标,将该请求消息的路由器地址设置为构建的地址;路由器R3创建一个动态表项,该动态表项的名称为该请求消息的名称,地址为该请求消息的路由器地址,生命周期为最大值;路由器R3选择一个邻居表项,该邻居表项的地址的坐标与该请求消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该请求消息;
[0135] 步骤604:路由器接收到请求消息后查看动态表;如果存在一个动态表项,该动态表项的名称等于该请求消息的名称且地址等于该请求消息的路由器地址,则将该动态表项的生命周期设置为最大值;否则该路由器创建一个动态表项,该动态表项的名称等于该请求消息的名称且地址等于该请求消息的路由器地址,将该动态表项的生命周期设置为最大值;如果该路由器的坐标等于该请求消息的目的地址的坐标,则执行步骤606,否则执行步骤605;
[0136] 步骤605:接收到请求消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该请求消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该请求消息,执行步骤604;
[0137] 步骤606:接收到请求消息的路由器选择一个数据表项,该数据表项的名称等于该请求消息的名称,构建一个数据消息,该数据消息的消息类型值为6,源地址等于该请求消息的目的地址,目的地址等于该请求消息的源地址,路由器地址和名称分别等于该请求消息的路由器地址和名称,负载为该数据表项的数据值;该路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息路由器地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息;
[0138] 步骤607:路由器接收到该数据消息,如果该路由器的坐标等于该数据消息路由器地址的坐标,则执行步骤608,否则执行步骤610;
[0139] 步骤608:接收到该数据消息的路由器将该数据消息的路由器地址设置为0并查看数据表;如果存在一个数据表项,该数据表项的名称等于该数据消息的名称,则将该数据表项的生命周期设置为最大值;否则该路由器创建一个数据表项,该数据表项的名称等于该数据消息的名称,数据值等于该数据消息负载中的数据,生命周期设置为最大值;
[0140] 步骤609:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤607;
[0141] 步骤610:接收到该数据消息的路由器查看动态表,如果存在一个动态表项,该动态表项的名称等于该数据消息的名称且地址等于该数据消息的路由器地址,则将该动态表项的生命周期设置为最大值;否则该路由器创建一个动态表项,该动态表项的名称等于该数据消息的名称且地址等于该数据消息的路由器地址,将该动态表项的生命周期设置为最大值;
[0142] 步骤611:接收到该数据消息的路由器判断该数据消息的路由器地址是否为0,如果是,则执行步骤613,否则执行步骤612;
[0143] 步骤612:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息路由器地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤607;
[0144] 步骤613:接收到该数据消息的路由器判断自己的坐标是否等于该数据消息的目的地址的坐标,如果是,则执行步骤615,否则执行步骤614;
[0145] 步骤614:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤607;
[0146] 步骤615:接收到数据消息的路由器选择一个接口,该接口的接口ID等于该数据消息目的地址的接口ID,从该接口转发该数据消息;节点N2接收到该数据消息后,保存该数据消息负载中的数据;
[0147] 步骤616:结束。
[0148] 节点通过上述过程从距离最近的路由器获取数据,由于上述过程中路由器能够缓存数据并为节点提供数据,因此大幅度降低了数据通信延迟和代价,同时,上述过程通过邻居表来建立到达服务器的最优路由路径,从而降低了数据通信延迟和代价;此外,由于节点和服务器的地址包含接口ID,从而实现了数据的正确转发,确保了数据通信的成功率。
[0149] 实施例1
[0150] 基于表1的仿真参数,本实施例模拟了本发明中的一种命名数据网络的缓存和路由实现方法,该实现方法的性能分析如下:当节点移动速度增加时,网络性能下降,数据通信成功率有所降低,当节点移动速度降低时,网络性能增强,数据通信成功率有所提高,数据获取的平均成功率为98.37%。
[0151] 表1仿真参数
[0152]
[0153]
[0154] 本发明提供了一种命名数据网络的缓存和路由实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。