首页 > 专利 > 常熟理工学院 > 一种高效的命名数据网络实现方法专利详情

一种高效的命名数据网络实现方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2018-09-14
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2019-02-22
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2020-10-27
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2038-09-14
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201811075184.2 申请日 2018-09-14
公开/公告号 CN109257276B 公开/公告日 2020-10-27
授权日 2020-10-27 预估到期日 2038-09-14
申请年 2018年 公开/公告年 2020年
缴费截止日
分类号 H04L12/721H04L12/751 主分类号 H04L12/721
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 7
权利要求数量 8 非专利引证数量 1
引用专利数量 1 被引证专利数量 0
非专利引证 1、2017.01.12CN 106502993 A,2017.03.15姜一鸣等.命名数据网络中的一种双模式转发模型《.重庆邮电大学学报(自然科学版)》.2018,;
引用专利 US2017012845A 被引证专利
专利权维持 4 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 常熟理工学院 当前专利权人 常熟理工学院
发明人 王晓喃、闫海英、乐德广 第一发明人 王晓喃
地址 江苏省苏州市常熟市常熟理工学院(东南校区) 邮编 215500
申请人数量 1 发明人数量 3
申请人所在省 江苏省 申请人所在市 江苏省苏州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
南京瑞弘专利商标事务所 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
杨晓玲
摘要
本发明提供了一种高效的命名数据网络实现方法,所述网络由一个控制器、两个以上的路由器和两个以上的设备构成;一个控制器配置两个以上的有线接口,每个有线接口与一个路由器连接;设备通过本发明中的实现方法能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。
  • 摘要附图
    一种高效的命名数据网络实现方法
  • 说明书附图:图1
    一种高效的命名数据网络实现方法
  • 说明书附图:图2
    一种高效的命名数据网络实现方法
  • 说明书附图:图3
    一种高效的命名数据网络实现方法
  • 说明书附图:图4
    一种高效的命名数据网络实现方法
  • 说明书附图:图5
    一种高效的命名数据网络实现方法
  • 说明书附图:图6
    一种高效的命名数据网络实现方法
  • 说明书附图:图7
    一种高效的命名数据网络实现方法
  • 说明书附图:图8
    一种高效的命名数据网络实现方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2020-10-27 授权
2 2019-02-22 实质审查的生效 IPC(主分类): H04L 12/721 专利申请号: 201811075184.2 申请日: 2018.09.14
3 2019-01-22 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种高效的命名数据网络实现方法,其特征在于,所述网络由一个控制器、两个以上的路由器和两个以上的设备构成;一个控制器配置两个以上的有线接口,每个有线接口与一个路由器连接;一个路由器配置两个以上的上游有线接口、两个以上的下游有线接口以及两个以上的下游无线接口,每个上游有线接口与一个控制器或者路由器相连,一个路由器的下游有线接口与一个路由器或者设备相连,一个路由器的下游无线接口与设备相连;
一个设备配置一个有线接口或者一个无线接口,该接口与路由器相连,该路由器称为该设备的关联路由器;
每个有线接口或者无线接口由一个接口ID唯一标识,接口ID预先配置,接口ID为i的接口简写为接口i;
一种类型的数据由一个名称唯一标识;一个消息由名称、消息类型、接口ID集合和负载构成;消息类型值如下所示:
消息类型名称 消息类型值
发布消息 1
注册消息 2
更新消息 3
信标消息 4
删除消息 5
请求消息 6
响应消息 7
每个路由器保存一个控制器表,控制器表至多包含一个控制器表项,该控制器表项包含接口ID集合和生命周期域;控制器定期执行下述操作维护控制器表:
步骤101:开始;
步骤102:控制器构建一个发布消息,该发布消息的名称为空,消息类型值为1,接口ID集合为空,负载为空;控制器从每个接口发送该发布消息;
步骤103:路由器从上游接口u1接收到发布消息后,将上游接口u1加入到该发布消息接口ID集合中并作为最后一个元素;该路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域的元素个数小于该发布消息的接口ID集合的元素个数,则执行步骤110,否则执行步骤104;
步骤104:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域等于该发布消息的接口ID集合,则执行步骤105,否则执行步骤106;
步骤105:从上游接口u1接收到发布消息的路由器将控制表中的控制器表项的生命周期设置为最大值,从每个下游接口转发该发布消息,执行步骤103;
步骤106:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域的元素个数等于该发布消息的接口ID集合的元素个数,则执行步骤110,否则执行步骤107;
步骤107:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项,则执行步骤108,否则执行步骤109;
步骤108:从上游接口u1接收到发布消息的路由器删除控制表中的控制器表项;
步骤109:从上游接口u1接收到发布消息的路由器创建一个控制器表项,该控制器表项的接口ID集合等于该发布消息的接口ID集合,生命周期设置为最大值,执行步骤103;
步骤110:结束;
如果路由器检测到控制器表项的生命周期过期,则删除该控制器表项。

2.根据权利要求1所述的一种高效的命名数据网络实现方法,其特征在于,一个路由器或者控制器维护一个转发表,每个转发表项包含名称域、接口ID集合域、定时器集合域以及生命周期域;
每个路由器维护一个提供者表,一个提供者表项包括名称、接口和生命周期域;
在设备D1的关联路由器为路由器R1,数据C1由名称N1唯一标识的条件下,设备D1产生数据C1或者设备D1的关联路由器发生了变化之后,设备D1执行下述操作:
步骤201:开始;
步骤202:设备D1发送注册消息,该注册消息的名称为名称N1,接口ID集合为空,消息类型值为2,负载为空;
步骤203:路由器R1从下游接口f1接收到该注册消息后查看提供者表,如果存在一个提供者表项,该提供者表项的名称域值为N1,接口ID为f1,则执行步骤204,否则执行步骤205;
步骤204:路由器R1从下游接口f1接收到该注册消息后,选择一个提供者表项,将该提供者表项的生命周期设置为最大值,执行步骤206;
步骤205:路由器R1从下游接口f1接收到该注册消息后,创建一个提供者表项,该提供者表项的名称域值为N1,接口ID为f1,生命周期设置为最大值;
步骤206:结束。

