首页> 中国专利> 一种新一代多媒体传感网的实现方法

一种新一代多媒体传感网的实现方法

摘要

本发明提供了一种新一代多媒体传感网的实现方法,所述传感网包括两个以上的节点,节点包括用户节点和多媒体传感节点;多媒体传感节点简称为传感节点,每个传感节点配置能够产生多媒体数据的设备;节点通过本发明能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。

著录项

  • 公开/公告号CN108965138A

    专利类型发明专利

  • 公开/公告日2018-12-07

    原文格式PDF

  • 申请/专利权人 常熟理工学院;

    申请/专利号CN201811074160.5

  • 发明设计人 王晓喃;程宏斌;姚宇峰;

    申请日2018-09-14

  • 分类号

  • 代理机构南京瑞弘专利商标事务所(普通合伙);

  • 代理人杨晓玲

  • 地址 215500 江苏省苏州市常熟市常熟理工学院(东南校区)

  • 入库时间 2023-06-19 07:34:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-25

    授权

    授权

  • 2019-01-01

    实质审查的生效 IPC(主分类):H04L12/741 申请日:20180914

    实质审查的生效

  • 2018-12-07

    公开

    公开

说明书

技术领域

本发明涉及一种实现方法,尤其涉及的是一种新一代多媒体传感网的实现方法。

背景技术

新一代多媒体传感网中的节点之间通信通过中间节点的转发和路由来实现,因此,实现新一代多媒体传感网需要解决的关键技术之一就是降低数据传输延迟,以便使用户能够快速获取网络服务。随着新一代多媒体传感网技术的发展,新一代多媒体传感网会成为未来网络提供服务的一种模式。

目前,新一代多媒体传感网的实现模式是通过广播来实现,因此延迟和代价都比较大,降低了网络服务性能。因此,如何降低新一代多媒体传感网提供服务的延迟和代价成为近年来研究的热点问题。

发明内容

发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种新一代多媒体传感网的实现方法。

技术方案:本发明公开了一种新一代多媒体传感网的实现方法,所述传感网包括两个以上的节点,节点包括用户节点和多媒体传感节点;多媒体传感节点简称为传感节点,每个传感节点配置能够产生多媒体数据的设备,例如摄像头;

节点由硬件ID唯一标识,例如MAC地址;一种类型的数据由一个名称唯一标识;节点使用消息进行通信,消息类型值和消息名称如下表所示:

消息类型消息名称1发布消息2修复消息3确认消息4请求消息5响应消息6邻居消息7查询消息8数据消息

节点保存一个路由表,一个路由表项包含跳数、硬件ID、前一跳、名称和时间戳域;

一个发布消息由消息类型、跳数、硬件ID、前一跳、名称和负载域构成;

数据D1由名称NA1标识,节点P1能提供数据D1并定期执行下述操作维护路由表:

步骤101:开始;

步骤102:节点P1发送一个发布消息,该发布消息的消息类型为1,跳数为0,硬件ID和前一跳域值均为节点P1的硬件ID,名称为NA1,负载为时间戳;

步骤103:其他节点接收到该发布消息,将该发布消息的跳数域值递增1,查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID,且时间戳等于该发布消息负载中的时间戳,则执行步骤111,否则执行步骤104;

步骤104:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID,且跳数域值大于该发布消息中的跳数域值,则执行步骤105,否则执行步骤106;

步骤105:接收到该发布消息的节点查看路由表,选择所有名称和硬件ID分别等于该发布消息的名称和硬件ID的路由表项,创建一个路由表现,该路由表项的名称、硬件ID、前一跳和跳数域值分别等于该发布消息的名称、硬件ID、前一跳和跳数域值,时间戳域值等于该发布消息负载中的时间戳;将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;

步骤106:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,且前一跳域值等于该发布消息中的前一跳域值,则执行步骤107,否则执行步骤108;

步骤107:接收到该发布消息的节点查看路由表,选择一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,且前一跳域值等于该发布消息中的前一跳域值,将该路由表项的时间戳更新为该发布消息负载中的时间戳,将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;

步骤108:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,则执行步骤109,否则执行步骤110;

步骤109:接收到该发布消息的节点创建一个路由表项,该路由表项的名称、硬件ID、跳数和前一跳域值分别等于该发布消息的名称、硬件ID、跳数和前一跳域值,时间戳域值等于该发布消息负载中的时间戳,将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;

