无线传感器网络各类路由协议仿真
无线传感器网络路由协议的设计与仿真
无线传感器网络路由协议的设计流程:
1、确定网络拓扑和节点部署:根据实际应用场景,确定传感器节点的部署 位置和网络拓扑结构。
2、选择路由协议类型:根据应用需求和网络特点,选择适合的路由协议类 型,如按需路由、表驱动路由、基于位置的路由等。
3、设计路由算法:根据所选路由协议类型,设计相应的路由算法,包括节 点间的通信方式、路由发现和维护机制等。
感谢观看
在仿真过程中,我们发现所设计的路由协议在能量消耗和延迟时间方面表现 较好,但容错能力有待提高。为了优化协议性能,我们针对容错性进行了深入研 究。
协议优化
针对仿真中发现的容错性问题,我们采取了以下优化措施:
1、引入多路径机制:通过设计多路径路由协议,使数据能够沿着多个路径 传输,降低因单个节点或链路故障导致的数据传输中断风险。
4、实现协议模块:将设计的路由算法通过编程实现为网络协议模块,并集 成到网络操作系统中。
协议仿真
为了评估无线传感器网络路由协议的性能,我们使用NS2仿真工具对其进行 了仿真。以下是仿真步骤:
1、配置网络拓扑和参数:根据实际应用场景,我们在NS2中配置了相应的网 络拓扑结构和节点部署位置,并设置了节点间通信的物理和链路层参数。
2、优化节点调度算法:改进节点调度算法,使节点能够更加合理地分配能 量,避免出现能量消耗不均的情况,从而提高整个网络的能量利用效率。
3、加强错误恢复机制:在协议中加入错误恢复机制,当检测到数据传输错 误时,能够及时采取措施进行纠正,提高数据传输的可靠性。
经过优化后,我们再次使用NS2对优化后的路由协议进行了仿真验证。通过 对比优化前后的仿真结果,发现优化后的路由协议在容错性和能量消耗方面均得 到了显著改善。这表明我们的优化方案是可行的,提高了无线传感器网络路由协 议的性能。
无线传感器网络分簇协议在OPNET平台上的模拟仿真
目录目录............................................................................................................................................ - 1 -【论文摘要】............................................................................................................................ - 3 -【关键字】................................................................................................................................ - 3 -【Abstract】 .............................................................................................................................. - 4 -【Keywords】 ........................................................................................................................... - 4 -论文正文.................................................................................................................................... - 5 -1 前言................................................................................................................................ - 5 -1.1 无线传感器网络简介................................................................................................ - 5 -1.2 无线传感器网络仿真工具........................................................................................ - 5 -1.3 OPNET Modeler的简介............................................................................................ - 5 -1.4 主要研究工作与内容安排........................................................................................ - 6 -2 无线传感器网络................................................................................................................ - 7 -2.1 无线传感器网络的概述............................................................................................ - 7 -2.2 无线传感器网络的路由协议.................................................................................... - 9 -2.3 LEACH协议............................................................................................................ - 10 -2.3.1 LEACH协议算法分析.................................................................................. - 10 -2.3.2 LEACH协议优缺点讨论及改进方案.......................................................... - 11 -3 OPNET Modeler 网络仿真技术....................................................................................... - 13 -3.1 OPNET Modeler 网络仿真技术中的基本概念..................................................... - 13 -3.2 OPNET Modeler 的安装......................................................................................... - 14 -3.3 OPNET Modeler 的基本应用技术......................................................................... - 15 -3.4 OPNET Modeler 建立网络拓扑结构分析............................................................. - 18 -3.4.1 建立网络拓扑结构的步骤.............................................................................. - 18 -3.4.2 建立一个简单的网络拓扑结构.................................................................... - 18 -3.5 无线传感器在OPNET Modeler 上的仿真实现.................................................... - 23 -3.5.1 进程模型........................................................................................................ - 24 -3.5.2 节点模型........................................................................................................ - 25 -3.5.3 网络模型........................................................................................................ - 26 -3.5.4 仿真结果分析及讨论.................................................................................... - 27 -4 实验完成情况.................................................................................................................. - 29 -参考文献.................................................................................................................................. - 31 -致谢...................................................................................................................................... - 32 -评语...................................................................................................................................... - 33 -无线传感器网络分簇协议在OPNET平台上的模拟仿真【论文摘要】目的本论文的目的是为了研究无线传感器网络在OPNET上的仿真。
无线传感器网络DD协议及仿真
路径加强和数据传输
源节点沿着已建立好的梯度,以较低速率发送数据信息。 sink节点会给最先收到新数据的邻居节点发送加强兴趣消息。 接收加强兴趣消息的邻居节点依照同样的规则,加强它最先收 到新数据的邻居节点,从而形成一条“梯度”值最大的加强路 径。 后续数据就可以沿着这条加强路径以较高的数据传输速率进行 数据传输。
收到兴趣报文的节点查询自己的缓冲区是否有相同的记录,如 果没有,就往缓存中加入一条新纪录;否则,丢弃报文。然后 将兴趣转发给邻居节点,最终洪泛到整个网络,找到所匹配的 查询数据。
梯度建立
梯度:定义了一个数据传输方向和传输速率。 兴趣扩散的同时反向建立从源节点到sink节点的数据传输梯度。 一个节点接收到起邻居节点发来的兴趣消息时,会将该兴趣消 息发送给所有的邻居节点,这就使得每一对邻居节点都建立了 一个指向对方的梯度。
第4章 数据传输路由
定向扩散路由协议及OPNET仿真
定向扩散(DD)路由协议 DD的OPNET仿真
定向扩散(DD)路由协议
兴趣消息扩散 梯度建立 路径加强 数据传输
兴趣扩散
Sink节点根据不同的应用需求定义不同的兴趣报文,采用属性值对(对象类型、对象实例、数据发送间隔时间、持续时间、 位置区域等)来命名查询任务,讲查询任务封装成兴趣报文。 Sink节点将兴趣报文通过洪泛逐级扩散。
定向扩散(DD)路由协议 DD的OPNET仿真
数据包
数据包DATA
网络层封装数据
应用层感知数据
兴趣包SINK_INTEREST
节点属性
兴趣包更新时间
应用层模型
无线传感器网络GPSR协议及仿真
基于位置信息的路由协议
– 贪婪路由算法 – 定向区域泛洪 – 分层路由协议
定向区域泛洪
节点向目标节点方向的所有邻居节点转发数据分组。 鲁棒性强,但网络负载重。 典型算法:DREAM Nhomakorabea
DREAM
DREAM:Distance Routing Effect Algorithm for Mobility,移动距离效应路由算法:
– 基于LS的路由协议:会因路由中若干节点的失效、移动而
经常中断路由控制负担较大,带宽资源消耗过多。 – 层次化路由策略:
» 局部的先应式路由与全局的反应式路由的结合,以期达到提高数据 传输效率和网络可扩展性的目的。 » 需要维护端到端路由协议,对动态变化网络的适应能力有限。
地理路由概述
基于位置信息的路由协议(地理路由):
– 需要定位技术支持,节点通过定位技术获得自身、 邻居节点以及目标节点的地理位置信息。 – 节点利用这些地理位置信息,可以避免路由探测包 的盲目洪泛,从而进行有效的路由发现和路由维护 ,甚至可以基于无状态的分布式的非端到端的数据 转发。
地理路由概述
贪婪路由算法:
– 在整个数据传输中不需要建立端到端的基于全局链 路状态的路由,不需要存储路由信息表,也不需要 发送路由更新信息。
若DISTi <= DISTs+d (d为一给定的常数),I对请求分组进行处理,用 DISTi 替换DISTs并转发。随后的节点以相同的方法确定是否转发。 若DISTi > DISTs+d ,I丢弃该分组。
» 若I为目的节点,则发“路由应答”给S。
LAR协议评价
优点:
– 将路由查找限制在RZ中,在RZ之外的节点不受路由请求的干 扰,因此查找速度快,开销小,网络的扩展性能好。 – 只提出策略,不拘泥于某一种确定的协议,适用范围广。
无线传感器网络的S-MAC协议仿真
《无线网络技术》实验四报告单班级____ ___ 姓名_____ ___ 学号__ ___实验日期__ ___ 评分____ 教师签名______ _______实验名称:无线传感器网络的S-MAC协议仿真实验目的:了解无线传感器网络的S-MAC协议及提出一种消息节点睡眠机制和退避策略,然后通过在NS2平台上的仿真,可发现对能量消耗和网络延迟有部分改善。
实验内容:1 .无线传感器网络概述无线传感器网络(witeleSs Sensor Networks,WSN)是集信息采集、信息传输、信息处理于一体的综合智能信息系统。
它综合了微机电系统(Micro—Elec— tron Mechanical System,MS)、传感器技术、嵌入式技术、现代网络及无线通信技术、分布式信息处理技术等,能够通过各类集成化的微型传感器协作地实时监控、感知和采集各种环境或监控对象的信息。
在军事领域、工业领域、农业领域、环境检测、医疗监护、智能家具系统等许多领域都有十分广阔的发展前景。
2.无线传感器网络结构无线传感器网络包括传感器节点(Sensor Node)、汇聚节点(Sink Node)和管理节点(Manager node)。
无线传感器网络的协议栈采用5层的分层结构,分别为:物理层、数据链路层、网络层、传输层和应用层。
在网络协议栈中,MAC子层位于数据链路层,直接与物理层接口,负责控制和接入物理介质。
提供无线传感器网络中节点到节点的连接方式,确保传感器节点间通信资源分配的公平性和有效性。
3.基于竞争的MAC协议分析S-MAC(sensor MAC)[协议是针对IEEE802.11中节点处于侦听状态,消耗大量能量的问题,提出的周期性的休眠/活动调度机制。
S-MAC由一个开始的同步时间段开始,交换SYNC消息形成虚拟簇。
相同虚拟簇下的节点可以传输数据。
节点只有在活动阶段才发送消息,如图1.1SMAC采用数据传递机制,通过这种周期性的修眠/活动工作机制,节点降低了闲置侦听,降低了能耗。
无线传感器网络安全路由协议SNEP的分析与仿真实现_王芳
第23卷第5期2009年10月江苏科技大学学报(自然科学版)Journa l of J i angsu U niversity of Science and T echno l ogy(N atura l Sc i ence Editi on)V o.l 23N o .5O c t .2009无线传感器网络安全路由协议S NEP 的分析与仿真实现王 芳,华 伟,宋晓宁(江苏科技大学计算机科学与工程学院,江苏镇江212003)摘 要:以提供可靠保密通信为目标的安全路由协议的分析是无线传感器网络安全基本研究领域之一.阐述了针对无线传感器网络的攻击手段所采取的措施,研究了安全路由协议,重点研究了其中的传感网络加密协议(Sensor N et wo rk Encryp -ti on P rotoco ,l SNEP),并进行了仿真实现,最后针对无线传感网络的攻击方式对S NEP 的安全性进行了分析.结果证明SNEP 协议具有数据机密性、数据认证、防御重放攻击等安全服务.关键词:无线传感器网络;网络仿真;安全;路由协议中图分类号:TP393 08 文献标志码:A 文章编号:1673-4807(2009)05-0425-05收稿日期:2009-02-24基金项目:国家863高技术计划基金资助项目(2006AA01Z436)作者简介:王 芳(1971 ),女,江苏镇江人,讲师,研究方向为网络安全.E-m ai:l hu ashan3010@sina .co mSecurit y routi ng prot ocol S NEP anal ysis and simul ationfor w ireless sens or networksW ang Fang ,HuaW e,i Song X iaon i n g(School of Co m puter Sci en ce and E ngi neeri ng ,Jiangs u Un i versity of Science and Techno l ogy ,Zhen jiang J i angs u 212003,Ch i na)Abst ract :The analysis of security routi n g protocolw hose m ain ob jective is to provide re li a b le co mm unication is one of the basic research field of secure w ire less sensor net w orks .This paper descri b ed the solutions of vari o us attacks for w ire less sensor net w o r ks ,and investigated security routi n g pr o toco.l It espec i a ll y focused on sensor net w or k encrypti o n pr o toco l SNEP ,and si m ulated the protoco.l Further m ore ,the aut h ors analyzed the security for SNEP .The results sho w tha t SNEP has security serv ices i n cluding data confidentiality ,data authenticati o n,and rep lay a ttacks .K ey w ords :w ireless sensor net w ork ;net w ork si m ulation ;security ;routi n g protocol 无线传感器网络(W ireless Senso r N et w o r k ,W SN )是新兴的一代传感器网络,综合了微电子技术、嵌入式计算技术、现代网络及无线通信技术、分布式信息处理技术等先进技术.与传统无线通讯网络Ad H oc 网络相比,W SN 的自组织性、动态性、协作性和以数据为中心等特点,使其可以应用到人员无法到达的地方,比如战场,沙漠等.因此W SN 被广泛应用于国防军事、环境检测、交通管理等领域.无线传感器网络是一种特殊的无线网络,不仅面临着传统网络所受到的安全威胁,而且面临着自身一些特殊的安全威胁,主要表现[1]: 无线通信很容易受到攻击; 节点可能失效或被敌方俘获; 网络拓扑结构变化使节点信任关系也随之变化,特别是有节点被检测出为破坏节点时;网络决策和算法的执行往往需要多个节点协作实现,敌方可以针对协作过程实施新类型的攻击,破坏协作的完成.目前针对各种潜在的攻击和安全威胁采取的相应的防范和管理措施为:密钥建立和管理、安全路由、入侵检测、安全广播和组播、防止窃听、安全数据汇聚、安全定位、防止物理攻击和防范拒绝服务(Denia l o f Ser v ice ,DoS)攻击等.从2000年开始,国内外科技工作者对W SN 的研究越来越热烈,在基础理论和工程技术2个方面提出了大量问题[2],尤其在路由协议方面仍然有很多关键问题没有解决,例如结构频繁改变的路由协议、面向应用的路由协议、安全路由协议等问题.分析了入侵容忍路由协议(I ntr usi o n -to lerant r outi n g pr o tocol for w ireless sensor net w or ks ,I NSE NS)[3],基426江苏科技大学学报(自然科学版)第23卷于位置的可信传感网络路由协议(Trusted routi n g for location a w are sensor net w orks,TRANS)[4],通过协商的信息传感网络协议(Sensor Protoco l for I nfor m ati o n via Negotiation,SPI N)以及传感网络加密协议(Sen-sor Net w ork Encr yption Protoco,l SNEP),认为安全路由协议在配置网络节点拓扑结构、定义报文内容格式、识别节点身份等方面具有非常重要的作用,并且SNEP协议本身只描述安全实施的协议过程,并不规定实际使用的算法[5],具体的算法在具体实现的时候考虑.因此本文对SNEP进行了仿真实现,并给出了SNEP的安全分析.结果表明SNEP协议是个低通信开销的、简单高效的安全通信协议.1 S NEP安全协议传感网络加密协议SNEP的功能是提供节点到接收机之间数据的鉴权、加密和刷新.SNEP有许多特有的优势: 对通信的负担比较小,因为SNEP只是在每条信息后面加了一些位的数据; 使用了计数功能,但是避免了传输这些值,而是在节点间通过状态来检验; SNEP保持了语义上的安全,可以防止窃听; SNEP能提供认证,重放保护,以及新鲜性等.目前科技工作者研究较多的SPI NS协议是可选的传感器网络安全框架之一,是基于时间的、高效的、容忍丢包的流认证协议(m icro T i m ed E fficient Strea m i n g Loss-to lerant A uthen tica ti o n Protoco,l -TESLA)和SNEP协议相结合的产物,通过 -TESLA来完成广播的认证,再通过SNEP来完成数据保密性、完整性和新鲜性的保护[6].射频信道发送随机数据需要更多的能量,因此SNEP设计了一种加密机制,通过不需要增加传输量的方法来达到保护语义安全的目的.SNEP使用的方式是在发送者和接收者之间共享计数器.通信方都有共享的计数器,并且在每次加密块之后都会增加计数器的值,所以计数器的值不需要包含在被传输的消息中.为了达到双向认证和数据完整性的保护,SNEP采用了信息的认证码(M essage Authen-tication Code,MAC)方式.以上机制的组合形成了传感网络加密协议SNEP.加密数据的格式为:E={D}(K encr,C),其中, D是需要传送的数据,K en cr为使用的加密密钥,而C就是计数器.MAC的值是M=MAC(K mac,C|E),其中,K mac表示消息认证算法的密钥,C|E为计数器值C和密文E的粘接,表明消息认证码是对计数器和密文一起进行运算.K encr和K mac是通过主密钥K生成出来的.从节点A发送到节点B的消息R A格式如下[5]A B:{D}(K encr,C),MAC(K mac,C|{D}(K en cr,C))SNEP协议具有的特性:1)语义安全 计数器的值在每个消息发送之后都会增加,所以每次消息加密后都不一样.而计数器的长度足够长,从而保证在节点的生命周期内不会重复.2)数据认证 若MAC值验证通过,接收者可确定消息是正确的发送者所发出的.3)重放攻击保护 MAC中计数器的值防止了旧信息的重放.这是因为如果计数器的值不放在MAC中进行加密,攻击者就能很容易采取重放攻击.4)低通信量 计数器的状态是存储在每个节点自身,所以不必在每条消息中都发送.因为只采用了在节点A发往节点B的消息中加入计数器的方法,而没有保证节点A所响应的信息的确是由节点B发出的,所以简易版的SNEP 只能提供弱数据新鲜性.这种新鲜性认证存在一个问题,如果节点A收到的回复消息不是按照其请求包发送顺序给出的,那么它将不能为每个请求回送正确的响应[7].为此,SNEP定义了强新鲜认证方法.2 S NEP协议仿真实现针对无线传感网络的不同应用有不同的仿真工具,如J-Si m,OMN e T++,SE NSE,TOSSI M,Sha w n 等[8].NS-2是一个基于离散事件的网络仿真器,具有丰富的构件库,能够仿真网络运行的全过程.但其构件库不可能包括所有特定用户所需要的模块.因此,对于从事网络研究的用户来说,在NS-2的基础上进行源代码的修改和再开发是不可避免的. NS-2具有的仿真功能允许一个运行的模拟器和真实的网络节点交互,在协议设计上是一个很强的工具.本文采用NS-2网络模拟平台来进行模拟仿真.首先使用一个简单的泛洪F l o od i n g协议作为通信协议,在此上进行SNEP的加密.系统中维护了一张路由表来记录以前转发过的包.每个节点在路由过程中维护一个计数器,每发送一个包后就将计数器增加1,并且把该计数器通过MAC算法加密后进行传递.考虑到重用性,对数据的对称加密使用了数据加密标准(Data Encr yption Standard, DES)算法,而MAC算法则使用了DES的密码分第5期王 芳,等:无线传感器网络安全路由协议SNEP 的分析与仿真实现427组链接下的信息认证码(C ipher B l o ck Cha i n ing M essage Authenticati o n Code ,CBC -MAC )模式.本文模拟的是较简单的情况,即节点A 发送消息D A 给节点B,然后节点B 发送一个反馈消息给节点A.具体步骤为:1)A 发送信息给B.节点A 通过在发往节点B 的消息中加入新鲜数N A 的方式来达到强新鲜性的保护(N A 是一个随机选取而且足够长的数字,从而保证它是不能被预测出的).A 随机产生新鲜数N A ,然后把它一起随请求信息R A 发送给节点B (图1).图1 节点A 发送请求消息的流程图F i g .1 Flo w char t of node A send i ng request m essage2)B 接收和认证.在节点B 完成了认证以后,如果不成功,则B 会把这个A 发送的消息丢弃,如果认证成功,则B 将准备反馈信息.B 用认证的协议在返回给A 的信息R B 中加入A 发送给B 的新鲜数.为了避免在B 反馈给A 的信息中直接把新鲜数放进去,在SNEP 协议中把新鲜数放入MAC 编码中用MAC 算法进行加密(图2).SNEP 协议提供的强新鲜性消息格式是A B :N A ,{D A }(K encr ,C),MAC(K mac ,C |{D A }(K encr ,C))BA :{DB }(K encr ,C),MAC(K mac ,N A |C |{D B }(Kencr ,C))图2 节点B 反馈消息的流程图Fig .2 F l ow chart of node B send i ng feedback m essage3)A 在接收到B 的反馈信息后,如果MAC 值验证正确,节点A 就知道是节点B 在收到了请求信息后发送了这个反馈信息(图3).在NS-2平台上,光有协议代码是不够的,还需要写一些T cl 代码来验证所写的协议程序是否正确.采用最简单的场景测试,用3个节点A,B,C 构成一个2跳的拓扑结构.以A 作为发送源,C 为接收者,B 为中间转发节点.运行后产生的trace 结果如下s 10 000000000_0_AGT ---0cbr 512[0000]-------[0:02:0320][0]00r 10 000000000_0_RTR---0cbr 512[0000]-------[0:02:0320][0]00s 10 000000000_0_RTR ---0cbr 532[0000]-------[0:02:0300][0]00f 10 005056593_0_RTR ---0cbr 532[0ffffffff 0800]------[0:02:0290]10r 10 009829093_2_AGT---0cbr 532[0ffffffff 1800]------[0:02:0290]20其中,s ,r ,f 分别标记发送、接受和转发.后面依次是触发的时间、节点号、包的类型、大小、序列号, 0:02:0 表示的是 源地址:端口目标地址:端口 .428江苏科技大学学报(自然科学版)第23卷图3 节点A认证节点B反馈信息的流程图F ig.3 Flo w chart of node A s au thentication ofnode B s feedback从上述仿真过程可以看出,在设计的场景中, SNEP安全协议的加密是可以在一个简单的泛洪协议的基础上叠加的.SNEP协议的计算开销为1次加密和1次MAC计算.29字节负载的各类密码算法对微处理器ATm ega128L工作在7 3728MH z频率的CP U 的影响结果见表1.表2则是计算29字节分组MAC对CP U的影响.由于SNEP不规定实际使用的算法,各密码算法和MAC对CPU的影响也不尽相同.考虑到重用性,对数据的对称加密选用了DES 算法,通过比较发现采用DES算法来实现加密和MAC占用了大量CPU资源,因此SNEP协议最好选取算法SkipJac k,RC5或者TEA来进行加密和消息认证的实现才能充分减少CP U计算开销[6].在能量开销方面,假设发送的分组包长度为30字节,MAC增加了8字节,而且MAC能够进行完整性保护,这样就不需要额外的2字节循环冗余校验(Cyc lic Redundancy Check,CRC),故网络净开销只有6字节,因此需要总发射能量的20%开销.其余能量开销为用于数据传输的能量占总能量的71%,用于保持数据新鲜性的随机数传输占7%,还有2%的能量开销用于MAC和加密计算.表1 29字节负载的各类密码算法对CPU的影响Tab le1 The i m pact of29-byte s p ayload ciph eron CPU consump tion算法时间/m s CP U周期Sk i p J ack2 1615925 2RC51 5011059 2RC610 7879478 7TEA2 5618874.4DES608 004482662 4表2 计算29字节分组M AC对CPU的影响T ab le2 Th e i mpact of calcu lati ng29-by te packetMAC on CPU consump ti on算法时间/m s CP U周期Sk i p J ack299 0022044 6RC52 0815335 4RC615 84116785 2TEA25 0737380 1DES1208 008906342 4总之,SNEP协议提供了点到点通信认证、数据机密性、完整性和新鲜性等安全服务,是一个低通信开销的简单高效的安全通信协议.3 S NEP协议安全性分析3.1 数据机密性针对机密性的主要攻击方式是监视与窃听攻击.仿真时对数据包采用的是DES加密,虽然是比较简单的对称加密,而且已经有了破解的算法,但是基于节点非常有限的资源,破解的可能性就比较小,因此可以认为窃听、监视的攻击是没有效果的.3.2 数据认证针对数据认证的攻击主要是用来防止伪装.攻击者有可能伪装成传输过程中的一员来进行传输,企图达到获得消息的目的.但是因为SNEP协议中的节点加密所采用的密钥都是事先由一个主密钥生成,所以一个外来的攻击者即使伪装成网络中的一员,也会因为它没有密钥而无法获得MAC码和DES密文的破译过程.3.3 重放攻击SNEP对于重放攻击的防御非常有效.不仅采用了计数器,并且采用了在端和端之间保存状态的方法,使得计数器的使用更符合无线传感网络的特点.每次在传输的数据末尾加上了计数器之后再进行加密,使得相同的明文和密钥加密得出的密文也是不同的,解决了重放攻击可能造成的问题.第5期王 芳,等:无线传感器网络安全路由协议SNEP的分析与仿真实现4294 结论1)研究了安全路由协议,对其中的传感网络加密协议SNEP进行了较深入的研究.2)仿真实现了SNEP协议3)针对无线传感网络的攻击方式对SNEP的安全性进行了分析.结果证明SNEP协议具有数据机密性、数据认证、防御重放攻击等安全服务.参考文献(References)[1]王芳,史金龙,刘同明.无线城域网络安全架构及其认证方法研究[J].江苏科技大学学报:自然科学版,2007,21(5):76-79.W ang F ang,Sh i Ji n l ong,L i u T ongm i ng.R esearch on se-cur i ty architec t ure and authen ticati on m e t hods for w i re l ess m etropo li tan area net wo rk[J].J ournal of J iangsu Univer-sit y of Science and T echnology:N at ural S cience Edition,2007,21(5):76-79.(i n Ch i nese)[2]李建中,高宏.无线传感器网络的研究进展[J].计算机研究与发展,2008,45(1):1-15.L i Ji anzhong,G ao H ong.Survey on sensor ne t w ork re-search[J].Journal of Computer R esearch and D evelop-m ent,2008,45(1):1-15.(i n Chi nese)[3]D eng J,H an R,M is hra S.I N SE N S:i ntrusion-to l eran trouti ng i n w ireless sensor ne t w orks[R].T echn ical R e p ort CUCS-939-02.U SA:D epart m ent o f Co m puter Sc ienceof U niversity of Colorado,2002.[4]T anachai w i w at S,Dave P,Bhind w a l e R,et a.l Poster ab-strac t secure locati ons:routi ng on trust and i so lati ng com-pro m ised senso rs i n l ocation-aw are senso r net wo rks[C]// P roceedings of the1st International Conf erence on Embed-d e d N et w orked Sensor Sy ste m s.[S..l]:AC M P ress,2003:324-325.[5]裴庆褀,沈玉龙,马建峰.无线传感器网络安全技术综述[J].通信学报,2007,28(8):113-122.P ei Q i ngq,i Shen Y u l ong,M a Ji anfeng.Survey of w ire-l ess senso r net wo rk security techniques[J].Journal on Comm unication,2007,28(8):113-122.(in Chi nese) [6]Gu i m araes G,Souto E,Sadok D,et a.l Evalua ti on o f se-cur ity m echan is m s i n w ireless sensor net works sy stem s co mm un i ca tions[C]//Proceedings of the2005Sy ste m s Comm unication.[s.n.],2005:428-433.[7]孙利民.无线传感器网络[M].北京:清华大学出版社,2005.[8]袁凌云,朱云龙.基于N S2的无线传感器交通监控网络仿真[J].系统仿真学报,2007,19(3):660-664.Y uan L i ngyun,Zhu Yunlong.W ire l ess sensor transpo rta-ti on mon i to ri ng ne t w ork si m ulation based on NS2[J].J ournal of Sy ste m Si mulation,2007,19(3):660-664.(i n Ch i nese)(责任编辑:曹 莉)。
基于0MNeT++的无线传感器网络通信协议仿真
基于0MNeT++的无线传感器网络通信协议仿真摘要:本文以0MNeT++为基础,仿真了无线传感器网络通信协议。
主要实现了以下几个方面:首先,搭建了仿真环境,并选择了适宜的仿真参数;其次,建立了基于0MNeT++的无线传感器网络通信协议仿真平台;然后,根据所选的仿真参数和通信协议构建了仿真场景;最后,通过测试和分析得出了有效的结论和解决方法。
本文的研究结果有望为无线传感器网络通信协议的实际应用提供有力的支持。
关键词:0MNeT++,无线传感器网络,通信协议,仿真,结论,解决方法正文:一、引言无线传感器网络(WSN)是目前普遍应用于有限场景下(如室内或建筑)的物联网系统,它的独特之处在于由大量的小型传感器组成。
WSN的传感器单位能够自主采集环境中的各种信息,并根据功能进行数据处理和通信,因此它能够在安防、健康监控、工业等许多领域发挥着越来越重要的作用。
本文主要基于0MNeT++,通过仿真的方式实现WSN的通信协议,包括以下几个步骤:1. 搭建仿真环境,包括电脑软件、0MNeT++交叉编译环境;2. 构建无线传感器网络通信协议仿真平台,包括协议与应用;3. 选择适宜的仿真参数,包括仿真场景、传感器节点数量、仿真步骤等;4. 进行仿真测试,并分析仿真结果;5. 得出有效结论和解决方法。
二、仿真环境的搭建本文所用的仿真环境基于0MNeT++开发平台,这是一款开源C++模拟器,可以模拟包括网络性能、节点运行和通信质量在内的各种情况。
三、无线传感器网络通信协议仿真平台的构建本文的无线传感器网络通信协议仿真平台主要基于0MNeT++平台实现,要实现WSN通信协议仿真,必须先经过下述步骤:1. 确定无线传感器网络节点数量与部署;2. 确定应用层通信协议,包括数据格式、应用程序等;3. 实现0MNeT++节点程序和仿真场景。
四、仿真参数的选择在进行0MNeT++之上的无线传感器网络通信协议仿真时,需要从一个合适的传感器场景开始。
无线传感器网络路由协议概述
无线传感器网络路由协议概述摘要:该文对无线传感器网络的路由协议进行了简要概述,总结了典型的平面路由协议和层次路由协议(分簇路由协议),重点介绍了leach路由协议和eeuc路由协议,并分析了其基本原理,最后对leach协议、leach-c协议和eeuc协议进行了模拟仿真,并对结果进行了简要分析和总结。
关键词:无线传感器网络;路由协议;leach中图分类号:tp393 文献标识码:a 文章编号:1009-3044(2013)11-2548-031 概述无线传感器网络是继承了计算机、通信和信息感知三大学科中众多科学知识的新兴领域,对无线传感器网络的认识,随着大量的相关研究而不断深入。
简单来说,无线传感器网络就是由传感器节点组成的,通过无线通信方式形成的一个多跳自组织网络[1]。
路由协议解决的是数据传输问题,是无线传感器网络的核心技术之一。
路由协议的性能和整个网络的性能密切相关。
无线传感器网络的路由协议骑着监控网络拓扑变化,建立、维护和删除节点间路由,保证在恶劣环境中节点间信息能准确、高效和及时传递的作用。
无线传感器网络节点间以ad-hoc方式进行通信,每个节点都可以充当路由器的角色,并且每个节点都具备动态搜索、定位和回复连接的能力。
路由协议负责将数据分组从源节点通过网络转发到目的节点。
它主要包括两个方面的功能,一是寻找源节点和目的节点间的优化路径,二是将数据分组沿着优化路径正确地进行转发[2]。
无线传感器网络的路由协议根据网络的拓扑结构的差别,可以分为平面路由协议和层次路由协议[3-4](即分簇结构路由协议)。
该文主要介绍几种常用路由协议,并对其进行仿真实验。
2 平面路由协议在平面路由协议的无线传感器网络中,所有传感器节点的地位平等,逻辑视图是平面结构。
因此不存在特殊节点,网络能耗均衡,鲁棒性好。
洪泛和闲聊(flooding and gossiping)[4]这种路由方式是最原始最传统的路由方式,不需要网络的任何拓扑信息、数据信息和路由信息,是典型的平面路由协议。
无线传感器网络flooding路由协议的MATLAB仿真
无线传感器网络flooding路由协议的MATLAB仿真摘要无线传感器网络是计算机科学技术的一个新的研究领域,是传感器技术、嵌入式计算技术、分布式信息处理技术和无线通信技术相结合的产物。
与传统网络相比,无线传感器网络具有造价低、功耗低、布局灵活性强、监测精度高等特点,因此在军事、医疗、家用等多个领域均有广阔的应用市场。
本文重点研究基于无线传感器网络的泛洪式路由协议,无线传感器网络节点数量庞大、单个节点资源有限,其路由协议设计的首要目标是提高能量有效性,延长网络寿命。
本文总结了WSN的概念、结构、特点,分析了WSN的关键性技术问题及网络协议;研究了WSN的网络协议体系和路由协议的分类,分析比较了目前国内外学者提出的几种有代表性的路由协议及其性能优缺点;选择了flooding路由协议为研究重点,分析了该路由算法的具体实现,针对传感器节点能量及传输范围有限等特点,提出了一种基于延迟的自适应泛洪路由算法,首先通过源节点在网内用较小的路由请求报文和路由回复报文来建立路由,路由建立的过程中自适应地确定等待时间以使更优的路由请求报文得到转发,然后源节点再沿着建立好的路径转发较大的数据报文。
并采用MATLAB网络仿真工具对该路由协议进行了整体仿真,并对其数据进行了分析。
仿真实验表明新算法较Flooding节能,能较好的克服Flooding算法中报文冗余度高、能耗大等不足。
关键词:无线传感器网络;flooding路由协议;MATLAB仿真ABSTRACTWireless sensor networks are a new research field of computer science and technology. They are the integration of sensor techniques, nested computation techniques, distributed computation techniques and wireless communication techniques. Comparing with traditional networks, the wireless sensor networks features with low cost, low power loss, flexible layoutand high monitor precision, therefore the sensor networks can be used for various application are as such as military, chemical, home.This article focus on wireless sensor networks based on the Pan Hung-routing protocol, wireless sensor network nodes large number of individual nodes with limited resources, the routing protocol designed first and foremost objective is to improve energy efficiency and extend the network lifetime. This paper summarizes the WSN the concept, structure and characteristics of the WSN the key technical problems and network protocols; study of the WSN system and network routing protocol agreement the classification, analysis and comparison of the current domestic and foreign scholars have proposed several representatives The routing of the agreement and its performance advantages and disadvantages; chosen the flooding focus on routing protocols, analysis of the routing algorithm to achieve the specific, the sensor nodes the limited scope of energy and transmission characteristics, a delay based on the Adaptive Flood routing algorithm, first of all through the nodes in the network source in the smaller routing, and routing the request to restore the text to create a routing, routing the process of establishing adaptive to determine the waiting time to make better Routing the request was transmitted by text, and then another source nodes along the path forward the establishment of good data on the larger text. MATLAB and use the network simulation tool for the overall routing protocol simulation, and the data were analyzed. The simulation shows that the new algorithm than Flooding energy-saving, can better overcome Flooding algorithm message redundancy and high energy consumption, such as the insufficient.Keywords:WSN;flooding routing protocols;MATLAB Simulation目录1 绪论 (1)1.1 课题背景 (1)1.2 国内外技术研究现状 (2)1.3 课题研究的目的和意义 (3)2 WSN综述 (4)2.1 WSN的概念 (4)2.2 WSN的结构 (4)2.2.1 节点结构 (4)2.2.2 网络体系结构 (5)2.3 WSN协议栈 (6)2.4 WSN的拓扑结构 (7)2.5 WSN的特点 (10)2.6 WSN的关键性技术问题 (11)2.6.1 功耗问题 (12)2.6.2 节能策略 (12)2.6.3 通信问题 (14)2.6.4 网络安全问题 (15)2.6.5 定位问题 (15)2.6.6 数据管理 (15)2.6.7 服务质量 (16)2.6.8 嵌入式操作系统 (16)3.WSN路由协议算法分析 (17)3.1 WSN路由协议的分类方法 (17)3.2 几种典型路由协议的分析 (18)3.2.1 平面路由协议 (18)3.2.2 分层路由协议 (22)4 Flooding路由协议的分析与研究 (27)4.1 泛洪算法模型 (27)4.2 算法流程图 (28)4.3 基于延迟的自适应洪泛路由算法 (29)4.3.1 算法中用到的报文和数据 (29)4.3.2 SFD算法描述 (30)4.3.3 性能比较尺度 (31)4.3.4 理论分析 (32)5 Flooding路由协议的MATLAB仿真 (35)5.1 MATLAB仿真平台介绍 (35)5.2 算法仿真实验参数 (38)5.3 实验结果 (39)6 结论 (42)致谢 (43)参考文献 (44)附录A:英文原文 (45)附录B:中文翻译 (51)附录C:程序代码 (55)1 绪论1.1 课题背景无线传感器网络是新兴的下一代传感器网络,最早的代表性论述出现在1999年,题为“传感器走向无线时代”。
无线传感器网络节能路由协议研究 仿真程序 毕设等
clear;clear;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% w=4;%Field Dimensions - x and y maximum (in meters)100*100的区域xm = 100;ym = 100;%x and y Coordinates of the Sink sink节点的坐标sink.x =100;sink.y =200;%Number of Nodes in the field 总共200个节点n=50*w;%Optimal Election Probability of a node%to become cluster head 簇节点选择概率p=0.05;packetLength = 4000;%数据包长度ctrPacketLength = 100;%控制包长度%Energy Model (all values in Joules)%Initial Energy 初始能量Eo = 0.5;%Eelec=Etx=Erxenode0 = 0;ETX=50*0.000000001; %50nj/bitERX=50*0.000000001; %50nj/bit%Transmit Amplifier typesEfs=10*0.000000000001; %10pj/bit/m2Emp=0.0013*0.000000000001;%0.0013pj/bit/m4%Data Aggregation EnergyEDA=5*0.000000001; %5nj/bit/signal%Values for Hetereogeneity%Percentage of nodes than are advanced%m=1;%\alpha%a=1;INFINITY = 999999999999999;%maximum number of rounds 最大轮询次数rmax=3000;node_1=0;node_2=0;node_3=0;node_1_x=0;node_2_x=0;node_3_x=0;node_1_z=0;node_2_z=0;node_3_z=0;%%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%Computation of do 一个距离的计算根据能量公式参考wendi的phd论文do=sqrt(Efs/Emp);%取平方根%Creation of the random Sensor Networkfor i=1:1:n%n=200 200个节点数设置节点位置及初始能量和状态S(i).xd=rand(1,1)*xm;%坐标x,rand(1,1)产生一个0,1之间的随机数s(i)表示的是数组XR(i)=S(i).xd;S(i).yd=rand(1,1)*ym;YR(i)=S(i).yd; %将随机产生的点S(i).G=0; %初始化的时候,没有簇头产生的个数集合%initially there are no cluster heads only nodesS(i).type='N';%普通节点%temp_rnd0 = i;%Random Election of Normal Nodes%if (temp_rnd0>=m*n+1)S(i).E=Eo; %每个节点的能量保持为0.05 该数组表示的是能量的存贮% S(i).ENERGY=0; %初始消耗的能量???未知ing% end%Random Election of Advanced Nodespriority(i) = randint(1,1,[1,3]);figure(1);plot(S(i).xd,S(i).yd,'+');hold on;endnode_1_x = node_1;node_2_x = node_2;node_3_x = node_3;S(n+1).xd=sink.x; %基站位置x坐标S(n+1).yd=sink.y; %基站位置y坐标%First Iteration%counter for CHs total簇头个数countCHs=0;%counter for CHs per round 每轮的簇头个数rcountCHs=0;cluster=1;rcountCHs=rcountCHs+countCHs;flag_first_dead_old=0;flag_first_dead=0;node_p1 = 0;node_p2 = 0;node_p3 = 0;node_p1_x = 0;node_p2_x = 0;node_p3_x = 0;for r=0:1:rmax %主循环,每次1轮r;ENOLD(r+1)=0;enode0=0;for i=1:1:n;ENOLD(r+1)=S(i).E+ENOLD(r+1);%第r轮所有节点的总能量endEAOLD(r+1)=ENOLD(r+1)/n; %这个是第r轮的平均能量%Operation for epochif(mod(r, round(1/p) )==0) %20的整数倍轮数时for i=1:1:nS(i).G=0;%还未当选簇头的节点集合,因为是要判断前1/p轮中是否有节点时簇节点S(i).cl=0;%plot(S(i).xd,S(i).yd,'*');%这是绘制节点位置endendhold off;%Number of dead nodes 每一轮开始的时候将该轮的统计参数清零dead=0;dead_old=0;%Number of dead Advanced Nodes%dead_a=0;%Number of dead Normal Nodesdead_n=0;dead_n_old=0;node_p1 = 0;node_p2 = 0;node_p3 = 0;%counter for bit transmitted to Bases Station and to Cluster Heads%counter for bit transmitted to Bases Station and to Cluster Heads%per round%figure(1);for i=1:1:n%checking if there is a dead nodeif S(i).E>0S(i).type='N';%如果节点能量大于0,则类型为正常endend%countCHs=0;cluster=1;for i=1:1:nif(S(i).E>0)temp_rand=rand;if ( (S(i).G)<=0) %如果该节点在候选集合中保证钱1/p轮没该节点不是簇节点%Election of Cluster Headsif( temp_rand <= (p/(1-p*mod(r,round(1/p))))) %判断一个节点的概率是否小于阈值countCHs = countCHs+1;%簇节点数加一S(i).type = 'C';%该节点的类型变为簇节点S(i).G = round(1/p)-1;%簇头节点的位置C(cluster).xd = S(i).xd;C(cluster).yd = S(i).yd;%plot(S(i).xd,S(i).yd,'k*');distance=sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 );%到sink的距离,因为是簇节点所以直接到sink节点C(cluster).distance = distance;C(cluster).id = i;%表示第i个节点时簇节点X(cluster)=S(i).xd;Y(cluster)=S(i).yd;cluster=cluster+1;%广播自成为簇头distanceBroad = 50;%sqrt((S(i).xd)^2+(S(i).yd)^2);???????????????广播包的距离是50%%%需要判断所剩的能量是否足以发送if(S(i).E>=( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceBroad )) || S(i).E>=( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad)))if(distanceBroad > do)%大于极限距离就是4次方,小于则是2次方发送控制比特也就是广播包,广播给其他节点,不是给sinkS(i).E = S(i).E- ( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceBroad ));%广播自成为簇头elseS(i).E = S(i).E- ( ETX * ctrPacketLength + Efs * ctrPacketLength*( distanceBroad*distanceBroad));endelseS(i).E = 0;endif(S(i).E >= ( (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance*distance*distance )) || S(i).E >= ( (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance )))%Calculation of Energy dissipated 簇头自己发送数据包能量消耗distance;%这是到sink节点的距离if (distance > do)%发送数据到sink节点所剩的能量S(i).E = S(i).E- ( (ETX+EDA)*(packetLength) + Emp *packetLength*( distance*distance*distance*distance ));elseS(i).E = S(i).E- ( (ETX+EDA)*(packetLength) + Efs * packetLength*( distance * distance ));endelseS(i).E = 0;endendendendendSTATISTICSOLD(r+1).CLUSTERHEADS = cluster-1;%统计第r轮簇头数目,r是从0开始的,所以加1;cluster最后要-1,是应为上面的循环多加了1CLUSTERHSOLD(r+1)= cluster-1;%Election of Associated Cluster Head for Normal Nodesfor i=1:1:nif ( S(i).type=='N' && S(i).E>0 ) %普通节点min_dis = sqrt( (S(i).xd-S(n+1).xd)^2 + (S(i).yd-S(n+1).yd)^2 );%默认距离是到sink 的距离%min_dis = INFINITY;if(cluster -1 >= 1)%如果有簇头存在min_dis_cluster = 1;%加入最近的簇头for c = 1:1:cluster - 1 %簇头数量一共是cluster - 1%temp = min(min_dis,sqrt( (S(i).xd - C(c).xd)^2 + (S(i).yd - C(c).yd)^2 ) );temp = sqrt( (S(i).xd - C(c).xd)^2 + (S(i).yd - C(c).yd)^2 ); %判断到已有簇节点的距离if ( temp < min_dis )min_dis = temp;min_dis_cluster = c; %标记簇节点标号(节点所属的簇节点)通过循环找到到簇节点距离最小的簇节点end%接收簇头发来的广播的消耗S(i).E = S(i).E - ETX * ctrPacketLength;endenergy_1 = ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis * min_dis * min_dis) + ETX*(packetLength) + Emp*packetLength*( min_dis * min_dis * min_dis * min_dis);energy_2 = ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis ) + ETX*(packetLength) + Emp*packetLength*( min_dis * min_dis);%Energy dissipated by associated Cluster Head普通节点发送数据包到簇头消耗,和加入消息%min_dis;if(S(i).E >= energy_1+ETX*(ctrPacketLength) || S(i).E >= energy_1+ETX*(ctrPacketLength))if(min_dis > do)%每个节点需要发送一个回应加入群的包和传输数据包的能量S(i).E = S(i).E - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis * min_dis * min_dis)); %向簇头发送加入控制消息S(i).E = S(i).E - ( ETX*(packetLength) + Emp*packetLength*( min_dis * min_dis * min_dis * min_dis)); %向簇头数据包elseS(i).E = S(i).E - ( ETX*(ctrPacketLength) + Efs*ctrPacketLength*( min_dis * min_dis)); %向簇头发送加入控制消息S(i).E = S(i).E - ( ETX*(packetLength) + Efs*packetLength*( min_dis * min_dis)); %向簇头数据包endS(i).E = S(i).E - ETX*(ctrPacketLength); %接收簇头确认加入控制消息elseS(i).E = 0;end%Energy dissipated %簇头接收簇成员数据包消耗能量,接收加入消息和和确认加入消息if(min_dis > 0)%这就是簇节点接收加入信息和数据的能量if(S(i).E >= (ERX + EDA)*packetLength + ERX *ctrPacketLength)S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( (ERX + EDA)*packetLength ); %接受簇成员发来的数据包S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ERX *ctrPacketLength ; %接收加入消息if (min_dis > do)%簇头向簇成员发送确认加入的消息S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis * min_dis * min_dis));elseS(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( ETX*(ctrPacketLength) + Efs * ctrPacketLength*( min_dis * min_dis));endelseS(i).E = 0;endPACKETS_TO_CH(r+1) = n - dead - cluster + 1; %所有的非死亡的普通节点都发送数据包endS(i).min_dis = min_dis;S(i).min_dis_cluster = min_dis_cluster;%i 节点所属的簇节点号%endelse%S(i).E = S(i).E - ETX*(packetLength); %向簇头数据包if(S(i).E >= ETX*(packetLength))S(i).E = S(i).E - ETX*(packetLength); %向簇头数据包elseS(i).E = 0;endendendendfor i=1:1:n%checking if there is a dead nodeif (S(i).E<=0) %如果能量小于0,则死亡节点数加一dead_old=dead_old+1;%统计死亡节点的数量统计的是一轮的数量S(i).E=0;endendSTATISTICSOLD(r+1).DEAD=dead_old;%将统计的该轮死亡节点的数量赋值给总的轮数中死亡节点的数组r+1的原因是数组是从0开始定义的DEADOLD(r+1)=dead_old;if (dead_old==1)if(flag_first_dead_old==0)first_dead_old=r %第一个死亡节点的轮数恢复成数组0开始的形式flag_first_dead_old=1;endenddead_old = 0;%hold on;countCHs;rcountCHs = rcountCHs + countCHs;%对所有轮簇节点的统计和endfor i=1:rmax;yold(i) = n - STATISTICSOLD(i).DEAD;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%%enode0_x = 0;for i=1:1:n%n=200 200个节点数设置节点位置及初始能量和状态%S(i).xd=rand(1,1)*xm;%坐标x,rand(1,1)产生一个0,1之间的随机数s(i)表示的是数组XR_x(i)=S(i).xd;% S(i).yd=rand(1,1)*ym;YR_x(i)=S(i).yd; %将随机产生的点S(i).G_x=0; %初始化的时候,没有簇头产生的个数集合%initially there are no cluster_x heads only nodesS(i).type_x='N';%普通节点%temp_rnd0 = i;%Random Election of Normal Nodes%if (temp_rnd0>=m*n+1)S(i).E_x=Eo; %每个节点的能量保持为0.05 该数组表示的是能量的存贮endS(n+1).xd=sink.x; %基站位置x坐标S(n+1).yd=sink.y; %基站位置y坐标%First Iteration%figure(1);%counter for CHs total簇头个数countCHs_x=0;%counter for CHs per round 每轮的簇头个数rcountCHs_x=0;cluster_x=1;rcountCHs_x=rcountCHs_x+countCHs_x;flag_first_dead_old_x=0;flag_first_dead_x=0;dis_min = 100;dis_max = 0;for i=1:1:ndis_bs(i) = sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 );if(dis_bs(i) < dis_min )dis_min = dis_bs(i);endif(dis_bs(i) > dis_max)dis_max = dis_bs(i);endfor r=0:1:rmax %主循环,每次1轮r;ENOLD_x(r+1)=0;enode0_x=0;for i=1:1:n;ENOLD_x(r+1)=S(i).E_x+ENOLD_x(r+1);%第r轮所有节点的总能量endEAOLD_x(r+1)=ENOLD_x(r+1)/n; %这个是第r轮的平均能量%Operation for epochif(mod(r, round(1/p) )==0) %20的整数倍轮数时for i=1:1:nS(i).G_x=0;%还未当选簇头的节点集合,因为是要判断前1/p轮中是否有节点时簇节点S(i).cl=0;endendhold off;%Number of dead_x nodes 每一轮开始的时候将该轮的统计参数清零dead_x=0;dead_old_x=0;%Number of dead_x Advanced Nodes%dead_a=0;%Number of dead_x Normal Nodesdead_n_x=0;dead_n_old_x=0;%figure(1);for i=1:1:nif S(i).E_x>0S(i).type_x='N';%如果节点能量大于0,则类型为正常endendemax = 0;for i=1:1:nif(i == 1)sum = S(i).E_x;elsesum = sum + S(i-1).E_x;sum = S(i).E_x+sum;endif(S(i).E_x > emax)emax = S(i).E_x;elseemax = emax;endend%countCHs_x=0;cluster_x=1;if(S(i).E_x>0)temp_rand=rand;if ( (S(i).G_x)<=0) %如果该节点在候选集合中保证钱1/p轮没该节点不是簇节点if( temp_rand <= ((p/(1-p*mod(r,round(1/p))))*(0.99*(dis_max-dis_bs(i))/(dis_max) + 0.01*(S(i).E_x)/0.5)))countCHs_x = countCHs_x+1;%簇节点数加一S(i).type_x = 'C';%该节点的类型变为簇节点S(i).G_x = round(1/p)-1;%簇头节点的位置C_x(cluster_x).xd = S(i).xd;C_x(cluster_x).yd = S(i).yd;%plot(S(i).xd,S(i).yd,'k*');distance=sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 );%到sink的距离,因为是簇节点所以直接到sink节点C_x(cluster_x).distance = distance;C_x(cluster_x).id = i;%表示第i个节点时簇节点X_x(cluster_x)=S(i).xd;Y_x(cluster_x)=S(i).yd;cluster_x=cluster_x+1;%广播自成为簇头distanceBroad = 50;%sqrt((S(i).xd)^2+(S(i).yd)^2);???????????????广播包的距离是50%%%需要判断所剩的能量是否足以发送if(S(i).E_x >= ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceBroad) || S(i).E_x >=ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad))if(distanceBroad > do)%大于极限距离就是4次方,小于则是2次方发送控制比特也就是广播包,广播给其他节点,不是给sinkS(i).E_x = S(i).E_x- ( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceBroad ));%广播自成为簇头elseS(i).E_x = S(i).E_x- ( ETX * ctrPacketLength + Efs * ctrPacketLength*( distanceBroad*distanceBroad));endelseS(i).E_x =0;end%Calculation of Energy dissipated 簇头自己发送数据包能量消耗distance;%这是到sink节点的距离if(S(i).E_x >= (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance*distance*distance ) || S(i).E_x >= (ETX+EDA)*(packetLength) + Efs * packetLength*( distance * distance ))if (distance > do)%发送数据到sink节点所剩的能量S(i).E_x = S(i).E_x- ( (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance*distance*distance ));elseS(i).E_x = S(i).E_x- ( (ETX+EDA)*(packetLength) + Efs * packetLength*( distance * distance ));endelseS(i).E_x = 0;endendendendendSTATISTICSOLD_x(r+1).CLUSTERHEADS = cluster_x-1;%统计第r轮簇头数目,r是从0开始的,所以加1;cluster最后要-1,是应为上面的循环多加了1CLUSTERHSOLD_x(r+1)= cluster_x-1;%Election of Associated Cluster Head for Normal Nodesfor i=1:1:nif ( S(i).type_x=='N' && S(i).E_x>0 ) %普通节点min_dis_x = sqrt( (S(i).xd-S(n+1).xd)^2 + (S(i).yd-S(n+1).yd)^2 );%默认距离是到sink的距离%min_dis_x = INFINITY;if(cluster_x -1 >= 1)%如果有簇头存在min_dis_cluster = 1;%加入最近的簇头for c = 1:1:cluster_x - 1 %簇头数量一共是cluster - 1%temp = min(min_dis_x,sqrt( (S(i).xd - C_x(c).xd)^2 + (S(i).yd - C_x(c).yd)^2 ) );temp = sqrt( (S(i).xd - C_x(c).xd)^2 + (S(i).yd - C_x(c).yd)^2 ); %判断到已有簇节点的距离if ( temp < min_dis_x )min_dis_x = temp;min_dis_cluster = c; %标记簇节点标号(节点所属的簇节点)通过循环找到到簇节点距离最小的簇节点end%接收簇头发来的广播的消耗S(i).E_x = S(i).E_x - ETX * ctrPacketLength;end%Energy dissipated by associated Cluster Head普通节点发送数据包到簇头消耗,和加入消息min_dis_x;energy_1x = ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x) + ETX*(packetLength) + Emp*packetLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x);energy_2x = ETX*(ctrPacketLength) + Efs*ctrPacketLength*( min_dis_x * min_dis_x) + ETX*(packetLength) + ETX*(packetLength) + Efs*packetLength*( min_dis_x * min_dis_x);if(S(i).E_x >= energy_1x + ETX*(ctrPacketLength) || S(i).E_x >= energy_2x + ETX*(ctrPacketLength))if(min_dis_x > do)%每个节点需要发送一个回应加入群的包和传输数据包的能量S(i).E_x = S(i).E_x - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x)); %向簇头发送加入控制消息S(i).E_x = S(i).E_x - ( ETX*(packetLength) + Emp*packetLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x)); %向簇头数据包elseS(i).E_x = S(i).E_x - ( ETX*(ctrPacketLength) + Efs*ctrPacketLength*( min_dis_x * min_dis_x)); %向簇头发送加入控制消息S(i).E_x = S(i).E_x - ( ETX*(packetLength) + Efs*packetLength*( min_dis_x * min_dis_x)); %向簇头数据包endS(i).E_x = S(i).E_x - ETX*(ctrPacketLength); %接收簇头确认加入控制消息elseS(i).E_x = 0;endenergy_3x = (ERX + EDA)*packetLength + ERX *ctrPacketLength + ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x);energy_4x = (ERX + EDA)*packetLength + ERX *ctrPacketLength +ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x);if(S(C_x(min_dis_cluster).id).E_x >= energy_3x || S(C_x(min_dis_cluster).id).E_x >= energy_4x)%Energy dissipated %簇头接收簇成员数据包消耗能量,接收加入消息和和确认加入消息if(min_dis_x > 0)%这就是簇节点接收加入信息和数据的能量S(C_x(min_dis_cluster).id).E_x = S(C_x(min_dis_cluster).id).E_x - ( (ERX + EDA)*packetLength ); %接受簇成员发来的数据包S(C_x(min_dis_cluster).id).E_x = S(C_x(min_dis_cluster).id).E_x - ERX *ctrPacketLength ; %接收加入消息if (min_dis_x > do)%簇头向簇成员发送确认加入的消息S(C_x(min_dis_cluster).id).E_x = S(C_x(min_dis_cluster).id).E_x - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x));elseS(C_x(min_dis_cluster).id).E_x = S(C_x(min_dis_cluster).id).E_x - ( ETX*(ctrPacketLength) + Efs * ctrPacketLength*( min_dis_x * min_dis_x));endPACKETS_TO_CH(r+1) = n - dead_x - cluster_x + 1; %所有的非死亡的普通节点都发送数据包endelseS(C_x(min_dis_cluster).id).E_x = 0;endS(i).min_dis_x = min_dis_x;S(i).min_dis_cluster = min_dis_cluster;%i 节点所属的簇节点号% endelseif(S(i).E_x >= ETX*(packetLength))S(i).E_x = S(i).E_x - ETX*(packetLength); %向簇头数据包elseS(i).E_x = 0;endendendendfor i=1:1:n%checking if there is a dead_x nodeif (S(i).E_x<=0) %如果能量小于0,则死亡节点数加一dead_old_x=dead_old_x+1;%统计死亡节点的数量统计的是一轮的数量S(i).E_x=0;endendSTATISTICSOLD_x(r+1).DEAD=dead_old_x;%将统计的该轮死亡节点的数量赋值给总的轮数中死亡节点的数组r+1的原因是数组是从0开始定义的DEADOLD_x(r+1)=dead_old_x;if (dead_old_x==1)if(flag_first_dead_old_x==0)first_dead_old_x=r %第一个死亡节点的轮数恢复成数组0开始的形式flag_first_dead_old_x=1;endenddead_old_x = 0;%hold on;countCHs_x;rcountCHs_x = rcountCHs_x + countCHs_x;%对所有轮簇节点的统计和endfor i=1:rmax;yold_x(i) = n - STATISTICSOLD_x(i).DEAD; endfigure(3);plot(1:r+1,EAOLD,'--r');axis([0,2500,0,0.5]);title('节点剩余平均能量n=200时');xlabel('轮数0\leq\itX\rm\leq2000');ylabel('焦耳0\leq\itY\rm\leq0.5');%h=legend('leach',1);hold on;figure(4);plot(1:r,yold,'--r');axis([0,2500,0,n]);title('节点存活数目n=200时');xlabel('轮数0\leq\itX\rm\leq2000');ylabel('节点数目0\leq\itY\rm\leq100');%h=legend('leach',1);hold on;figure(3);plot(1:r+1,EAOLD_x,'--b');axis([0,2500,0,0.5]);title('节点剩余平均能量n=200时'); xlabel('轮数0\leq\itX\rm\leq2000'); ylabel('焦耳0\leq\itY\rm\leq0.5');%h=legend('leach','leachnew',1);hold on;figure(4);plot(1:r,yold_x,'--b');axis([0,2500,0,n]);title('节点存活数目n=200时');xlabel('轮数0\leq\itX\rm\leq2000'); ylabel('节点数目0\leq\itY\rm\leq100'); %h=legend('leach','leachnew',1);hold on;。
无线传感器网络安全路由协议研究与仿真的开题报告
无线传感器网络安全路由协议研究与仿真的开题报告一、选题的背景与意义随着无线传感器技术的不断发展,无线传感器网络(WSN)在军事、医疗、环境监测等领域已得到了广泛的应用。
同时,WSN也面临着一系列的安全问题,因此,安全成为WSN必不可少的一部分。
在WSN中,路由协议是数据传输的重要部分,因此,研究WSN安全路由协议有着重要的意义。
本选题希望通过对WSN安全路由协议进行研究和仿真,探究如何保障WSN的传输安全,提高WSN的稳定性、可靠性和安全性。
二、选题的研究内容和目标研究内容:1.分析WSN现有的安全路由协议及其优缺点;2.研究现有的攻击方法,并分析对WSN的影响;3.提出针对WSN的安全路由协议;4.使用仿真平台对分析的安全路由协议进行验证。
研究目标:1.探究提高WSN传输安全的方法,并设计出相应的安全路由协议;2.通过仿真平台验证安全路由协议的有效性;3.提高WSN的稳定性、可靠性和安全性。
三、研究方法和计划研究方法:本选题将采用文献分析、实验仿真等方法,具体如下:1.通过查阅大量文献资料,了解WSN安全路由协议的研究现状和发展趋势;2.分析WSN中常见的攻击方法,探究攻击手段并收集相关数据;3.对WSN中现有的安全路由协议进行对比分析,并提出改进的措施;4.设计针对WSN的安全路由协议,并进行仿真实验验证。
研究计划:第一年:1.查阅大量文献资料,了解WSN的传输安全现状和安全路由协议发展状况;2.分析WSN中的攻击方法——网络嗅探、数据篡改和拒绝服务攻击等,并收集相关数据;3.研究WSN中现有的安全路由协议,分析其优缺点并提出改进措施;第二年:1.设计新的WSN安全路由协议;2.基于NS3仿真平台,进行系统仿真,并评估新的安全路由协议的性能;3.对比新协议与现有协议的性能,验证新协议的有效性;第三年:1.对于新协议出现的问题进行改进和实验;2.对新协议的实际应用进行研究和实验。
四、选题的现状与贡献目前,WSN的安全路由协议在学术界和工业界都受到了广泛的关注。
无线传感器网络路由协议及仿真
摘要集成了传感器、微机电系统和网络三大技术而形成的传感器网络是一种全新的信息获取和处理技术,通过这三种技术使传感器本身的传感手段更丰富、处理能力更强、体积更趋微型化,单个传感器节点微不足道,但大量的这种具有无线通信和数据处理能力传感器件具有广阔的应用前景。
主要表现在军事、环境、医疗、家庭等商业领域,特别在空间通过一定的协议构成自组织网络,可以有效的进行传感器数据的收集和传输,为用户提供丰富的多元信息,在军事、民用和工业生产等领域具有广阔的应用前景。
成为当前的研究热点之一。
本文介绍了无线传感器网络的路由协议种类、特点以及算法分析。
并结合无线传感器网络的一些关键技术,对无线传感器网络的物理层、网络层、传输层、数据链路层、应用层以及三个管理平台(能量管理平台、移动性管理平台和任务管理平台)进行了阐述。
根据路由发现策略的角度不同,将无线传感器网络路由协议分为主动路由和被动路由两种类型;根据网络管理的逻辑结构不同,将无线传感器网络路由协议分为平面路由协议和分层结构路有两类。
按照该网络的特点提出了具体的设计要求,对平面、层次、基于地理位置以及基于QoS的典型路由进行了简单的介绍,并针对各个路由的优缺点进行了综合比较。
最后使用了NS2网络模拟器分别对LEACH和LEACH—C进行了网络模拟,仿真表明LEACH—C协议在网络吞吐量、节点存活量和节点能量消耗等性能上要优于LEACH协议。
关键词:无线传感器网络,路由协议,NS2仿真,LEACHAbstractWith the rapid development of sensor technology, MEMS and network, low power wireless communications have enabled the development of relatively inexpensive and low-power wireless micro-sensors. Hundreds or thousands of these micro-sensors can for self-organized network-WSN(Wireless Sensor Network) which can play an important role in a variety of commercial and military applications, such as environmental monitoring, industry monitoring and security systems.This paper introduces the wireless sensor network routing protocol types, characteristics and the algorithm analysis. And combined with wireless sensor network of some key technologies, to the wireless sensor network of the physical layer, network layer, the transport layer, data link layer, the application layer and three management plane (energy management plane, mobility management level and task management plane) is discussed in this paper. According to the different gatekeepers, wireless sensor network routing protocols are divided into active routing protocols and passive routing protocol, According to the logic structure of network management, wireless sensor network routing protocols are divided into flat routing protocols and hierarchical routing protocols. We put forward to the design requirements according to the feature of the network. It introduces the protocols simply, which are flat routing protocols, the hierarchical routing protocols, the routing protocols based on the position routing protocols. It compares the advantage and disadvantage of the protocols. Finally this paper uses network simulation NS2 to simulation the network performance of LEACH and LEACH-C respectively, Simulation shows that the new comparing the new protocol has better performance then the basic one. The network throughput, the amount of packets needed to send and the average residual energy are all improved.KEY WORDS: Wireless Sensor Network,routing protocols,NS2 simulation,LEACH目录摘要 (1)ABSTRACT (2)1. 前言 (5)1.1 研究背景 (5)1.2 无线传感器网络 (5)1.2.1 无线传感器网络协议栈 (8)1.2.2应用范围 (10)1.3 无线传感器网络研究进展 (12)1.3.1基础层的研究进展 (12)1.3.2 网络技术的研究进展 (12)2. 无线传感器网络的网络层路由协议概述 (13)2.1 与传统网络的路由技术比较 (13)2.2 与Ad-hoc路由技术比较 (14)2.3 无线传感器网络路由协议设计要点 (15)3. 无线传感器网络的路由协议分析 (18)3.1 无线传感器网络路由协议的分类 (18)3.2 现有的无线传感器网络路由协议 (20)3.2.1 洪泛式路由协议 (20)3.2.2 层次式路由协议 (21)3.2.3 以数据为中心的路由协议 (23)3.2.4 基于位置信息的路由协议 (28)3.2.5 基于QoS的路由协议 (31)4. 仿真实验 (33)4.1 NS2介绍 (33)4.1.1 NS2概述 (33)4.1.2 NS2的体系结构 (34)4.1.3 NS2的仿真元素 (34)4.1.4 NS2的功能模块 (34)4.1.5 NS2的类层次结构 (35)4.1.6 NS2的仿真原理 (35)4.1.7 NS2的安装 (36)4.2 LEACH协议的仿真与分析 (37)4.2.1 LEACH协议的安装 (37)4.2.2 AWK介绍 (40)4.2.3 Gnuplot绘图工具介绍 (42)4.2.4 仿真结果分析 (43)总结与展望 (49)致谢 (51)参考文献 (52)附录 (53)1. 前言1.1 研究背景传感技术同计算机技术与通信技术一起被称为信息技术的三大支柱。
无线传感器网络论文:无线传感器网络路由协议TEEN仿真
无线传感器网络论文:无线传感器网络路由协议 TEEN 仿真【中文摘要】无线传感器网络由于传感器节点存储能力、计算能力以及能量有限,设计适合无线传感器网络的高效路由协议成为关键技术之一。
本文改进了响应型层次路由协议TEEN,将平面路由协议中的多跳路由以及使用代理消息生成数据转发路径的设计思想融入其中,提出了响应型层次路由协议Ⅰ-TEEN。
与TEEN相比,Ⅰ-TEEN在网络生存时间、网络能耗方而性能有所提高,适合大规模无线传感器网络应用,实时性有所降低。
本文首先介绍了无线传感器网络的概念以及国内外研究现状,简单介绍了网络的体系结构,分析比较了现有的路由协议,重点以TEEN协议为研究对象,提出了改进策略。
本文主要做了以下工作:首先,分析了TEEN协议中需要改进的地方,簇头选举方式不够合理,簇内节点与簇头节点以及簇头节点与sink节点单跳通信限制了网络规模。
其次,在原有算法的基础上提出了两点改进策略,是在簇头选举阶段,采用新的阈值计算公式,平衡网络负载;二是簇内节点与簇头通信采用多跳路由,簇头节点与sink节点通信也采用多跳路由,路径选择借鉴谣传路由的路径形成方式,使用代理消息生成数据转发路径。
最后,在理论上分析了改进方案的可行性。
使用OPNET Modeler对改进协议进行仿真,通过仿真结果比较了TEEN协议与改进后协议在网络生存周期、系统能耗方面的差异,改进后的协议性能有所提高。
最后分析了改进方案的不足之处,指出了以后的研究方向。
【英文摘要】Because the sensor nodes’storage capacity,computing capacity and energy are limited in Wireless Sensor Networks, the design of efficient routing protocols for Wireless Sensor Networks become the key technologies. In this paper, the protocol TEEN is improved, and a new protocol I-TEEN is proposed using multi-hop and agency message to form a routing. Compared with the TEEN, I-TEEN extend network lifetime, reducing energy consumption for large-scale Wireless Sensor Networks application.In this paper the concept of Wireless Sensor Networks, the WSN’s architecture and its research situation are introduced. The analysis and comparison of the existing routing protocols for WSN are also done. An improved strategy is proposed based on TEEN protocol. In this paper, the following works is done:first, analysis of the TEEN protocol that needed to improve. The cluster head election is not reasonable. The network size is limited because of thesingle-hop communications between nodes and cluster head nodes. Second, two improvements are proposed based on the TEEN algorithm. One improvement is that in the election of cluster heads, a new threshold formula is used to get the balance of network load. The other one is that the nodes communicate with cluster heads using the multi-hop routing, and the communication among the cluster head nodes and sink node usemulti-hop routing. The formation of routing path is similarwith Rumor Routing. Finally, analysis of the improvement isdone in theory. The new protocol is simulated using the OPNET Modeler. Through the simulation results the improved protocolis compared with TEEN in network life and energy consumption.The new protocol’s performance has improved. Finally, the shortcoming of the new protocol and its future researchdirection are pointed out.【关键词】无线传感器网络路由协议 TEEN 仿真【采买全文】1.3.9.9.38.8.4.8 1.3.8.1.13.7.2.1 同时提供论文写作一对一辅导和论文发表服务.保过包发.【说明】本文仅为中国学术文献总库合作提供,无涉版权。
无线传感器网络路由协议的仿真研究的开题报告
无线传感器网络路由协议的仿真研究的开题报告一、选题背景近年来,无线传感器网络 (Wireless Sensor Network, WSN) 技术逐渐得到广泛的应用。
无线传感器网络由众多无线传感器节点组成,节点间通过无线通信进行数据传输和协调。
在无线传感器网络中,数据传输以小数据量、低速率、低功耗和低成本为主,因此,传统的网络协议难以适应此类场景。
所以,针对无线传感器网络设计适宜的路由协议是至关重要的。
典型的无线传感器网络中,节点数量较多,节点的能量资源有限。
同时,无线传感器节点所处的环境也比较复杂,涉及到信号衰减、干扰等问题。
因此,无线传感器网络路由协议设计需要兼顾能量消耗、数据传输成功率、网络拓扑稳定性等因素。
二、研究目的和内容本研究的目的是对无线传感器网络常用的路由协议进行仿真研究,分析各种协议在不同场景下的性能表现。
具体研究内容包括:1. 研究无线传感器网络中常用的路由协议,包括基于距离向量的协议 (Distance Vector-based Protocol)、基于链路状态的协议 (Link State-based Protocol)、基于均衡的协议 (Equalization-based Protocol) 等。
2. 对于上述协议进行仿真研究,分析不同网络场景下的性能表现,包括节点能耗、网络吞吐量、时延、丢包率等。
3. 针对仿真结果,对于各种路由协议作出评价,并提出相应的改进方法,以期提高网络性能和能源利用率。
三、研究方法本研究采用仿真方法进行研究。
具体操作流程如下:1. 确定选用的路由协议,并根据协议的具体要求编写仿真代码。
2. 构建仿真环境,包括生成部分随机网络拓扑和仿真数据流。
3. 运行仿真程序,模拟无线传感器网络中节点的行为,记录仿真结果。
4. 对仿真结果进行数据分析、处理,并进行可视化表示。
5. 利用经验分析和统计分析来评估和比较仿真结果。
四、研究意义无线传感器网络是目前一个热门的领域,研究无线传感器网络的路由协议对于提高网络性能至关重要。
ZigBee无线传感器网络协议及仿真设计
Microcomputer Applications Vol. 27, No.3, 2011 技术交流 微型电脑应用 2011年第27卷第3期58文章编号:1007-757X(2011)03-0058-04ZigBee 无线传感器网络协议及仿真设计侯雷 张艳芹摘 要:以ZigBee 为代表的低速率无线局域网与IEEE 802.15.4标准相结合,实现无线传感器网络WSN 和Internet 的互通,是WSN 的发展方向。
通过对ZigBee 和IEEE 802.15.4的分析研究,并针对IEEE 802.15.4规范规定的物理帧、MAC 帧的具体格式,进行了仿真关联平台的设计,为ZigBee/IEEE 802.15.4网络设计打下了坚实的基础。
ZigBee 网络的应用配置、性能分析和改进优化等,也是今后研究的方向。
关键词:无线传感器网络;ZigBee ;IEEE 802.15.4;协议; 中图分类号:TP393 文献标志码:A0 引言随着移动通信技术的迅速发展,主流的宽带接入技术包括:固定宽带无线接入技术(Fixed Broadband Wireless Access ,FBW A)、无线局域网(Wireless Local Area Network ,WLAN)和无线个域网(Wireless Personal Area Network ,WPAN)。
其中WPAN 的发展使得人们摆脱电缆束缚,在近距离内实现各种设备间的通信。
基于ZigBee 无线接入技术的WPAN 更以其低成本、低功耗等特有的优势成为无线接入领域的又一颗耀眼的新星,给现代信息社会中人们的工作和生活方式带来一场新的革命。
1 ZigBee 技术的概述 1.1 什么是ZigBee 无线传感网络是一种新兴的技术,是目前研究的热点之一。
大多数的无线传感网络都有功耗小的特点,ZigBee 技术的出现正好了满足这样的要求。
ZigBee 技术(属于无线个域网范畴)是一种新型的应用于短距离范围内,低速率传输的无线通讯技术,主要具有功耗低、成本低、数据传输可靠、网络容量大、兼容性好等特点,主要适用于自动控制和远程控制领域,可嵌入各种设备中,同时支持地理定位功能。
无线传感器网络各类路由协议仿真
实验报告课程无线传感网络各类路由协议仿真1.实验目的网络数据传输离不开路由协议,路由协议是其组网的基础,路由协议是无线传感器网络研究的重点之一,其主要的设计目标是降低节点能量消耗,延长网络的生命周期。
本次实验将仿真各类无线传感器网络路由协议。
2.实验要求争取考虑全面,考虑到各因素对各类协议的影响,以提高无线传感网络的性能。
3.设计思想(1)Flooding泛洪是一种传统的路由技术,不要求维护网络的拓扑结构,并进行路由计算,接收到消息的节点以广播形式转发分组。
对于自组织的传感器网络,泛洪路由是一种较直接的实现方法,但消息的“内爆”(implosion)和“重叠”(overlap)是其固有的缺陷。
为了克服这些缺陷,S.hedetniemi等人提出了Gossiping策略,节点随机选取一个相邻节点转发它接收到的分组,而不是采用广播形式。
这种方法避免了消息的“内爆”现象,但有可能增加端到端的传输延时。
Flooding路由协议中的内爆和重叠问题(2)SPIN (sensor protocol for information via negotiation)SPIN是以数据为中心的自适应路由协议,通过协商机制来解决泛洪算法中的“内爆”和“重叠”问题。
传感器节点仅广播采集数据的描述信息,当有相应的请求时,才有目的地发送数据信息。
SPIN协议中有3种类型的消息,即ADV,REQ 和DATA。
ADV—用于新数据广播。
当一个节点有数据可共享时,它以广播方式向外发送DATA数据包中的元数据。
REQ—用于请求发送数据。
当一个节点希望接收DATA数据包时,发送REQ数据包。
DATA—包含附上元数据头(meta一header)的实际数据包。
SPIN协议有4种不同的形式:• SPIN-PP:采用点到点的通信模式,并假定两节点间的通信不受其他节点的干扰,分组不会丢失,功率没有任何限制。
要发送数据的节点通过ADV向它的相邻节点广播消息,感兴趣的节点通过REQ发送请求,数据源向请求者发送数据。
无线传感器网络各类路由协议仿真
实验报告课程无线传感网络各类路由协议仿真1.实验目的网络数据传输离不开路由协议,路由协议是其组网的基础,路由协议是无线传感器网络研究的重点之一,其主要的设计目标是降低节点能量消耗,延长网络的生命周期。
本次实验将仿真各类无线传感器网络路由协议。
2。
实验要求争取考虑全面,考虑到各因素对各类协议的影响,以提高无线传感网络的性能。
3.设计思想(1)Flooding泛洪是一种传统的路由技术,不要求维护网络的拓扑结构,并进行路由计算,接收到消息的节点以广播形式转发分组.对于自组织的传感器网络,泛洪路由是一种较直接的实现方法,但消息的“内爆”(implosion)和“重叠”(overlap)是其固有的缺陷。
为了克服这些缺陷,S。
hedetniemi等人提出了Gossiping策略,节点随机选取一个相邻节点转发它接收到的分组,而不是采用广播形式。
这种方法避免了消息的“内爆”现象,但有可能增加端到端的传输延时。
Flooding路由协议中的内爆和重叠问题(2)SPIN (sensor protocol for information via negotiation)SPIN是以数据为中心的自适应路由协议,通过协商机制来解决泛洪算法中的“内爆”和“重叠”问题。
传感器节点仅广播采集数据的描述信息,当有相应的请求时,才有目的地发送数据信息.SPIN协议中有3种类型的消息,即ADV,REQ和DATA。
ADV—用于新数据广播.当一个节点有数据可共享时,它以广播方式向外发送DATA数据包中的元数据。
REQ—用于请求发送数据.当一个节点希望接收DATA数据包时,发送REQ数据包。
DATA-包含附上元数据头(meta一header)的实际数据包.SPIN协议有4种不同的形式:• SPIN-PP:采用点到点的通信模式,并假定两节点间的通信不受其他节点的干扰,分组不会丢失,功率没有任何限制。
要发送数据的节点通过ADV向它的相邻节点广播消息,感兴趣的节点通过REQ发送请求,数据源向请求者发送数据。
一种改进LEACH的无线传感器路由协议仿真
一种改进LEACH的无线传感器路由协议仿真*覃琪,谭松鹤(河池学院计算机与信息工程学院,广西河池546300)引言无线传感器网络作为一种新型网络体系,具有移动性、无线布线、多跳路由等多种特点,在远程监测、信息采集以及交通控制等多个领域都有广泛应用[1-2]。
无线传感器网络通过传感器节点采集与处理覆盖域内监测到的信息,在军事、消防以及工业领域均有着广泛的应用[3]。
在实际网络应用中,传感器节点分布不均,使得某些簇头与距离较远的基站进行通信时,发射功率较大,增加了网络通信能耗,缩短了网络生命周期[4]。
在这种情况下,如何有效地进行降低网络通信能耗,成为了该领域亟待解决的主要问题。
而低能耗多跳路由协议中的簇头选取策略,通过综合考虑网络候选传感器节点的剩余能量以及自身位置信息等参数优化簇头选取,避免剩余能量较少和位置不佳的传感器节点被推选成簇首,减少能量消耗,是解决上述弊端的有效手段,引起了该领域相关专家学者的高度关注[5]。
1LEACH路由协议研究LEACH协议是为无线传感器网络WSN设计的一种低功耗自适应分簇层次型路由协议。
LEACH协议算法以一定概率随机选取某个节点担任簇头并与相邻节点动态形成簇,算法使得网络中的节点轮流担任簇头而平均的分摊通信能量消耗,最终达到实现节点能量的负载均衡、延长网络寿命的目标[7]。
LEACH协议工作过程是分成很多“轮”(round)进行的,每一轮包含簇建立(setup_up)阶段和稳定运行(steady-state)阶段。
簇建立(setup_up)阶段,每一轮开始都会为每个节点n 随机选取一个在0到1之间的实数,成为标记值或者节点的记号。
如果n的这个标记值小于一个门限值T(n)的话,节点n就当选为本轮的簇头节点。
门限值T(n)通过公式(1)计算得出。
各簇头节点广播建簇信号,其他相邻节点选择信号最强的簇头加入形成簇[7]。
(1)P是网络中每轮期望选出的簇头节点所占总节点数目的百分比(根据不同应用场景选值在4%-5%之间);r为当前的轮数,G是前l/P轮中没有充当过簇头节点的节点的集合[8],mod符号是求模运算符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告课程无线传感网络各类路由协议仿真1.实验目的网络数据传输离不开路由协议,路由协议是其组网的基础,路由协议是无线传感器网络研究的重点之一,其主要的设计目标是降低节点能量消耗,延长网络的生命周期。
本次实验将仿真各类无线传感器网络路由协议。
2.实验要求争取考虑全面,考虑到各因素对各类协议的影响,以提高无线传感网络的性能。
3.设计思想(1)Flooding泛洪是一种传统的路由技术,不要求维护网络的拓扑结构,并进行路由计算,接收到消息的节点以广播形式转发分组。
对于自组织的传感器网络,泛洪路由是一种较直接的实现方法,但消息的“内爆”(implosion)和“重叠”(overlap)是其固有的缺陷。
为了克服这些缺陷,S.hedetniemi等人提出了Gossiping策略,节点随机选取一个相邻节点转发它接收到的分组,而不是采用广播形式。
这种方法避免了消息的“内爆”现象,但有可能增加端到端的传输延时。
Flooding路由协议中的内爆和重叠问题(2)SPIN (sensor protocol for information via negotiation)SPIN是以数据为中心的自适应路由协议,通过协商机制来解决泛洪算法中的“内爆”和“重叠”问题。
传感器节点仅广播采集数据的描述信息,当有相应的请求时,才有目的地发送数据信息。
SPIN协议中有3种类型的消息,即ADV,REQ和DATA。
ADV—用于新数据广播。
当一个节点有数据可共享时,它以广播方式向外发送DATA数据包中的元数据。
REQ—用于请求发送数据。
当一个节点希望接收DATA数据包时,发送REQ数据包。
DATA—包含附上元数据头(meta一header)的实际数据包。
SPIN协议有4种不同的形式:• SPIN-PP:采用点到点的通信模式,并假定两节点间的通信不受其他节点的干扰,分组不会丢失,功率没有任何限制。
要发送数据的节点通过ADV向它的相邻节点广播消息,感兴趣的节点通过REQ 发送请求,数据源向请求者发送数据。
接收到数据的节点再向它的相邻节点广播ADV消息,如此重复,使所有节点都有机会接收到任何数据。
• SPIN-EC:在SPIN-PP的基础上考虑了节点的功耗,只有能够顺利完成所有任务且能量不低于设定阈值的节点才可参与数据交换。
• SPIN-BC:设计了广播信道,使所有在有效半径内的节点可以同时完成数据交换。
为了防止产生重复的REQ请求,节点在听到ADV消息以后,设定一个随机定时器来控制REQ请求的发送,其他节点听到该请求,主动放弃请求权利。
• SPIN-RL:它是对SPIN-BC的完善,主要考虑如何恢复无线链路引入的分组差错与丢失。
记录ADV 消息的相关状态,如果在确定时间间隔内接收不到请求数据,则发送重传请求,重传请求的次数有一定的限制。
图3.2表明了SPIN协议的路由建立与数据传送。
SPIN协议的路由建立与数据传送基于数据描述的协商机制和能量自适应机制的SP创协议能够很好地解决传统的Flooding协议所带来的信息爆炸、信息重复和资源浪费等问题。
此外,由于协议中每个节点只需知道其单跳邻居节点的信息,拓扑改变呈现本地化特征。
SP州协议的缺点是数据广告机制不能保证数据的可靠传递,如果对数据感兴趣的节点远离源节点或者在源节点和目的节点中间的节点对数据不感兴趣,那么数据就不可能被传递到目的地。
因此,对于入侵发现等需要在定期间隔内可靠传递数据的应用系统来说,SP州并不是一个很好的选择。
(3)SAR (sequential assignment routing)在选择路径时,有序分配路由(SAR)策略充分考虑了功耗、QoS和分组优先权等特殊要求,采用局部路径恢复和多路经备份策略,避免节点或链路失败时进行路由重计算需要的过量计算开销。
为了在每个节点与sink节点间生成多条路经,需要维护多个树结构,每个树以落在sink节点有效传输半径内的节点为根向外生长,枝干的选择需满足一定QOS要求并要有一定的能量储备。
这一处理使大多数传感器节点可能同时属于多个树,可任选其一将采集数据回传到sink节点。
(4) LEACH (low energy adaptive clustering hierarchy)LEACH是MIT的Chandrakasan等人为无线传感器网络设计的低功耗自适应聚类路由算法。
与一般的平面多跳路由协议和静态聚类算法相比,LEACH可以将网络生命周期延长15%,主要通过随机选择聚类首领,平均分担中继通信业务来实现。
LEACH定义了“轮”(round)的概念,一轮由初始化和稳定工作两个阶段组成。
为了避免额外的处理开销,稳定态一般持续相对较长的时间。
如图3.4所示:LEACH 协议的时序图在初始化阶段,聚类首领是通过下面的机制产生的。
传感器节点生成0,1之间的随机数,如果大于阈值T,则选该节点为聚类首领.T 的计算方法如下:()[]pr P PT 1mod 1-=(3.1)其中p 为节点中成为聚类首领的百分数,r 是当前的轮数。
当簇头选定之后,簇头节点主动向网络中节点广播自己成为簇头的消息(ADV_CH)。
接收到此消息的节点,依据接收信号的强度,选择它所要加入的簇,并发消息通知相应的簇头(JOIN_REQ)。
基于时分多址(Time Division Multiple Address ,简称TDMA)的方式,簇头节点为其中的每个成员分配通信时隙,并以广播的形式通知所有的簇内节点(ADVSCH)。
这样保证了簇内每个节点在指定的传输时隙进行数据传输,而在其他时间进入休眠状态,减少了能量消耗。
在稳定工作阶段,节点持续采集监测数据,在自身传输时隙到来时把监测数据传给簇头节点(DATA),如图3.5所示。
簇头节点对接收到数据进行融合处理之后,发送到Sink 节点,这是一种减小通信业务量的合理工作模式。
持续一段时间以后,整个网络进入下一轮工作周期,重新选择簇头节点。
LEACH协议采用动态转换簇头的方法来平均网络节点的能量消耗,使因能量耗尽而失效的节点呈随机分布状态,因而与一般的多跳路由协议和静态簇算法相比,LEACH可以将网络生命周期延长15%。
但是LEACH协议在每轮固定簇头节点后在划分簇的过程中,簇头节点开销较大。
并且簇头节点的选择无法达到最优,有可能簇头节点位于网络的边缘或者几个簇头节点相邻,某些节点不得不传输较远的距离来与簇头通信,这就导致了大量能量消耗。
而且LEACH协议所有簇头节点直接与Sink节点通信,采用连续数据发送模式和单跳路径选择模式,使得每轮中簇头节点能耗巨大,因此不适合在大规模的传感器网络中应用。
(5) TEEN (threshold sensitive energy efficient sensor network protocol)依照应用模式的不同,通常可以简单地将无线自组织网络(包括传感器网络和Ad-hoc网络)分为主动(proactive)和响应(reactive)两种类型。
主动型传感器网络持续监测周围的物质现象,并以恒定速率发送监测数据;而响应型传感器网络只是在被观测变量发生突变时才传送数据。
相比之下,响应型传感器网络更适合应用在敏感时间的应用中。
TEEN和LEACH的实现机制非常相似,只是前者是响应型的,而后者属于主动型传感器网络。
在TEEN中定义了硬、软两个门限值,以确定是否需要发送监测数据。
当监测数据第一次超过设定的硬门限时,节点用它作为新的硬门限,并在接着到来的时隙内发送它。
在接下来的过程中,如果监测数据的变化幅度大于软门限界定的范围,则节点传送最新采集的数据,并将它设定为新的硬门限。
通过调节软门限值的大小,可以在监测精度和系统能耗之间取得合理的平衡。
图3.6表示的是TEEN协议中由聚簇构成的层次结构。
TEEN协议中由聚簇构成的层次结构TENE适用于实时性要求较高的应用场合,比如入侵警报,爆炸预警等,用户可以及时获取感兴趣的信息。
而且用户可以通过设置不同的软门限方便地平衡监测的准确性与系统节能性两项指标。
但是这个方案也有一些不足之处,例如门限值达不到,节点就永远不会和簇头节点通信,用户就无法从网络得到任何数据;没有相应的机制去区分那些没有感应到足够大变化的节点和处于关闭状态的节点,所以TEEN协议不适合应用在。
(6) PEGAGIS (power-efficient gathering in sensor information system)PEGASIS由LEACH发展而来。
它假定组成网络的传感器节点是同构且静止的。
节点发送能量递减的测试信号,通过检测应答来确定离自己最近的相邻节点。
在收集数据前,首先利用贪心算法将网络中的所有节点连接成一条单链。
通过这种方式,网络中的所有节点能够了解彼此的位置关系,进而每个节点依据自己的位置选择所属的聚类,聚类的首领向链的两端发出收集数据的请求,数据从单链的两个端点向首领流动。
中间节点在传递数据前要执行融合操作,最终由首领节点将结果数据传送给Sink节点。
因为PEGASIS中每个节点都以最小功率发送数据分组,并有条件完成必要的数据融合,减小业务流量。
因此,整个网络的功耗较小。
研究结果表明,PEGASIS支持的传感器网络的生命周期是LEACH的近两倍。
4.实验器材与工具MATLAB5.程序源代码function x=animation_datasmall=5; medium=20; large=50;% Event_name Animated Color/{on/off/toggle} Size anim_def={...{'Init_Application', 0, [0 0 0 ], small}, ...{'Packet_Sent', 1, [0 1 0 ], small}, ...{'Packet_Received', 1, [0 1 0 ], small}, ...{'Collided_Packet_Received', 0, [1 0 0 ], small}, ...{'Clock_Tick', 0, [0 0 0 ], small}, ...{'Channel_Request', 0, [0 0 0 ], small}, ...{'Channel_Idle_Check', 1, [1 0 0 ], small}, ...{'Packet_Receive_Start', 0, [0 1 0 ], small}, ...{'Packet_Receive_End', 0, [0 0 0 ], small}, ...{'Packet_Transmit_Start', 1, [1 0 0 ], medium}, ...{'Packet_Transmit_End', 0, [0 1 0 ], small}};for i=1:length(anim_def)a=anim_def{i};x(i)=struct('event', a{1}, 'animated', a{2}, 'color', a{3}, 'size', a{4}); endfunction application(S)% DO NOT edit simulator code (lines that begin with S;)S; persistent app_dataS; global ID tS; [t, event, ID, data]=get_event(S);S; [topology, mote_IDs]=prowler('GetTopologyInfo');S; ix=find(mote_IDs==ID);S; if ~strcmp(event, 'Init_Application')S; try memory=app_data{ix}; catch memory=[]; end,S; endS;switch eventcase 'Init_Application'signal_strength=1;if ID==1 % first node starts floodSet_Clock(1000)endPrintMessage('i')case 'Packet_Sent'PrintMessage('s')case 'Packet_Received'% data.data % message% data.signal_strength % received signal strengthif memory.sendp=sim_params('get_app', 'P');if isempty(p); p=.5; endif rand<pSend_Packet(radiostream(data.data, memory.signal_strength));endmemory.send=0;PrintMessage('r')endcase 'Collided_Packet_Received'% this is for debug purposes onlycase 'Clock_Tick'Send_Packet(radiostream('Message for 00111 from Golomb', memory.signal_strength));case 'GuiInfoRequest'disp(sprintf('Memory Dump of mote ID# %d:\n',ID)); disp(memory)case 'Application_Stopped'% this event is called when simulation is stopped/suspendedcase 'Application_Finished'% this event is called when simulation is finishedotherwiseerror(['Bad event name for application: ' event])endS; app_data{ix}=memory;function b=Send_Packet(data);global ID tradio=prowler('GetRadioName');b=feval(radio, 'Send_Packet', ID, data, t);function b=Set_Clock(alarm_time);global IDprowler('InsertEvents2Q', make_event(alarm_time, 'Clock_Tick', ID));function PrintMessage(msg)global IDprowler('TextMessage', ID, msg)function LED(msg)global IDprowler('LED', ID, msg)function varargout=infotitle1='Application FLOOD1D';str1={ 'This application illustrates the simple flooding algorithm.'; ...'';...'The sender mote transmits a message. Each mote receiving the';...'message retransmits it with probability p.' ;...'The value of p can be set in the ''Application Parameters''';...'window. The default value is p=0.5';...'';...'If p is too low, the flood dies out before every mote could';...'receive the message. If p it too high, the message is';...'retransmitted several times after every mote have received it,' ;...'thus causing an unnecessarily high settling time.';...'';...'The optimal value of p highly depends on topology.';...'';...'You can change the topology by editing the file FLOOD1D_TOPOLOGY.';...'';...'See also FLOOD2D.';...''};if nargout==0helpwin({ title1, str1}, 'Application Info')elsevarargout={ title1, str1};endfunction param=params;param(1).name='P'; param(1).default=0.5;function [topology,mote_IDs]=topology(varargin);Nx=10; Ny=1; % number of points on the gridix=1;t=[];distx=1;disty=5;X=1:distx:(Nx-1)*distx+1;Y=1:disty:(Ny-1)*disty+1;for i=Xfor j=Yt=[t; i,j];endendtopology=t;mote_IDs=1:Nx*Ny;function x=animationpersistent anim_dataif isempty(anim_data)small=5; medium=20; large=50;% Event_name Animated Color/{on/off/toggle} Size anim_def={...{'Init_Application', 1, [0 0 0 ], small}, ...{'Packet_Sent', 2, [1 0 0 ], small}, ...{'Packet_Received', 3, [1 0 0 ], small}, ...{'Collided_Packet_Received', 4, [1 0 0 ], small}, ...{'Clock_Tick', 0, [0 0 0 ], small}, ...{'Channel_Request', 0, [0 0 0 ], small}, ...{'Channel_Idle_Check', 1, [1 0 0 ], small}, ...{'Packet_Receive_Start', 0, [0 1 0 ], small}, ...{'Packet_Receive_End', 0, [0 0 0 ], small}, ...{'Packet_Transmit_Start', 1, [1 0 0 ], medium}, ...{'Packet_Transmit_End', 1, [0 1 0 ], small}};for i=1:length(anim_def)a=anim_def{i};if i==1anim_data=struct('event', a{1}, 'animated', a{2}, 'color', a{3}, 'size', a{4});elseanim_data(i)=struct('event', a{1}, 'animated', a{2}, 'color', a{3}, 'size', a{4});endendx=anim_data;function application(S)S; persistent app_dataS; global ID tS; [t, event, ID, data]=get_event(S);S; [topology, mote_IDs]=prowler('GetTopologyInfo');S; ix=find(mote_IDs==ID);S; if ~strcmp(event, 'Init_Application')S; try memory=app_data{ix}; catch memory=[]; end, S; endS;SENDER_ID=sim_params('get_app', 'Start_Mote');if isempty(SENDER_ID), SENDER_ID=1; endswitch eventcase 'Init_Application'signal_strength=1;memory=struct('send',1, 'signal_strength', signal_strength);if ID==SENDER_ID % this node starts floodSet_Clock(1000)PrintMessage('i')case 'Packet_Sent'memory.send=0;PrintMessage('s')case 'Packet_Received'% data.data % message% data.signal_strength % received signal strengthif memory.sendp=sim_params('get_app', 'P');if isempty(p); p=.3; end% p=0.3; % p is forced to 0.3 / Comment this line if you want to use it for optimizationif rand<pSend_Packet(radiostream(data.data, memory.signal_strength));endmemory.send=0;PrintMessage('r')endcase 'Collided_Packet_Received'% this is for debug purposes onlycase 'Clock_Tick'Send_Packet(radiostream('this is the message', memory.signal_strength));case 'GuiInfoRequest'if ~isempty(memory)disp(sprintf('Memory Dump of mote ID# %d:\n',ID)); disp(memory) elsedisp(sprintf('No memory dump available for node %d.\n',ID));endcase 'Application_Stopped'% this event is called when simulation is stopped/suspendedcase 'Application_Finished'% this event is called when simulation is finishedotherwiseerror(['Bad event name for application: ' event])endS; app_data{ix}=memory;S;function b=Send_Packet(data);global ID tradio=prowler('GetRadioName');b=feval(radio, 'Send_Packet', ID, data, t);function b=Set_Clock(alarm_time);global IDprowler('InsertEvents2Q', make_event(alarm_time, 'Clock_Tick', ID));function PrintMessage(msg)global IDprowler('TextMessage', ID, msg)function varargout=infotitle1='Application FLOOD2D';str1={ 'This application illustrates the flooding algorithm in 2D.'; ...'';...'The sender mote transmits a message. Each mote receiving the';...'message retransmits it with probability p.' ;...'The value of p can be set in the ''Application Parameters''';...'window. The default value is p=0.5.';...'';...'The starting node can also be selected (parameter Start_Mote).';...'Try 1 to start from the lower left corner, and 55 to start from';...'the center of the (10x10) grid.';...'';...'If p is too low, the flood dies out before every mote could';...'receive the message. If p it too high, the message is';...'retransmitted several times after every mote have received it,' ;...'thus causing an unnecessarily high settling time.';...'';...'The optimal value of p highly depends on topology.';...'';...'You can change the topology by changing the parameters X_Number,';...'Y_Number, and Distance.';...''};if nargout==0helpwin({ title1, str1}, 'Application Info')elsevarargout={ title1, str1};endfunction param=params;param(1).name='P'; param(1).default=0.5;param(2).name='Start_Mote'; param(2).default=1;param(3).name='X_Number'; param(3).default=10;param(4).name='Y_Number'; param(4).default=10;param(5).name='Distance'; param(5).default=1;function [topology,mote_IDs]=topology(varargin);ix=1;t=[];%dist=1;% Nx=10; Ny=10; % number of points on the gridNx =sim_params('get_app', 'X_Number'); if isempty(Nx), Nx=10; end Ny =sim_params('get_app', 'Y_Number'); if isempty(Ny), Ny=10; end dist=sim_params('get_app', 'Distance'); if isempty(dist), dist=1; endX=1:dist:(Nx-1)*dist+1;Y=1:dist:(Ny-1)*dist+1;for i=Xfor j=Yt=[t; i,j];endendtopology=t;mote_IDs=1:Nx*Ny;6.实验结果7.结论名称主要思想Flooding 收到数据的节点向所有邻居节点广播报文Gossiping 收到的数据节点随机选取地选择一个邻节点转发报文SAR 依据每条路径上的能量资源和QoS要求来决策路由SPIN 根据临时的请求、应答的方式转发数据Flooding中节点的能耗较快。