1.一种命名数据网络的缓存和路由实现方法,其特征在于,所述网络包含节点、服务器和路由器;
一个路由器包含两个以上的上游接口和两个以上的下游接口,上游接口与路由器相连,下游接口与节点或者服务器相连;一个节点或者服务器具有一个接口,与路由器相连;
每个接口由接口ID唯一标识,接口ID为大于0的正整数;接口ID为f的接口记为接口f;
一种数据由一个名称唯一标识;一个路由器具有唯一的坐标;一个节点、服务器或者路由器由一个地址唯一标识;一个地址包含坐标和接口ID;一个节点或者服务器通过电子地图获取每个路由器的坐标;一个消息由消息类型唯一标识,如下表所示:消息类型的值 消息名称
1 节点消息
2 服务器消息
3 邻居消息
4 发布消息
5 请求消息
6 数据消息
一个路由器保存一个节点表,一个节点表项包含地址和生命周期域;一个节点消息包含消息类型和地址;节点N1与路由器R1相连,定期执行下述操作:步骤101:开始;
步骤102:节点N1构建一个地址,该地址的坐标为路由器R1的坐标,接口ID为0;节点N1发送一个节点消息,该节点消息的消息类型值为1,地址为创建的地址;
步骤103:路由器R1从接口f1接收到该节点消息,将该节点消息的地址域值的接口ID设置为f1;路由器R1查看节点表,如果存在一个节点表项,该节点表项的地址等于该节点消息的地址,则将该节点表项的生命周期设置为最大值;否则,路由器R1创建一个节点表项,该节点表项的地址等于该节点消息的地址,将生命周期设置为最大值;
步骤104:结束。
2.根据权利要求1所述的一种命名数据网络的缓存和路由实现方法,其特征在于,路由器保存一个服务器表,一个服务器表项包含地址、名称和生命周期域;一个服务器或者路由器保存一个数据表,一个数据表项包含名称、数据值和生命周期;一个服务器消息包含消息类型、名称和地址;服务器S1与路由器R1相连,能提供数据DA1,数据DA1由名称NA1标识,定期执行下述操作:步骤201:开始;
步骤202:服务器S1创建一个数据表项,该数据表项的名称为NA1,数据值为DA1,生命周期为最大值;服务器S1构建一个地址,该地址的坐标为路由器R1的坐标,接口ID为0;服务器S1发送一个服务器消息,该服务器消息的消息类型值为2,名称为NA1,地址为创建的地址;
步骤203:路由器R1从接口f2接收到该服务器消息,将该服务器消息的地址域值的接口ID设置为f2;路由器R1查看服务器表,如果存在一个服务器表项,该服务器表项的地址和名称分别等于该服务器消息的地址和名称,则将该服务器表项的生命周期设置为最大值;否则,路由器R1创建一个服务器表项,该服务器表项的地址和名称分别等于该服务器消息的地址和名称,将生命周期设置为最大值;
步骤204:结束。
3.根据权利要求1所述的一种命名数据网络的缓存和路由实现方法,其特征在于,路由器保存一个邻居表,一个邻居表项包含地址、接口ID和生命周期;一个邻居消息包含消息类型和地址;路由器R1定期执行下述操作:步骤301:开始;
步骤302:路由器R1构建一个地址,该地址的坐标等于路由器R1自己的坐标,接口ID等于0,路由器R1从每个上游接口发送一个邻居消息,该邻居消息的消息类型值为3,地址为创建的地址;
步骤303:其他路由器从接口x1接收到该邻居消息后查看邻居表,如果存在一个邻居表项,该邻居表项的地址等于该邻居消息的地址,则将该邻居表项的接口ID更新为x1,将生命周期设置为最大值;否则,该路由器创建一个邻居表项,该邻居表项的地址等于该邻居消息的地址,接口ID等于x1,生命周期设置为最大值;
步骤304:结束。
4.根据权利要求1所述的一种命名数据网络的缓存和路由实现方法,其特征在于,路由器保存一个静态表,每个静态表项包含地址、名称和生命周期;发布消息包含消息类型、名称和地址;路由器R1定期执行下述操作:步骤401:开始;
步骤402:路由器R1查看服务器表,针对每个服务器表项,路由器R1执行下述操作:路由器R1从每个上游接口发送一个发布消息,该发布消息的消息类型值为4,名称和地址分别等于该服务器表项的名称和地址;
步骤403:其他路由器从接口x2接收到发布消息后查看静态表,如果存在一个静态表项,该静态表项的名称和地址分别等于该发布消息的名称和地址,且生命周期大于阈值TH1,则执行步骤408,否则执行步骤404;
步骤404:从接口x2接收到发布消息的路由器查看静态表,如果存在一个静态表项,该静态表项的名称和地址分别等于该发布消息的名称和地址,则执行步骤405,否则执行步骤
406;
步骤405:从接口x2接收到发布消息的路由器查看静态表,选择一个静态表项,该静态表项的名称和地址分别等于该发布消息的名称和地址,将该静态表项的生命周期设置为最大值,执行步骤407;
步骤406:从接口x2接收到发布消息的路由器创建一个静态表项,该静态表项的名称和地址分别等于该发布消息的名称和地址,生命周期为最大值;
步骤407:从接口x2接收到发布消息的路由器从除了接口x2以外的所有上游接口转发该发布消息,执行步骤403;
步骤408:结束。
5.根据权利要求4所述的一种命名数据网络的缓存和路由实现方法,其特征在于,路由器保存一个数据表,每个数据表项包含名称、数值和生命周期;每个路由器保存一个动态表,一个动态表项包含地址、名称和生命周期;一个请求消息包含源地址、目的地址、路由器地址和名称;一个数据消息包含源地址、目的地址、路由器地址、名称和负载;节点N2与路由器R2相连,数据DA1由名称NA1标识;如果路由器R2检测到任何动态表项的名称域值都不等于NA1,节点N2则通过下述过程获取数据DA1:步骤501:开始;
步骤502:节点N2构建一个地址,该地址的坐标为路由器R2的坐标,接口ID为0;节点N2发送一个请求消息,该请求消息的消息类型值为5,源地址为创建的地址,目的地址和路由器地址为空,名称为NA1;
步骤503:路由器R2从接口z1接收到请求消息,将该请求消息的源地址的接口ID设置为z1;路由器R2选择一个静态表项,该静态表项的名称等于该请求消息的名称,将该请求消息的目的地址设置为该静态表项的地址;路由器R2构建一个地址,该地址的坐标为((x1+x2)/
2,(y1+y2)/2),接口ID为0,(x1,y1)为该请求消息源地址的坐标,(x2,y2)为该请求消息目的地址的坐标,将该请求消息的路由器地址设置为构建的地址;路由器R2创建一个动态表项,该动态表项的名称为该请求消息的名称,地址为该请求消息的路由器地址,生命周期为最大值;路由器R2选择一个邻居表项,该邻居表项的地址的坐标与该请求消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该请求消息;
步骤504:路由器接收到请求消息后查看动态表;如果存在一个动态表项,该动态表项的名称等于该请求消息的名称且地址等于该请求消息的路由器地址,则将该动态表项的生命周期设置为最大值;否则该路由器创建一个动态表项,该动态表项的名称等于该请求消息的名称且地址等于该请求消息的路由器地址,将该动态表项的生命周期设置为最大值;
如果该路由器的坐标等于该请求消息的目的地址的坐标,则执行步骤506,否则执行步骤
505;
步骤505:接收到请求消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该请求消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该请求消息,执行步骤504;
步骤506:接收到请求消息的路由器选择一个接口,该接口的接口ID等于该请求消息目的地址的接口ID,从该接口转发该请求消息;服务器接收到该请求消息后,选择一个数据表项,该数据表项的名称等于该请求消息的名称,发送一个数据消息,该数据消息的消息类型值为6,源地址等于该请求消息的目的地址,目的地址等于该请求消息的源地址,路由器地址和名称分别等于该请求消息的路由器地址和名称,负载为该数据表项的数据值;
步骤507:路由器接收到该数据消息,如果该路由器的坐标等于该数据消息路由器地址的坐标,则执行步骤508,否则执行步骤510;
步骤508:接收到该数据消息的路由器将该数据消息的路由器地址设置为0并查看数据表;如果存在一个数据表项,该数据表项的名称等于该数据消息的名称,则将该数据表项的生命周期设置为最大值;否则该路由器创建一个数据表项,该数据表项的名称等于该数据消息的名称,数据值等于该数据消息负载中的数据,生命周期设置为最大值;
步骤509:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤507;
步骤510:接收到该数据消息的路由器查看动态表,如果存在一个动态表项,该动态表项的名称等于该数据消息的名称且地址等于该数据消息的路由器地址,则将该动态表项的生命周期设置为最大值;否则该路由器创建一个动态表项,该动态表项的名称等于该数据消息的名称且地址等于该数据消息的路由器地址,将该动态表项的生命周期设置为最大值;
步骤511:接收到该数据消息的路由器判断该数据消息的路由器地址是否为0,如果是,则执行步骤513,否则执行步骤512;
步骤512:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息路由器地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤507;
步骤513:接收到该数据消息的路由器判断自己的坐标是否等于该数据消息的目的地址的坐标,如果是,则执行步骤515,否则执行步骤514;
步骤514:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤507;
步骤515:接收到数据消息的路由器选择一个接口,该接口的接口ID等于该数据消息目的地址的接口ID,从该接口转发该数据消息;节点N2接收到该数据消息后,保存该数据消息负载中的数据;
步骤516:结束。
6.根据权利要求5所述的一种命名数据网络的缓存和路由实现方法,其特征在于,节点N3与路由器R3相连,数据DA1由名称NA1标识;如果路由器R3检测到至少有一个动态表项的名称域值等于NA1,节点N3则通过下述过程获取数据DA1:步骤601:开始;
步骤602:节点N3构建一个地址,该地址的坐标为路由器R3的坐标,接口ID为0;节点N3发送一个请求消息,该请求消息的消息类型值为5,源地址为创建的地址,目的地址和路由器地址为空,名称为NA1;
步骤603:路由器R3从接口z2接收到请求消息,将该请求消息的源地址的接口ID设置为z2;路由器R3选择所有名称等于该请求消息的动态表项,从这些动态表项中选择一个动态表项,该动态表项的地址的坐标与自己的坐标距离最近,将该请求消息的目的地址设置为该动态表项的地址;路由器R3构建一个地址,该地址的坐标为((x3+x4)/2,(y3+y4)/2),接口ID为0,(x3,y3)为该请求消息源地址的坐标,(x4,y4)为该请求消息目的地址的坐标,将该请求消息的路由器地址设置为构建的地址;路由器R3创建一个动态表项,该动态表项的名称为该请求消息的名称,地址为该请求消息的路由器地址,生命周期为最大值;路由器R3选择一个邻居表项,该邻居表项的地址的坐标与该请求消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该请求消息;
步骤604:路由器接收到请求消息后查看动态表;如果存在一个动态表项,该动态表项的名称等于该请求消息的名称且地址等于该请求消息的路由器地址,则将该动态表项的生命周期设置为最大值;否则该路由器创建一个动态表项,该动态表项的名称等于该请求消息的名称且地址等于该请求消息的路由器地址,将该动态表项的生命周期设置为最大值;
如果该路由器的坐标等于该请求消息的目的地址的坐标,则执行步骤606,否则执行步骤
605;
步骤605:接收到请求消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该请求消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该请求消息,执行步骤604;
步骤606:接收到请求消息的路由器选择一个数据表项,该数据表项的名称等于该请求消息的名称,构建一个数据消息,该数据消息的消息类型值为6,源地址等于该请求消息的目的地址,目的地址等于该请求消息的源地址,路由器地址和名称分别等于该请求消息的路由器地址和名称,负载为该数据表项的数据值;该路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息路由器地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息;
步骤607:路由器接收到该数据消息,如果该路由器的坐标等于该数据消息路由器地址的坐标,则执行步骤608,否则执行步骤610;
步骤608:接收到该数据消息的路由器将该数据消息的路由器地址设置为0并查看数据表;如果存在一个数据表项,该数据表项的名称等于该数据消息的名称,则将该数据表项的生命周期设置为最大值;否则该路由器创建一个数据表项,该数据表项的名称等于该数据消息的名称,数据值等于该数据消息负载中的数据,生命周期设置为最大值;
步骤609:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤607;
步骤610:接收到该数据消息的路由器查看动态表,如果存在一个动态表项,该动态表项的名称等于该数据消息的名称且地址等于该数据消息的路由器地址,则将该动态表项的生命周期设置为最大值;否则该路由器创建一个动态表项,该动态表项的名称等于该数据消息的名称且地址等于该数据消息的路由器地址,将该动态表项的生命周期设置为最大值;
步骤611:接收到该数据消息的路由器判断该数据消息的路由器地址是否为0,如果是,则执行步骤613,否则执行步骤612;
步骤612:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息路由器地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤607;
步骤613:接收到该数据消息的路由器判断自己的坐标是否等于该数据消息的目的地址的坐标,如果是,则执行步骤615,否则执行步骤614;
步骤614:接收到该数据消息的路由器选择一个邻居表项,该邻居表项的地址的坐标与该数据消息目的地址的坐标距离最近,从该邻居表项的接口ID所标识的接口发送该数据消息,执行步骤607;
步骤615:接收到数据消息的路由器选择一个接口,该接口的接口ID等于该数据消息目的地址的接口ID,从该接口转发该数据消息;节点N2接收到该数据消息后,保存该数据消息负载中的数据;
步骤616:结束。