步骤110:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID域值,且跳数域值小于该发布消息中的跳数域值,则执行步骤111,否则执行步骤109;

步骤111:结束;

如果一个路由表项的时间戳和当前时间之差的绝对值大于预定时间T0,则删除该路由表项。预定时间T0越大,路由表项的生存时间越长,预定时间T0可以取值为1s。

节点通过上述过程建立到达自己的路由表项,路由表项通过跳数域值确保到达提供数据的节点的路径长度最小,同时能够建立多条到达提供数据的节点的路由路径,从而实现了网络的负载均衡;同时,路由表项通过时间戳来确保路由表项的实时性和有效性,节点通过检测接收到的发布消息中的时间戳来确保只处理第一个接收到的发布消息以有效避免重复处理同一个发布消息,从而提高了建立路由表的效率,也提高了数据通信的性能。

本发明所述方法中,一个修复消息包含消息类型、跳数、硬件ID、前一跳、名称和负载域;一个确认消息包含消息类型、跳数、硬件ID、前一跳、名称和负载域;一个节点保存一个消息表,每个消息表项包含消息域和生命周期域;数据D1由名称NA1唯一标识;如果节点ND1没有名称域值等于NA1的路由表项,则通过下述过程建立名称域值为NA1的路由表项:

步骤201:开始;

步骤202:节点ND1发送一个修复消息,该修复消息的消息类型为2,跳数为0,硬件ID和前一跳均为节点ND1的硬件ID,名称域值为NA1,负载为时间戳;

步骤203:节点接收到修复消息后,将该修复消息中的跳数递增1,并查看消息表;如果存在一个消息表项,该消息表项的消息域值中的消息类型、硬件ID、名称和时间戳域值均等于该修复消息中的消息类型、硬件ID、名称和时间戳域值,则执行步骤209,否则执行步骤204;

步骤204:接收到修复消息的节点创建一个消息表项,该消息表项的消息域值为该修复消息,生命周期设置为最大值,例如1s,如果该节点存在名称域值等于该修复消息的名称域值的路由表项,则执行步骤205,否则执行步骤206;

步骤205:接收到修复消息的节点选择所有名称域值等于该修复消息的名称域值的路由表项,发送一个确认消息,该确认消息的消息类型为3,跳数为0,硬件ID和前一跳均等于该节点的硬件ID,负载为选中的所有路由表项,执行步骤209;

步骤206:判断接收到修复消息的节点是否能够提供该修复消息名称所标识的数据,如果能,则执行步骤207,否则执行步骤208;

步骤207:接收到修复消息的节点创建一个路由表项,该路由表项的名称域值等于该修复消息的名称域值,硬件ID和前一跳域值均等于该节点的硬件ID,跳数域值等于0,时间戳等于当前时间;该节点发送一个确认消息,该确认消息的消息类型为3,跳数为0,硬件ID和前一跳均等于该节点的硬件ID,负载为创建的路由表项,执行步骤209;

步骤208:接收到修复消息的节点转发该修复消息,执行步骤203;

步骤209:节点接收到确认消息后,将确认消息的跳数域值递增1,查看消息表,如果存在一个消息表项,该消息表项的消息域值中的消息类型、硬件ID、名称和时间戳域值均等于该确认消息中的消息类型、硬件ID、名称和时间戳域值,则执行步骤213,否则执行步骤210;

步骤210:接收到确认消息的节点创建一个消息表项,该消息表项的消息域值为该确认消息,生命周期设置为最大值,例如1s,如果该节点存在名称域值等于该确认消息的名称域值的路由表项,则执行步骤212,否则执行步骤211;

步骤211:接收到确认消息的节点针对该确认消息负载中的每个路由表项执行下述操作:将该路由表项的前一跳更新为该确认消息中的前一跳,将该路由表项的跳数域值更新为该路由表项的跳数域值与该确认消息的跳数域值之和,将该路由表项加入到自己的路由表中;

步骤212:接收到确认消息的节点将该确认消息的前一跳更新为自己的硬件ID,转发该确认消息,执行步骤209;

步骤213:结束。

节点通过上述过程获取到达能够提供目标数据的节点的路由表项,路由表项可以通过中间节点或者目标数据提供者来提供,因此能够建立多条到达提供目标数据的节点的路由路径,能够有效实现网络负载均衡;同时,上述过程通过时间戳来确保路由表项的实时性和有效性,节点通过检测接收到的修复消息和确认消息中的时间戳来确保只处理第一个接收到的修复消息和确认消息以有效避免重复处理同一个修复消息和确认消息,从而提高了获取路由表的效率,也提高了数据通信的成功率。