3.根据权利要求2所述的一种高效的命名数据网络实现方法,其特征在于,路由器R1定期执行下述操作维护转发表:
步骤301:开始;
步骤302:路由器R1创建一个名称集合参数NS1,名称集合参数NS1的初始值为空;路由器R1查看提供者表,针对每个提供者表项,路由器R1执行下述操作:如果该提供者表项的名称包含在名称集合参数NS1中,则不执行任何操作,否则将该提供者表项的名称域值加入到名称集合参数NS1中;
步骤303:对于名称集合参数NS1中的每个元素,路由器R1执行下述操作:路由器R1查看控制器表项,构建一个更新消息,该更新消息的名称为名称N1,接口ID集合为控制器表项中的接口ID集合,消息类型值为3,负载为接口ID集合参数P1,接口ID集合参数P1的初始值为空,路由器R1选取更新消息接口ID集合中的最后一个元素标识的接口,从更新消息接口ID集合中删除最后一个元素,从选中的接口转发该更新消息;
步骤304:判断是控制器从接口f2还是路由器从接口f3接收到该更新消息,如果是控制器则执行步骤306,否则执行步骤305;
步骤305:路由器将f3加入到该更新消息负载中的参数P1中并作为最后一个元素存在;
如果存在一个转发表项,该转发表项的名称域值等于名称N1且接口ID集合等于该更新消息负载中的参数P1,则将该转发表项的生命周期设置为最大值;否则创建一个转发表项,该转发表项的名称域值等于名称N1,接口ID集合等于该更新消息负载中的参数P1,生命周期设置为最大值;该路由器选取更新消息接口ID集合中的最后一个元素标识的接口,从更新消息接口ID集合中删除最后一个元素,从选中的接口转发该更新消息,执行步骤304;
步骤306:控制器将f2加入到该更新消息负载中的参数P1中并作为最后一个元素存在;
如果存在一个转发表项,该转发表项的名称域值等于名称N1且接口ID集合等于该更新消息负载中的参数P1,则将该转发表项的生命周期设置为最大值;否则该控制器创建一个转发表项,该转发表项的名称域值等于名称N1,接口ID集合等于该更新消息负载中的参数P1,定时器集合为空,生命周期设置为最大值;
步骤307:结束。

4.根据权利要求3所述的一种高效的命名数据网络实现方法,其特征在于,如果设备D1的关联路由器为路由器R1,设备D1定期执行下述操作更新提供者表项:
步骤401:开始;
步骤402:设备D1发送一个信标消息,该信标消息的名称为空,接口ID集合为空,消息类型值为4,负载为设备D1所能提供的所有数据的名称集合;
步骤403:路由器R1从接口z1接收到该信标消息后,查看提供者表;针对信标消息负载中的名称集合中的每个名称N',路由器R1执行下述操作:路由器R1选择一个提供者表项,该提供者表项的名称域值等于名称N'且接口ID等于z1,将该提供者表项的生命周期设置为最大值;
步骤404:结束。

5.根据权利要求3所述的一种高效的命名数据网络实现方法,其特征在于,如果路由器R1检测到提供者表项E1的生命周期衰减到0,则执行下述操作更新转发表:
步骤501:开始;
步骤502:路由器R1查看是否至少存在两个提供者表项,这两个提供者表项的名称域值等于提供者表项E1的名称域值,如果是,则执行步骤503,否则执行步骤504;
步骤503:路由器R1删除提供者表项E1,执行步骤508;
步骤504:路由器R1选择控制器表项,构建一个删除消息,该删除消息的名称域值等于提供者表项E1中的名称域值,接口ID集合等于控制器表项的接口ID集合,消息类型值为5,负载为接口ID集合参数P2,参数P2的初始值为空;路由器R1选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,路由器R1删除提供者表项E1;
步骤505:判断是控制器从接口f4还是路由器从接口f5接收到该删除消息,如果是控制器则执行步骤507,否则执行步骤506;
步骤506:路由器将f5加入到该删除消息负载中的参数P2中并作为最后一个元素;如果该路由器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P2,则该路由器删除该转发表项;该路由器选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,执行步骤505;
步骤507:控制器将f4加入到该删除消息负载中的参数P2中并作为最后一个元素;如果控制器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P2,控制器则删除该转发表项;
步骤508:结束。

6.根据权利要求3所述的一种高效的命名数据网络实现方法,其特征在于,在设备D1的关联路由器为路由器R1,数据C1由名称N1定义的条件下,如果设备D1删除了数据C1,它则执行下述操作更新转发表:
步骤601:开始;
步骤602:设备D1发送删除消息,该删除消息的名称为名称N1,接口ID集合为空,消息类型值为5,负载为空;路由器R1从接口z2接收到该删除消息后查看是否至少存在两个提供者表项,这两个提供者表项的名称域值等于名称N1,如果是,则执行步骤603,否则执行步骤
604;
步骤603:路由器R1删除名称域值等于名称N1且接口ID等于z2的提供者表项,执行步骤
608;
步骤604:路由器R1选择控制器表项,将接收到的删除消息的接口ID集合更新为控制器表项的接口ID集合,负载更新为接口ID集合参数P3,参数P3的初始值为空;路由器R1选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,路由器R1删除名称域值等于名称N1且接口ID等于z2的提供者表项;
步骤605:判断是控制器从接口f6还是路由器从接口f7接收到该删除消息,如果是控制器则执行步骤607,否则执行步骤606;
步骤606:路由器将f7加入到该删除消息负载中的参数P3中并作为最后一个元素;如果该路由器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P3,则该路由器删除该转发表项;该路由器选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,执行步骤605;
步骤607:控制器将f6加入到该删除消息负载中的参数P3中并作为最后一个元素;如果控制器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P3,控制器则删除该转发表项;
步骤608:结束。

7.根据权利要求3所述的一种高效的命名数据网络实现方法,其特征在于,每个路由器或者控制器保存一个请求表,每个请求表项包含名称、接口ID集合和生命周期;设备D2的关联路由器为路由器R1,数据C1由名称N1唯一标识;如果路由器R1至少存在一个名称域值等于名称N1的提供者表项,设备D2则执行下述操作获取数据C1:
步骤701:开始;
步骤702:设备D2发送请求消息,该请求消息的名称为名称N1,消息类型值为6,接口ID集合为空,负载为空;
步骤703:路由器R1从接口x1接收到该请求消息;如果存在一个请求表项,该请求表项的名称等于该请求消息的名称域值且接口ID集合包含x1,则执行步骤707,否则执行步骤
704;
步骤704:路由器R1查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤705,否则执行步骤706;
步骤705:路由器R1选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口x1加入到该请求表项的接口ID集合中,生命周期设置为最大值,执行步骤707;
步骤706:路由器R1创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{x1},即接口ID集合中只包含一个元素x1,生命周期设置为最大值;路由器R1选择一个提供者表项,该提供者表项的名称等于该请求消息中的名称域值,从该提供者表项的接口ID域值所标识的接口转发该请求消息;设备接收到该请求消息后,发送一个响应消息,该响应消息的名称为该请求消息中的名称,消息类型值为7,接口ID集合等于空,负载为响应消息;
步骤707:路由器R1接收到响应消息后,选择一个请求表项,该请求表项的名称域值等于该响应消息的名称域值;对于该请求表项的接口ID集合中的每个元素,路由器R1执行下述操作:路由器R1选中该元素所标识的接口并从该接口转发响应消息;
步骤708:路由器R1删除名称域值等于接收到的响应消息的名称域值的请求表项;
步骤709:设备D2接收到响应消息后,保存该响应消息负载中的数据;
步骤710:结束。

