[0088] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0089] 图1为本发明所述的建立转发表流程示意图。
[0090] 图2为本发明所述的更新转发表流程示意图。
[0091] 图3为本发明所述的数据通信流程示意图。
[0092] 图4为本发明所述的获取数据流程示意图。具体实施方式:
[0093] 本发明提供了一种高效的数据网络路由实现方法,在本发明中,移动节点能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。
[0094] 图1为本发明所述的建立转发表流程示意图。所述网络由两个以上的路由器和两个以上的设备构成;每个路由器配置两个以上的上游有线接口和两个以上的下游有线接口,每个上游有线接口与一个路由器相连,一个路由器的下游有线接口与一个设备相连;一个设备配置一个有线接口,该接口与路由器的下游有线接口相连;
[0095] 每个接口由一个接口ID唯一标识,接口ID为i的接口记为为接口i,i为正整数;
[0096] 一种类型的数据由一个名称唯一标识;一个消息由名称、消息类型、接口ID集合和负载构成;消息类型值如下所示:
[0097] 消息类型名称 消息类型值发布消息 1
删除 2
请求消息 3
拒绝消息 4
响应消息 5
查询消息 6
确认消息 7
重置消息 8
[0098] 每个路由器维护一个转发表,每个转发表项包含名称域,接口ID集合域和生命周期域;
[0099] 设备D1与路由器R1相连,数据C1由名称NA1唯一标识,设备D1产生或者获取数据C1后,执行下述操作维护转发表:
[0100] 步骤101:开始;
[0101] 步骤102:设备D1发送一个发布消息,该发布消息的名称为NA1,消息类型值为1,接口ID集合为空,负载为空;
[0102] 步骤103:路由器R1从接口x1接收到发布消息后,将接口x1加到该发布消息的接口ID集合中且作为最后一个元素,然后查看转发表,如果存在一个转发表项,该转发表项的名称域值和接口ID集合域值分别等于该发布消息的名称域值和接口ID集合域值,则将该转发表项的生命周期设置为最大值,否则创建一个转发表项,该转发表项的名称域值和接口ID集合域值分别等于该发布消息的名称域值和接口ID集合域值,生命周期设置为最大值;
[0103] 步骤104:路由器R1从每个上游接口转发接收到的发布消息;
[0104] 步骤105:路由器从接口x2接收到发布消息后,将接口x2加入到该发布消息的接口ID集合中并作为最后一个元素,该路由器查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该发布消息的名称域值且接口ID集合的元素个数小于该发布消息的接口ID集合的元素个数,则执行步骤113,否则执行步骤106;
[0105] 步骤106:从接口x2接收到发布消息的路由器查看转发表,如果存在一个转发表项,该转发表项的名称域值和接口ID集合分别等于该发布消息的名称域值和接口ID集合,则执行步骤107,否则执行步骤108;
[0106] 步骤107:从接口x2接收到发布消息的路由器查看转发表,选择一个转发表项,该转发表项的名称域值和接口ID集合分别等于该发布消息的名称域值和接口ID集合,将该转发表项的生命周期设置为最大值,执行步骤112;
[0107] 步骤108:从接口x2接收到发布消息的路由器查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该发布消息的名称域值且接口ID集合的元素个数等于该发布消息的接口ID集合的元素个数,则执行步骤111,否则执行步骤109;
[0108] 步骤109:从接口x2接收到发布消息的路由器查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该发布消息的名称域值且接口ID集合的元素个数大于该发布消息的接口ID集合的元素个数,则执行步骤110,否则执行步骤111;
[0109] 步骤110:从接口x2接收到发布消息的路由器查看转发表,选择所有符合条件1的转发表项,删除符合条件1的所有转发表项;
[0110] 条件1:转发表项的名称域值等于该发布消息的名称域值且接口ID集合的元素个数大于该发布消息的接口ID集合的元素个数;
[0111] 步骤111:从接口x2接收到发布消息的路由器创建一个转发表项,该转发表项的名称域值和接口ID集合域值分别等于该发布消息的名称域值和接口ID集合域值,生命周期设置为最大值;
[0112] 步骤112:从接口x2接收到发布消息的路由器从除了接口x2的每个上游接口转发该发布消息,执行步骤105;
[0113] 步骤113:结束。
[0114] 设备通过上述过程建立转发表,这样,通过转发表中的接口ID集合可以建立到达目的设备的最优路由路径,同时转发表项通过生命周期确保转发表项的实时性和正确性,从而确保路由的实时性和正确性。
[0115] 图2为本发明所述的更新转发表流程示意图。设备D1与路由器R1相连,数据C1由名称NA1唯一标识;如果设备D1删除了数据C1,则执行下述过程更新转发表:
[0116] 步骤201:开始;
[0117] 步骤202:设备D1发送一个删除消息,该删除消息的名称为NA1,消息类型值为2,接口ID集合为空,负载为空;
[0118] 步骤203:路由器R1从接口y1接收到该删除消息后,将接口y1加入到该删除消息的接口ID集合,查看转发表,如果存在一个转发表项,该转发表项的名称和接口ID集合分别等于该删除消息的名称和接口ID集合,则删除该转发表项;
[0119] 步骤204:路由器R1从每个上游接口转发该删除消息;
[0120] 步骤205:路由器从接口y2接收到该删除消息后,如果存在一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合的第一个元素等于该删除消息的接口ID集合中的第一个元素,则执行步骤206,否则执行步骤207;
[0121] 步骤206:从接口y2接收到该删除消息的路由器选择一个转发表项,该转发表项的名称等于该删除消息的名称且接口ID集合的第一个元素等于该删除消息的接口ID集合中的第一个元素,删除该转发表项,从除了接口y2以外的所有上游接口转发该删除消息,执行步骤205;
[0122] 步骤207:结束。
[0123] 设备通过上述过程更新转发表以确保转发表的正确性和实时性,这样,通过转发表中的接口ID集合可以建立到达目的设备的最优路由路径,从而确保路由的实时性和正确性。
[0124] 图3为本发明所述的数据通信流程示意图。每个路由器维护一个聚合表,每个聚合表项包含名称域、接口ID域和生命周期域;
[0125] 每个路由器维护一个接口表,一个接口表项包含接口ID域和转发数量域;
[0126] 设备D2与路由器R2相连,数据C1由名称NA1唯一标识,设备D2通过下述过程获取数据C1:
[0127] 步骤301:开始;
[0128] 步骤302:设备D2发送一个请求消息,该请求消息的名称域值为NA1,消息类型值为3,接口ID集合为空,负载为空;
[0129] 步骤303:判断是设备还是路由器从接口z1接收到该请求消息,如果是设备则执行步骤317,否则执行步骤304;
[0130] 步骤304:路由器从接口z1接收到该请求消息,查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该请求消息的名称且接口ID等于z1,则执行步骤318,否则执行步骤305;
[0131] 步骤305:从接口z1接收到该请求消息的路由器,查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该请求消息的名称,则执行步骤306,否则执行步骤307;
[0132] 步骤306:从接口z1接收到该请求消息的路由器创建一个聚合表项,该聚合表项的名称等于该请求消息的名称,接口ID等于z1,生命周期设置为最大值,执行步骤318;
[0133] 步骤307:判断从接口z1接收到该请求消息的路由器是否为路由器R2,如果是,则执行步骤308,否则执行步骤309;
[0134] 步骤308:从接口z1接收到该请求消息的路由器选择所有名称域值等于该请求消息名称域值的转发表项;对于每个选中的转发表项,该路由器选择一个接口表项,该接口表项的接口ID等于该转发表项的接口ID集合的最后一个元素;然后该路由器从所有选中的接口表项中,选择一个接口表项E1,该接口表项的转发数量域值最小,该路由器选择一个转发表项E2,该转发表项的名称域值等于该请求消息的名称域值且接口ID集合的最后一个元素等于接口表项E1的接口ID域值,将该请求消息的接口ID集合域值更新为转发表项E2的接口ID集合;
[0135] 步骤309:从接口z1接收到该请求消息的路由器选择一个接口表项,该接口表项的接口ID等于该请求消息的接口ID集合的最后一个元素;如果该接口表项的转发数量大于预定值TS1,则执行步骤311,否则执行步骤310;TS1为大于10的整数,TS1越大,接口能够转发的消息数量越多,TS1越小,接口所转发的消息数量越少;
[0136] 步骤310:从接口z1接收到该请求消息的路由器从接口z1创建一个聚合表项,该聚合表项的名称等于该请求消息的名称,接口ID等于z1,生命周期设置为最大值,该路由器选择该请求消息的接口ID集合最后一个元素所标识的接口,选择一个接口表项,该接口表项的接口ID等于该请求消息的接口ID集合最后一个元素,将该接口表项的转发数量域值递增1,从该请求消息的接口ID集合删除最后一个元素,从选中的接口转发该请求消息,执行步骤303;
[0137] 步骤311:从接口z1接收到该请求消息的路由器从接口z1发送一个拒绝消息,该拒绝消息的名称和接口ID集合分别等于该请求消息的名称和接口ID集合,消息类型值为4,负载为空;
[0138] 步骤312:判断是设备还是接收到拒绝消息,如果是设备则执行步骤321,否则执行步骤313;
[0139] 步骤313:路由器从接口z3接收到该拒绝消息后,选择所有名称域值等于该拒绝消息的名称域值的转发表项;对于每个选中的转发表项,该路由器选择一个接口表项,该接口表项的接口ID等于该转发表项的接口ID集合的最后一个元素;然后从所有选中的接口表项中,该路由器选择所有转发数量域值最小的接口表项;如果在选中的所有接口表项中存在一个接口表项E3,该接口表项的接口ID不等于z3,则执行步骤314,否则执行步骤315;
[0140] 步骤314:从接口z3接收到该拒绝消息的路由器选择一个转发表项,该转发表项的接口ID集合的最后一个元素等于接口表项E3的接口ID,将该拒绝消息的接口ID集合更新为该转发表项的接口ID集合,如果接口表项E3的转发数量大于域值TS1,则执行步骤315,否则执行步骤316;
[0141] 步骤315:从接口z3接收到该拒绝消息的路由器选择所有名称域值等于该拒绝消息的名称域值的聚合表项,针对每个聚合表项,该路由器从该聚合表项的接口ID域值所标识的接口发送一个拒绝消息,该拒绝消息的名称和接口ID集合分别等于接收到的拒绝消息的名称和接口ID集合,消息类型值为4,负载为空,该路由器删除该聚合表项,执行步骤312;
[0142] 步骤316:从接口z3接收到该拒绝消息的路由器创建一个请求消息,该请求消息的名称域值和接口ID集合域值分别等于该拒绝消息的名称域值和接口ID集合域值,消息类型值为3,负载为空,选择该请求消息的接口ID集合最后一个元素所标识的接口,选择一个接口表项,该接口表项的接口ID等于该请求消息的接口ID集合最后一个元素,将该接口表项的转发数量域值递增1,从该请求消息的接口ID集合删除最后一个元素,从选中的接口转发该请求消息,执行步骤303;
[0143] 步骤317:设备接收到该请求消息后,发送一个响应消息,该响应消息的名称域值等于该请求消息的名称域值,接口ID集合为空,消息类型值为5,负载为响应数据;
[0144] 步骤318:判断是设备D2还是路由器接收到该响应消息,如果是设备D2则执行步骤320,否则执行步骤319;
[0145] 步骤319:路由器接收到该响应消息后,选择所有名称域值等于该响应消息的名称域值的聚合表项,针对每个选中的聚合表项,该路由器执行下述操作:该路由器从该聚合表项的接口ID所标识的接口转发该响应消息,选择一个接口表项,该接口表项的接口ID等于该聚合表项的接口ID,将该接口表项的转发数量递减1,删除该聚合表项,执行步骤318;
[0146] 步骤320:设备D2接收到该响应消息后,保存该响应消息负载中的数据;
[0147] 步骤321:结束。
[0148] 设备通过上述过程实现数据通信,上述过程通过控制转发消息的数量来确保数据通信的性能,从而降低了数据通信延迟和代价;同时上述过程通过聚合表实现消息的聚合,这样,多个设备通过一次数据通信过程可以获取数据,从而降低了数据通信延迟和代价。
[0149] 图4为本发明所述的获取数据流程示意图。设备D2与路由器R2相连,数据C1由名称NA1唯一标识,如果设备D2无法通过步骤301-321获取数据C1,则执行下述过程获取数据C1:
[0150] 步骤401:开始;
[0151] 步骤402:设备D2发送一个查询消息,该查询消息的名称域值为NA1,消息类型值为6,接口ID集合为空,负载为参数h,参数h的初始值为0;
[0152] 步骤403:判断是设备还是路由器从接口k1接收到该查询消息,如果是设备则执行步骤410,否则执行步骤404;
[0153] 步骤404:路由器从接口k1接收到该查询消息,将查询消息负载中的参数h递增1;如果存在一个聚合表项,该聚合表项的名称等于该查询消息的名称且接口ID等于k1,则执行步骤411,否则执行步骤405;
[0154] 步骤405:从接口k1接收到该查询消息的路由器查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该查询消息的名称,则执行步骤406,否则执行步骤407;
[0155] 步骤406:从接口k1接收到该查询消息的路由器创建一个聚合表项,该聚合表项的名称等于该查询消息的名称,接口ID等于k1,生命周期设置为T1-(h-1)T0,T1和T0为预设值,且T1远大于T0,例如,T1等于1s,T0等于20ms,执行步骤411;
[0156] 步骤407:从接口k1接收到该查询消息的路由器创建一个聚合表项,该聚合表项的名称等于该查询消息的名称,接口ID等于k1,生命周期设置为T1-(h-1)T0,判断该路由器是否为路由器R2,如果是,则执行步骤408,否则执行步骤409;
[0157] 步骤408:从接口k1接收到该查询消息的路由器选择所有名称域值等于该查询消息的名称域值的转发表项,针对每个选中的转发表项,该路由器选择一个接口表项,该接口表项的接口ID等于该转发表项的接口ID集合的最后一个元素,然后该路由器从所有选中的接口表项中,选择一个接口表项E4,该接口表项的转发数量域值最小,该路由器选择一个转发表项E5,该转发表项的名称域值等于该查询消息的名称域值且接口ID集合的最后一个元素等于接口表项E4的接口ID域值,将该查询消息的接口ID集合域值更新为转发表项E5的接口ID集合;
[0158] 步骤409:从接口k1接收到该查询消息的路由器选择该查询消息的接口ID集合最后一个元素所标识的接口,选择一个接口表项,该接口表项的接口ID等于该查询消息的接口ID集合最后一个元素,将该接口表项的转发数量域值递增1,从该查询消息的接口ID集合删除最后一个元素,从选中的接口转发该查询消息,执行步骤403;
[0159] 步骤410:设备接收到该查询消息后,发送一个确认消息,该确认消息的名称域值等于该查询消息的名称域值,接口ID集合为空,消息类型值为7,负载为响应数据;
[0160] 步骤411:判断是设备D2还是路由器接收到该确认消息,如果是设备则执行步骤423,否则执行步骤412;
[0161] 步骤412:如果路由器在满足条件2的情况下接收到该确认消息,则执行步骤413,否则执行步骤414;
[0162] 条件2:所有名称域值等于该确认消息的名称域值的聚合表项的生命周期都没有衰减为0;
[0163] 步骤413:接收到确认消息的路由器选择所有名称域值等于该确认消息的名称域值的聚合表项,针对每个选中的聚合表项,该路由器执行下述操作:该路由器从该聚合表项的接口ID所标识的接口转发该确认消息,选择一个接口表项,该接口表项的接口ID等于该聚合表项的接口ID,将该接口表项的转发数量递减1,删除该聚合表项,执行步骤411;
[0164] 步骤414:接收到确认消息的路由器选择名称域值等于该确认消息的名称域值的聚合表项,将这些选中的聚合表项的生命周期设置为T1,针对每个选中的聚合表项E6,该路由器从该聚合表项E6的接口ID所标识的接口发送一个重置消息,该重置消息的名称域值等于该聚合表项E6的名称域值,接口ID集合为空,消息类型值为8,负载为预设时间T1;该路由器选择所有名称域值等于聚合表项E6的名称域值的转发表项,针对选中的每个转发表项,该路由器构建一个查询消息,该查询消息的名称域值和接口ID集合域值等于该转发表项的名称域值和接口ID集合域值,消息类型值为6,负载为参数h1,参数h1的初始值为0,选择一个接口表项,该接口表项的接口ID等于该查询消息的接口ID集合最后一个元素,将该接口表项的转发数量域值递增1,选择该查询消息接口ID集合中的最后一个元素所标识的接口,从该查询消息接口ID集合中删除最后一个元素,从选中的接口转发该查询消息;
[0165] 步骤415:如果设备接收到重置消息,则执行步骤411,否则执行步骤416;
[0166] 步骤416:如果路由器接收到重置消息,则执行步骤417,否则执行步骤418;
[0167] 步骤417:接收到重置消息的路由器选择所有名称域值等于该重置消息的名称域值的聚合表项,针对每个聚合表项,该路由器将该聚合表项的生命周期设置为T1,从该聚合表项的接口ID所标识的接口发送该重置消息,执行步骤415;
[0168] 步骤418:判断是设备还是路由器从接口k2接收到查询消息,如果是设备则执行步骤410,否则执行步骤419;
[0169] 步骤419:路由器从接口k2接收到该查询消息,将查询消息负载中的参数h1递增1;如果存在一个聚合表项,该聚合表项的名称等于该查询消息的名称且接口ID等于k2,则执行步骤411,否则执行步骤420;
[0170] 步骤420:从接口k2接收到该查询消息的路由器查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该查询消息的名称,则执行步骤421,否则执行步骤422;
[0171] 步骤421:从接口k2接收到该查询消息的路由器创建一个聚合表项,该聚合表项的名称等于该查询消息的名称,接口ID等于k2,生命周期设置为T1-(h1-1)T0,执行步骤411;
[0172] 步骤422:从接口k2接收到该查询消息的路由器创建一个聚合表项,该聚合表项的名称等于该查询消息的名称,接口ID等于k2,生命周期设置为T1-(h1-1)T0;该路由器选择所有名称域值等于查询消息的名称域值的转发表项,针对每个转发表项,该路由器执行下述操作:将该查询消息的接口ID集合更新为该转发表项的接口ID集合,选择一个接口表项,该接口表项的接口ID等于该查询消息的接口ID集合最后一个元素,将该接口表项的转发数量域值递增1,选择该查询消息接口ID集合中的最后一个元素所标识的接口,从该查询消息接口ID集合中删除最后一个元素,从选中的接口转发该查询消息;执行步骤415;
[0173] 步骤423:设备D2接收到该确认消息后,保存该确认消息负载中的数据;
[0174] 步骤424:结束。
[0175] 设备通过上述过程实现数据通信,上述过程通过聚合表实现消息的聚合,这样,多个设备通过一次数据通信过程可以获取数据,从而降低了数据通信延迟和代价,同时通过转发表项建立最优路由路径,从而进一步降低了数据通信延迟和代价。
[0176] 实施例1
[0177] 基于表1的仿真参数,本实施例模拟了本发明中的一种高效的数据网络路由实现方法,性能分析如下:当数据传输量增加时,数据通信代价增加,当数据传输量减少时,数据通信代价减少,数据通信平均代价为8.4。
[0178] 表1仿真参数
[0179]
[0180] 本发明提供了一种高效的数据网络路由实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。