本发明所述方法中,请求消息由消息类型、硬件ID、下一跳和名称域构成;响应消息由消息类型、硬件ID、名称域和负载域构成;节点保存一个数据表,每个数据表项由名称域,数值域和生命周期域构成;节点保存一个汇聚表,一个汇聚表项包含名称域和硬件ID域;数据D1由名称NA1标识,如果节点ND2没有名称域值为NA1的路由表项,则执行步骤201~213建立名称域值为NA1的路由表项;如果网络拓扑结构相对稳定,例如是静止网络或者节点移动的最大速度不超过5m/s,节点ND2通过下述过程获取数据D1:

步骤301:开始;

步骤302:节点ND2选择一个路由表项,该路由表项的名称域值等于NA1,发送一个请求消息,该请求消息的消息类型为4,下一跳为该路由表项的前一跳,硬件ID等于节点ND2的硬件ID,名称域值为NA1;

步骤303:节点接收到请求消息,如果该节点的硬件ID等于该请求消息的下一跳域值,则执行步骤304,否则执行步骤310;

步骤304:接收到请求消息的节点查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该请求消息的名称域值,则执行步骤305,否则执行步骤306;

步骤305:接收到请求消息的节点选择一个数据表项,该数据表项的名称域值等于该请求消息的名称域值,发送一个响应消息,该响应消息的消息类型为5,硬件ID和名称分别等于该请求消息的硬件ID和名称,负载为该数据表项的数值域值,执行步骤310;

步骤306:接收到请求消息的节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称域和硬件ID域分别等于该请求消息的名称域和硬件ID域,则执行步骤310,否则执行步骤307;

步骤307:接收到请求消息的节点创建一个聚合表项,该聚合表项的名称域和硬件ID域分别等于该请求消息的名称域和硬件ID域,查看路由表,如果存在一个路由表项,该路由表项的名称域值等于该请求消息的名称域值,则执行步骤309,否则执行步骤308;

步骤308:接收到请求消息的节点执行步骤201~213获取名称域值等于该请求消息名称域值的路由表项;

步骤309:接收到请求消息的节点选择一个路由表项,该路由表项的名称域值等于该请求消息的名称域值,将该请求消息的硬件ID更新为自己的硬件ID,将该请求消息的下一跳更新为该路由表项的下一跳,转发该请求消息,执行步骤303;

步骤310:节点接收到响应消息,如果该节点的硬件ID等于该响应消息的下一跳域值,则执行步骤311,否则执行步骤313;

步骤311:接收到响应消息的节点查看聚合表,如果名称域值等于该响应消息名称域值的聚合表项的数量为0,则执行步骤313,否则执行步骤312;

步骤312:接收到响应消息的节点选择所有名称域值等于该响应消息名称域值的聚合表项,针对每个选中的聚合表项,该节点将响应消息的硬件ID更新为该聚合表项的硬件ID,转发该响应消息,执行步骤310;

步骤313:接收到响应消息的节点创建一个数据表项,该数据表项的名称域值等于该响应消息的名称域值,数值域值等于该响应消息负载中的数据,生命周期设置为最大值,例如10min;

步骤314:结束。

在网络相对稳定的情况下,节点通过上述过程获取数据,上述过程通过聚合表实现数据通信,从而两个以上的节点通过一次数据通信过程可以获取数据,同时节点通过中间节点可以分享数据,从而大幅度降低数据通信延迟和代价;响应消息通过聚合表返回到请求消息,无需建立路由,进一步降低了数据通信延迟和代价,节点获取响应数据后保存在数据表中,这样可以为其他节点提供数据,从而减少数据通信的路由路径长度,降低数据通信延迟和代价。

本发明所述方法中,一个节点保存一个邻居表,一个邻居表项包含硬件ID和生命周期域;邻居消息包含消息类型和硬件ID域;节点定期执行下述操作维护邻居表:

步骤401:开始;

步骤402:节点发送邻居消息,该邻居消息的消息类型为6,硬件ID等于该节点的硬件ID;

步骤403:邻居节点接收到邻居消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,则将该邻居表项的生存周期设置为最大值;否则,该邻居节点创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,生存周期设置为最大值;

步骤404:结束。

节点通过上述过程建立邻居表,从而保存邻居节点的实时信息,确保邻居节点可达。