8.根据权利要求3所述的一种高效的命名数据网络实现方法,其特征在于,一个转发表项中,如果接口ID集合中的元素个数等于n1,定时器集合中的元素个数等于n2,那么该转发表项的权值w1如公式(1)所示:
w1=n1+α×n2  (1)
其中α为调节参数,为正数;如果一个转发表项中的定时器集合中的一个元素过期,则该元素自动从该定时器集合中删除;在设备D2的关联路由器为路由器R1,数据C1由名称N1唯一标识的条件下,如果路由器R1中任何一个提供者表项的名称域值都不等于名称N1,设备D2则执行下述操作获取数据C1:
步骤801:开始;
步骤802:设备D2发送请求消息,该请求消息的名称为名称N1,消息类型值为6,接口ID集合为空,负载为空;
步骤803:路由器R1从接口y1接收到该请求消息;如果路由器R1存在一个请求表项,该请求表项的名称等于该请求消息的名称域值且接口ID集合包含接口y1,则执行步骤824,否则执行步骤804;
步骤804:路由器R1查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤805,否则执行步骤806;
步骤805:路由器R1选择一个请求表项,将接口y1加入到该请求表项的接口ID集合域中,生命周期设置为最大值,执行步骤824;
步骤806:路由器R1创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y1},生命周期设置为最大值;路由器R1将该请求消息的接口ID集合更新为自己的控制器表项的接口ID集合,选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息;
步骤807:判断是控制器从接口y2还是路由器从接口y3接收到该请求消息,如果是控制器则执行步骤814,否则执行步骤808;
步骤808:路由器从接口y3接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含接口y3,则执行步骤824,否则执行步骤809;
步骤809:从接口y3接收到该请求消息的路由器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤810,否则执行步骤811;
步骤810:从接口y3接收到该请求消息的路由器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口y3加入到该请求表项的接口ID集合域,生命周期设置为最大值,执行步骤824;
步骤811:从接口y3接收到该请求消息的路由器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y3},生命周期设置为最大值;如果该路由器至少存在一个转发表项,该转发表项的名称域值等于该请求消息的名称域值,则执行步骤
812,否则执行步骤813;
步骤812:从接口y3接收到该请求消息的路由器在名称域值等于该请求消息的名称域值的转发表项中选择一个权值最小的转发表项,在该转发表项的定时器集合中加入一个定时器,其初始值预先设置,将该请求消息的接口ID集合更新为该转发表项的接口ID集合,选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤818;
步骤813:从接口y3接收到该请求消息的路由器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤807;
步骤814:控制器从接口y2接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含y2,则执行步骤824,否则执行步骤815;
步骤815:从接口y2接收到该请求消息的控制器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤816,否则执行步骤817;
步骤816:从接口y2接收到该请求消息的控制器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将y2加入到该请求表项的接口ID集合域,生命周期设置为最大值,执行步骤824;
步骤817:从接口y2接收到该请求消息的控制器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y2},生命周期设置为最大值;在所有名称域值等于该请求消息的名称域值的转发表项中选择一个权值最小的转发表项,在该转发表项的定时器集合中加入一个定时器,将该请求消息的接口ID集合更新为该转发表项的接口ID集合;控制器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息;
步骤818:路由器从接口y4接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含接口y4,则执行步骤824,否则执行步骤819;
步骤819:从接口y4接收到该请求消息的路由器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤820,否则执行步骤821;
步骤820:从接口y4接收到该请求消息的路由器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口y4加入到该请求表项的接口ID集合域,将该请求表项的生命周期设置为最大值,执行步骤824;
步骤821:从接口y4接收到该请求消息的路由器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y4},生命周期设置为最大值;该路由器查看该请求消息的接口ID集合是否为空,如果是,则执行步骤823,否则执行步骤822;
步骤822:从接口y4接收到该请求消息的路由器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤818;
步骤823:从接口y4接收到该请求消息的路由器选择一个提供者表项,该提供者表项的名称等于该请求消息中的名称域值,从该提供者表项的接口ID域值所标识的接口转发该请求消息;设备接收到该请求消息后,发送一个响应消息,该响应消息的名称为该请求消息中的名称,消息类型值为7,接口ID集合等于空,负载为响应数据;
步骤824:如果设备接收到响应消息,则执行步骤827,否则执行步骤825;
步骤825:路由器或者控制器接收到响应消息后,选择一个请求表项,该请求表项的名称域值等于该响应消息的名称域值;对于该请求表项的接口ID集合中的每个元素,该路由器或者控制器执行下述操作:选中该元素所标识的接口并从该接口转发响应消息;
步骤826:接收到响应消息的路由器或者控制器删除名称域值等于接收到的响应消息的名称域值的请求表项,执行步骤824;
步骤827:设备接收到该响应消息后,保存响应消息负载中的数据;
步骤828:结束。
说明书

技术领域

[0001] 本发明涉及一种实现方法,尤其涉及的是一种高效的命名数据网络实现方法。

背景技术

[0002] 命名数据网络中的设备之间通信通过中间设备的转发和路由来实现,因此,实现命名数据网络需要解决的关键技术之一就是降低数据传输延迟,以便使用户能够快速获取网络服务。随着网络技术的发展,命名数据网络会成为未来网络提供服务的一种模式。
[0003] 目前,命名数据网络的实现模式是通过广播来实现,因此延迟和代价都比较大,降低了网络服务性能。因此,如何降低命名数据网络提供服务的延迟和代价成为近年来研究的热点问题。

发明内容

