无线传感器网络各类路由协议仿真.docx

上传人:夺命阿水 文档编号:475402 上传时间:2023-07-18 格式:DOCX 页数:16 大小:43.23KB
返回 下载 相关 举报
无线传感器网络各类路由协议仿真.docx_第1页
第1页 / 共16页
无线传感器网络各类路由协议仿真.docx_第2页
第2页 / 共16页
无线传感器网络各类路由协议仿真.docx_第3页
第3页 / 共16页
无线传感器网络各类路由协议仿真.docx_第4页
第4页 / 共16页
无线传感器网络各类路由协议仿真.docx_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《无线传感器网络各类路由协议仿真.docx》由会员分享,可在线阅读,更多相关《无线传感器网络各类路由协议仿真.docx(16页珍藏版)》请在课桌文档上搜索。

1、实11A报告课程无线传感网络各类路由协议仿真1.实验目的网络数据传输离不开路由协议,路由协议是其组网的基础,路由协议是无线传感器网络研究的重点之一,其主要的设计目标是降低节点能量消耗,延长网络的生命周期。本次实验将仿真各类无线传感器网络路由协议。2o实验要求争取考虑全面,考虑到各因素对各类协议的影响,以提高无线传感网络的性能。3.设计思想(1) Flooding泛洪是一种传统的路由技术,不要求维护网络的拓扑结构,并进行路由计算,接收到消息的节点以广播形式转发分组。对于自组织的传感器网络,泛洪路由是一种较直接的实现方法,但消息的“内爆”(implosion)和“重叠”(oVerIaP)是其固有的

2、缺陷.为了克服这些缺陷,Sbedetniemi等人提出了GoSSiPing策略,节点随机选取一个相邻节点转发它接收到的分组,而不是采用广播形式。这种方法避免了消息的“内爆”现象,但有可能增加端到端的传输延时。Flooding路由协议中的内爆和重叠问题(2) SPIN(sensorprotocolforinformationvianegotiation)SPlN是以数据为中心的自适应路由协议,通过商议机制来解决泛洪算法中的“内爆”和“重叠”问题。传感器节点仅广播采集数据的描述信息,当有相应的请求时,才有目的地发送数据信息。SPIN协议中有.3种类型的消息,即ADV,REQ和DATA.ADV-用于

3、新数据广播.当一个节点有数据可共享时,它以广播方式向外发送DATA数据包中的元数据.REQ-用于请求发送数据。当一个节点希冀接收DATA数据包时,发送REQ数据包.DATA包含附上元数据头(meta-header)的实际数据包.SPlN协议有4种不同的形式:,SPIN-PP:采用点到点的通信模式,并假定两节点间的通信不受其他节点的干扰,分组不会丢失,功率没有任何限制。要发送数据的节点通过ADV向它的相邻节点广播消息,感兴趣的节点通过REQ发送请求,数据源向请求者发送数据.接收到数据的节点再向它的相邻节点广播ADV消息,如此重复,使所有节点都有机会接收到任何数据。.SPlN-EC:在SPlNPP

4、的基础上考虑了节点的功耗,惟独能够顺利完成所有任务且能量不低于设定阈值的节点才可参预数据交换。.SPIN-BC:设计了广播信道,使所有在有效半径内的节点可以同时完成数据交换。为了防止产生重复的REQ请求,节点在听到ADV消息以后,设定一个随机定时器来控制REQ请求的发送,其他节点听到该请求,主动抛却请求权利。.SPINRL:它是对SPlN-BC的完善,主要考虑如何恢复无线链路引入的分组差错与丢失。记录ADV消息的相关状态,如果在确定时间间隔内接收不到请求数据,则发送重传请求,重传请求的次数有一定的限制。图3.2表明了SPlN协议的路由建立与数据传送。SPlN协议的路由建立与数据传送基于数据描述