本发明所述方法中,查询消息包含消息类型、硬件ID集合和名称域;数据消息包含消息类型、硬件ID集合、跳数、名称和负载;数据D1由名称NA1标识,如果节点ND2没有名称域值为NA1的路由表项,则执行步骤201-213建立名称域值为NA1的路由表项;如果网络不稳定,例如节点移动速度等于或者大于5m/s,节点ND2则通过下述过程获取数据D1:

步骤501:开始;

步骤502:节点ND2选择一个路由表项,该路由表项的名称域值等于NA1,发送一个查询消息,该查询消息的消息类型为7,硬件ID集合包含两个元素,第一个元素为节点ND2的硬件ID的最后k比特,k为小于48的正整数,一般设置为16或者24,第二个元素为该路由表项的前一跳域值的最后k比特,名称域值为NA1;

步骤503:节点接收到查询消息,如果该节点的硬件ID的最后k比特等于该查询消息硬件ID集合中的最后一个元素,则执行步骤504,否则执行步骤509;

步骤504:接收到查询消息的节点查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,则执行步骤508,否则执行步骤505;

步骤505:接收到查询消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称域值等于该查询消息的名称域值,则执行步骤507,否则执行步骤506;

步骤506:接收到查询消息的节点执行步骤201~213建立名称域值等于该查询消息的名称域值的路由表项;

步骤507:接收到查询消息的节点选择一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,将该路由表项的前一跳的最后k比特值加入到该查询消息的硬件ID集合中并作为最后一个元素,转发该查询消息,执行步骤503;

步骤508:接收到查询消息的节点选择一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,构建一个数据消息,该数据消息的消息类型为8,跳数为0,硬件ID集合和名称域值分别等于该查询消息的硬件ID集合和名称域值,负载为该数据表项的数值域值;该节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID的最后k比特等于该数据消息的硬件ID集合中的最后一个元素的最后k比特值,则直接发送该数据消息;否则,该节点将该数据消息的跳数域值设置为该数据消息硬件ID集合中元素的个数,发送该数据消息;

步骤509:节点接收到数据消息,如果该节点的硬件ID的最后k比特等于该数据消息的硬件ID集合最后一个元素的最后k比特,则执行步骤512,否则执行步骤510;

步骤510:接收到数据消息的节点查看该数据消息的跳数是否为0,如果是,则执行步骤512,否则执行步骤511;

步骤511:接收到数据消息的节点将该数据消息的跳数递减1,等待时间T1后转发该数据消息,执行步骤509;时间T1为预先设定值,该值越大,节点等待时间越长,在节点密度较大的情况下,该值一般设置为25ms,在节点密度较小的情况下,该值一般设置为10ms,其目的是减少信道冲突;

步骤512:接收到数据消息的节点从该数据消息的硬件ID集合中删除最后一个元素,判断该数据消息的硬件ID集合的元素个数是否等于0,如果是,则执行步骤516,否则执行步骤513;

步骤513:接收到数据消息的节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID的最后k比特等于该数据消息的硬件ID集合中的最后一个元素的最后k比特值,则执行步骤514,否则执行步骤515;

步骤514:接收到数据消息的节点将该数据消息的跳数设置为0,等待时间T2,发送该数据消息,执行步骤509;时间T2为预先设定值,小于时间T1,该值越大,节点等待时间越长,在节点密度较大的情况下,该值一般设置为15ms,在节点密度较小的情况下,该值一般设置为5ms,其目的是减少信道冲突;

步骤515:接收到数据消息的节点将该数据消息的跳数域值设置为该数据消息硬件ID集合中元素的个数,等待时间T1后发送该数据消息,执行步骤509;

步骤516:接收到数据消息的节点创建一个数据表项,该数据表项的名称域值等于该数据消息的名称域值,数值域值等于该数据消息负载中的数据,生命周期设置为最大值,例如10min;

步骤517:结束。

在网络不稳定的情况下,节点通过上述过程获取数据,由于网络拓扑结构不稳定,节点通过硬件ID集合来记录路由路径,由于硬件ID集合中每个元素只记录硬件ID的k比特,因此降低了消息传输代价;上述过程通过硬件ID集合来返回响应数据,如果下一跳节点不可达,则在一定范围内传输响应数据以寻找下一跳节点,从而提高了数据通信成功率;在一定范围内传输响应消息的另一个优势在于节点无需发送查询消息即可获取所需数据,从而降低了数据通信和延迟;节点获取响应数据后保存在数据表中,这样可以为其他节点提供数据,从而减少数据通信的路由路径长度,降低数据通信延迟和代价。

有益效果:本发明提供了一种新一代多媒体传感网的实现方法,节点通过本发明能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。

图1为本发明所述的维护路由表流程示意图。

图2为本发明所述的建立路由表项流程示意图。

图3为本发明所述的数据通信流程示意图。

图4为本发明所述的维护邻居表流程示意图。

图5为本发明所述的获取数据流程示意图。

具体实施方式:

本发明提供了一种新一代多媒体传感网的实现方法,节点通过本发明能够快速获取数据,大幅度降低了数据通信延迟,提高了数据通信质量。本发明可应用于交通路况检控及农业工程化等诸多领域,具有广泛的应用前景。

图1为本发明所述的维护路由表流程示意图。所述传感网包括两个以上的节点,节点包括用户节点和多媒体传感节点;多媒体传感节点简称为传感节点,每个传感节点配置能够产生多媒体数据的设备,例如摄像头;

节点由硬件ID唯一标识,例如MAC地址;一种类型的数据由一个名称唯一标识;节点使用消息进行通信,消息类型值和消息名称如下表所示:

节点保存一个路由表,一个路由表项包含跳数、硬件ID、前一跳、名称和时间戳域;

一个发布消息由消息类型、跳数、硬件ID、前一跳、名称和负载域构成;

数据D1由名称NA1标识,节点P1能提供数据D1并定期执行下述操作维护路由表:

步骤101:开始;

步骤102:节点P1发送一个发布消息,该发布消息的消息类型为1,跳数为0,硬件ID和前一跳域值均为节点P1的硬件ID,名称为NA1,负载为时间戳;

步骤103:其他节点接收到该发布消息,将该发布消息的跳数域值递增1,查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID,且时间戳等于该发布消息负载中的时间戳,则执行步骤111,否则执行步骤104;

步骤104:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID,且跳数域值大于该发布消息中的跳数域值,则执行步骤105,否则执行步骤106;

步骤105:接收到该发布消息的节点查看路由表,选择所有名称和硬件ID分别等于该发布消息的名称和硬件ID的路由表项,创建一个路由表现,该路由表项的名称、硬件ID、前一跳和跳数域值分别等于该发布消息的名称、硬件ID、前一跳和跳数域值,时间戳域值等于该发布消息负载中的时间戳;将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;

步骤106:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,且前一跳域值等于该发布消息中的前一跳域值,则执行步骤107,否则执行步骤108;

步骤107:接收到该发布消息的节点查看路由表,选择一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,且前一跳域值等于该发布消息中的前一跳域值,将该路由表项的时间戳更新为该发布消息负载中的时间戳,将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;

步骤108:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称、硬件ID和跳数域值分别等于该发布消息的名称、硬件ID和跳数域值,则执行步骤109,否则执行步骤110;

步骤109:接收到该发布消息的节点创建一个路由表项,该路由表项的名称、硬件ID、跳数和前一跳域值分别等于该发布消息的名称、硬件ID、跳数和前一跳域值,时间戳域值等于该发布消息负载中的时间戳,将该发布消息的前一跳域值更新为自己的硬件ID,转发该发布消息,执行步骤103;

步骤110:接收到该发布消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称和硬件ID域值分别等于该发布消息的名称和硬件ID域值,且跳数域值小于该发布消息中的跳数域值,则执行步骤111,否则执行步骤109;

步骤111:结束;

如果一个路由表项的时间戳和当前时间之差的绝对值大于预定时间T0,则删除该路由表项。预定时间T0越大,路由表项的生存时间越长,预定时间T0可以取值为1s。

节点通过上述过程建立到达自己的路由表项,路由表项通过跳数域值确保到达提供数据的节点的路径长度最小,同时能够建立多条到达提供数据的节点的路由路径,从而实现了网络的负载均衡;同时,路由表项通过时间戳来确保路由表项的实时性和有效性,节点通过检测接收到的发布消息中的时间戳来确保只处理第一个接收到的发布消息以有效避免重复处理同一个发布消息,从而提高了建立路由表的效率,也提高了数据通信的性能。