[0004] 发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种高效的命名数据网络实现方法。
[0005] 技术方案:本发明公开了一种高效的命名数据网络实现方法,所述网络由一个控制器、两个以上的路由器和两个以上的设备构成;一个控制器配置两个以上的有线接口,每个有线接口与一个路由器连接;一个路由器配置两个以上的上游有线接口、两个以上的下游有线接口以及两个以上的下游无线接口,每个上游有线接口与一个控制器或者路由器相连,一个路由器的下游有线接口与一个路由器或者设备相连,一个路由器的下游无线接口与设备相连;一个设备配置一个有线接口或者一个无线接口,该接口与路由器相连,该路由器称为该设备的关联路由器;
[0006] 每个有线接口或者无线接口由一个接口ID唯一标识,接口ID预先配置,例如1;接口ID为i的接口简写为接口i;
[0007] 一种类型的数据由一个名称唯一标识,例如:/TVplay/Video1;一个消息由名称、消息类型、接口ID集合和负载构成;消息类型值如下所示:
[0008]
[0009]
[0010] 每个路由器保存一个控制器表,控制器表至多包含一个控制器表项,该控制器表项包含接口ID集合和生命周期域;控制器定期执行下述操作维护控制器表:
[0011] 步骤101:开始;
[0012] 步骤102:控制器构建一个发布消息,该发布消息的名称为空,消息类型值为1,接口ID集合为空,负载为空;控制器从每个接口发送该发布消息;
[0013] 步骤103:路由器从上游接口u1接收到发布消息后,将上游接口u1加入到该发布消息接口ID集合中并作为最后一个元素;该路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域的元素个数小于该发布消息的接口ID集合的元素个数,则执行步骤110,否则执行步骤104;
[0014] 步骤104:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域等于该发布消息的接口ID集合,则执行步骤105,否则执行步骤106;
[0015] 步骤105:从上游接口u1接收到发布消息的路由器将控制表中的控制器表项的生命周期设置为最大值,从每个下游接口转发该发布消息,执行步骤103;
[0016] 步骤106:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域的元素个数等于该发布消息的接口ID集合的元素个数,则执行步骤110,否则执行步骤107;
[0017] 步骤107:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项,则执行步骤108,否则执行步骤109;
[0018] 步骤108:从上游接口u1接收到发布消息的路由器删除控制表中的控制器表项;
[0019] 步骤109:从上游接口u1接收到发布消息的路由器创建一个控制器表项,该控制器表项的接口ID集合等于该发布消息的接口ID集合,生命周期设置为最大值,执行步骤103;
[0020] 步骤110:结束;
[0021] 如果路由器检测到控制器表项的生命周期过期,则删除该控制器表项。
[0022] 控制器通过上述过程建立到达每个路由器的最优路由路径,上述过程通过接口ID集合的元素个数来确保控制器到达每个路由器的路径最短,因此降低了路由器与控制器之间的通信代价和延迟。
[0023] 本发明所述方法中,一个路由器或者控制器维护一个转发表,每个转发表项包含名称域、接口ID集合域、定时器集合域以及生命周期域;
[0024] 每个路由器维护一个提供者表,一个提供者表项包括名称、接口和生命周期域;
[0025] 在设备D1的关联路由器为路由器R1,数据C1由名称N1唯一标识的条件下,设备D1产生数据C1或者设备D1的关联路由器发生了变化之后,设备D1执行下述操作:
[0026] 步骤201:开始;
[0027] 步骤202:设备D1发送注册消息,该注册消息的名称为名称N1,接口ID集合为空,消息类型值为2,负载为空;
[0028] 步骤203:路由器R1从下游接口f1接收到该注册消息后查看提供者表,如果存在一个提供者表项,该提供者表项的名称域值为N1,接口ID为f1,则执行步骤204,否则执行步骤205;
[0029] 步骤204:路由器R1从下游接口f1接收到该注册消息后,选择一个提供者表项,该提供者表项的名称域值为N1,接口ID为f1,将该提供者表项的生命周期设置为最大值,例如100ms,执行步骤206;
[0030] 步骤205:路由器R1从下游接口f1接收到该注册消息后,创建一个提供者表项,该提供者表项的名称域值为N1,接口ID为f1,生命周期设置为最大值;
[0031] 步骤206:结束。
[0032] 设备通过上述过程建立提供者表,这样路由器可以根据提供者表项中的名称域值获取设备所能提供的数据,根据提供者表项中的接口域值实现数据请求的正确转发,从而快速实现数据通信。
[0033] 本发明所述方法中,路由器R1定期执行下述操作维护转发表:
[0034] 步骤301:开始;
[0035] 步骤302:路由器R1创建一个名称集合参数NS1,名称集合参数NS1的初始值为空;路由器R1查看提供者表,针对每个提供者表项,路由器R1执行下述操作:如果该提供者表项的名称包含在名称集合参数NS1中,则不执行任何操作,否则将该提供者表项的名称域值加入到名称集合参数NS1中;
[0036] 步骤303:对于名称集合参数NS1中的每个元素,路由器R1执行下述操作:路由器R1查看控制器表项,构建一个更新消息,该更新消息的名称为名称N1,接口ID集合为控制器表项中的接口ID集合,消息类型值为3,负载为接口ID集合参数P1,接口ID集合参数P1的初始值为空,路由器R1选取更新消息接口ID集合中的最后一个元素标识的接口,从更新消息接口ID集合中删除最后一个元素,从选中的接口转发该更新消息;
[0037] 步骤304:判断是控制器从接口f2还是路由器从接口f3接收到该更新消息,如果是控制器则执行步骤306,否则执行步骤305;
[0038] 步骤305:路由器将f3加入到该更新消息负载中的参数P1中并作为最后一个元素存在;如果存在一个转发表项,该转发表项的名称域值等于名称N1且接口ID集合等于该更新消息负载中的参数P1,则将该转发表项的生命周期设置为最大值;否则创建一个转发表项,该转发表项的名称域值等于名称N1,接口ID集合等于该更新消息负载中的参数P1,生命周期设置为最大值;该路由器选取更新消息接口ID集合中的最后一个元素标识的接口,从更新消息接口ID集合中删除最后一个元素,从选中的接口转发该更新消息,执行步骤304;
[0039] 步骤306:控制器将f2加入到该更新消息负载中的参数P1中并作为最后一个元素存在;如果存在一个转发表项,该转发表项的名称域值等于名称N1且接口ID集合等于该更新消息负载中的参数P1,则将该转发表项的生命周期设置为最大值;否则该控制器创建一个转发表项,该转发表项的名称域值等于名称N1,接口ID集合等于该更新消息负载中的参数P1,定时器集合为空,生命周期设置为最大值;
[0040] 步骤307:结束。
[0041] 路由器通过上述过程建立转发表,这样路由器可以根据转发表项中的名称域值实现数据请求消息的正确转发,同时通过接口ID集合域值和定时器集合域值选择最优路由路径,从而降低数据通信延迟和代价。
[0042] 本发明所述方法中,如果设备D1的关联路由器为路由器R1,设备D1定期执行下述操作更新提供者表项:
[0043] 步骤401:开始;
[0044] 步骤402:设备D1发送一个信标消息,该信标消息的名称为空,接口ID集合为空,消息类型值为4,负载为设备D1所能提供的所有数据的名称集合;
[0045] 步骤403:路由器R1从接口z1接收到该信标消息后,查看提供者表;针对信标消息负载中的名称集合中的每个名称N',路由器R1执行下述操作:路由器R1选择一个提供者表项,该提供者表项的名称域值等于名称N'且接口ID等于z1,将该提供者表项的生命周期设置为最大值;
[0046] 步骤404:结束。
[0047] 设备通过上述过程定期更新提供者表以确保提供者表项的正确性和实时性,这样路由器可以根据提供者表项中的名称域值和接口域值实现数据请求的正确转发,从而快速实现数据通信。
[0048] 本发明所述方法中,如果路由器R1检测到提供者表项E1的生命周期衰减到0,则执行下述操作更新转发表:
[0049] 步骤501:开始;
[0050] 步骤502:路由器R1查看是否至少存在两个提供者表项,这两个提供者表项的名称域值等于提供者表项E1的名称域值,如果是,则执行步骤503,否则执行步骤504;
[0051] 步骤503:路由器R1删除提供者表项E1,执行步骤508;
[0052] 步骤504:路由器R1选择控制器表项,构建一个删除消息,该删除消息的名称域值等于提供者表项E1中的名称域值,接口ID集合等于控制器表项的接口ID集合,消息类型值为5,负载为接口ID集合参数P2,参数P2的初始值为空;路由器R1选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,路由器R1删除提供者表项E1;
[0053] 步骤505:判断是控制器从接口f4还是路由器从接口f5接收到该删除消息,如果是控制器则执行步骤507,否则执行步骤506;
[0054] 步骤506:路由器将f5加入到该删除消息负载中的参数P2中并作为最后一个元素;如果该路由器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P2,则该路由器删除该转发表项;该路由器选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,执行步骤505;
[0055] 步骤507:控制器将f4加入到该删除消息负载中的参数P2中并作为最后一个元素;如果控制器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P2,控制器则删除该转发表项;
[0056] 步骤508:结束。
[0057] 路由器通过上述过程更新转发表从而确保每个转发表项的正确性和实时性,这样路由器可以根据转发表项中的名称域值实现数据请求消息的正确转发,同时通过接口ID集合域值和定时器集合域值选择最优路由路径,从而降低数据通信延迟和代价。
[0058] 本发明所述方法中,在设备D1的关联路由器为路由器R1,数据C1由名称N1定义的条件下,如果设备D1删除了数据C1,它则执行下述操作更新转发表:
[0059] 步骤601:开始;
[0060] 步骤602:设备D1发送删除消息,该删除消息的名称为名称N1,接口ID集合为空,消息类型值为5,负载为空;路由器R1从接口z2接收到该删除消息后查看是否至少存在两个提供者表项,这两个提供者表项的名称域值等于名称N1,如果是,则执行步骤603,否则执行步骤604;
[0061] 步骤603:路由器R1删除名称域值等于名称N1且接口ID等于z2的提供者表项,执行步骤608;
[0062] 步骤604:路由器R1选择控制器表项,将接收到的删除消息的接口ID集合更新为控制器表项的接口ID集合,负载更新为接口ID集合参数P3,参数P3的初始值为空;路由器R1选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,路由器R1删除名称域值等于名称N1且接口ID等于z2的提供者表项;
[0063] 步骤605:判断是控制器从接口f6还是路由器从接口f7接收到该删除消息,如果是控制器则执行步骤607,否则执行步骤606;
[0064] 步骤606:路由器将f7加入到该删除消息负载中的参数P3中并作为最后一个元素;如果该路由器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P3,则该路由器删除该转发表项;该路由器选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,执行步骤605;
[0065] 步骤607:控制器将f6加入到该删除消息负载中的参数P3中并作为最后一个元素;如果控制器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P3,控制器则删除该转发表项;
[0066] 步骤608:结束。
[0067] 路由器通过上述过程更新转发表从而确保每个转发表项的正确性和实时性,这样路由器能够根据转发表项中的接口ID集合域值和定时器集合域值计算权值从而选择最优路由路径,降低数据通信延迟和代价。
[0068] 本发明所述方法中,每个路由器或者控制器保存一个请求表,每个请求表项包含名称、接口ID集合和生命周期;设备D2的关联路由器为路由器R1,数据C1由名称N1唯一标识;如果路由器R1至少存在一个名称域值等于名称N1的提供者表项,设备D2则执行下述操作获取数据C1:
[0069] 步骤701:开始;
[0070] 步骤702:设备D2发送请求消息,该请求消息的名称为名称N1,消息类型值为6,接口ID集合为空,负载为空;
[0071] 步骤703:路由器R1从接口x1接收到该请求消息;如果存在一个请求表项,该请求表项的名称等于该请求消息的名称域值且接口ID集合包含x1,则执行步骤707,否则执行步骤704;
[0072] 步骤704:路由器R1查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤705,否则执行步骤706;
[0073] 步骤705:路由器R1选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口x1加入到该请求表项的接口ID集合中,生命周期设置为最大值,执行步骤707;
[0074] 步骤706:路由器R1创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{x1},即接口ID集合中只包含一个元素x1,生命周期设置为最大值;路由器R1选择一个提供者表项,该提供者表项的名称等于该请求消息中的名称域值,从该提供者表项的接口ID域值所标识的接口转发该请求消息;设备接收到该请求消息后,发送一个响应消息,该响应消息的名称为该请求消息中的名称,消息类型值为7,接口ID集合等于空,负载为响应消息;
[0075] 步骤707:路由器R1接收到响应消息后,选择一个请求表项,该请求表项的名称域值等于该响应消息的名称域值;对于该请求表项的接口ID集合中的每个元素,路由器R1执行下述操作:路由器R1选中该元素所标识的接口并从该接口转发响应消息;
[0076] 步骤708:路由器R1删除名称域值等于接收到的响应消息的名称域值的请求表项;
[0077] 步骤709:设备D2接收到响应消息后,保存该响应消息负载中的数据;
[0078] 步骤710:结束。
[0079] 设备通过上述过程从本地路由器获取数据,上述过程通过提供者表项实现请求消息的正确转发,从而确保了数据通信的正确性和实时性,降低了数据通信延迟和代价。
[0080] 本发明所述方法中,一个转发表项中,如果接口ID集合中的元素个数等于n1,定时器集合中的元素个数等于n2,那么该转发表项的权值w1如公式(1)所示:
[0081] w1=n1+α×n2   (1)
[0082] 其中α为调节参数,为正数;例如1,α越大,定时器集合所占比重越大,对权值的影响越大,接口ID集合对权值的影响越小;α越小,定时器集合所占比重越小,对权值的影响也越小,接口ID集合对权值的影响越大,α取值一般范围为(0,3];如果一个转发表项中的定时器集合中的一个元素过期,则该元素自动从该定时器集合中删除;在设备D2的关联路由器为路由器R1,数据C1由名称N1唯一标识的条件下,如果路由器R1中任何一个提供者表项的名称域值都不等于名称N1,设备D2则执行下述操作获取数据C1:
[0083] 步骤801:开始;
[0084] 步骤802:设备D2发送请求消息,该请求消息的名称为名称N1,消息类型值为6,接口ID集合为空,负载为空;
[0085] 步骤803:路由器R1从接口y1接收到该请求消息;如果路由器R1存在一个请求表项,该请求表项的名称等于该请求消息的名称域值且接口ID集合包含接口y1,则执行步骤824,否则执行步骤804;
[0086] 步骤804:路由器R1查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤805,否则执行步骤806;
[0087] 步骤805:路由器R1选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口y1加入到该请求表项的接口ID集合域中,生命周期设置为最大值,执行步骤824;
[0088] 步骤806:路由器R1创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y1},生命周期设置为最大值;路由器R1将该请求消息的接口ID集合更新为自己的控制器表项的接口ID集合,选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息;
[0089] 步骤807:判断是控制器从接口y2还是路由器从接口y3接收到该请求消息,如果是控制器则执行步骤814,否则执行步骤808;
[0090] 步骤808:路由器从接口y3接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含接口y3,则执行步骤824,否则执行步骤809;
[0091] 步骤809:从接口y3接收到该请求消息的路由器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤810,否则执行步骤811;
[0092] 步骤810:从接口y3接收到该请求消息的路由器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口y3加入到该请求表项的接口ID集合域,生命周期设置为最大值,执行步骤824;
[0093] 步骤811:从接口y3接收到该请求消息的路由器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y3},生命周期设置为最大值;如果该路由器至少存在一个转发表项,该转发表项的名称域值等于该请求消息的名称域值,则执行步骤812,否则执行步骤813;
[0094] 步骤812:从接口y3接收到该请求消息的路由器在名称域值等于该请求消息的名称域值的转发表项中选择一个权值最小的转发表项,在该转发表项的定时器集合中加入一个定时器,其初始值预先设置,例如500ms,将该请求消息的接口ID集合更新为该转发表项的接口ID集合,选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤818;
[0095] 步骤813:从接口y3接收到该请求消息的路由器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤807;
[0096] 步骤814:控制器从接口y2接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含y2,则执行步骤824,否则执行步骤815;
[0097] 步骤815:从接口y2接收到该请求消息的控制器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤816,否则执行步骤817;
[0098] 步骤816:从接口y2接收到该请求消息的控制器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将y2加入到该请求表项的接口ID集合域,生命周期设置为最大值,执行步骤824;
[0099] 步骤817:从接口y2接收到该请求消息的控制器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y2},生命周期设置为最大值;在所有名称域值等于该请求消息的名称域值的转发表项中选择一个权值最小的转发表项,在该转发表项的定时器集合中加入一个定时器,将该请求消息的接口ID集合更新为该转发表项的接口ID集合;控制器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息;
[0100] 步骤818:路由器从接口y4接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含接口y4,则执行步骤824,否则执行步骤819;
[0101] 步骤819:从接口y4接收到该请求消息的路由器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤820,否则执行步骤821;
[0102] 步骤820:从接口y4接收到该请求消息的路由器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口y4加入到该请求表项的接口ID集合域,将该请求表项的生命周期设置为最大值,执行步骤824;
[0103] 步骤821:从接口y4接收到该请求消息的路由器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y4},生命周期设置为最大值;该路由器查看该请求消息的接口ID集合是否为空,如果是,则执行步骤823,否则执行步骤822;
[0104] 步骤822:从接口y4接收到该请求消息的路由器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤818;
[0105] 步骤823:从接口y4接收到该请求消息的路由器选择一个提供者表项,该提供者表项的名称等于该请求消息中的名称域值,从该提供者表项的接口ID域值所标识的接口转发该请求消息;设备接收到该请求消息后,发送一个响应消息,该响应消息的名称为该请求消息中的名称,消息类型值为7,接口ID集合等于空,负载为响应数据;
[0106] 步骤824:如果设备接收到响应消息,则执行步骤827,否则执行步骤825;
[0107] 步骤825:路由器或者控制器接收到响应消息后,选择一个请求表项,该请求表项的名称域值等于该响应消息的名称域值;对于该请求表项的接口ID集合中的每个元素,该路由器或者控制器执行下述操作:选中该元素所标识的接口并从该接口转发响应消息;
[0108] 步骤826:接收到响应消息的路由器或者控制器删除名称域值等于接收到的响应消息的名称域值的请求表项,执行步骤824;
[0109] 步骤827:设备接收到该响应消息后,保存响应消息负载中的数据;
[0110] 步骤828:结束。
[0111] 设备通过上述过程从远程设备获取数据,上述过程通过转发表项中的接口ID集合域值和定时器集合域值计算权值从而选择最优路由路径,因此大幅度降低了数据通信延迟和代价。
[0112] 有益效果:本发明提供了一种高效的命名数据网络实现方法,设备通过本发明中的实现方法能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。