5、的商议机制和能量自适应机制的SP创协议能够很好地解决传统的Flooding协议所带来的信息爆炸、信息重复和资源浪费等问题.此外,由于协议中每一个节点只需知道其单跳邻居节点的信息,拓扑改变呈现本地化特征。SP州协议的缺点是数据广告机制不能保证数据的可靠传递,如果对数据感兴趣的节点远离源节点或者在源节点和目的节点中间的节点对数据不感兴趣,那末数据就不可能被传递到目的地。因此,对于入侵发现等需要在定期间隔内可靠传递数据的应用系统来说,SP州并非一个很好的选择。(3) SAR(sequentialassignmentrouting)在选择路径时,有序分配路由(SAR)策略充分考虑了功耗、QOS和分组优

6、先权等特殊要求,采用局部路径恢复和多路经备份策略,避免节点或者链路失败时进行路由重计算需要的过量计算开消。为了在每一个节点与Sink节点间生成多条路经,需要维护多个树结构,每一个树以落在Sink节点有效传输半径内的节点为根向外生长,枝干的选择需满足一定QOS要求并要有一定的能量储备。这一处理使大多数传感器节点可能同时属于多个树,可任选其一将采集数据回传到Sink节点。1.EACH(lowenergyadaptiveclusteringhierarchy)1.EACH是Mrr的ChandrakaSan等人为无线传感器网络设计的低功耗自适应聚类路由算法.与普通的平面多跳路由协议和静态聚类算法相比,

7、LEACH可以将网络生命周期延长15%,主要通过随机选择聚类首领,平均分担中继通信业务来实初始化阶段:稳定工作阶段:现。LeAeH定Wf,姓(rd评概念,由初始化和稳定工作两个阶段组成。为了避免额外的左理什消L稳&总背湾持续相对较长仰时帖如图3:4M示,时间1.EACH协议的时序图在初始化阶段,聚类首领是通过下面的机制产生的。传感器节点生成0,1之间的随机数,如果大于阈值T,则选该节点为聚类首领.T的计算方法如下:其中P为节点中成为聚类首领的百分数,r是当前的轮数.当簇头选定之后,簇头节点主动向网络中节点广播自己成为簇头的消息(ADV_CH)O接收到此消息的节点,依据接收信号的强度,选择它所要

8、加入的簇,并发消息通知相应的簇头(JolN_REQ)0基于时分多址(TimeDivisionMultipleAddress,简称TDMA)的方式,簇头节点为其中的每一个成员分配通信时隙,并以广播的形式通知所有的簇内节点(ADVSCH).这样保证了簇内每一个节点在指定的传输时隙进行数据传输,而在其他时间进入休眠状态,减少了能量消耗。在稳定工作阶段,节点持续采集监测数据,在自身传输时隙到来时把监测数据传给簇头节点(DATA),如图3.5所示。簇头节点对接收到数据进行融合处理之后,发送到Sink节点,这是一种减小通信业务量的合理工作模式。持续一段时间以后,整个网络进入下一轮工作周期,重新选择簇头节点

9、。1.EACH协议采用动态转换簇头的方法来平均网络节点的能量消耗,使因能量耗尽而失效的节点呈随机分布状态,于是与普通的多跳路由协议和静态簇算法相比,LEACH可以将网络生命周期延长15%。但是LEACH协议在每轮固定簇头节点后在划分簇的过程中,簇头节点开消较大.并且簇头节点的选择无法达到最优,有可能簇头节点位于网络的边缘或者几个簇头节点相邻,某些节点不得不传输较远的距离来与簇头通信,这就导致了大量能量消耗。而且LEACH协议所有簇头节点直接与Sink节点通信,采用连续数据发送模式和单跳路径选择模式,使得每轮中簇头节点能耗巨大,因此不适合在大规模的传感器网络中应用.(4) TEEN(thresh

10、oldsensitiveenergyefficientsensornetworkprotocol)依照应用模式的不同,通常可以简单地将无线自组织网络(包括传感器网络和Ad-hoc网络)分为主动(ProaetiVe)和响应(reactive)两种类型。主动型传感器网络持续监测周围的物质现象,并以恒定速率发送监测数据;而响应型传感器网络只是在被观测变量发生突变时才传送数据。相比之下,响应型传感器网络更适合应用在敏感时间的应用中。TEEN和LEACH的实现机制非常相似,只是前者是响应型的,而后者属于主动型传感器网络.在TEEN中定义了硬、软两个门限值,以确定是否需要发送监测数据。当监测数据第一次超过

11、设定的硬门限时,节点用它作为新的硬门限,并在接着到来的时隙内发送它。在接下来的过程中,如果监测数据的变化幅度大于软门限界定的范围,则节点传送最新采集的数据,并将它.Lowlevelclusterhead、./、吃为翻面于娥Or磁强节软门螭的、大小,啰知qa青度邳系统能耗之间取得合理的平衡。图316表示的良,语E协议由蒙簇构,成的层及结构。OCigK6bK.JTEEN协议中由聚簇构成的层次结构TENE合用于实时性要求较高的应用场合,比如入侵警报,爆炸预警等,用户可以及时获取感兴趣的信息。而且用户可以通过设置不同的软门限方便地平衡监测的准确性与系统节能性两项指标.但是这个方案也有一些不足之处,例如

12、门限值达不到,节点就永远不会和簇头节点通信,用户就无法从网络得到任何数据;没有相应的机制去区分那些没有感应到足够大变化的节点和处于关闭状态的节点,所以TEEN协议不适合应用在。(5) PEGAGIS(power-efficientgatheringinsensorinformationsystem)PEGASIS由LEACH发展而来。它假定组成网络的传感器节点是同构且静止的。节点发送能量递减的测试信号,通过检测应答来确定离自己最近的相邻节点。在采集数据前,首先利用贪心算法将网络中的所有节点连接成一条单链。通过这种方式,网络中的所有节点能够了解彼此的位置关系,进而每一个节点依据自己的位置选择所属

13、的聚类,聚类的首领向链的两端发出采集数据的请求,数据从单链的两个端点向首领流动.中间节点在传递数据前要执行融合操作,最终由首领节点将结果数据传送给Sink节点.因为PEGASIS中每一个节点都以最小功率发送数据分组,并有条件完成必要的数据融合,减小业务流量。因此,整个网络的功耗较小。研究结果表明,PEGASIS支持的传感器网络的生命周期是LEACH的近两倍。4 .实验器材与工具MATLAB5 程序源代码functionx=animation_datasmall=5;medium=20;large=50;%Event_nameAnimatedColoronofftoggleSizeanimjde

14、f=。.InijAppIication,0,00o,small,o.oPackejSent,1,010,small,.0.,Packet_Received,1,0101,small),.Collided-Packet-Received,,0,100,small),ooo,Clock.Tick,0,000,small,oo.lChanneLRequesf,0,000,small),.oChanneLldIeJDheck,1,100,small,.,Packet-Receive_Start0,010,smallaO,Packet-Receive-End,o,000jsmall,.Packet_Tr