图2为本发明所述的建立路由表项流程示意图。一个修复消息包含消息类型、跳数、硬件ID、前一跳、名称和负载域;一个确认消息包含消息类型、跳数、硬件ID、前一跳、名称和负载域;一个节点保存一个消息表,每个消息表项包含消息域和生命周期域;数据D1由名称NA1唯一标识;如果节点ND1没有名称域值等于NA1的路由表项,则通过下述过程建立名称域值为NA1的路由表项:

步骤201:开始;

步骤202:节点ND1发送一个修复消息,该修复消息的消息类型为2,跳数为0,硬件ID和前一跳均为节点ND1的硬件ID,名称域值为NA1,负载为时间戳;

步骤203:节点接收到修复消息后,将该修复消息中的跳数递增1,并查看消息表;如果存在一个消息表项,该消息表项的消息域值中的消息类型、硬件ID、名称和时间戳域值均等于该修复消息中的消息类型、硬件ID、名称和时间戳域值,则执行步骤209,否则执行步骤204;

步骤204:接收到修复消息的节点创建一个消息表项,该消息表项的消息域值为该修复消息,生命周期设置为最大值,例如1s,如果该节点存在名称域值等于该修复消息的名称域值的路由表项,则执行步骤205,否则执行步骤206;

步骤205:接收到修复消息的节点选择所有名称域值等于该修复消息的名称域值的路由表项,发送一个确认消息,该确认消息的消息类型为3,跳数为0,硬件ID和前一跳均等于该节点的硬件ID,负载为选中的所有路由表项,执行步骤209;

步骤206:判断接收到修复消息的节点是否能够提供该修复消息名称所标识的数据,如果能,则执行步骤207,否则执行步骤208;

步骤207:接收到修复消息的节点创建一个路由表项,该路由表项的名称域值等于该修复消息的名称域值,硬件ID和前一跳域值均等于该节点的硬件ID,跳数域值等于0,时间戳等于当前时间;该节点发送一个确认消息,该确认消息的消息类型为3,跳数为0,硬件ID和前一跳均等于该节点的硬件ID,负载为创建的路由表项,执行步骤209;

步骤208:接收到修复消息的节点转发该修复消息,执行步骤203;

步骤209:节点接收到确认消息后,将确认消息的跳数域值递增1,查看消息表,如果存在一个消息表项,该消息表项的消息域值中的消息类型、硬件ID、名称和时间戳域值均等于该确认消息中的消息类型、硬件ID、名称和时间戳域值,则执行步骤213,否则执行步骤210;

步骤210:接收到确认消息的节点创建一个消息表项,该消息表项的消息域值为该确认消息,生命周期设置为最大值,例如1s,如果该节点存在名称域值等于该确认消息的名称域值的路由表项,则执行步骤212,否则执行步骤211;

步骤211:接收到确认消息的节点针对该确认消息负载中的每个路由表项执行下述操作:将该路由表项的前一跳更新为该确认消息中的前一跳,将该路由表项的跳数域值更新为该路由表项的跳数域值与该确认消息的跳数域值之和,将该路由表项加入到自己的路由表中;

步骤212:接收到确认消息的节点将该确认消息的前一跳更新为自己的硬件ID,转发该确认消息,执行步骤209;

步骤213:结束。

节点通过上述过程获取到达能够提供目标数据的节点的路由表项,路由表项可以通过中间节点或者目标数据提供者来提供,因此能够建立多条到达提供目标数据的节点的路由路径,能够有效实现网络负载均衡;同时,上述过程通过时间戳来确保路由表项的实时性和有效性,节点通过检测接收到的修复消息和确认消息中的时间戳来确保只处理第一个接收到的修复消息和确认消息以有效避免重复处理同一个修复消息和确认消息,从而提高了获取路由表的效率,也提高了数据通信的成功率。

图3为本发明所述的数据通信流程示意图。请求消息由消息类型、硬件ID、下一跳和名称域构成;响应消息由消息类型、硬件ID、名称域和负载域构成;节点保存一个数据表,每个数据表项由名称域,数值域和生命周期域构成;节点保存一个汇聚表,一个汇聚表项包含名称域和硬件ID域;数据D1由名称NA1标识,如果节点ND2没有名称域值为NA1的路由表项,则执行步骤201~213建立名称域值为NA1的路由表项;如果网络拓扑结构相对稳定,例如是静止网络或者节点移动的最大速度不超过5m/s,节点ND2通过下述过程获取数据D1:

步骤301:开始;

