CN106973017B - 一种快速的网络数据通信方法 - Google Patents

一种快速的网络数据通信方法 Download PDF

Info

Publication number
CN106973017B
CN106973017B CN201710196662.4A CN201710196662A CN106973017B CN 106973017 B CN106973017 B CN 106973017B CN 201710196662 A CN201710196662 A CN 201710196662A CN 106973017 B CN106973017 B CN 106973017B
Authority
CN
China
Prior art keywords
data
message
thresholding
interface
router
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710196662.4A
Other languages
English (en)
Other versions
CN106973017A (zh
Inventor
王晓喃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changshu Institute of Technology
Original Assignee
Changshu Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Changshu Institute of Technology filed Critical Changshu Institute of Technology
Priority to CN201710196662.4A priority Critical patent/CN106973017B/zh
Publication of CN106973017A publication Critical patent/CN106973017A/zh
Application granted granted Critical
Publication of CN106973017B publication Critical patent/CN106973017B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/14Routing performance; Theoretical aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种快速的网络数据通信方法,所述网络包括两个以上的节点和两个以上的数据路由器,一种类型的数据包括两个以上的数据块且由一个数据名称唯一定义,每个数据块由一个数据块ID唯一标识;数据消费者为有权限获取一种类型的数据的节点,数据提供者为有权提供一种类型的数据的节点。数据消费者通过本发明所提供的数据通信方法能够从距离最近的数据提供者以单播方式获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。

Description

一种快速的网络数据通信方法
技术领域
本发明涉及一种数据通信方法,尤其涉及的是一种快速的网络数据通信方法。
背景技术
近年来,很多研究工作致力于无线网络数据通信方法,以便使移动节点能够快速获取网络服务。随着无线网络技术的发展,无线网络数据通信方法会成为未来提供服务的一种模式。
目前,无线网络数据通信的实现模式是通过广播来实现,因此延迟和代价都比较大,降低了网络服务性能。因此,如何降低无线网络提供服务的延迟和代价成为近年来研究的热点问题。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种快速的网络数据通信方法。
技术方案:本发明公开了一种快速的网络数据通信方法,所述网络包括两个以上的节点和两个以上的数据路由器,一种类型的数据包括两个以上的数据块且由一个数据名称唯一定义,每个数据块由一个数据块ID唯一标识;数据消费者为有权限获取一种类型的数据的节点,数据提供者为有权提供一种类型的数据的节点;节点不具有路由转发功能,数据路由器具有路由转发功能;
每种消息结构包括五个部分:数据名称域、数据块ID集合、消息类型域,、序列号以及负载;
消息类型如下表所示:
消息类型 消息类型域值
数据发布消息 1
数据请求消息 2
数据响应消息 3
数据确认消息 4
错误消息 5
数据路由器维护一个转发表,一个转发表项由接口域、数据名称域以及数据块ID集合构成,其中,接口域值指向到达数据提供者的下一跳,数据名称域值为目标数据的数据名称,目标数据为数据消费者请求的数据;数据块ID集合域值为构成目标数据的部分或者全部数据块ID的集合;
在数据C1由数据名称N1定义,数据提供者P1产生了数据C1的数据块,所述数据块的数据块ID集合为S1的情况下,如果网络链路稳定,例如有线网络,数据提供者P1则执行下述过程建立转发表:
步骤101:开始;
步骤102:数据提供者P1构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为0,负载为空,数据提供者P1通过与本地数据路由器相连的接口发送该数据发布消息;
步骤103:数据路由器从自己的接口j接收到数据发布消息,查看转发表判断是否存在数据名称域值为N1,接口域为j,数据块ID集合域值为S1的转发表项,如果存在,执行步骤105,否则执行步骤104;
步骤104:数据路由器创建一个转发表项,该转发表项的数据名称域值为N1,接口域值为j,数据块ID集合域值为S1,数据路由器从每个符合条件1和条件2的接口转发该数据发布消息,执行步骤106;
条件1:该接口与数据路由器相连;
条件2:从该接口没有接收到数据发布消息;
步骤105:数据路由器放弃接收到的数据发布消息,执行步骤106;
步骤106:重复步骤103~105直到网络内所有的数据路由器都接收到数据提供者P1发送的数据发布消息且建立了数据名称域值为N1、数据块ID集合域值为S1的转发表项为止;
步骤107:结束;
数据提供者定期执行步骤101~107建立或者更新数据路由器的转发表;
如果网络链路不稳定,不稳定的评价指标为丢包率,例如丢包率达到一定比例,比如20%,数据路由器、数据消费者和数据提供者通过保存四元组<发送的消息,发送消息的接口,消息中的序列号,确认定时器>来确保消息的传输成功率;确认定时器的初始值预先设定,例如100ms,然后根据时钟衰减,如果时钟衰减到0,则定时器过期。
通过上述过程,数据路由器能够建立转发表从而确保用户能够快速获取数据。
本发明所述方法中,在数据C1由数据名称N1定义,数据提供者P1提供数据C1的数据块,所述数据块的数据块ID集合为S1的条件下,如果网络链路不稳定,数据提供者P1则执行下述过程建立转发表:
步骤201:开始;
步骤202:数据提供者P1产生一个随机数同时构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为产生的随机数,负载为空;数据提供者P1通过与本地数据路由器相连的接口发送该数据发布消息,同时保存四元组<发送的数据发布消息,与本地数据路由器相连的接口,产生的随机数,确认定时器>,然后启动确认定时器;
步骤203:数据路由器从自己的接口j接收到数据发布消息后,通过接口j发送一个数据确认消息,该数据确认消息中的数据名称域值为N1,数据块ID集合为S1,消息类型为4,序列号为数据发布消息中的序列号;数据路由器查看转发表判断是否存在数据名称域值为N1,接口域为j,数据块ID集合域值为S1的表项,如果存在,执行步骤205,否则执行步骤204;
步骤204:数据路由器创建一个转发表项,该转发表项的数据名称域值为N1,接口域值为j,数据块ID集合域值为S1;对于每个符合条件1和条件2的接口数据路由器执行下述操作:产生一个随机数同时构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为产生的随机数,负载为空;通过从该接口发送数据发布消息,同时保存四元组<发送的数据发布消息,发送数据发布消息的接口,产生的随机数,确认定时器>,然后启动确认定时器,执行步骤206;
步骤205:数据路由器放弃接收到的数据发布消息;
步骤206:数据提供者P1查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤208,否则执行步骤207;
步骤207:数据提供者P1通过步骤202中保存的四元组中的接口域值重新发送四元组中的数据发布消息,重新启动四元组中的确认时钟,执行步骤203;
步骤208:数据提供者P1删除保存的四元组;
步骤209:数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,如果是,则执行步骤211,否则执行步骤210;
步骤210:对于每个没有收到确认消息的四元组,数据路由器通过该四元组中对应接口的接口域值重新发送该四元组中的数据发布消息,重新启动该四元组中的确认时钟,执行步骤203;
步骤211:数据路由器收到了与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤212:重复步骤203~211直到所述网络内所有的数据路由器都接收到数据提供者P1发送的数据发布消息且建立了数据名称域值为N1、数据块ID集合域值为S1的转发表项为止;
步骤213:结束;
数据提供者定期执行步骤201~213建立或者更新数据路由器的转发表。
通过上述过程,数据路由器能够建立转发表从而确保用户能够快速获取数据。
本发明所述方法中,在数据路由器维护一个聚合表,一个聚合表项由接口域、数据名称域和数据块ID集合构成,接口域指向到达数据消费者的下一跳,数据名称域值为目标数据的数据名称,数据块ID集合域值记录未收到的目标数据块的条件下,如果聚合表项的数据块ID集合域值为空,那么删除该聚合表项;
在数据消费者U1通过自己的接口f与本地数据路由器R1相连,数据消息者U1需要获取由数据名称N1定义的数据C1的数据块,所述数据块的数据块ID集合为S1的情况下,如果网络性能稳定,那么数据消息者U1通过下述过程获取目标数据块:
步骤301:开始;
步骤302:数据消费者U1构建一个数据请求消息,数据名称域值为N1,消息类型域值为2,数据块ID集合为S1,序列号为0,负载为空;数据消费者U1从接口f发送该数据请求消息;
步骤303:数据路由器R1从自己的接口f1接收到数据请求消息后,判断自己的聚合表中是否存在数据名称域值为N1,接口域值为f1且数据块ID集合为数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤311,否则执行步骤304;
步骤304:数据路由器R1创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f1;
步骤305:数据路由器R1查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器R1从该转发表项的接口转发接收到的数据请求消息,如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集,反过来,S2是S1的子集;否则,数据路由器R1选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器R1进行如下操作:构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为0,负载为空,数据路由器R1从该转发表项的接口域值发送构建数据请求消息;
条件3:所述数据转发表项的数据块ID集合的并集是接收到的数据请求消息中的数据块ID集合的超集;
步骤306:判断是数据路由器还是数据提供者从接口f2接收到数据请求消息,如果是数据提供者接收到数据请求消息,则执行步骤307,否则执行步骤308;
步骤307:数据提供者创建一个数据响应消息,该数据响应消息的数据名称域值为N1,消息类型为3,数据块ID集合为接收到的数据请求消息中的数据块ID集合,序列号为0,负载为提供的数据块,然后从接口f2发送该数据响应消息,执行步骤311;
步骤308:数据路由器判断聚合表中是否存在数据名称域值为N1,接口域值为f2且数据块ID集合为接收到的数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤311,否则执行步骤309;
步骤309:数据路由器创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f2;
步骤310:数据路由器查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器从该转发表项的接口转发接收到的数据请求消息;否则,数据路由器选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器进行如下操作:构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为0,负载为空,数据路由器从该转发表项的接口域值发送构建的数据请求消息,执行步骤306;
步骤311:判断是数据路由器还是数据消费者从接口f3接收到数据响应消息,如果是数据路由器接收到数据响应消息,则执行步骤312,否则执行步骤313;
步骤312:数据路由器从聚合表中选择所有数据名称域值为N1且数据块ID集合与数据响应消息中的数据块ID集合的交集不为空的表项,对于每个选择的聚合表项,数据路由器构建一个数据响应消息,数据响应消息的名称域值为N1,数据块ID集合为该聚合表项中的数据块ID集合与数据响应消息中的数据ID集合的交集,消息类型为3,序列号为0,负载为数据响应消息中的负载,数据路由器从该聚合表项中的接口域发送构建的数据响应消息,从该聚合表项的数据块ID集合中减去构建的数据响应消息的数据块ID集合,如果该聚合表项的数据块ID集合为空,则删除该聚合表项,执行步骤311;
步骤313:数据消费者U1获取并保存数据响应消息中的数据块;
步骤314:数据消费者U1整理所有收到的数据响应消息中从而获取数据块ID集合为S1的数据块;
步骤315:结束。
通过上述过程,数据消息者U1能够快速获取目标数据块。
本发明所述方法中,在数据消费者U1通过接口f与本地数据路由器R1相连,数据消息者U1需要获取由数据名称N1定义的数据C1的数据块,所述数据块的数据块ID集合为S1的条件下,如果网络性能不稳定,那么数据消费者U1通过下述过程获取目标数据块:
步骤401:开始;
步骤402:数据消费者U1产生一个随机数并构建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为S1,序列号为产生的随机数,负载为空,数据消费者U1从接口f发送该数据请求消息,同时保存四元组<构建的数据请求消息,接口f,产生的随机数,确认定时器>,启动确认定时器;
步骤403:数据路由器R1从自己的接口f1接收到数据请求消息后,从接口f1返回一个数据确认消息,该数据确认消息中的数据名称域值为N1,数据块ID集合为S1,消息类型为4,序列号为数据请求消息中的序列号,数据路由器R1判断聚合表中是否存在数据名称域值为N1,接口域值为f1且数据块ID集合为数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤417,否则执行步骤404;
步骤404:数据路由器R1创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f1;
步骤405:数据路由器R1查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器R1产生一个随机数并创建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,数据路由器R1从该转发表项的接口转发接收到的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;否则,数据路由器R1选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器R1进行如下操作:产生一个随机数并构建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,数据路由器R1从该转发表项的接口域值发送构建数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;
步骤406:判断是数据路由器还是数据提供者从接口f2接收到数据请求消息,如果是数据提供者接收到数据请求消息,则执行步骤407,否则执行步骤408;
步骤407:数据提供者从接口f2返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据请求消息中的数据块ID集合,序列号为数据请求消息中的序列号,消息类型为4;数据提供者产生一个随机数并创建一个数据响应消息,该数据响应消息的数据名称域值为N1,消息类型为3,数据块ID集合为接收到的数据请求消息中的数据块ID集合,序列号为产生的随机数,负载为提供的数据块,数据提供者从接口f2发送该数据响应消息,同时保存四元组<构建的数据响应消息,发送构建的数据响应消息的接口,构建的数据响应消息中的序列号,确认定时器>,启动确认定时器,执行步骤417;
步骤408:数据路由器从接口f2返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据请求消息中的数据块ID集合,序列号为数据请求消息中的序列号,消息类型为4;数据路由器判断聚合表中是否存在数据名称域值为N1,接口域值为f2且数据块ID集合为接收到的数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤417,否则执行步骤409;
步骤409:数据路由器创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f2;
步骤410:数据路由器查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,那么数据路由器产生一个随机数并构建一个数据请求消息,该数据请求消息中的数据名称域值为N1,消息类型为2,数据块ID集合为接收到的数据请求消息中的数据块ID集合域值,序列号为产生的随机数,负载为空,从该转发表项的接口发送构建的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;否则,数据路由器选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器进行如下操作:产生一个随机数和构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,从该转发表项的接口域值发送构建的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;
步骤411:数据消费者U1查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤413,否则执行步骤412;
步骤412:数据消费者U1通过该四元组中的接口域值重新发送该四元组中的数据请求消息,重新启动该四元组中的确认时钟,执行步骤403;
步骤413:数据消费者U1收到了与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤414:数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,如果是,则执行步骤416,否则执行步骤415;
步骤415:对于每个没有收到确认消息的四元组,数据路由器通过该四元组中的接口域值重新发送该四元组中的数据请求消息,重新启动该四元组中的确认时钟,执行步骤406;
步骤416:数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组,执行步骤406;
步骤417:判断是数据路由器还是数据消费者从接口f3接收到数据响应消息,如果是数据路由器接收到数据响应消息,则执行步骤419,否则执行步骤418;
步骤418:数据消费者U1从接口f3返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据响应消息中的数据块ID集合,序列号为数据响应消息中的序列号,消息类型为4,数据消费者U1获取并保存数据响应消息中的数据块,执行步骤426;
步骤419:数据路由器从接口f3返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据响应消息中的数据块ID集合,序列号为数据响应消息中的序列号,消息类型为4,数据路由器从聚合表中选择所有数据名称域值为N1且数据块ID集合与数据响应消息中的数据块ID集合的交集不为空的聚合表项,对于每个选择的聚合表项,数据路由器产生一个随机数并构建一个数据响应消息,该数据响应消息的名称域值为N1,数据块ID集合为该聚合表项中的数据块ID集合与数据响应消息中的数据ID集合的交集,消息类型为3,序列号为产生的随机数,负载为数据响应消息中的负载,数据路由器从该聚合表项中的接口域发送构建的数据响应消息,从该聚合表项的数据块ID集合中减去构建的数据响应消息的数据块ID集合,如果该聚合表项的数据块ID集合为空,则删除该聚合表项,同时保存四元组<构建的数据响应消息,发送构建的数据响应消息的接口,构建的数据请求响应中的序列号,确认定时器>,启动确认定时器;
步骤420:返回数据响应消息的数据提供者查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤422,否则执行步骤421;
步骤421:数据提供者通过该四元组中的接口域值重新发送该四元组中的数据响应消息,重新启动该四元组中的确认时钟,执行步骤417;
步骤422:数据提供者收到与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤423:数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到与四元组中的序列号相同的数据确认消息,如果是,则执行步骤425,否则执行步骤424;
步骤424:对于每个没有收到确认消息的四元组,数据路由器通过该四元组中的接口域值重新发送该四元组中的数据响应消息,重新启动该四元组中的确认时钟,执行步骤417;
步骤425:数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组,执行步骤417;
步骤426:数据消费者U1整理所有收到的数据响应消息中从而获取数据块ID集合为S1的数据块;
步骤427:结束。
通过上述过程,数据消息者U1能够快速获取目标数据块。
本发明所述方法中,在数据路由器R2通过接口f3与邻居数据路由器或者邻居数据提供者相连且该邻居路由器或者理论数据提供者失效的条件下,如果网络性能稳定,那么数据路由器R2执行下述过程更新转发表:
步骤501:开始;
步骤502:数据路由器R2从转发表中选择接口域值为f3的所有转发表项,然后构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为0,负载为接口域值为f3的所有转发表项,数据路由器R2从除了接口f3的所有与数据路由器相连的接口发送该不可达消息,数据路由器R2删除所有接口域值为f3的转发表项;
步骤503:邻居数据路由器从自己的接口f4收到不可达消息,从除了接口f4的所有与数据路由器相连的接口发送不可达消息;
步骤504:邻居数据路由器选择接口域值为f4,且数据名称域值等于不可达消息负载中任一个转发表项的数据名称域值,且数据块ID集合等于不可达消息负载中任一个转发表项的数据块ID集合的转发表项,删除这些选择的转发表项;
步骤505:执行步骤503~504直到所有的数据路由器都接收到不可达消息;
步骤506:结束。
通过上述过程,数据路由器能够快速更新转发表以确保用户能够正确快速地获取目标数据。
本发明所述方法中,在数据路由器R2通过接口f3与邻居数据路由器或者邻居数据提供者相连且该邻居路由器或者理论数据提供者失效的条件下,如果网络性能不稳定,那么数据路由器R2执行下述过程更新转发表:
步骤601:开始;
步骤602:数据路由器R2从转发表中选择接口域值为f3的所有转发表项,对于除了接口f3之外的每个与数据路由器相连的接口,数据路由器R2进行如下操作:产生一个随机数并构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为产生的随机数,负载为接口域值为f3的所有转发表项,数据路由器R2从该接口发送该不可达消息,同时保存四元组<构建的不可达消息,发送构建的不可达消息的接口,构建的不可达消息的序列号,确认定时器>,启动确认定时器,数据路由器R2删除所有接口域值为f3的转发表项;
步骤603:邻居数据路由器从自己的接口f4收到不可达消息,数据路由器从接口f4返回一个数据确认消息,该数据确认消息的数据名称域值和数据块ID集合为空,序列号为不可达消息中的序列号,消息类型为4;对于除了接口f4之外的每个与数据路由器相连的接口,邻居数据路由器进行如下操作:产生一个随机数并构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为产生的随机数,负载为接收到的不可达消息中的负载,邻居数据路由器从该接口发送该不可达消息,同时保存四元组<构建的不可达消息,发送构建的不可达消息的接口,构建的不可达消息的序列号,确认定时器>,启动确认定时器;
步骤604:邻居数据路由器选择接口域值为f4,且数据名称域值等于不可达消息负载中任一个转发表项的数据名称域值,并且数据块ID集合等于不可达消息负载中任一个转发表项的数据块ID集合的转发表项,删除这些选择的转发表项;
步骤605:数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到与四元组中的序列号相同的数据确认消息,如果是,则执行步骤607,否则执行步骤606;
步骤606:对于每个没有收到确认消息的四元组,数据路由器通过该四元组中的接口域值重新发送该四元组中的不可达消息,重新启动该四元组中的确认时钟;
步骤607:数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤608:执行步骤603~607直到所有的数据路由器都接收到不可达消息;
步骤609:结束;
数据路由器删除无效的转发表项之后,通过数据提供者定期执行步骤101~107或者步骤201~213建立转发表。
通过上述过程,数据路由器能够快速更新转发表以确保用户能够正确快速地获取目标数据。
有益效果:本发明提供了一种快速的网络数据通信方法,用户通过本发明所提供的数据通信方法能够从距离最近的数据提供者以单播方式获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。
附图说明
下面集合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的网络稳定情况下的转发表建立流程示意图。
图2为本发明所述的网络不稳定情况下的转发表建立流程示意图。
图3为本发明所述的网络稳定情况下的数据获取流程示意图。
图4为本发明所述的网络不稳定情况下的数据获取流程示意图。
图5为本发明所述的网络稳定情况下的转发表更新流程示意图。
图6为本发明所述的网络不稳定情况下的转发表更新流程示意图。
具体实施方式:
本发明提供了一种快速的网络数据通信方法,用户通过本发明所提供的数据通信方法能够从距离最近的数据提供者以单播方式获取服务数据,缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。
图1为本发明所述的网络稳定情况下的转发表建立流程示意图。所述网络包括两个以上的节点和两个以上的数据路由器,一种类型的数据包括两个以上的数据块且由一个数据名称唯一定义,每个数据块由一个数据块ID唯一标识;数据消费者为有权限获取一种类型的数据的节点,数据提供者为有权提供一种类型的数据的节点;节点不具有路由转发功能,数据路由器具有路由转发功能;
每种消息结构包括五个部分:数据名称域、数据块ID集合、消息类型域,、序列号以及负载;
消息类型如下表所示:
消息类型 消息类型域值
数据发布消息 1
数据请求消息 2
数据响应消息 3
数据确认消息 4
错误消息 5
数据路由器维护一个转发表,一个转发表项由接口域、数据名称域以及数据块ID集合构成,其中,接口域值指向到达数据提供者的下一跳,数据名称域值为目标数据的数据名称,目标数据为数据消费者请求的数据;数据块ID集合域值为构成目标数据的部分或者全部数据块ID的集合;
在数据C1由数据名称N1定义,数据提供者P1产生了数据C1的数据块,所述数据块的数据块ID集合为S1的情况下,如果网络链路稳定,例如有线网络,如图1所示,数据提供者P1则执行下述过程建立转发表:
步骤101:开始;
步骤102:数据提供者P1构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为0,负载为空,数据提供者P1通过与本地数据路由器相连的接口发送该数据发布消息;
步骤103:数据路由器从自己的接口j接收到数据发布消息,查看转发表判断是否存在数据名称域值为N1,接口域为j,数据块ID集合域值为S1的转发表项,如果存在,执行步骤105,否则执行步骤104;
步骤104:数据路由器创建一个转发表项,该转发表项的数据名称域值为N1,接口域值为j,数据块ID集合域值为S1,数据路由器从每个符合条件1和条件2的接口转发该数据发布消息,执行步骤106;
条件1:该接口与数据路由器相连;
条件2:从该接口没有接收到数据发布消息;
步骤105:数据路由器放弃接收到的数据发布消息,执行步骤106;
步骤106:重复步骤103~105直到网络内所有的数据路由器都接收到数据提供者P1发送的数据发布消息且建立了数据名称域值为N1、数据块ID集合域值为S1的转发表项为止;
步骤107:结束;
数据提供者定期执行步骤101~107建立或者更新数据路由器的转发表。通过上述过程,数据路由器能够建立转发表从而确保用户能够快速获取数据。
图2为本发明所述的网络不稳定情况下的转发表建立流程示意图。如果网络链路不稳定,不稳定的评价指标为丢包率,例如丢包率达到一定比例,比如20%,数据路由器、数据消费者和数据提供者通过保存四元组<发送的消息,发送消息的接口,消息中的序列号,确认定时器>来确保消息的传输成功率;确认定时器的初始值预先设定,例如100ms,然后根据时钟衰减,如果时钟衰减到0,则定时器过期。
在数据C1由数据名称N1定义,数据提供者P1提供数据C1的数据块,所述数据块的数据块ID集合为S1的条件下,如果网络链路不稳定,数据提供者P1则执行下述过程建立转发表:
步骤201:开始;
步骤202:数据提供者P1产生一个随机数同时构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为产生的随机数,负载为空;数据提供者P1通过与本地数据路由器相连的接口发送该数据发布消息,同时保存四元组<发送的数据发布消息,与本地数据路由器相连的接口,产生的随机数,确认定时器>,然后启动确认定时器;
步骤203:数据路由器从自己的接口j接收到数据发布消息后,通过接口j发送一个数据确认消息,该数据确认消息中的数据名称域值为N1,数据块ID集合为S1,消息类型为4,序列号为数据发布消息中的序列号;数据路由器查看转发表判断是否存在数据名称域值为N1,接口域为j,数据块ID集合域值为S1的表项,如果存在,执行步骤205,否则执行步骤204;
步骤204:数据路由器创建一个转发表项,该转发表项的数据名称域值为N1,接口域值为j,数据块ID集合域值为S1;对于每个符合条件1和条件2的接口数据路由器执行下述操作:产生一个随机数同时构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为产生的随机数,负载为空;通过从该接口发送数据发布消息,同时保存四元组<发送的数据发布消息,发送数据发布消息的接口,产生的随机数,确认定时器>,然后启动确认定时器,执行步骤206;
步骤205:数据路由器放弃接收到的数据发布消息;
步骤206:数据提供者P1查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤208,否则执行步骤207;
步骤207:数据提供者P1通过步骤202中保存的四元组中的接口域值重新发送四元组中的数据发布消息,重新启动四元组中的确认时钟,执行步骤203;
步骤208:数据提供者P1删除保存的四元组;
步骤209:数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,如果是,则执行步骤211,否则执行步骤210;
步骤210:对于每个没有收到确认消息的四元组,数据路由器通过该四元组中对应接口的接口域值重新发送该四元组中的数据发布消息,重新启动该四元组中的确认时钟,执行步骤203;
步骤211:数据路由器收到了与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤212:重复步骤203~211直到所述网络内所有的数据路由器都接收到数据提供者P1发送的数据发布消息且建立了数据名称域值为N1、数据块ID集合域值为S1的转发表项为止;
步骤213:结束;
数据提供者定期执行步骤201~213建立或者更新数据路由器的转发表。
通过上述过程,数据路由器能够建立转发表从而确保用户能够快速获取数据。
图3为本发明所述的网络稳定情况下的数据获取流程示意图。在数据路由器维护一个聚合表,一个聚合表项由接口域、数据名称域和数据块ID集合构成,接口域指向到达数据消费者的下一跳,数据名称域值为目标数据的数据名称,数据块ID集合域值记录未收到的目标数据块的条件下,如果聚合表项的数据块ID集合域值为空,那么删除该聚合表项;
在数据消费者U1通过自己的接口f与本地数据路由器R1相连,数据消息者U1需要获取由数据名称N1定义的数据C1的数据块,所述数据块的数据块ID集合为S1的情况下,如果网络性能稳定,那么数据消息者U1通过下述过程获取目标数据块:
步骤301:开始;
步骤302:数据消费者U1构建一个数据请求消息,数据名称域值为N1,消息类型域值为2,数据块ID集合为S1,序列号为0,负载为空;数据消费者U1从接口f发送该数据请求消息;
步骤303:数据路由器R1从自己的接口f1接收到数据请求消息后,判断自己的聚合表中是否存在数据名称域值为N1,接口域值为f1且数据块ID集合为数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤311,否则执行步骤304;
步骤304:数据路由器R1创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f1;
步骤305:数据路由器R1查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器R1从该转发表项的接口转发接收到的数据请求消息;否则,数据路由器R1选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器R1进行如下操作:构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为0,负载为空,数据路由器R1从该转发表项的接口域值发送构建数据请求消息;
条件3:所述数据转发表项的数据块ID集合的并集是接收到的数据请求消息中的数据块ID集合的超集;
步骤306:判断是数据路由器还是数据提供者从接口f2接收到数据请求消息,如果是数据提供者接收到数据请求消息,则执行步骤307,否则执行步骤308;
步骤307:数据提供者创建一个数据响应消息,该数据响应消息的数据名称域值为N1,消息类型为3,数据块ID集合为接收到的数据请求消息中的数据块ID集合,序列号为0,负载为提供的数据块,然后从接口f2发送该数据响应消息,执行步骤311;
步骤308:数据路由器判断聚合表中是否存在数据名称域值为N1,接口域值为f2且数据块ID集合为接收到的数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤311,否则执行步骤309;
步骤309:数据路由器创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f2;
步骤310:数据路由器查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器从该转发表项的接口转发接收到的数据请求消息;否则,数据路由器选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器进行如下操作:构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为0,负载为空,数据路由器从该转发表项的接口域值发送构建的数据请求消息,执行步骤306;
步骤311:判断是数据路由器还是数据消费者从接口f3接收到数据响应消息,如果是数据路由器接收到数据响应消息,则执行步骤312,否则执行步骤313;
步骤312:数据路由器从聚合表中选择所有数据名称域值为N1且数据块ID集合与数据响应消息中的数据块ID集合的交集不为空的表项,对于每个选择的聚合表项,数据路由器构建一个数据响应消息,数据响应消息的名称域值为N1,数据块ID集合为该聚合表项中的数据块ID集合与数据响应消息中的数据ID集合的交集,消息类型为3,序列号为0,负载为数据响应消息中的负载,数据路由器从该聚合表项中的接口域发送构建的数据响应消息,从该聚合表项的数据块ID集合中减去构建的数据响应消息的数据块ID集合,如果该聚合表项的数据块ID集合为空,则删除该聚合表项,执行步骤311;
步骤313:数据消费者U1获取并保存数据响应消息中的数据块;
步骤314:数据消费者U1整理所有收到的数据响应消息中从而获取数据块ID集合为S1的数据块;
步骤315:结束。
通过上述过程,数据消息者U1能够快速获取目标数据块。
图4为本发明所述的网络不稳定情况下的数据获取流程示意图。在数据消费者U1通过接口f与本地数据路由器R1相连,数据消息者U1需要获取由数据名称N1定义的数据C1的数据块,所述数据块的数据块ID集合为S1的条件下,如果网络性能不稳定,那么数据消费者U1通过下述过程获取目标数据块:
步骤401:开始;
步骤402:数据消费者U1产生一个随机数并构建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为S1,序列号为产生的随机数,负载为空,数据消费者U1从接口f发送该数据请求消息,同时保存四元组<构建的数据请求消息,接口f,产生的随机数,确认定时器>,启动确认定时器;
步骤403:数据路由器R1从自己的接口f1接收到数据请求消息后,从接口f1返回一个数据确认消息,该数据确认消息中的数据名称域值为N1,数据块ID集合为S1,消息类型为4,序列号为数据请求消息中的序列号,数据路由器R1判断聚合表中是否存在数据名称域值为N1,接口域值为f1且数据块ID集合为数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤417,否则执行步骤404;
步骤404:数据路由器R1创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f1;
步骤405:数据路由器R1查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器R1产生一个随机数并创建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,数据路由器R1从该转发表项的接口转发接收到的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;否则,数据路由器R1选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器R1进行如下操作:产生一个随机数并构建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,数据路由器R1从该转发表项的接口域值发送构建数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;
步骤406:判断是数据路由器还是数据提供者从接口f2接收到数据请求消息,如果是数据提供者接收到数据请求消息,则执行步骤407,否则执行步骤408;
步骤407:数据提供者从接口f2返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据请求消息中的数据块ID集合,序列号为数据请求消息中的序列号,消息类型为4;数据提供者产生一个随机数并创建一个数据响应消息,该数据响应消息的数据名称域值为N1,消息类型为3,数据块ID集合为接收到的数据请求消息中的数据块ID集合,序列号为产生的随机数,负载为提供的数据块,数据提供者从接口f2发送该数据响应消息,同时保存四元组<构建的数据响应消息,发送构建的数据响应消息的接口,构建的数据响应消息中的序列号,确认定时器>,启动确认定时器,执行步骤417;
步骤408:数据路由器从接口f2返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据请求消息中的数据块ID集合,序列号为数据请求消息中的序列号,消息类型为4;数据路由器判断聚合表中是否存在数据名称域值为N1,接口域值为f2且数据块ID集合为接收到的数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤417,否则执行步骤409;
步骤409:数据路由器创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f2;
步骤410:数据路由器查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,那么数据路由器产生一个随机数并构建一个数据请求消息,该数据请求消息中的数据名称域值为N1,消息类型为2,数据块ID集合为接收到的数据请求消息中的数据块ID集合域值,序列号为产生的随机数,负载为空,从该转发表项的接口发送构建的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;否则,数据路由器选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器进行如下操作:产生一个随机数和构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,从该转发表项的接口域值发送构建的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;
步骤411:数据消费者U1查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤413,否则执行步骤412;
步骤412:数据消费者U1通过该四元组中的接口域值重新发送该四元组中的数据请求消息,重新启动该四元组中的确认时钟,执行步骤403;
步骤413:数据消费者U1收到了与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤414:数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,如果是,则执行步骤416,否则执行步骤415;
步骤415:对于每个没有收到确认消息的四元组,数据路由器通过该四元组中的接口域值重新发送该四元组中的数据请求消息,重新启动该四元组中的确认时钟,执行步骤406;
步骤416:数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组,执行步骤406;
步骤417:判断是数据路由器还是数据消费者从接口f3接收到数据响应消息,如果是数据路由器接收到数据响应消息,则执行步骤419,否则执行步骤418;
步骤418:数据消费者U1从接口f3返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据响应消息中的数据块ID集合,序列号为数据响应消息中的序列号,消息类型为4,数据消费者U1获取并保存数据响应消息中的数据块,执行步骤426;
步骤419:数据路由器从接口f3返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据响应消息中的数据块ID集合,序列号为数据响应消息中的序列号,消息类型为4,数据路由器从聚合表中选择所有数据名称域值为N1且数据块ID集合与数据响应消息中的数据块ID集合的交集不为空的聚合表项,对于每个选择的聚合表项,数据路由器产生一个随机数并构建一个数据响应消息,该数据响应消息的名称域值为N1,数据块ID集合为该聚合表项中的数据块ID集合与数据响应消息中的数据ID集合的交集,消息类型为3,序列号为产生的随机数,负载为数据响应消息中的负载,数据路由器从该聚合表项中的接口域发送构建的数据响应消息,从该聚合表项的数据块ID集合中减去构建的数据响应消息的数据块ID集合,如果该聚合表项的数据块ID集合为空,则删除该聚合表项,同时保存四元组<构建的数据响应消息,发送构建的数据响应消息的接口,构建的数据请求响应中的序列号,确认定时器>,启动确认定时器;
步骤420:返回数据响应消息的数据提供者查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤422,否则执行步骤421;
步骤421:数据提供者通过该四元组中的接口域值重新发送该四元组中的数据响应消息,重新启动该四元组中的确认时钟,执行步骤417;
步骤422:数据提供者收到与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤423:数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到与四元组中的序列号相同的数据确认消息,如果是,则执行步骤425,否则执行步骤424;
步骤424:对于每个没有收到确认消息的四元组,数据路由器通过该四元组中的接口域值重新发送该四元组中的数据响应消息,重新启动该四元组中的确认时钟,执行步骤417;
步骤425:数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组,执行步骤417;
步骤426:数据消费者U1整理所有收到的数据响应消息中从而获取数据块ID集合为S1的数据块;
步骤427:结束。
通过上述过程,数据消息者U1能够快速获取目标数据块。
图5为本发明所述的网络稳定情况下的转发表更新流程示意图。在数据路由器R2通过接口f3与邻居数据路由器或者邻居数据提供者相连且该邻居路由器或者理论数据提供者失效的条件下,如果网络性能稳定,那么数据路由器R2执行下述过程更新转发表:
步骤501:开始;
步骤502:数据路由器R2从转发表中选择接口域值为f3的所有转发表项,然后构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为0,负载为接口域值为f3的所有转发表项,数据路由器R2从除了接口f3的所有与数据路由器相连的接口发送该不可达消息,数据路由器R2删除所有接口域值为f3的转发表项;
步骤503:邻居数据路由器从自己的接口f4收到不可达消息,从除了接口f4的所有与数据路由器相连的接口发送不可达消息;
步骤504:邻居数据路由器选择接口域值为f4,且数据名称域值等于不可达消息负载中任一个转发表项的数据名称域值,且数据块ID集合等于不可达消息负载中任一个转发表项的数据块ID集合的转发表项,删除这些选择的转发表项;
步骤505:执行步骤503~504直到所有的数据路由器都接收到不可达消息;
步骤506:结束。
通过上述过程,数据路由器能够快速更新转发表以确保用户能够正确快速地获取目标数据。
图6为本发明所述的网络不稳定情况下的转发表更新流程示意图。在数据路由器R2通过接口f3与邻居数据路由器或者邻居数据提供者相连且该邻居路由器或者理论数据提供者失效的条件下,如果网络性能不稳定,那么数据路由器R2执行下述过程更新转发表:
步骤601:开始;
步骤602:数据路由器R2从转发表中选择接口域值为f3的所有转发表项,对于除了接口f3之外的每个与数据路由器相连的接口,数据路由器R2进行如下操作:产生一个随机数并构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为产生的随机数,负载为接口域值为f3的所有转发表项,数据路由器R2从该接口发送该不可达消息,同时保存四元组<构建的不可达消息,发送构建的不可达消息的接口,构建的不可达消息的序列号,确认定时器>,启动确认定时器,数据路由器R2删除所有接口域值为f3的转发表项;
步骤603:邻居数据路由器从自己的接口f4收到不可达消息,数据路由器从接口f4返回一个数据确认消息,该数据确认消息的数据名称域值和数据块ID集合为空,序列号为不可达消息中的序列号,消息类型为4;对于除了接口f4之外的每个与数据路由器相连的接口,邻居数据路由器进行如下操作:产生一个随机数并构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为产生的随机数,负载为接收到的不可达消息中的负载,邻居数据路由器从该接口发送该不可达消息,同时保存四元组<构建的不可达消息,发送构建的不可达消息的接口,构建的不可达消息的序列号,确认定时器>,启动确认定时器;
步骤604:邻居数据路由器选择接口域值为f4,且数据名称域值等于不可达消息负载中任一个转发表项的数据名称域值,并且数据块ID集合等于不可达消息负载中任一个转发表项的数据块ID集合的转发表项,删除这些选择的转发表项;
步骤605:数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到与四元组中的序列号相同的数据确认消息,如果是,则执行步骤607,否则执行步骤606;
步骤606:对于每个没有收到确认消息的四元组,数据路由器通过该四元组中的接口域值重新发送该四元组中的不可达消息,重新启动该四元组中的确认时钟;
步骤607:数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤608:执行步骤603~607直到所有的数据路由器都接收到不可达消息;
步骤609:结束;
数据路由器删除无效的转发表项之后,通过数据提供者定期执行步骤101~107或者步骤201~213建立转发表。
通过上述过程,数据路由器能够快速更新转发表以确保用户能够正确快速地获取目标数据。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的网络数据通信方法,性能分析如下:随着数据提供者速度的增加,数据消费者获取数据的延迟和代价随之降低;当数据提供者数量增加时,数据消费者获取数据的延迟和代价随之降低;车辆节点获取服务数据的平均延迟为80ms,平均代价为4.5。
表1仿真参数
本发明提供了一种快速的网络数据通信方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。

Claims (6)

1.一种快速的网络数据通信方法,其特征在于,所述网络包括两个以上的节点和两个以上的数据路由器,一种类型的数据包括两个以上的数据块且由一个数据名称唯一定义,每个数据块由一个数据块ID唯一标识;数据消费者为有权限获取一种类型的数据的节点,数据提供者为有权提供一种类型的数据的节点;节点不具有路由转发功能,数据路由器具有路由转发功能;
每种消息结构包括五个部分:数据名称域、数据块ID集合、消息类型域、序列号以及负载;
消息类型分别为数据发布消息、数据请求消息、数据响应消息、数据确认消息以及不可达消息,对应消息类型域值分别为1、2、3、4以及5;数据路由器维护一个转发表,一个转发表项由接口域、数据名称域以及数据块ID集合构成,其中,接口域值指向到达数据提供者的下一跳,数据名称域值为目标数据的数据名称;数据块ID集合域值为构成目标数据的部分或者全部数据块ID的集合;
在数据C1由数据名称N1定义,数据提供者P1产生了数据C1的数据块,所述数据块的数据块ID集合为S1的情况下,如果网络链路稳定,数据提供者P1则执行下述过程建立转发表:
步骤101:开始;
步骤102:数据提供者P1构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为0,负载为空,数据提供者P1通过与本地数据路由器相连的接口发送该数据发布消息;
步骤103:数据路由器从自己的接口j接收到数据发布消息,查看转发表判断是否存在数据名称域值为N1,接口域为j,数据块ID集合域值为S1的转发表项,如果存在,执行步骤105,否则执行步骤104;
步骤104:接收到数据发布消息的数据路由器创建一个转发表项,该转发表项的数据名称域值为N1,接口域值为j,数据块ID集合域值为S1,数据路由器从每个符合条件1和条件2的接口转发该数据发布消息,执行步骤106;
条件1:该接口与数据路由器相连;
条件2:从该接口没有接收到数据发布消息;
步骤105:接收到数据发布消息的数据路由器放弃接收到的数据发布消息,执行步骤106;
步骤106:重复步骤103~105直到网络内所有的数据路由器都接收到数据提供者P1发送的数据发布消息且建立了数据名称域值为N1、数据块ID集合域值为S1的转发表项为止;
步骤107:结束;
数据提供者定期执行步骤101~107建立或者更新数据路由器的转发表;
如果网络链路不稳定,数据路由器、数据消费者和数据提供者通过保存四元组<发送的消息,发送消息的接口,消息中的序列号,确认定时器>来确保消息的传输成功率;确认定时器的初始值预先设定,然后根据时钟衰减,如果时钟衰减到0,则定时器过期。
2.根据权利要求1所述的一种快速的网络数据通信方法,其特征在于,在数据C1由数据名称N1定义,数据提供者P1提供数据C1的数据块,所述数据块的数据块ID集合为S1的条件下,如果网络链路不稳定,数据提供者P1则执行下述过程建立转发表:
步骤201:开始;
步骤202:数据提供者P1产生一个随机数同时构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为产生的随机数,负载为空;数据提供者P1通过与本地数据路由器相连的接口发送该数据发布消息,同时保存四元组<发送的数据发布消息,与本地数据路由器相连的接口,产生的随机数,确认定时器>,然后启动确认定时器;
步骤203:数据路由器从自己的接口j接收到数据发布消息后,通过接口j发送一个数据确认消息,该数据确认消息中的数据名称域值为N1,数据块ID集合为S1,消息类型为4,序列号为数据发布消息中的序列号;接收到数据发布消息的数据路由器查看转发表判断是否存在数据名称域值为N1,接口域为j,数据块ID集合域值为S1的表项,如果存在,执行步骤205,否则执行步骤204;
步骤204:接收到数据发布消息的数据路由器创建一个转发表项,该转发表项的数据名称域值为N1,接口域值为j,数据块ID集合域值为S1;对于每个符合条件1和条件2的接口数据路由器执行下述操作:产生一个随机数同时构建数据发布消息,该数据发布消息的数据名称域值为N1,消息类型为1,数据块ID集合为S1,序列号为产生的随机数,负载为空;通过从该接口发送数据发布消息,同时保存四元组<发送的数据发布消息,发送数据发布消息的接口,产生的随机数,确认定时器>,然后启动确认定时器,执行步骤206;
步骤205:接收到数据发布消息的数据路由器放弃接收到的数据发布消息;
步骤206:数据提供者P1查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤208,否则执行步骤207;
步骤207:数据提供者P1通过步骤202中保存的四元组中的接口域值重新发送四元组中的数据发布消息,重新启动四元组中的确认时钟,执行步骤203;
步骤208:数据提供者P1删除保存的四元组;
步骤209:接收到数据发布消息的数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,如果是,则执行步骤211,否则执行步骤210;
步骤210:对于每个没有收到确认消息的四元组,接收到数据发布消息的数据路由器通过该四元组中对应接口的接口域值重新发送该四元组中的数据发布消息,重新启动该四元组中的确认时钟,执行步骤203;
步骤211:接收到数据发布消息的数据路由器收到了与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤212:重复步骤203~211直到所述网络内所有的数据路由器都接收到数据提供者P1发送的数据发布消息且建立了数据名称域值为N1、数据块ID集合域值为S1的转发表项为止;
步骤213:结束;
数据提供者定期执行步骤201~213建立或者更新数据路由器的转发表。
3.根据权利要求2所述的一种快速的网络数据通信方法,其特征在于,在数据路由器维护一个聚合表,一个聚合表项由接口域、数据名称域和数据块ID集合构成,接口域指向到达数据消费者的下一跳,数据名称域值为目标数据的数据名称,数据块ID集合域值记录未收到的目标数据块的条件下,如果聚合表项的数据块ID集合域值为空,那么删除该聚合表项;
在数据消费者U1通过自己的接口f与本地数据路由器R1相连,数据消费者U1需要获取由数据名称N1定义的数据C1的数据块,所述数据块的数据块ID集合为S1的情况下,如果网络性能稳定,那么数据消费者U1通过下述过程获取目标数据块:
步骤301:开始;
步骤302:数据消费者U1构建一个数据请求消息,数据名称域值为N1,消息类型域值为2,数据块ID集合为S1,序列号为0,负载为空;数据消费者U1从接口f发送该数据请求消息;
步骤303:数据路由器R1从自己的接口f1接收到数据请求消息后,判断自己的聚合表中是否存在数据名称域值为N1,接口域值为f1且数据块ID集合为数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤311,否则执行步骤304;
步骤304:数据路由器R1创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f1;
步骤305:数据路由器R1查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器R1从该转发表项的接口转发接收到的数据请求消息;否则,数据路由器R1选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器R1进行如下操作:构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为0,负载为空,数据路由器R1从该转发表项的接口域值发送构建数据请求消息;
条件3:所述数据转发表项的数据块ID集合的并集是接收到的数据请求消息中的数据块ID集合的超集;
步骤306:判断是数据路由器还是数据提供者从接口f2接收到数据请求消息,如果是数据提供者接收到数据请求消息,则执行步骤307,否则执行步骤308;
步骤307:接收到数据请求消息的数据提供者创建一个数据响应消息,该数据响应消息的数据名称域值为N1,消息类型为3,数据块ID集合为接收到的数据请求消息中的数据块ID集合,序列号为0,负载为提供的数据块,然后从接口f2发送该数据响应消息,执行步骤311;
步骤308:接收到数据请求消息的数据路由器判断聚合表中是否存在数据名称域值为N1,接口域值为f2且数据块ID集合为接收到的数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤311,否则执行步骤309;
步骤309:接收到数据请求消息的数据路由器创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f2;
步骤310:接收到数据请求消息的数据路由器查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器从该转发表项的接口转发接收到的数据请求消息;否则,接收到数据请求消息的数据路由器选择符合条件3的所有转发表项,对于每个选择的转发表项,接收到数据请求消息的数据路由器进行如下操作:构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为0,负载为空,接收到数据请求消息的数据路由器从该转发表项的接口域值发送构建的数据请求消息,执行步骤306;
步骤311:判断是数据路由器还是数据消费者从接口f3接收到数据响应消息,如果是数据路由器接收到数据响应消息,则执行步骤312,否则执行步骤313;
步骤312:接收到数据响应消息的数据路由器从聚合表中选择所有数据名称域值为N1且数据块ID集合与数据响应消息中的数据块ID集合的交集不为空的表项,对于每个选择的聚合表项,接收到数据响应消息的数据路由器构建一个数据响应消息,数据响应消息的名称域值为N1,数据块ID集合为该聚合表项中的数据块ID集合与数据响应消息中的数据ID集合的交集,消息类型为3,序列号为0,负载为数据响应消息中的负载,数据路由器从该聚合表项中的接口域发送构建的数据响应消息,从该聚合表项的数据块ID集合中减去构建的数据响应消息的数据块ID集合,如果该聚合表项的数据块ID集合为空,则删除该聚合表项,执行步骤311;
步骤313:数据消费者U1获取并保存数据响应消息中的数据块;
步骤314:数据消费者U1整理所有收到的数据响应消息,从而获取数据块ID集合为S1的数据块;
步骤315:结束。
4.根据权利要求3所述的一种快速的网络数据通信方法,其特征在于,在数据消费者U1通过接口f与本地数据路由器R1相连,数据消费者U1需要获取由数据名称N1定义的数据C1的数据块,所述数据块的数据块ID集合为S1的条件下,如果网络性能不稳定,那么数据消费者U1通过下述过程获取目标数据块:
步骤401:开始;
步骤402:数据消费者U1产生一个随机数并构建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为S1,序列号为产生的随机数,负载为空,数据消费者U1从接口f发送该数据请求消息,同时保存四元组<构建的数据请求消息,接口f,产生的随机数,确认定时器>,启动确认定时器;
步骤403:数据路由器R1从自己的接口f1接收到数据请求消息后,从接口f1返回一个数据确认消息,该数据确认消息中的数据名称域值为N1,数据块ID集合为S1,消息类型为4,序列号为数据请求消息中的序列号,数据路由器R1判断聚合表中是否存在数据名称域值为N1,接口域值为f1且数据块ID集合为数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤417,否则执行步骤404;
步骤404:数据路由器R1创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f1;
步骤405:数据路由器R1查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,则数据路由器R1产生一个随机数并创建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,数据路由器R1从该转发表项的接口转发接收到的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;否则,数据路由器R1选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器R1进行如下操作:产生一个随机数并构建一个数据请求消息,该数据请求消息的数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,数据路由器R1从该转发表项的接口域值发送构建数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;
步骤406:判断是数据路由器还是数据提供者从接口f2接收到数据请求消息,如果是数据提供者接收到数据请求消息,则执行步骤407,否则执行步骤408;
步骤407:接收到数据请求消息的数据提供者从接口f2返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据请求消息中的数据块ID集合,序列号为数据请求消息中的序列号,消息类型为4;接收到数据请求消息的数据提供者产生一个随机数并创建一个数据响应消息,该数据响应消息的数据名称域值为N1,消息类型为3,数据块ID集合为接收到的数据请求消息中的数据块ID集合,序列号为产生的随机数,负载为提供的数据块,数据提供者从接口f2发送该数据响应消息,同时保存四元组<构建的数据响应消息,发送构建的数据响应消息的接口,构建的数据响应消息中的序列号,确认定时器>,启动确认定时器,执行步骤417;
步骤408:接收到数据请求消息的数据路由器从接口f2返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据请求消息中的数据块ID集合,序列号为数据请求消息中的序列号,消息类型为4;接收到数据请求消息的数据路由器判断聚合表中是否存在数据名称域值为N1,接口域值为f2且数据块ID集合为接收到的数据请求消息中的数据块ID集合的超集的表项,如果是,执行步骤417,否则执行步骤409;
步骤409:接收到数据请求消息的数据路由器创建一个聚合表项,该聚合表项的数据名称域值为N1,数据块ID集合域值为接收到的数据请求消息中的数据块ID集合,接口域值为f2;
步骤410:接收到数据请求消息的数据路由器查看转发表,如果存在数据名称域值为N1且数据块ID集合为数据请求消息中的数据块ID集合的超集的转发表项,那么数据路由器产生一个随机数并构建一个数据请求消息,该数据请求消息中的数据名称域值为N1,消息类型为2,数据块ID集合为接收到的数据请求消息中的数据块ID集合域值,序列号为产生的随机数,负载为空,从该转发表项的接口发送构建的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;否则,数据路由器选择符合条件3的所有转发表项,对于每个选择的转发表项,数据路由器进行如下操作:产生一个随机数和构建一个数据请求消息,数据名称域值为N1,消息类型为2,数据块ID集合为该转发表项中的数据块ID集合域值,序列号为产生的随机数,负载为空,从该转发表项的接口域值发送构建的数据请求消息,同时保存四元组<构建的数据请求消息,发送构建的数据请求消息的接口,构建的数据请求消息中的序列号,确认定时器>,启动确认定时器;
步骤411:数据消费者U1查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤413,否则执行步骤412;
步骤412:数据消费者U1通过该四元组中的接口域值重新发送该四元组中的数据请求消息,重新启动该四元组中的确认时钟,执行步骤403;
步骤413:数据消费者U1收到了与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤414:接收到数据请求消息的数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,如果是,则执行步骤416,否则执行步骤415;
步骤415:对于每个没有收到数据确认消息的四元组,接收到数据请求消息的数据路由器通过该四元组中的接口域值重新发送该四元组中的数据请求消息,重新启动该四元组中的确认时钟,执行步骤406;
步骤416:接收到数据请求消息的数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组,执行步骤406;
步骤417:判断是数据路由器还是数据消费者从接口f3接收到数据响应消息,如果是数据路由器接收到数据响应消息,则执行步骤419,否则执行步骤418;
步骤418:接收到数据响应消息的数据消费者U1从接口f3返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据响应消息中的数据块ID集合,序列号为数据响应消息中的序列号,消息类型为4,数据消费者U1获取并保存数据响应消息中的数据块,执行步骤426;
步骤419:接收到数据响应消息的数据路由器从接口f3返回一个数据确认消息,该数据确认消息的数据名称域值为N1,数据块ID集合为数据响应消息中的数据块ID集合,序列号为数据响应消息中的序列号,消息类型为4,接收到数据响应消息的数据路由器从聚合表中选择所有数据名称域值为N1且数据块ID集合与数据响应消息中的数据块ID集合的交集不为空的聚合表项,对于每个选择的聚合表项,接收到数据响应消息的数据路由器产生一个随机数并构建一个数据响应消息,该数据响应消息的名称域值为N1,数据块ID集合为该聚合表项中的数据块ID集合与数据响应消息中的数据ID集合的交集,消息类型为3,序列号为产生的随机数,负载为数据响应消息中的负载,数据路由器从该聚合表项中的接口域发送构建的数据响应消息,从该聚合表项的数据块ID集合中减去构建的数据响应消息的数据块ID集合,如果该聚合表项的数据块ID集合为空,则删除该聚合表项,同时保存四元组<构建的数据响应消息,发送构建的数据响应消息的接口,构建的数据请求响应中的序列号,确认定时器>,启动确认定时器;
步骤420:返回数据响应消息的数据提供者查看保存的四元组,如果在四元组中的确认时钟过期之前收到了与四元组中的序列号相同的数据确认消息,则执行步骤422,否则执行步骤421;
步骤421:返回数据响应消息的数据提供者通过该四元组中的接口域值重新发送该四元组中的数据响应消息,重新启动该四元组中的确认时钟,执行步骤417;
步骤422:返回数据响应消息的数据提供者收到与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤423:接收到数据响应消息的数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到与四元组中的序列号相同的数据确认消息,如果是,则执行步骤425,否则执行步骤424;
步骤424:对于每个没有收到确认消息的四元组,接收到数据响应消息的数据路由器通过该四元组中的接口域值重新发送该四元组中的数据响应消息,重新启动该四元组中的确认时钟,执行步骤417;
步骤425:接收到数据响应消息的数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组,执行步骤417;
步骤426:数据消费者U1整理所有收到的数据响应消息,从而获取数据块ID集合为S1的数据块;
步骤427:结束。
5.根据权利要求4所述的一种快速的网络数据通信方法,其特征在于,在数据路由器R2通过接口f3与邻居数据路由器或者邻居数据提供者相连且该邻居路由器或者邻居数据提供者失效的条件下,如果网络性能稳定,那么数据路由器R2执行下述过程更新转发表:
步骤501:开始;
步骤502:数据路由器R2从转发表中选择接口域值为f3的所有转发表项,然后构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为0,负载为接口域值为f3的所有转发表项,数据路由器R2从除了接口f3的所有与数据路由器相连的接口发送该不可达消息,数据路由器R2删除所有接口域值为f3的转发表项;
步骤503:邻居数据路由器从自己的接口f4接收到不可达消息,从除了接口f4的所有与数据路由器相连的接口发送不可达消息;
步骤504:接收到不可达消息的邻居数据路由器选择接口域值为f4,且数据名称域值等于不可达消息负载中任一个转发表项的数据名称域值,且数据块ID集合等于不可达消息负载中任一个转发表项的数据块ID集合的转发表项,删除这些选择的转发表项;
步骤505:执行步骤503~504直到所有的数据路由器都接收到不可达消息;
步骤506:结束。
6.根据权利要求5所述的一种快速的网络数据通信方法,其特征在于,在数据路由器R2通过接口f3与邻居数据路由器或者邻居数据提供者相连且该邻居路由器或者邻居数据提供者失效的条件下,如果网络性能不稳定,那么数据路由器R2执行下述过程更新转发表:
步骤601:开始;
步骤602:数据路由器R2从转发表中选择接口域值为f3的所有转发表项,对于除了接口f3之外的每个与数据路由器相连的接口,数据路由器R2进行如下操作:产生一个随机数并构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为产生的随机数,负载为接口域值为f3的所有转发表项,数据路由器R2从该接口发送该不可达消息,同时保存四元组<构建的不可达消息,发送构建的不可达消息的接口,构建的不可达消息的序列号,确认定时器>,启动确认定时器,数据路由器R2删除所有接口域值为f3的转发表项;
步骤603:邻居数据路由器从自己的接口f4收到不可达消息,数据路由器从接口f4返回一个数据确认消息,该数据确认消息的数据名称域值和数据块ID集合为空,序列号为不可达消息中的序列号,消息类型为4;对于除了接口f4之外的每个与数据路由器相连的接口,邻居数据路由器进行如下操作:产生一个随机数并构建一个不可达消息,该不可达消息的数据名称域值和数据块ID集合均为空,消息类型为5,序列号为产生的随机数,负载为接收到的不可达消息中的负载,邻居数据路由器从该接口发送该不可达消息,同时保存四元组<构建的不可达消息,发送构建的不可达消息的接口,构建的不可达消息的序列号,确认定时器>,启动确认定时器;
步骤604:接收到不可达消息的邻居数据路由器选择接口域值为f4,且数据名称域值等于不可达消息负载中任一个转发表项的数据名称域值,并且数据块ID集合等于不可达消息负载中任一个转发表项的数据块ID集合的转发表项,删除这些选择的转发表项;
步骤605:接收到不可达消息的数据路由器查看保存的所有四元组,对于每个四元组判断是否在该四元组中的确认时钟过期之前收到与四元组中的序列号相同的数据确认消息,如果是,则执行步骤607,否则执行步骤606;
步骤606:对于每个没有收到确认消息的四元组,接收到不可达消息的数据路由器通过该四元组中的接口域值重新发送该四元组中的不可达消息,重新启动该四元组中的确认时钟;
步骤607:接收到不可达消息的数据路由器收到与四元组中的序列号相同的数据确认消息后,删除该四元组;
步骤608:执行步骤603~607直到所有的数据路由器都接收到不可达消息;
步骤609:结束;
数据路由器删除无效的转发表项之后,通过数据提供者定期执行步骤101~107或者步骤201~213建立转发表。
CN201710196662.4A 2017-03-29 2017-03-29 一种快速的网络数据通信方法 Active CN106973017B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710196662.4A CN106973017B (zh) 2017-03-29 2017-03-29 一种快速的网络数据通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710196662.4A CN106973017B (zh) 2017-03-29 2017-03-29 一种快速的网络数据通信方法

Publications (2)

Publication Number Publication Date
CN106973017A CN106973017A (zh) 2017-07-21
CN106973017B true CN106973017B (zh) 2019-09-13

Family

ID=59335681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710196662.4A Active CN106973017B (zh) 2017-03-29 2017-03-29 一种快速的网络数据通信方法

Country Status (1)

Country Link
CN (1) CN106973017B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107911294B (zh) * 2017-11-22 2020-09-29 武汉兆格信息技术有限公司 一种基于地表区块的协同标绘消息路由转发及处理方法
CN107979605B (zh) * 2017-12-06 2020-05-26 常熟理工学院 一种安全的大数据网络通信方法
CN107947992B (zh) * 2017-12-06 2020-07-28 常熟理工学院 一种快速的大数据通信方法
EP3496358A1 (en) * 2017-12-08 2019-06-12 Thomson Licensing Devices and methods for data propagation in a distributed network
CN108347381B (zh) * 2018-03-21 2019-10-11 常熟理工学院 一种新一代数据网络通信方法
CN108449274B (zh) * 2018-03-21 2019-11-05 常熟理工学院 一种以数据为中心的未来网络实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103874157A (zh) * 2012-12-12 2014-06-18 华为技术有限公司 路由转发、建立路由表、和获取内容的方法及其装置
US8761171B1 (en) * 2011-05-04 2014-06-24 Juniper Networks, Inc. Reducing unnecessary upstream traffic in PIM-bidirectional mode
CN106101210A (zh) * 2016-06-08 2016-11-09 常熟理工学院 一种以数据为中心的无线网络数据通信方法
CN106453090A (zh) * 2016-10-19 2017-02-22 常熟理工学院 一种以数据为中心的通信方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8761171B1 (en) * 2011-05-04 2014-06-24 Juniper Networks, Inc. Reducing unnecessary upstream traffic in PIM-bidirectional mode
CN103874157A (zh) * 2012-12-12 2014-06-18 华为技术有限公司 路由转发、建立路由表、和获取内容的方法及其装置
CN106101210A (zh) * 2016-06-08 2016-11-09 常熟理工学院 一种以数据为中心的无线网络数据通信方法
CN106453090A (zh) * 2016-10-19 2017-02-22 常熟理工学院 一种以数据为中心的通信方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于组播的分布式路由器转发表快速同步";李丹等;《计算机工程》;20080820;第34卷(第16期);第107页-第110页 *

Also Published As

Publication number Publication date
CN106973017A (zh) 2017-07-21

Similar Documents

Publication Publication Date Title
CN106973017B (zh) 一种快速的网络数据通信方法
CN103929730B (zh) 触发消息发送的方法、设备及系统
CN106941449B (zh) 一种基于按需机制的网络数据通信方法
CN109660958A (zh) 一种电力抄表系统的组网方法及抄表方法
CN107071011B (zh) 一种基于云的网络数据通信方法
CN106911570B (zh) 一种可靠的网络数据通信方法
CN106255227A (zh) 一种用于d2d中继的方法、设备与系统
CN108347381B (zh) 一种新一代数据网络通信方法
CN109246785A (zh) 一种未来移动网络的实现方法
CN108494688B (zh) 一种低代价的未来数据网络实现方法
CN110138663A (zh) 一种以数据为中心的新一代网络实现方法
CN109088778A (zh) 一种未来移动网络的数据通信实现方法
CN109005567B (zh) 一种基于簇的移动网络实现方法
CN106506368B (zh) 一种基于互联网的数据通信实现方法
CN109167728A (zh) 一种基于命名数据网络的大数据通信实现方法
CN109462549A (zh) 一种新一代无线移动网络的实现方法
CN106330728B (zh) 选举候备指定路由器及指定路由器故障处理的方法、设备
CN108616868A (zh) 一种终端空闲态的处理方法及装置
CN101815337A (zh) 基于概率的无线自组织网络反应式路由方法
CN110536187B (zh) 转发数据的方法和接入层交换设备
CN108429673B (zh) 一种快速的未来数据网络实现方法
CN106797321B (zh) 一种背景流量下载方法、设备及系统
CN103702370B (zh) ZigBee网状拓扑路由方法
CN106789676B (zh) 无线自组织网络中低开销的可靠组播路由方法
CN109768893A (zh) 一种高效的大数据网络数据通信实现方法

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant