1.一种以数据为中心的新一代网络实现方法,其特征在于,所述网络包括节点和路由器;路由器分为接入路由器和骨干路由器;
一种类型的数据由名称唯一定义,一种类型的数据有两种以上的版本,每种版本由版本号标识;如果一个骨干路由器有权限产生和更新一种或者两种以上的类型的数据,那么该骨干路由器称为数据路由器;一种类型的数据只能被一个数据路由器产生和更新,一个数据路由器能够有权限产生和更新两种以上的类型的数据;
一个节点或者路由器具有一个网络唯一性的硬件ID;如果一个节点有权限获取一种类型的数据,该节点则成为该数据的用户节点;一个节点能够是两种以上的类型数据的用户节点;
骨干路由器配置两个以上的接口,每个接口与一个路由器相连;接入路由器配置两个以上的接口,这些接口分为上游接口和下游接口,上游接口与路由器相连,下游接口与节点相连;节点配置一个接口,与接入路由器相连;一个接口由接口ID唯一标识,接口ID为x的接口能够记为接口x;消息由消息类型唯一定义,消息名称包括注册消息、邻居消息、路径消息、更新消息、推送消息、请求消息以及响应消息,消息类型的值分别为1、2、3、4、5、6和7;
接入路由器保存一个节点表,每个节点表项包含硬件ID、接口ID、名称、版本号和生命周期;注册消息包含消息类型,名称集合和硬件ID;节点ND1有权限获取两种以上的类型的数据,所述数据的名称构成名称集合NS1;节点ND1与接入路由器AR1相连,定期执行下述注册操作:步骤101:开始;
步骤102:节点ND1发送注册消息,该注册消息的消息类型值为1,名称集合为NS1,硬件ID为节点ND1的硬件ID;
步骤103:接入路由器AR1从接口f1接收到注册消息,对于该注册消息名称集合中的每个名称NA0,接入路由器AR1执行下述操作:如果接入路由器AR1保存有一个节点表项,该节点表项的硬件ID等于该注册消息的硬件ID且名称等于NA0,接入路由器AR1则将该节点表项的接口ID更新为f1,将生命周期设置为最大值;否则接入路由器AR1创建一个节点表项,该节点表项的硬件ID等于该注册消息的硬件ID,名称等于NA0,接口ID为f1,将生命周期设置为最大值,版本号为0;
步骤104:结束;
一个路由器保存一个邻居表,一个邻居表项包含硬件ID、接口ID和生命周期;邻居消息包含消息类型和硬件ID;骨干路由器BR1定期执行下述操作:步骤201:开始;
步骤202:骨干路由器BR1从每个接口发送邻居消息,该邻居消息的消息类型值为2,硬件ID等于骨干路由器BR1的硬件ID;
步骤203:邻居路由器从接口f2接收到邻居消息后查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,该邻居路由器则将该邻居表项的接口ID更新为f2,将生命周期设置为最大值;否则,邻居路由器创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,接口ID等于f2,将生命周期设置为最大值;
步骤204:结束;
接入路由器AR1定期执行下述操作:
步骤301:开始;
步骤302:接入路由器AR1从每个上游接口发送邻居消息,该邻居消息的消息类型值为
2,硬件ID等于接入路由器AR1的硬件ID;
步骤303:邻居路由器从接口f3接收到邻居消息后查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,该邻居路由器则将该邻居表项的接口ID更新为f3,将生命周期设置为最大值;否则,邻居路由器创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,接口ID等于f3,将生命周期设置为最大值;
步骤304:结束;
一个数据路由器保存一个用户表,一个用户表项包含名称、硬件ID集合和生命周期;
接入路由器保存一个转发表,一个转发表项包含名称、硬件ID集合和生命周期;
骨干路由器保存一个消息表,一个消息表项包含序列号和生命周期;
数据路由器到达一个接入路由器的路径由硬件ID集合标识,该硬件ID集合由该路径所含的路由器的硬件ID构成;数据路由器DR1有权限产生和更新数据DA1,数据DA1由名称NA1唯一标识;
路径消息包含消息类型、硬件ID集合、名称和序列号;
更新消息包含消息类型、硬件ID集合、名称和负载;
数据路由器DR1的硬件ID为HID1,数据路由器DR1定期执行下述操作:
步骤401:开始;
步骤402:数据路由器DR1产生一个随机数,从每个接口发送一个路径消息,该路径消息的消息类型值为3,硬件ID集合为{HID1},名称为NA1,序列号为产生的随机数;
步骤403:其他路由器从接口x1接收到路径消息,如果该路由器为骨干路由器,则执行步骤404,否则执行步骤406;
步骤404:从接口x1接收到路径消息的路由器查看消息表,如果存在一个消息表项,该消息表项的序列号等于该路径消息的序列号,则执行步骤412,否则执行步骤405;
步骤405:从接口x1接收到路径消息的路由器将自己的硬件ID加入到该路径消息的硬件ID集合中并作为第一个元素,创建一个消息表项,该消息表项的序列号等于该路径消息的序列号,生命周期设置为最大值,从除了接口x1以外的所有接口转发该路径消息,执行步骤403;
步骤406:从接口x1接收到路径消息的路由器查看转发表,如果存在一个转发表项,该转发表项的名称等于该路径消息的名称,且生命周期大于阈值TH1,则执行步骤412,否则执行步骤407;
步骤407:从接口x1接收到路径消息的路由器查看转发表,如果存在一个转发表项,该转发表项的名称等于该路径消息的名称,则执行步骤408,否则执行步骤409;
步骤408:从接口x1接收到路径消息的路由器选择一个转发表项,该转发表项的名称等于该路径消息的名称,将该转发表项的硬件ID集合设置为该路径消息的硬件ID集合,将生命周期设置为最大值,执行步骤410;
步骤409:从接口x1接收到路径消息的路由器创建一个转发表项,该转发表项的名称等于该路径消息的名称,硬件ID集合等于该路径消息的硬件ID集合,将生命周期设置为最大值;
步骤410:从接口x1接收到路径消息的路由器将自己的硬件ID加入到路径消息的硬件ID集合中并作为第一个元素,从除了接口x1以外的每个上游接口转发该路径消息;该路由器查看节点表,如果存在一个节点表项,该节点表项的名称等于该路径消息的名称,则执行步骤411,否则执行步骤403;
步骤411:从接口x1接收到路径消息的路由器选择一个转发表项,该转发表项的名称等于该路径消息的名称,设置一个硬件ID集合变量hs1,变量hs1的值等于该转发表项的硬件ID集合,将路由器自己的硬件ID加入到变量hs1并作为第一个元素,从变量hs1中删除最后一个元素;该路由器创建一个更新消息,该更新消息的消息类型值为4,硬件ID集合等于该转发表项的硬件ID集合,名称等于该转发表项的名称,负载为参数hs1;该路由器选择一个邻居表项,该邻居表项的硬件ID等于该更新消息的硬件ID集合的第一个元素,从该更新消息的硬件ID集合中删除第一个元素,从该邻居表项的接口ID所标识的接口发送该更新消息,执行步骤403;
步骤412:路由器接收到更新消息,如果该更新消息的硬件ID集合为空,则执行步骤
414,否则执行步骤413;
步骤413:接收到更新消息的路由器选择一个邻居表项,该邻居表项的硬件ID等于该更新消息的硬件ID集合的第一个元素,从该更新消息的硬件ID集合中删除第一个元素,从该邻居表项的接口ID所标识的接口发送该更新消息,执行步骤412;
步骤414:接收到更新消息的路由器查看用户表,如果存在一个用户表项,该用户表项的名称等于该更新消息的名称,且硬件ID集合的第一个元素等于该更新消息负载中的变量hs1中的第一个元素,则将该用户表项的硬件ID集合更新为该更新消息负载中的变量hs1,将生命周期设置为最大值;否则该路由器创建一个用户表项,该用户表项的名称等于该更新消息的名称,硬件ID集合等于该更新消息负载中的变量hs1,将生命周期设置为最大值;
步骤415:结束。
2.根据权利要求1所述的一种以数据为中心的新一代网络实现方法,其特征在于,一个路由器保存一个数据表,一个数据表项包含名称、数据值和生命周期;数据路由器DR1有权限产生和更新数据DA1,数据DA1由名称NA1唯一标识;一个推动消息由消息类型、名称、版本号和硬件ID集合构成;如果数据路由器DR1产生了数据DA1,其版本号为V2,数据路由器DR1则执行下述操作:步骤501:开始;
步骤502:数据路由器DR1查看数据表,如果存在一个数据表项,该数据表项的名称为NA1,则将该数据表项的版本号更新为V2,将数据值更新为数据DA1,将生命周期设置为最大值;否则,数据路由器DR1创建一个数据表项,该数据表项的名称为NA1,版本号为V2,数据值为数据DA1,将生命周期设置为最大值;
步骤503:数据路由器DR1选择所有名称等于NA1的用户表项,针对每个用户表项,数据路由器DR1执行下述操作:创建一个推送消息,该推送消息的消息类型值为5,名称为NA1,版本号为V2,硬件ID集合为该用户表项的硬件ID集合,数据路由器DR1选择一个邻居表项,该邻居表项的硬件ID等于该推送消息的硬件ID集合的最后一个元素,从该推送消息的硬件ID集合中删除最后一个元素,从该邻居表项的接口ID所标识的接口发送该推送消息;
步骤504:路由器接收到推送消息,如果该路由器存在一个数据表项,该数据表项的名称等于该推送消息的名称但是版本号不等于该推送消息的版本号,则执行步骤505,否则执行步骤506;
步骤505:接收到推送消息的路由器删除一个数据表项,该数据表项的名称等于该推送消息的名称但是版本号不等于该推送消息的版本号;
步骤506:如果该推送消息的硬件ID集合为空,则执行步骤508,否则执行步骤507;
步骤507:接收到推送消息的路由器选择一个邻居表项,该邻居表项的硬件ID等于该推送消息的硬件ID集合的最后一个元素,从该推送消息的硬件ID集合中删除第一个元素,从该邻居表项的接口ID所标识的接口发送该推送消息,执行步骤506;
步骤508:接收到推送消息的路由器查看节点表,选择所有名称等于该推送消息的名称的节点表项,针对每个选中的节点表项,该路由器将该节点表项的版本号更新为该推送消息的版本号;
步骤509:结束。
3.根据权利要求2所述的一种以数据为中心的新一代网络实现方法,其特征在于,节点ND1有权限获取数据DA1,数据DA1由名称NA1标识;
请求消息包含消息类型、版本号、名称、硬件ID集合和负载;
响应消息包含消息类型、版本号、名称、路由器硬件ID、硬件ID集合和负载;
节点ND1的硬件ID为HID2,与接入路由器AR1相连,通过下述过程获取数据DA1:步骤601:开始;
步骤602:节点ND1设置一个硬件ID变量hs2,该变量的值为{HID2},节点ND1发送一个请求消息,该请求消息的消息类型值为6,版本号为0,名称为NA1,硬件ID集合为空,负载为变量hs2;
步骤603:接入路由器AR1接收到请求消息后选择一个节点表项,该节点表项的名称等于该请求消息的名称,接入路由器AR1选择一个转发表项,该转发表项的名称等于该请求消息的名称;接入路由器AR1将该请求消息的版本号更新为该节点表项的版本号,将该请求消息的硬件ID集合设置为该转发表项的硬件ID集合;如果接入路由器AR1保存一个数据表项,该数据表项的名称和版本号分别等于该请求消息的名称和版本号,则执行步骤604,否则执行步骤605;
步骤604:接入路由器AR1选择一个数据表项,该数据表项的名称和版本号分别等于该请求消息的名称和版本号,将该数据表项的生命周期设置为最大值,接入路由器AR1构建一个响应消息,该响应消息的消息类型值为7,版本号和名称分别等于该请求消息的版本号和名称,路由器硬件ID为空,硬件ID集合等于该请求消息负载中的变量hs2,负载为该数据表项的数据值;接入路由器AR1选择一个节点表项,该节点表项的硬件ID等于该响应消息的硬件ID集合的最后一个元素,从该响应消息的硬件ID集合中删除最后一个元素,从该节点表项的接口ID所标识的接口发送该响应消息,执行步骤609;
步骤605:接入路由器AR1将自己的硬件ID加入到该请求消息负载中的变量hs2中并作为最后一个元素,选择一个邻居表项,该邻居表项的硬件ID等于该请求消息的硬件ID集合的第一个元素,从该请求消息的硬件ID集合中删除第一个元素,从该邻居表项的接口ID所标识的接口发送该请求消息;
步骤606:其他路由器接收到该请求消息,如果该路由器保存一个数据表项,该数据表项的名称和版本号分别等于该请求消息的名称和版本号,则执行步骤607,否则执行步骤
608;
步骤607:接收到该请求消息的路由器选择一个数据表项,该数据表项的名称和版本号分别等于该请求消息的名称和版本号,接收到该请求消息的路由器将该数据表项的生命周期设置为最大值,构建一个响应消息,该响应消息的消息类型值为7,版本号和名称分别等于该请求消息的版本号和名称,路由器硬件ID等于该请求消息负载中变量hs2中的第⌊(z/
2)+1⌋元素,其中,z为变量hs2的元素个数,硬件ID集合等于该请求消息负载中的变量hs2,负载为该数据表项的数据值;该路由器选择一个邻居表项,该邻居表项的硬件ID等于该响应消息的硬件ID集合的最后一个元素,从该响应消息的硬件ID集合中删除最后一个元素,从该邻居表项的接口ID所标识的接口发送该响应消息,执行步骤609;
步骤608:接收到该请求消息的路由器将自己的硬件ID加入到该请求消息负载中的变量hs2中并作为最后一个元素,选择一个邻居表项,该邻居表项的硬件ID等于该请求消息的硬件ID集合的第一个元素,从该请求消息的硬件ID集合中删除第一个元素,从该邻居表项的接口ID所标识的接口发送该请求消息,执行步骤606;
步骤609:如果是节点接收到该响应消息,则执行步骤615,否则执行步骤610;
步骤610:路由器接收到响应消息后判断自己的硬件ID是否等于该响应消息的路由器硬件ID,如果等于,则执行步骤611,否则执行步骤612;
步骤611:接收到响应消息的路由器创建一个数据表项,该数据表项的名称和版本号分别等于该响应消息的名称和版本号,数据值等于该响应消息的负载中的数据值,生命周期设置为最大值;
步骤612:接收到响应消息的路由器判断该响应消息的硬件ID集合中是否只存在一个元素,如果是,则执行步骤613,否则执行步骤614;
步骤613:接收到响应消息的路由器选择一个节点表项,该节点表项的硬件ID等于该响应消息的硬件ID集合的唯一一个元素,从该响应消息的硬件ID集合中删除该元素,从该节点表项的接口ID所标识的接口发送该响应消息,执行步骤609;
步骤614:接收到响应消息的路由器选择一个邻居表项,该邻居表项的硬件ID等于该响应消息的硬件ID集合的最后一个元素,从该响应消息的硬件ID集合中删除最后一个元素,从该邻居表项的接口ID所标识的接口发送该响应消息,执行步骤609;
步骤615:节点接收到该响应消息后,保存响应消息负载中的数据;
步骤616:结束。