步骤302:节点ND2选择一个路由表项,该路由表项的名称域值等于NA1,发送一个请求消息,该请求消息的消息类型为4,下一跳为该路由表项的前一跳,硬件ID等于节点ND2的硬件ID,名称域值为NA1;

步骤303:节点接收到请求消息,如果该节点的硬件ID等于该请求消息的下一跳域值,则执行步骤304,否则执行步骤310;

步骤304:接收到请求消息的节点查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该请求消息的名称域值,则执行步骤305,否则执行步骤306;

步骤305:接收到请求消息的节点选择一个数据表项,该数据表项的名称域值等于该请求消息的名称域值,发送一个响应消息,该响应消息的消息类型为5,硬件ID和名称分别等于该请求消息的硬件ID和名称,负载为该数据表项的数值域值,执行步骤310;

步骤306:接收到请求消息的节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称域和硬件ID域分别等于该请求消息的名称域和硬件ID域,则执行步骤310,否则执行步骤307;

步骤307:接收到请求消息的节点创建一个聚合表项,该聚合表项的名称域和硬件ID域分别等于该请求消息的名称域和硬件ID域,查看路由表,如果存在一个路由表项,该路由表项的名称域值等于该请求消息的名称域值,则执行步骤309,否则执行步骤308;

步骤308:接收到请求消息的节点执行步骤201~213获取名称域值等于该请求消息名称域值的路由表项;

步骤309:接收到请求消息的节点选择一个路由表项,该路由表项的名称域值等于该请求消息的名称域值,将该请求消息的硬件ID更新为自己的硬件ID,将该请求消息的下一跳更新为该路由表项的下一跳,转发该请求消息,执行步骤303;

步骤310:节点接收到响应消息,如果该节点的硬件ID等于该响应消息的下一跳域值,则执行步骤311,否则执行步骤313;

步骤311:接收到响应消息的节点查看聚合表,如果名称域值等于该响应消息名称域值的聚合表项的数量为0,则执行步骤313,否则执行步骤312;

步骤312:接收到响应消息的节点选择所有名称域值等于该响应消息名称域值的聚合表项,针对每个选中的聚合表项,该节点将响应消息的硬件ID更新为该聚合表项的硬件ID,转发该响应消息,执行步骤310;

步骤313:接收到响应消息的节点创建一个数据表项,该数据表项的名称域值等于该响应消息的名称域值,数值域值等于该响应消息负载中的数据,生命周期设置为最大值,例如10min;

步骤314:结束。

在网络相对稳定的情况下,节点通过上述过程获取数据,上述过程通过聚合表实现数据通信,从而两个以上的节点通过一次数据通信过程可以获取数据,同时节点通过中间节点可以分享数据,从而大幅度降低数据通信延迟和代价;响应消息通过聚合表返回到请求消息,无需建立路由,进一步降低了数据通信延迟和代价,节点获取响应数据后保存在数据表中,这样可以为其他节点提供数据,从而减少数据通信的路由路径长度,降低数据通信延迟和代价。

图4为本发明所述的维护邻居表流程示意图。一个节点保存一个邻居表,一个邻居表项包含硬件ID和生命周期域;邻居消息包含消息类型和硬件ID域;节点定期执行下述操作维护邻居表:

步骤401:开始;

步骤402:节点发送邻居消息,该邻居消息的消息类型为6,硬件ID等于该节点的硬件ID;

步骤403:邻居节点接收到邻居消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,则将该邻居表项的生存周期设置为最大值;否则,该邻居节点创建一个邻居表项,该邻居表项的硬件ID等于该邻居消息的硬件ID,生存周期设置为最大值;

步骤404:结束。

节点通过上述过程建立邻居表,从而保存邻居节点的实时信息,确保邻居节点可达。

图5为本发明所述的获取数据流程示意图。查询消息包含消息类型、硬件ID集合和名称域;数据消息包含消息类型、硬件ID集合、跳数、名称和负载;数据D1由名称NA1标识,如果节点ND2没有名称域值为NA1的路由表项,则执行步骤201-213建立名称域值为NA1的路由表项;如果网络不稳定,例如节点移动速度等于或者大于5m/s,节点ND2则通过下述过程获取数据D1:

步骤501:开始;

步骤502:节点ND2选择一个路由表项,该路由表项的名称域值等于NA1,发送一个查询消息,该查询消息的消息类型为7,硬件ID集合包含两个元素,第一个元素为节点ND2的硬件ID的最后k比特,k为小于48的正整数,一般设置为16或者24,第二个元素为该路由表项的前一跳域值的最后k比特,名称域值为NA1;