附图说明

[0113] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0114] 图1为本发明所述的维护控制器表示意图。
[0115] 图2为本发明所述的注册流程示意图。
[0116] 图3为本发明所述的维护转发表流程示意图。
[0117] 图4为本发明所述的更新提供者表流程示意图。
[0118] 图5为本发明所述的删除转发表流程示意图。
[0119] 图6为本发明所述的更新转发表流程示意图。
[0120] 图7为本发明所述的本地数据通信流程示意图。
[0121] 图8为本发明所述的远程数据通信流程示意图。具体实施方式:
[0122] 本发明提供了一种高效的命名数据网络实现方法,设备通过本发明中的实现方法能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。
[0123] 图1为本发明所述的维护控制器表示意图。所述网络由一个控制器、两个以上的路由器和两个以上的设备构成;一个控制器配置两个以上的有线接口,每个有线接口与一个路由器连接;一个路由器配置两个以上的上游有线接口、两个以上的下游有线接口以及两个以上的下游无线接口,每个上游有线接口与一个控制器或者路由器相连,一个路由器的下游有线接口与一个路由器或者设备相连,一个路由器的下游无线接口与设备相连;一个设备配置一个有线接口或者一个无线接口,该接口与路由器相连,该路由器称为该设备的关联路由器;
[0124] 每个有线接口或者无线接口由一个接口ID唯一标识,接口ID预先配置,接口ID为i的接口简写为接口i;
[0125] 一种类型的数据由一个名称唯一标识;一个消息由名称、消息类型、接口ID集合和负载构成;消息类型值如下所示:
[0126] 消息类型名称 消息类型值发布消息 1
注册消息 2
更新消息 3
信标消息 4
删除消息 5
请求消息 6
响应消息 7
[0127] 每个路由器保存一个控制器表,控制器表至多包含一个控制器表项,该控制器表项包含接口ID集合和生命周期域;控制器定期执行下述操作维护控制器表:
[0128] 步骤101:开始;
[0129] 步骤102:控制器构建一个发布消息,该发布消息的名称为空,消息类型值为1,接口ID集合为空,负载为空;控制器从每个接口发送该发布消息;
[0130] 步骤103:路由器从上游接口u1接收到发布消息后,将上游接口u1加入到该发布消息接口ID集合中并作为最后一个元素;该路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域的元素个数小于该发布消息的接口ID集合的元素个数,则执行步骤110,否则执行步骤104;
[0131] 步骤104:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域等于该发布消息的接口ID集合,则执行步骤105,否则执行步骤106;
[0132] 步骤105:从上游接口u1接收到发布消息的路由器将控制表中的控制器表项的生命周期设置为最大值,从每个下游接口转发该发布消息,执行步骤103;
[0133] 步骤106:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项且该控制器表项的接口ID集合域的元素个数等于该发布消息的接口ID集合的元素个数,则执行步骤110,否则执行步骤107;
[0134] 步骤107:从上游接口u1接收到发布消息的路由器查看控制器表,如果存在一个控制器表项,则执行步骤108,否则执行步骤109;
[0135] 步骤108:从上游接口u1接收到发布消息的路由器删除控制表中的控制器表项;
[0136] 步骤109:从上游接口u1接收到发布消息的路由器创建一个控制器表项,该控制器表项的接口ID集合等于该发布消息的接口ID集合,生命周期设置为最大值,执行步骤103;
[0137] 步骤110:结束;
[0138] 如果路由器检测到控制器表项的生命周期过期,则删除该控制器表项。
[0139] 图2为本发明所述的注册流程示意图。一个路由器或者控制器维护一个转发表,每个转发表项包含名称域、接口ID集合域、定时器集合域以及生命周期域;
[0140] 每个路由器维护一个提供者表,一个提供者表项包括名称、接口和生命周期域;
[0141] 在设备D1的关联路由器为路由器R1,数据C1由名称N1唯一标识的条件下,设备D1产生数据C1或者设备D1的关联路由器发生了变化之后,设备D1执行下述操作:
[0142] 步骤201:开始;
[0143] 步骤202:设备D1发送注册消息,该注册消息的名称为名称N1,接口ID集合为空,消息类型值为2,负载为空;
[0144] 步骤203:路由器R1从下游接口f1接收到该注册消息后查看提供者表,如果存在一个提供者表项,该提供者表项的名称域值为N1,接口ID为f1,则执行步骤204,否则执行步骤205;
[0145] 步骤204:路由器R1从下游接口f1接收到该注册消息后,选择一个提供者表项,该提供者表项的名称域值为N1,接口ID为f1,将该提供者表项的生命周期设置为最大值,执行步骤206;
[0146] 步骤205:路由器R1从下游接口f1接收到该注册消息后,创建一个提供者表项,该提供者表项的名称域值为N1,接口ID为f1,生命周期设置为最大值;
[0147] 步骤206:结束。
[0148] 图3为本发明所述的维护转发表流程示意图。路由器R1定期执行下述操作维护转发表:
[0149] 步骤301:开始;
[0150] 步骤302:路由器R1创建一个名称集合参数NS1,名称集合参数NS1的初始值为空;路由器R1查看提供者表,针对每个提供者表项,路由器R1执行下述操作:如果该提供者表项的名称包含在名称集合参数NS1中,则不执行任何操作,否则将该提供者表项的名称域值加入到名称集合参数NS1中;
[0151] 步骤303:对于名称集合参数NS1中的每个元素,路由器R1执行下述操作:路由器R1查看控制器表项,构建一个更新消息,该更新消息的名称为名称N1,接口ID集合为控制器表项中的接口ID集合,消息类型值为3,负载为接口ID集合参数P1,接口ID集合参数P1的初始值为空,路由器R1选取更新消息接口ID集合中的最后一个元素标识的接口,从更新消息接口ID集合中删除最后一个元素,从选中的接口转发该更新消息;
[0152] 步骤304:判断是控制器从接口f2还是路由器从接口f3接收到该更新消息,如果是控制器则执行步骤306,否则执行步骤305;
[0153] 步骤305:路由器将f3加入到该更新消息负载中的参数P1中并作为最后一个元素存在;如果存在一个转发表项,该转发表项的名称域值等于名称N1且接口ID集合等于该更新消息负载中的参数P1,则将该转发表项的生命周期设置为最大值;否则创建一个转发表项,该转发表项的名称域值等于名称N1,接口ID集合等于该更新消息负载中的参数P1,生命周期设置为最大值;该路由器选取更新消息接口ID集合中的最后一个元素标识的接口,从更新消息接口ID集合中删除最后一个元素,从选中的接口转发该更新消息,执行步骤304;
[0154] 步骤306:控制器将f2加入到该更新消息负载中的参数P1中并作为最后一个元素存在;如果存在一个转发表项,该转发表项的名称域值等于名称N1且接口ID集合等于该更新消息负载中的参数P1,则将该转发表项的生命周期设置为最大值;否则该控制器创建一个转发表项,该转发表项的名称域值等于名称N1,接口ID集合等于该更新消息负载中的参数P1,定时器集合为空,生命周期设置为最大值;
[0155] 步骤307:结束。
[0156] 图4为本发明所述的更新提供者表流程示意图。如果设备D1的关联路由器为路由器R1,设备D1定期执行下述操作更新提供者表项:
[0157] 步骤401:开始;
[0158] 步骤402:设备D1发送一个信标消息,该信标消息的名称为空,接口ID集合为空,消息类型值为4,负载为设备D1所能提供的所有数据的名称集合;
[0159] 步骤403:路由器R1从接口z1接收到该信标消息后,查看提供者表;针对信标消息负载中的名称集合中的每个名称N',路由器R1执行下述操作:路由器R1选择一个提供者表项,该提供者表项的名称域值等于名称N'且接口ID等于z1,将该提供者表项的生命周期设置为最大值;
[0160] 步骤404:结束。
[0161] 图5为本发明所述的删除转发表流程示意图。如果路由器R1检测到提供者表项E1的生命周期衰减到0,则执行下述操作更新转发表:
[0162] 步骤501:开始;
[0163] 步骤502:路由器R1查看是否至少存在两个提供者表项,这两个提供者表项的名称域值等于提供者表项E1的名称域值,如果是,则执行步骤503,否则执行步骤504;
[0164] 步骤503:路由器R1删除提供者表项E1,执行步骤508;
[0165] 步骤504:路由器R1选择控制器表项,构建一个删除消息,该删除消息的名称域值等于提供者表项E1中的名称域值,接口ID集合等于控制器表项的接口ID集合,消息类型值为5,负载为接口ID集合参数P2,参数P2的初始值为空;路由器R1选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,路由器R1删除提供者表项E1;
[0166] 步骤505:判断是控制器从接口f4还是路由器从接口f5接收到该删除消息,如果是控制器则执行步骤507,否则执行步骤506;
[0167] 步骤506:路由器将f5加入到该删除消息负载中的参数P2中并作为最后一个元素;如果该路由器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P2,则该路由器删除该转发表项;该路由器选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,执行步骤505;
[0168] 步骤507:控制器将f4加入到该删除消息负载中的参数P2中并作为最后一个元素;如果控制器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P2,控制器则删除该转发表项;
[0169] 步骤508:结束。
[0170] 图6为本发明所述的更新转发表流程示意图。在设备D1的关联路由器为路由器R1,数据C1由名称N1定义的条件下,如果设备D1删除了数据C1,它则执行下述操作更新转发表:
[0171] 步骤601:开始;
[0172] 步骤602:设备D1发送删除消息,该删除消息的名称为名称N1,接口ID集合为空,消息类型值为5,负载为空;路由器R1从接口z2接收到该删除消息后查看是否至少存在两个提供者表项,这两个提供者表项的名称域值等于名称N1,如果是,则执行步骤603,否则执行步骤604;
[0173] 步骤603:路由器R1删除名称域值等于名称N1且接口ID等于z2的提供者表项,执行步骤608;
[0174] 步骤604:路由器R1选择控制器表项,将接收到的删除消息的接口ID集合更新为控制器表项的接口ID集合,负载更新为接口ID集合参数P3,参数P3的初始值为空;路由器R1选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,路由器R1删除名称域值等于名称N1且接口ID等于z2的提供者表项;
[0175] 步骤605:判断是控制器从接口f6还是路由器从接口f7接收到该删除消息,如果是控制器则执行步骤607,否则执行步骤606;
[0176] 步骤606:路由器将f7加入到该删除消息负载中的参数P3中并作为最后一个元素;如果该路由器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P3,则该路由器删除该转发表项;该路由器选择删除消息接口ID集合中的最后一个元素标识的接口,从删除消息接口ID集合中删除最后一个元素,从选中的接口转发该删除消息,执行步骤605;
[0177] 步骤607:控制器将f6加入到该删除消息负载中的参数P3中并作为最后一个元素;如果控制器的转发表中存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合等于参数P3,控制器则删除该转发表项;
[0178] 步骤608:结束。
[0179] 图7为本发明所述的本地数据通信流程示意图。每个路由器或者控制器保存一个请求表,每个请求表项包含名称、接口ID集合和生命周期;设备D2的关联路由器为路由器R1,数据C1由名称N1唯一标识;如果路由器R1至少存在一个名称域值等于名称N1的提供者表项,设备D2则执行下述操作获取数据C1:
[0180] 步骤701:开始;
[0181] 步骤702:设备D2发送请求消息,该请求消息的名称为名称N1,消息类型值为6,接口ID集合为空,负载为空;
[0182] 步骤703:路由器R1从接口x1接收到该请求消息;如果存在一个请求表项,该请求表项的名称等于该请求消息的名称域值且接口ID集合包含x1,则执行步骤707,否则执行步骤704;
[0183] 步骤704:路由器R1查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤705,否则执行步骤706;
[0184] 步骤705:路由器R1选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口x1加入到该请求表项的接口ID集合中,生命周期设置为最大值,执行步骤707;
[0185] 步骤706:路由器R1创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{x1},即接口ID集合中只包含一个元素x1,生命周期设置为最大值;路由器R1选择一个提供者表项,该提供者表项的名称等于该请求消息中的名称域值,从该提供者表项的接口ID域值所标识的接口转发该请求消息;设备接收到该请求消息后,发送一个响应消息,该响应消息的名称为该请求消息中的名称,消息类型值为7,接口ID集合等于空,负载为响应消息;
[0186] 步骤707:路由器R1接收到响应消息后,选择一个请求表项,该请求表项的名称域值等于该响应消息的名称域值;对于该请求表项的接口ID集合中的每个元素,路由器R1执行下述操作:路由器R1选中该元素所标识的接口并从该接口转发响应消息;
[0187] 步骤708:路由器R1删除名称域值等于接收到的响应消息的名称域值的请求表项;
[0188] 步骤709:设备D2接收到响应消息后,保存该响应消息负载中的数据;
[0189] 步骤710:结束。
[0190] 图8为本发明所述的远程数据通信流程示意图。一个转发表项中,如果接口ID集合中的元素个数等于n1,定时器集合中的元素个数等于n2,那么该转发表项的权值w1如公式(1)所示:
[0191] w1=n1+α×n2   (1)
[0192] 其中α为调节参数,为正数;如果一个转发表项中的定时器集合中的一个元素过期,则该元素自动从该定时器集合中删除;在设备D2的关联路由器为路由器R1,数据C1由名称N1唯一标识的条件下,如果路由器R1中任何一个提供者表项的名称域值都不等于名称N1,设备D2则执行下述操作获取数据C1:
[0193] 步骤801:开始;
[0194] 步骤802:设备D2发送请求消息,该请求消息的名称为名称N1,消息类型值为6,接口ID集合为空,负载为空;
[0195] 步骤803:路由器R1从接口y1接收到该请求消息;如果路由器R1存在一个请求表项,该请求表项的名称等于该请求消息的名称域值且接口ID集合包含接口y1,则执行步骤824,否则执行步骤804;
[0196] 步骤804:路由器R1查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤805,否则执行步骤806;
[0197] 步骤805:路由器R1选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口y1加入到该请求表项的接口ID集合域中,生命周期设置为最大值,执行步骤824;
[0198] 步骤806:路由器R1创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y1},生命周期设置为最大值;路由器R1将该请求消息的接口ID集合更新为自己的控制器表项的接口ID集合,选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息;
[0199] 步骤807:判断是控制器从接口y2还是路由器从接口y3接收到该请求消息,如果是控制器则执行步骤814,否则执行步骤808;
[0200] 步骤808:路由器从接口y3接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含接口y3,则执行步骤824,否则执行步骤809;
[0201] 步骤809:从接口y3接收到该请求消息的路由器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤810,否则执行步骤811;
[0202] 步骤810:从接口y3接收到该请求消息的路由器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口y3加入到该请求表项的接口ID集合域,生命周期设置为最大值,执行步骤824;
[0203] 步骤811:从接口y3接收到该请求消息的路由器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y3},生命周期设置为最大值;如果该路由器至少存在一个转发表项,该转发表项的名称域值等于该请求消息的名称域值,则执行步骤812,否则执行步骤813;
[0204] 步骤812:从接口y3接收到该请求消息的路由器在名称域值等于该请求消息的名称域值的转发表项中选择一个权值最小的转发表项,在该转发表项的定时器集合中加入一个定时器,其初始值预先设置,将该请求消息的接口ID集合更新为该转发表项的接口ID集合,选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤818;
[0205] 步骤813:从接口y3接收到该请求消息的路由器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤807;
[0206] 步骤814:控制器从接口y2接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含y2,则执行步骤824,否则执行步骤815;
[0207] 步骤815:从接口y2接收到该请求消息的控制器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤816,否则执行步骤817;
[0208] 步骤816:从接口y2接收到该请求消息的控制器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将y2加入到该请求表项的接口ID集合域,生命周期设置为最大值,执行步骤824;
[0209] 步骤817:从接口y2接收到该请求消息的控制器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y2},生命周期设置为最大值;在所有名称域值等于该请求消息的名称域值的转发表项中选择一个权值最小的转发表项,在该转发表项的定时器集合中加入一个定时器,将该请求消息的接口ID集合更新为该转发表项的接口ID集合;控制器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息;
[0210] 步骤818:路由器从接口y4接收到该请求消息,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称且接口ID集合包含接口y4,则执行步骤824,否则执行步骤819;
[0211] 步骤819:从接口y4接收到该请求消息的路由器查看请求表,如果存在一个请求表项,该请求表项的名称等于该请求消息的名称,则执行步骤820,否则执行步骤821;
[0212] 步骤820:从接口y4接收到该请求消息的路由器选择一个请求表项,该请求表项的名称等于该请求消息的名称,将接口y4加入到该请求表项的接口ID集合域,将该请求表项的生命周期设置为最大值,执行步骤824;
[0213] 步骤821:从接口y4接收到该请求消息的路由器创建一个请求表项,该请求表项的名称等于该请求消息的名称,接口ID集合域值等于{y4},生命周期设置为最大值;该路由器查看该请求消息的接口ID集合是否为空,如果是,则执行步骤823,否则执行步骤822;
[0214] 步骤822:从接口y4接收到该请求消息的路由器选择该请求消息接口ID集合中的最后一个元素标识的接口,从该请求消息接口ID集合中删除最后一个元素,从选中的接口转发该请求消息,执行步骤818;
[0215] 步骤823:从接口y4接收到该请求消息的路由器选择一个提供者表项,该提供者表项的名称等于该请求消息中的名称域值,从该提供者表项的接口ID域值所标识的接口转发该请求消息;设备接收到该请求消息后,发送一个响应消息,该响应消息的名称为该请求消息中的名称,消息类型值为7,接口ID集合等于空,负载为响应数据;
[0216] 步骤824:如果设备接收到响应消息,则执行步骤827,否则执行步骤825;
[0217] 步骤825:路由器或者控制器接收到响应消息后,选择一个请求表项,该请求表项的名称域值等于该响应消息的名称域值;对于该请求表项的接口ID集合中的每个元素,该路由器或者控制器执行下述操作:选中该元素所标识的接口并从该接口转发响应消息;
[0218] 步骤826:接收到响应消息的路由器或者控制器删除名称域值等于接收到的响应消息的名称域值的请求表项,执行步骤824;
[0219] 步骤827:设备接收到该响应消息后,保存响应消息负载中的数据;
[0220] 步骤828:结束。
[0221] 实施例1
[0222] 基于表1的仿真参数,本实施例模拟了本发明中的一种高效的命名数据网络实现方法,性能分析如下:当数据传输量增加时,数据通信成功率降低,当数据传输量减少时,数据通信成功率增加降低,数据通信平均成功率为96.7%。
[0223] 表1仿真参数
[0224]
[0225] 本发明提供了一种高效的命名数据网络实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号