15、ansmit_Start,1,100,medium,.oPacket_JTransmit_End,0,010,small;fori=1:length(anim_def)a=anim_defi;x(i)=struct(,evenf,a1,animated,a2,color,a3,size,a4);endfunctionapplication(三)%DONOTeditsimulatorcode(linesthatbeginwithS;)S;persistentapp_dataS;globalIDtS;R,event,ID,data=get_event(三);S;topology,moteJDs=p

16、rowler(,GetTopologyInfb,);S;ix=find(mote_IDs=ID);S;ifstrcmp(event,InijApplication)S;trymemory=app-dataix;catchmemory=口;end,S;endS;switcheventcaseIniLAppIication,signal_strength=1;ifID=1%firstnodestartsfloodSeLCIock(1000)endPrintMessage(,i,)casePackejSentPrintMessage(,s,)casePacket-Received,%data.dat

17、a%message%data.signal_strength%receivedsignalstrengthifmemory。sendP=SimjDarams(et-app,P,);ifisempty(p);p=.5;endifrand(pSend_Packet(radiostream(datadata,memory.signal_strength);endmemory.send=0;PrintMeSSage(Y)endcase,Col1ided_Packet_Received,%thisisfordebugpurposesonlycaseClockJTickSend_Packet(radios

18、tream(Messagefor00111fromGolomb,memory。signal_strength);case,GuiInfoRequest,disp(sprintf(,MemoryDumpofmoteID#%d:n,ID);disp(memory)case,Application-Stopped,%thiseventiscalledwhensimulationisstopped/suspendedcaseApplication_Finished%thiseventiscalledwhensimulationisfinishedotherwiseerror(,Badeventname

19、forapplication:event)endS;app_dataix=memory;functionb=Send_Packet(data);globalIDtradio=prowler(,GetRadioName,);b=feval(radi,SendPaCkef,ID,data,t);functionb=Set_Clock(alarmjime);globalIDprowlerClnsertEvents2Q,make_event(alarmjime,ClodjTick,ID);functionPrintMessage(msg)globalIDprowler(TetMessage,ID,ms

20、g)functionLED(msg)globalIDPrOWIerCLED,ID,msg)functionvarargout=infotitleI=lApplicationFLOOD1D,;str1=Thisapplicationillustratesthesimplefloodingalgorithm.;.。.,9OOOThesendermotetransmitsamessage.Eachmotereceivingthe*;.messageretransmitsitwithprobabilitypo,;oo.,ThevalueofpcanbesetinthenApplicationParam

21、etersn*;o.。,window.Thedefaultvalueisp=0o5;.,,Ifpistoolow,theflooddiesoutbeforeeverymotecould,;.,receivethemessage。Ifpittoohigh,themessageis;。.Retransmittedseveraltimesaftereverymotehavereceivedit,;.,thuscausinganunnecessarilyhighsettlingtime。;.09OO,Theoptimalvalueofphighlydependsontopology;.,Youcanc

22、hangethetopologybyeditingthefileFLD1D-TOPOLY.;.00,。,SeealsoFL00D2Do;).0,);ifnargout=0helpwin(title1,str1,ApplicationInfo)elsevarargout=title1,str1;endfunctionparam=params;param(1).name=,P;param(l)0default=0.5;functiontopology,moteJDs=topology(varargin);Nx=10;Ny=1;%numberofpointsonthegridix=1;t=;dist

23、x=1;disty=5;X=1:distx:(Nx-1)*distx+1;Y=1:disty:(Ny-1)*disty+1;fori=Xforj=Yt=t;,j;endendtopology=t;moteJDs=1:Nx*Ny;functionx=animationpersistentanir11jdataifisempty(anim_data)small=5;medium=20;large=50:%SizeEvent_nameAnimatedColor/onofftoggleanimjdef=.osmall,.Init-Application,1,000,small,.Packet-Sent

24、,2,100,small,o,PackeCReceived,3,100,small,Collided-Packet-Received,4,100,small,.ooCloCkjiCk,O,000,small,.oChanneLReqUest,O,000,small,ooChanneLIdIe_Check,1,100,small,oo,PackeLReceive-Start,O,010,small,.Packet_Receive_End0,000,medium,。,Packet_Transmit-Start,DO1,100,Packet_Transmit_End,1,010,small;fori

25、=1:length(anim_def)a=anim_defi;ifi=1animjdata=structCevent,a1,animated,a2,lor,a(3,size,a(4);elseanim_data(i)=struct(,evental,animated,a2,color,a3,size,a4);endendendx=anim_data;functionapplication(三)g.persistentapp_dataS;globalIDtS;t,event,ID,data=get_event(三);S;topology,moteJDs=prowler(GetTopologyIn

26、fo,);S;ix=find(mote_lDS=ID);S;ifstrcmp(event,Init.Application)S;trymemory=app_dataix;catchmemory=;end,S;endS;SENDER_ID=sim_params(,getapp,StartMote,);ifisempty(SENDERJD),SENDERJD=1;endswitcheventcase,Init-Application,SignaLstrength=I;memory=struct(send,1,signaLStrength,SignaLStrength);ifID=SENDERJD%

27、thisnodestartsfloodSeLCIock(1000)endPrintMessage(,i,)case,Packet-Sent,memory0send=0;PrintMessage(,s,)casePacket-Received%dataodata%message%dataoSignaLstrength%receivedsignalstrengthifmemoryosendp=sim-params(,getapp,P,);ifisempty(p);p=o3;end%p=0.3;%pisforcedtoOo3/Commentthislineifyouwanttouseitforopt

28、imizationifrandpSend_Packet(radiostream(data.data,memory.signa!_strength);endmemoryosend=0;PrintMessage(,r,)endcaseCollided_Packet_Received%thisisfordebugpurposesonlycaseCIockJickSend_Packet(radiostream(,thisisthemessage,memorysignal_strength);case,GuiInfoRequest,ifisempty(memory)disp(sprintf(,Memor

29、yDumpofmoteID#%dn,ID);disp(memory)elsedisp(sprintf(,Nomemorydumpavailablefornode%d。n,ID);endcase,Application-Stopped,%thiseventiscalledwhensimulationisstopped/suspendedcase*Application-Finished,%thiseventiscalledwhensimulationisfinishedotherwiseerror(,Badeventnameforapplication:,event)endS;apP-datai

30、x=memory;S;functionb=Send_Packet(data);globalIDtradi=prowler(GetRadioName);b=feval(radio,SendPacketID,data,t);functionb=Set_Clock(alarmjime);globalIDprowler(,InsertEvents2Q,make_event(alarm_time,ClockTick,ID);functionPrintMessage(msg)globalIDprowler(TextMessage,ID,msg)functionvarargout=infotitleI=5A

31、pplicationFL00D2D;St=rhisapplicationillustratesthefloodingalgorithmin2D;0。W.,00。Thesendermotetransmitsamessage。Eachmotereceivingthe;.。.messageretransmitsitwithprobabilityp。;。.,Thevalueofpcanbesetinthe,ApplicationParameters,*;.windowoThedefaultvalueisp=0。5。W.)OoThestartingnodecanalsobeselected(parame

32、terStartMOte)。.Vrry1tostartfromthelowerleftcorner,and55tostartfrom;。thecenterofthe(10x10)grid。;一。”,Ifpistoolow,theflooddiesoutbeforeeverymotecould;.。,receivethemessage.Ifpittoohigh,themessageis;。retransmittedseveraltimesaftereverymotehavereceivedit,thuscausinganunnecessarilyhighsettlingtime/;。.o,3O,

33、Theoptimalvalueofphighlydependsontopology/;0。W.,OOYoucanchangethetopologybychangingtheparametersX_Number,;.,Y-Number,andDistance.*;.oifnargout=0helpwin(titl1,strlApplicationInfb,)elsevarargout=title1,strl;endfunctionparam=params;param(1)oname=,P,;param(2).name=,StartMote,;param(3).name=,X_Number;par

34、am(4).name=,Y-Number,;param(5).name=Distance;param(1).default=0.5;param(2)。detailIt=1;param(3).default=10;param(4)odefault=10;param。default=1;functiontopology,moteJDs=topology(varargin);i=1;t=;%dist=1;%Nx=10;Ny=10;%numberofpointsonthegridNx=sim-params(,get-app,X-Number,);ifisempty(Nx),Nx=10;endNy=si

35、m-params(,get-app,Y-Number,);ifisempty(Ny)1Ny=10;enddist=simjDarams(,getapp,Distance);ifisempty(dist),dist=1;endX=1:dist:(Nx-1)*dist+1;Y=1:dist:(Ny-1)*dist1;fod=Xforj=Yt=t;i,j;endendtopology=1;moteJDs=1:Nx*Ny;6 .实验结果7 .结论名称主要思想Flooding收到数据的节点向所有邻居节点广播报文Gossiping收到的数据节点随机选取地选择一个邻节点转发报文SAR依据每条路径上的能量资源和QoS要求来决策路由SPIN根据暂时的请求、应答的方式转发数据FloOding中节点的能耗较快。所以使用SFD时网络检测到的事件总数较FloOding多,网络检测事件的平均能耗较FIoOding低。通过实验我们对目前传感器网络路由方面的研究进行了分析,并对常见的路由算法进行分类,详细地描述了现有的算法,并阐述了它们各自的优缺点。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号