步骤503:节点接收到查询消息,如果该节点的硬件ID的最后k比特等于该查询消息硬件ID集合中的最后一个元素,则执行步骤504,否则执行步骤509;

步骤504:接收到查询消息的节点查看数据表,如果存在一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,则执行步骤508,否则执行步骤505;

步骤505:接收到查询消息的节点查看路由表,如果存在一个路由表项,该路由表项的名称域值等于该查询消息的名称域值,则执行步骤507,否则执行步骤506;

步骤506:接收到查询消息的节点执行步骤201~213建立名称域值等于该查询消息的名称域值的路由表项;

步骤507:接收到查询消息的节点选择一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,将该路由表项的前一跳的最后k比特值加入到该查询消息的硬件ID集合中并作为最后一个元素,转发该查询消息,执行步骤503;

步骤508:接收到查询消息的节点选择一个数据表项,该数据表项的名称域值等于该查询消息的名称域值,构建一个数据消息,该数据消息的消息类型为8,跳数为0,硬件ID集合和名称域值分别等于该查询消息的硬件ID集合和名称域值,负载为该数据表项的数值域值;该节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID的最后k比特等于该数据消息的硬件ID集合中的最后一个元素的最后k比特值,则直接发送该数据消息;否则,该节点将该数据消息的跳数域值设置为该数据消息硬件ID集合中元素的个数,发送该数据消息;

步骤509:节点接收到数据消息,如果该节点的硬件ID的最后k比特等于该数据消息的硬件ID集合最后一个元素的最后k比特,则执行步骤512,否则执行步骤510;

步骤510:接收到数据消息的节点查看该数据消息的跳数是否为0,如果是,则执行步骤512,否则执行步骤511;

步骤511:接收到数据消息的节点将该数据消息的跳数递减1,等待时间T1后转发该数据消息,执行步骤509;时间T1为预先设定值,该值越大,节点等待时间越长,在节点密度较大的情况下,该值一般设置为25ms,在节点密度较小的情况下,该值一般设置为10ms,其目的是减少信道冲突;

步骤512:接收到数据消息的节点从该数据消息的硬件ID集合中删除最后一个元素,判断该数据消息的硬件ID集合的元素个数是否等于0,如果是,则执行步骤516,否则执行步骤513;

步骤513:接收到数据消息的节点查看邻居表,如果存在一个邻居表项,该邻居表项的硬件ID的最后k比特等于该数据消息的硬件ID集合中的最后一个元素的最后k比特值,则执行步骤514,否则执行步骤515;

步骤514:接收到数据消息的节点将该数据消息的跳数设置为0,等待时间T2,发送该数据消息,执行步骤509;时间T2为预先设定值,小于时间T1,该值越大,节点等待时间越长,在节点密度较大的情况下,该值一般设置为15ms,在节点密度较小的情况下,该值一般设置为5ms,其目的是减少信道冲突;

步骤515:接收到数据消息的节点将该数据消息的跳数域值设置为该数据消息硬件ID集合中元素的个数,等待时间T1后发送该数据消息,执行步骤509;

步骤516:接收到数据消息的节点创建一个数据表项,该数据表项的名称域值等于该数据消息的名称域值,数值域值等于该数据消息负载中的数据,生命周期设置为最大值,例如10min;

步骤517:结束。

在网络不稳定的情况下,节点通过上述过程获取数据,由于网络拓扑结构不稳定,节点通过硬件ID集合来记录路由路径,由于硬件ID集合中每个元素只记录硬件ID的k比特,因此降低了消息传输代价;上述过程通过硬件ID集合来返回响应数据,如果下一跳节点不可达,则在一定范围内传输响应数据以寻找下一跳节点,从而提高了数据通信成功率;在一定范围内传输响应消息的另一个优势在于节点无需发送查询消息即可获取所需数据,从而降低了数据通信和延迟;节点获取响应数据后保存在数据表中,这样可以为其他节点提供数据,从而减少数据通信的路由路径长度,降低数据通信延迟和代价。

实施例1

基于表1的仿真参数,本实施例模拟了本发明中的一种新一代多媒体传感网的实现方法,性能分析如下:当数据传输量增加时,数据通信延迟增加,当数据传输量减少时,数据通信延迟减少,数据通信平均延迟为907ms。

表1仿真参数

本发明提供了一种新一代多媒体传感网的实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号