一种基于按需机制的网络数据通信方法与流程

文档序号:12822035阅读:226来源:国知局
一种基于按需机制的网络数据通信方法与流程
本发明涉及一种数据通信方法,尤其涉及的是一种基于按需机制的网络数据通信方法。
背景技术
:近年来,很多研究工作致力于网络通信方法以便使用户能够快速获取网络服务。随着网络技术的发展,网络通信方法会成为未来提供服务的一种模式。目前,网络通信方法的实现模式是通过广播来实现,因此延迟和代价都比较大,降低了网络服务性能。因此,如何降低网络通信方法提供服务的延迟和代价成为近年来研究的热点问题。技术实现要素:发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于按需机制的网络数据通信方法。本发明通过单播取代广播的方式来实现网络通信方法,从而降低网络通信方法提供服务的延迟和代价,从而有效提高网络服务性能。技术方案:本发明公开了一种基于按需机制的网络数据通信方法,所述网络包括两个以上的节点和两个以上的数据路由器;一种类型的数据由一个数据id唯一定义;数据消费者为有权限获取一种类型数据的节点,数据提供者为有权提供一种类型数据的节点;节点不具有路由转发功能,数据路由器具有路由转发功能;数据路由器之间通过有线接口相连,数据路由器与节点之间通过无线接口相连;一种消息由三个部分构成:数据id域,消息类型域以及负载;消息类型如下表所示:数据路由器维护一个转发表和一个聚合表,一个转发表项由接口域,数据id域,队列域,距离域以及生命周期域构成;其中,接口域值指向到达数据提供者的下一跳,数据id域值为数据消费者请求的数据的数据id,距离域值是保存转发表的数据路由器与数据提供者之间的跳数,队列域值为当前待处理的数据请求消息的个数;一个聚合表项由接口域、数据id域和生命周期域构成,接口域值指向到达数据消费者的下一跳,数据id域值为数据消费者请求数据的数据id;在数据c1由数据id定义,数据id为cid1,数据消费者u1通过自己的接口f与本地数据路由器r1相连的条件下,数据消费者u1通过下述过程获取数据c1:步骤201:开始;步骤202:数据消费者u1随机产生一个序列号并构建一个数据请求消息,数据id域值为cid1,消息类型为2,负载为序列号,然后从接口f发送该数据请求消息;步骤203:数据路由器r1从自己的接口f1接收到数据请求消息后,判断聚合表中是否存在数据id域值为cid1的表项,如果是,执行步骤204,否则执行步骤206;步骤204:数据路由器r1判断聚合表中是否存在数据id域值为cid1,接口域值为f1的表项,如果是,执行步骤222,否则执行步骤205;步骤205:数据路由器r1创建一个聚合表项,该聚合表项的数据id域值为cid1,接口域值为f1,生命周期为最大生命周期值,例如1s,执行步骤222;步骤206:数据路由器r1创建一个聚合表项,该聚合表项的数据id域值为cid1,接口域值为f1,生命周期为最大生命周期值;数据路由器r1查看是否存在数据id域值为cid1且队列域值小于最大预定队列域值,例如20,且距离域值小于最大预定距离域值的转发表项,例如10跳,如果存在,则执行步骤207,否则执行步骤208;步骤207:对于每一个数据id域值为cid1且队列域值小于最大预定队列域值,且距离域值小于最大预定距离域值的转发表项,数据路由器r1根据公式(1)计算该转发表项的权值p;然后数据路由器r1选择权值最小地转发表项,从该转发表项的接口域值转发该数据请求消息,同时将该转发表项的队列域值递增1,执行步骤209;p=α×q+β×h;α+β=1,α>0,β>0(1)其中,α和β为调节参数,q为该表项的队列域值,h为该表项的距离域值;α取值范围为0.1-0.9,β取值范围为0.1-0.9,如果用户需要快速处理数据包,那么α的权值高一些,例如0.7,如果用户要求低丢包率,那么β的取值高一些,例如0.7;步骤208:数据路由器r1从每个与其他数据路由器相连的接口转发数据请求消息;步骤209:数据路由器或者数据提供者从自己的接口f2接收到数据请求消息,如果是数据提供者接收到数据请求消息,则执行步骤210,否则执行步骤214;步骤210:判断数据提供者是否能提供数据c1,如果能,则执行步骤211,否则执行步骤213;步骤211:判断数据提供者是否已经接收到具有相同序列号的数据请求消息,如果是,执行步骤213,否则执行步骤212;步骤212:数据提供者创建一个数据响应消息,该数据响应消息的数据id域值为cid1,消息类型为3,负载为数据请求消息中的序列号、距离参数以及数据c1,距离参数的初始值为0,然后数据提供者从自己的接口f2发送该数据响应消息,执行步骤222;步骤213:数据提供者丢弃接收到的数据请求消息,执行步骤222;步骤214:判断数据路由器是否已经接收到具有相同序列号的数据请求消息,如果是,执行步骤215,否则执行步骤216;步骤215:数据路由器丢弃接收到的数据请求消息,执行步骤222;步骤216:数据路由器判断聚合表中是否存在数据id域值为cid1的表项,如果是,执行步骤217,否则执行步骤219;步骤217:数据路由器判断聚合表中是否存在数据id域值为cid1且接口域值为f2的表项,如果是,执行步骤222,否则执行步骤218;步骤218:数据路由器创建一个聚合表项,该聚合表项的数据id域值为cid1,接口域值为f2,生命周期域值为最大生命周期值,执行步骤222;步骤219:数据路由器创建一个聚合表项,该聚合表项的数据id域值为cid1,接口域值为f2,生命周期域值为最大生命周期值;数据路由器查看是否存在数据id域值为cid1且队列域值小于最大预定队列域值,且距离域值小于最大预定距离域值的转发表项,如果存在,则执行步骤220,否则执行步骤221;步骤220:对于每一个数据id域值为cid1且队列域值小于最大预定队列域值,且距离域值小于最大预定距离域值的转发表项,数据路由器根据公式(1)计算该表项的权值p,然后数据路由器选择权值最小的转发表项,从转发该表项的接口域值转发该数据请求消息,同时将该表项的队列域值递增1,执行步骤209;步骤221:数据路由器从除了接口f2以外的每个与其他数据路由器相连的接口转发数据请求消息,执行步骤209;步骤222:数据路由器判断数据id为cid1的聚合表项的生命周期是否衰减为0,如果是,执行步骤223,否则执行步骤224;步骤223:数据路由器删除数据id为cid1的聚合表项,执行步骤232;步骤224:数据路由器或者数据消费者从自己接口f4接收到数据响应消息,如果是数据路由器接收到数据响应消息,则执行步骤225,否则执行步骤231;步骤225:数据路由器将数据响应消息中的距离参数递增1,然后查看转发表中是否存在数据id为cid1且接口域值为f4的转发表项,如果存在,执行步骤227,否则执行步骤226;步骤226:数据路由器创建一个转发表项,该转发表项的数据id为cid1,接口域值为f4,队列域值为0,距离域值为数据响应消息中的距离参数值,生命周期设置为最大生命周期值,执行步骤229;步骤227:数据路由器将该转发表项的队列域值递减1,然后判断该转发表项的距离域值是否大于数据响应消息中的距离参数,如果是,执行步骤228,否则执行步骤229;步骤228:数据路由器将该转发表项的距离域值更新为数据响应消息中的距离参数;步骤229:判断数据路由器是否已经接收到具有相同序列号的数据响应消息,如果是,执行步骤232,否则执行步骤230;步骤230:数据路由器从聚合表中选择所有数据id域值为cid1的表项,针对每个选择的表项,数据路由器从该表项中的接口域发送接收到的数据响应消息,然后数据路由器删除所有数据id域值为cid1的表项,执行步骤224;步骤231:数据消费者u1获取并保存数据响应消息中的数据c1;步骤232:结束;通过上述过程,数据消费者能够快速获取想要的数据,从而有效降低了数据通信延迟。本发明所述方法中,如果数据路由器检测到一个转发表项的生命周期衰减为0,则删除该转发表项;在数据路由器每隔时间t从每个接口发送信标消息,该信标消息的数据id为空,类型为0,负载为空的条件下,如果数据路由器在时间2t内没有从自己的接口x收到信标帧,则执行下述操作:步骤301:开始;步骤302:数据路由器随机产生一个序列号,选择接口域值为x的所有转发表项,将所述转发表项的队列域值设置为大于队列最大值的正整数;数据路由器构建一个无效消息,该无效消息的数据id为空,类型为5,负载为序列号以及接口域值为x的所有转发表项的数据id的集合;数据路由器从除了接口x以外的每个与其他数据路由器相连的接口转发该无效消息;步骤303:数据路由器从自己的接口f8接收到无效消息后,如果数据路由器已经收到具有相同序列号的无效消息,则执行步骤304,否则执行步骤305;步骤304:数据路由器丢弃接收到的无效消息,执行步骤307;步骤305:数据路由器查看转发表判断是否存在接口域值为f8且数据id属于无效消息中的数据id集合的转发表项,如果存在,执行步骤306,否则执行步骤307;步骤306:数据路由器将所述转发表项的队列域值设置为大于队列最大值的正整数,数据路由器从除了自己的接口f8以外的每个与数据路由器相连的接口发送接收到的无效消息,执行步骤303;步骤307:结束;上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。本发明所述方法中,如果数据路由器从自己的接口x接收到信标帧且接口域值为x的转发表项的队列域值大于最大队列值,那么执行下述操作:步骤401:开始;步骤402:数据路由器随机产生一个序列号,选择接口域值为x的所有转发表项,将所述转发表项的队列域值设置为0;数据路由器构建一个有效消息,该有效消息的数据id为空,类型为6,负载为序列号以及接口域值为x的所有转发表项的数据id的集合;数据路由器从除了接口x以外的每个与其他数据路由器相连的接口转发该有效消息;步骤403:数据路由器从自己的接口f9接收到有效消息后,如果数据路由器已经收到具有相同序列号的有效消息,则执行步骤404,否则执行步骤405;步骤404:数据路由器丢弃接收到的有效消息,执行步骤407;步骤405:数据路由器查看转发表判断是否存在接口域值为f9且数据id属于有效消息中的数据id集合的转发表项,如果存在,执行步骤406,否则执行步骤407;步骤406:数据路由器将这些转发表项的队列域值设置为0,数据路由器从除了接口f9以外的每个与其他数据路由器相连的接口发送接收到的有效消息,执行步骤403;步骤407:结束。上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。本发明所述方法中,数据提供者每隔时间t发送信标消息,该信标消息的数据id为自己所能提供的数据的数据id,类型为0,负载为空;数据路由器从自己接口f5接收到数据id域值为cid1的信标帧后,判断是否存在接口域值为f5且数据id域值为cid1的转发表项,如果存在,数据路由器则执行下述过程:步骤501:开始;步骤502:数据路由器将接口域值为f5且数据id域值为cid1的转发表项的生命周期设置为最大生命周期值;数据路由器随机产生一个序列号,同时构建一个刷新消息,该刷新消息的数据id为cid1,类型为4,负载为序列号;数据路由器从每个与其他数据路由器相连的接口发送该刷新消息;步骤503:数据路由器从接口f10接收到有效消息后,如果数据路由器已经收到具有相同序列号的刷新消息,则执行步骤504,否则执行步骤505;步骤504:数据路由器丢弃接收到的刷新消息,执行步骤507;步骤505:数据路由器查看转发表判断是否存在接口域值为f10且数据id为cid1的转发表项,如果存在,执行步骤506,否则执行步骤507;步骤506:数据路由器将该转发表项的生命周期设置为最大生命周期,数据路由器从除了接口f10以外的每个与其他数据路由器相连的接口发送接收到的刷新消息,执行步骤503;步骤507:结束。上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。本发明所述方法中,数据路由器从接口f5接收到数据id域值为cid1的信标帧后,判断是否存在接口域值为f5且数据id域值为cid1的转发表项,如果不存在,数据路由器则执行下述过程:步骤601:开始;步骤602:数据路由器创建一个转发表项,该转发表项的数据id域值为cid1,接口域值为f5,队列域值为0,距离域值为1,生命周期为最大生命周期值;数据路由器随机产生一个序列号,同时构建数据发布消息,该数据发布消息的数据id域值为cid1,消息类型为1,负载为序列号和距离参数,距离参数的初始值为1;数据路由器从每个与数据路由器相连的接口发送该数据发布消息;步骤603:数据路由器从自己的接口j接收到数据发布消息,如果数据路由器已经收到具有相同序列号的数据发布消息,则执行步骤604,否则执行步骤605;步骤604:数据路由器丢弃接收到的数据发布消息消息,执行步骤613;步骤605:数据路由器查看转发表判断是否存在数据id域值为cid1且接口域值为j的表项,如果存在,执行步骤608,否则执行步骤606;步骤606:数据路由器将数据发布消息中的距离域值递增1,创建一个转发表项,该转发表项的数据id域值为cid1,接口域值为j,队列域值为0,距离域值为数据发布消息中的距离域值,生命周期为最大生命周期值,例如1s;如果数据路由器除了接口j以外所有接口都不与其他数据路由器相连,那么执行步骤613,否则执行步骤607;步骤607:数据路由器从除了接口j以外的每个与其他数据路由器相连的接口转发接收到的数据发布消息,执行步骤603;步骤608:数据路由器查看转发表判断是否存在数据id域值为cid1,接口域值为j且距离值大于数据发布消息中的距离值的表项,如果存在,执行步骤609,否则执行步骤611;步骤609:数据路由器将数据发布消息中的距离域值递增1,更新数据id域值为cid1,接口域值为j且距离值大于数据发布消息中的距离值的转发表项,即用数据发布消息中的距离值更新该转发表项中的距离值,同时将该转发表项的生命周期设置为最大值,如果数据路由器除了接口j以外所有接口都不与其他数据路由器相连,则执行步骤613,否则执行步骤610;步骤610:数据路由器从除了接口j以外的每个与其他数据路由器相连的接口转发接收到的数据发布消息,执行步骤603;步骤611:数据路由器将数据发布消息中的距离域值递增1,更新数据id域值为cid1,接口域值为j且距离值大于数据发布消息中的距离值的转发表项,即将该转发表项的生命周期设置为最大值,如果数据路由器除了接口j以外所有接口都不与其他数据路由器相连,则执行步骤613,否则执行步骤612;步骤612:数据路由器从除了接口j以外的每个与其他数据路由器相连的接口转发接收到的数据发布消息,执行步骤603;步骤613:结束。上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。本发明所述方法中,数据路由器存在一个数据id为cid1且接口为无线接口w的转发表项,如果数据路由器在时间2t范围内没有接收到数据id为cid1的信标消息,则执行下述操作:步骤701:开始;步骤702:数据路由器随机产生一个序列号,构建一个切换消息,该切换消息的数据id为cid1,类型为7,负载为序列号;数据路由器从每个与其他数据路由器相连的接口转发该切换消息,同时删除数据id为cid1且接口为无线接口w的转发表项;步骤703:数据路由器从接口f7接收到切换消息后,如果数据路由器已经收到具有相同序列号的切换消息,则执行步骤704,否则执行步骤705;步骤704:数据路由器丢弃接收到的切换消息,执行步骤708;步骤705:数据路由器查看转发表判断是否存在接口域值为f7且数据id为cid1的转发表项,如果存在,执行步骤706,否则执行步骤708;步骤706:数据路由器删除接口域值为f7且数据id等于cid1的转发表项,数据路由器判断是否存在数据id等于cid1的转发表项,如果是,执行步骤708,否则执行步骤707;步骤707:数据路由器从除了接口f7以外的每个与其他数据路由器相连的接口转发接收到的切换消息,执行步骤703;步骤708:结束。上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。有益效果:本发明提供了一种基于按需机制的网络数据通信方法,数据消费者通过本发明所提供的网络数据通信方法能够从距离最近的数据提供者以单播方式快速获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、数据获取等领域,具有广泛的应用前景。附图说明下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。图1为本发明所述的数据获取流程示意图。图2为本发明所述的接口无效处理流程示意图。图3为本发明所述的接口有效处理流程示意图。图4为本发明所述的更新转发表流程示意图。图5为本发明所述的创建转发表项流程示意图。图6为本发明所述的切换流程示意图。具体实施方式:本发明提供了一种基于按需机制的网络数据通信方法,数据消费者通过本发明所提供的网络数据通信方法能够从距离最近的数据提供者以单播方式快速获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、数据获取等领域,具有广泛的应用前景。图1为本发明所述的数据获取流程示意图。所述网络包括两个以上的节点和两个以上的数据路由器;一种类型的数据由一个数据id唯一定义;数据消费者为有权限获取一种类型数据的节点,数据提供者为有权提供一种类型数据的节点;节点不具有路由转发功能,数据路由器具有路由转发功能;数据路由器之间通过有线接口相连,数据路由器与节点之间通过无线接口相连;一种消息由三个部分构成:数据id域,消息类型域以及负载;消息类型如下表所示:消息类型消息类型域值信标消息0数据发布消息1数据请求消息2数据响应消息3刷新消息4无效消息5有效消息6切换消息7数据路由器维护一个转发表和一个聚合表,一个转发表项由接口域,数据id域,队列域,距离域以及生命周期域构成;其中,接口域值指向到达数据提供者的下一跳,数据id域值为数据消费者请求的数据的数据id,距离域值是保存转发表的数据路由器与数据提供者之间的跳数,队列域值为当前待处理的数据请求消息的个数;一个聚合表项由接口域、数据id域和生命周期域构成,接口域值指向到达数据消费者的下一跳,数据id域值为数据消费者请求的数据的数据id;在数据c1由数据id定义,数据id为cid1,数据消费者u1通过自己的接口f与本地数据路由器r1相连的条件下,数据消费者u1通过下述过程获取数据c1:步骤201:开始;步骤202:数据消费者u1随机产生一个序列号并构建一个数据请求消息,数据id域值为cid1,消息类型为2,负载为序列号,然后从接口f发送该数据请求消息;步骤203:数据路由器r1从自己的接口f1接收到数据请求消息后,判断聚合表中是否存在数据id域值为cid1的表项,如果是,执行步骤204,否则执行步骤206;步骤204:数据路由器r1判断聚合表中是否存在数据id域值为cid1,接口域值为f1的表项,如果是,执行步骤222,否则执行步骤205;步骤205:数据路由器r1创建一个聚合表项,该聚合表项的数据id域值为cid1,接口域值为f1,生命周期为最大生命周期值,例如1s,执行步骤222;步骤206:数据路由器r1创建一个聚合表项,该聚合表项的数据id域值为cid1,接口域值为f1,生命周期为最大生命周期值;数据路由器r1查看是否存在数据id域值为cid1且队列域值小于最大预定队列域值,例如20,且距离域值小于最大预定距离域值的转发表项,例如10跳,如果存在,则执行步骤207,否则执行步骤208;步骤207:对于每一个数据id域值为cid1且队列域值小于最大预定队列域值,且距离域值小于最大预定距离域值的转发表项,数据路由器r1根据公式(1)计算该转发表项的权值p;然后数据路由器r1选择权值最小地转发表项,从该转发表项的接口域值转发该数据请求消息,同时将该转发表项的队列域值递增1,执行步骤209;p=α×q+β×h;α+β=1,α>0,β>0(1)其中,α和β为调节参数,q为该表项的队列域值,h为该表项的距离域值;α取值范围为0.1-0.9,β取值范围为0.1-0.9,如果用户需要快速处理数据包,那么α的权值高一些,例如0.7,如果用户要求低丢包率,那么β的取值高一些,例如0.7;步骤208:数据路由器r1从每个与其他数据路由器相连的接口转发数据请求消息;步骤209:数据路由器或者数据提供者从自己的接口f2接收到数据请求消息,如果是数据提供者接收到数据请求消息,则执行步骤210,否则执行步骤214;步骤210:判断数据提供者是否能提供数据c1,如果能,则执行步骤211,否则执行步骤213;步骤211:判断数据提供者是否已经接收到具有相同序列号的数据请求消息,如果是,执行步骤213,否则执行步骤212;步骤212:数据提供者创建一个数据响应消息,该数据响应消息的数据id域值为cid1,消息类型为3,负载为数据请求消息中的序列号、距离参数以及数据c1,距离参数的初始值为0,然后数据提供者从自己的接口f2发送该数据响应消息,执行步骤222;步骤213:数据提供者丢弃接收到的数据请求消息,执行步骤222;步骤214:判断数据路由器是否已经接收到具有相同序列号的数据请求消息,如果是,执行步骤215,否则执行步骤216;步骤215:数据路由器丢弃接收到的数据请求消息,执行步骤222;步骤216:数据路由器判断聚合表中是否存在数据id域值为cid1的表项,如果是,执行步骤217,否则执行步骤219;步骤217:数据路由器判断聚合表中是否存在数据id域值为cid1且接口域值为f2的表项,如果是,执行步骤222,否则执行步骤218;步骤218:数据路由器创建一个聚合表项,该聚合表项的数据id域值为cid1,接口域值为f2,生命周期域值为最大生命周期值,执行步骤222;步骤219:数据路由器创建一个聚合表项,该聚合表项的数据id域值为cid1,接口域值为f2,生命周期域值为最大生命周期值;数据路由器查看是否存在数据id域值为cid1且队列域值小于最大预定队列域值,且距离域值小于最大预定距离域值的转发表项,如果存在,则执行步骤220,否则执行步骤221;步骤220:对于每一个数据id域值为cid1且队列域值小于最大预定队列域值,且距离域值小于最大预定距离域值的转发表项,数据路由器根据公式(1)计算该表项的权值p,然后数据路由器选择权值最小的转发表项,从转发该表项的接口域值转发该数据请求消息,同时将该表项的队列域值递增1,执行步骤209;步骤221:数据路由器从除了接口f2以外的每个与其他数据路由器相连的接口转发数据请求消息,执行步骤209;步骤222:数据路由器判断数据id为cid1的聚合表项的生命周期是否衰减为0,如果是,执行步骤223,否则执行步骤224;步骤223:数据路由器删除数据id为cid1的聚合表项,执行步骤232;步骤224:数据路由器或者数据消费者从自己接口f4接收到数据响应消息,如果是数据路由器接收到数据响应消息,则执行步骤225,否则执行步骤231;步骤225:数据路由器将数据响应消息中的距离参数递增1,然后查看转发表中是否存在数据id为cid1且接口域值为f4的转发表项,如果存在,执行步骤227,否则执行步骤226;步骤226:数据路由器创建一个转发表项,该转发表项的数据id为cid1,接口域值为f4,队列域值为0,距离域值为数据响应消息中的距离参数值,生命周期设置为最大生命周期值,执行步骤229;步骤227:数据路由器将该转发表项的队列域值递减1,然后判断该转发表项的距离域值是否大于数据响应消息中的距离参数,如果是,执行步骤228,否则执行步骤229;步骤228:数据路由器将该转发表项的距离域值更新为数据响应消息中的距离参数;步骤229:判断数据路由器是否已经接收到具有相同序列号的数据响应消息,如果是,执行步骤232,否则执行步骤230;步骤230:数据路由器从聚合表中选择所有数据id域值为cid1的表项,针对每个选择的表项,数据路由器从该表项中的接口域发送接收到的数据响应消息,然后数据路由器删除所有数据id域值为cid1的表项,执行步骤224;步骤231:数据消费者u1获取并保存数据响应消息中的数据c1;步骤232:结束;通过上述过程,数据消费者能够快速获取想要的数据,从而有效降低了数据通信延迟。图2为本发明所述的接口无效处理流程示意图。如果数据路由器检测到一个转发表项的生命周期衰减为0,则删除该转发表项;在数据路由器每隔时间t从每个接口发送信标消息,该信标消息的数据id为空,类型为0,负载为空的条件下,如果数据路由器在时间2t内没有从自己的接口x收到信标帧,则执行下述操作:步骤301:开始;步骤302:数据路由器随机产生一个序列号,选择接口域值为x的所有转发表项,将所述转发表项的队列域值设置为大于队列最大值的正整数;数据路由器构建一个无效消息,该无效消息的数据id为空,类型为5,负载为序列号以及接口域值为x的所有转发表项的数据id的集合;数据路由器从除了接口x以外的每个与其他数据路由器相连的接口转发该无效消息;步骤303:数据路由器从自己的接口f8接收到无效消息后,如果数据路由器已经收到具有相同序列号的无效消息,则执行步骤304,否则执行步骤305;步骤304:数据路由器丢弃接收到的无效消息,执行步骤307;步骤305:数据路由器查看转发表判断是否存在接口域值为f8且数据id属于无效消息中的数据id集合的转发表项,如果存在,执行步骤306,否则执行步骤307;步骤306:数据路由器将所述转发表项的队列域值设置为大于队列最大值的正整数,数据路由器从除了自己的接口f8以外的每个与数据路由器相连的接口发送接收到的无效消息,执行步骤303;步骤307:结束;上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。图3为本发明所述的接口有效处理流程示意图。如果数据路由器从自己的接口x接收到信标帧且接口域值为x的转发表项的队列域值大于最大队列值,那么执行下述操作:步骤401:开始;步骤402:数据路由器随机产生一个序列号,选择接口域值为x的所有转发表项,将所述转发表项的队列域值设置为0;数据路由器构建一个有效消息,该有效消息的数据id为空,类型为6,负载为序列号以及接口域值为x的所有转发表项的数据id的集合;数据路由器从除了接口x以外的每个与其他数据路由器相连的接口转发该有效消息;步骤403:数据路由器从自己的接口f9接收到有效消息后,如果数据路由器已经收到具有相同序列号的有效消息,则执行步骤404,否则执行步骤405;步骤404:数据路由器丢弃接收到的有效消息,执行步骤407;步骤405:数据路由器查看转发表判断是否存在接口域值为f9且数据id属于有效消息中的数据id集合的转发表项,如果存在,执行步骤406,否则执行步骤407;步骤406:数据路由器将这些转发表项的队列域值设置为0,数据路由器从除了接口f9以外的每个与其他数据路由器相连的接口发送接收到的有效消息,执行步骤403;步骤407:结束。上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。图4为本发明所述的更新转发表流程示意图。数据提供者每隔时间t发送信标消息,该信标消息的数据id为自己所能提供的数据的数据id,类型为0,负载为空;数据路由器从自己接口f5接收到数据id域值为cid1的信标帧后,判断是否存在接口域值为f5且数据id域值为cid1的转发表项,如果存在,数据路由器则执行下述过程:步骤501:开始;步骤502:数据路由器将接口域值为f5且数据id域值为cid1的转发表项的生命周期设置为最大生命周期值;数据路由器随机产生一个序列号,同时构建一个刷新消息,该刷新消息的数据id为cid1,类型为4,负载为序列号;数据路由器从每个与其他数据路由器相连的接口发送该刷新消息;步骤503:数据路由器从接口f10接收到有效消息后,如果数据路由器已经收到具有相同序列号的刷新消息,则执行步骤504,否则执行步骤505;步骤504:数据路由器丢弃接收到的刷新消息,执行步骤507;步骤505:数据路由器查看转发表判断是否存在接口域值为f10且数据id为cid1的转发表项,如果存在,执行步骤506,否则执行步骤507;步骤506:数据路由器将该转发表项的生命周期设置为最大生命周期,数据路由器从除了接口f10以外的每个与其他数据路由器相连的接口发送接收到的刷新消息,执行步骤503;步骤507:结束。上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。图5为本发明所述的创建转发表项流程示意图。数据路由器从接口f5接收到数据id域值为cid1的信标帧后,判断是否存在接口域值为f5且数据id域值为cid1的转发表项,如果不存在,数据路由器则执行下述过程:步骤601:开始;步骤602:数据路由器创建一个转发表项,该转发表项的数据id域值为cid1,接口域值为f5,队列域值为0,距离域值为1,生命周期为最大生命周期值;数据路由器随机产生一个序列号,同时构建数据发布消息,该数据发布消息的数据id域值为cid1,消息类型为1,负载为序列号和距离参数,距离参数的初始值为1;数据路由器从每个与数据路由器相连的接口发送该数据发布消息;步骤603:数据路由器从自己的接口j接收到数据发布消息,如果数据路由器已经收到具有相同序列号的数据发布消息,则执行步骤604,否则执行步骤605;步骤604:数据路由器丢弃接收到的刷新消息,执行步骤613;步骤605:数据路由器查看转发表判断是否存在数据id域值为cid1且接口域值为j的表项,如果存在,执行步骤608,否则执行步骤606;步骤606:数据路由器将数据发布消息中的距离域值递增1,创建一个转发表项,该转发表项的数据id域值为cid1,接口域值为j,队列域值为0,距离域值为数据发布消息中的距离域值,生命周期为最大生命周期值,例如1s;如果数据路由器除了接口j以外所有接口都不与其他数据路由器相连,那么执行步骤613,否则执行步骤607;步骤607:数据路由器从除了接口j以外的每个与其他数据路由器相连的接口转发接收到的数据发布消息,执行步骤603;步骤608:数据路由器查看转发表判断是否存在数据id域值为cid1,接口域值为j且距离值大于数据发布消息中的距离值的表项,如果存在,执行步骤609,否则执行步骤611;步骤609:数据路由器将数据发布消息中的距离域值递增1,更新数据id域值为cid1,接口域值为j且距离值大于数据发布消息中的距离值的转发表项,即用数据发布消息中的距离值更新该转发表项中的距离值,同时将该转发表项的生命周期设置为最大值,如果数据路由器除了接口j以外所有接口都不与其他数据路由器相连,则执行步骤613,否则执行步骤610;步骤610:数据路由器从除了接口j以外的每个与其他数据路由器相连的接口转发接收到的数据发布消息,执行步骤603;步骤611:数据路由器将数据发布消息中的距离域值递增1,更新数据id域值为cid1,接口域值为j且距离值大于数据发布消息中的距离值的转发表项,即将该转发表项的生命周期设置为最大值,如果数据路由器除了接口j以外所有接口都不与其他数据路由器相连,则执行步骤613,否则执行步骤612;步骤612:数据路由器从除了接口j以外的每个与其他数据路由器相连的接口转发接收到的数据发布消息,执行步骤603;步骤613:结束。上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。图6为本发明所述的切换流程示意图。数据路由器存在一个数据id为cid1且接口为无线接口w的转发表项,如果数据路由器在时间2t范围内没有接收到数据id为cid1的信标消息,则执行下述操作:步骤701:开始;步骤702:数据路由器随机产生一个序列号,构建一个切换消息,该切换消息的数据id为cid1,类型为7,负载为序列号;数据路由器从每个与其他数据路由器相连的接口转发该切换消息,同时删除数据id为cid1且接口为无线接口w的转发表项;步骤703:数据路由器从接口f7接收到切换消息后,如果数据路由器已经收到具有相同序列号的切换消息,则执行步骤704,否则执行步骤705;步骤704:数据路由器丢弃接收到的切换消息,执行步骤708;步骤705:数据路由器查看转发表判断是否存在接口域值为f7且数据id为cid1的转发表项,如果存在,执行步骤706,否则执行步骤708;步骤706:数据路由器删除接口域值为f7且数据id等于cid1的转发表项,数据路由器判断是否存在数据id等于cid1的转发表项,如果是,执行步骤708,否则执行步骤707;步骤707:数据路由器从除了接口f7以外的每个与其他数据路由器相连的接口转发接收到的切换消息,执行步骤703;步骤708:结束。上过过程能够快速更新转发表从而确保数据消费者正确快速地获取所需数据。实施例1基于表1的仿真参数,本实施例模拟了本发明中的一种基于按需机制的网络数据通信方法,性能分析如下:当数据提供者增加时,数据提供者分布面积更广泛,因此获取服务数据的延迟和代价都随之下降。数据消费者获取服务数据的平均延迟为40ms,平均代价为10。表1仿真参数本发明提供了一种基于按需机制的网络数据通信方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1