无线传感器网络各类路由协议仿真_第1页
无线传感器网络各类路由协议仿真_第2页
无线传感器网络各类路由协议仿真_第3页
无线传感器网络各类路由协议仿真_第4页
无线传感器网络各类路由协议仿真_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

)))))))实验报告程无线传感)))))))

)))))))实验目的网络数据传输离不开路由协议路由协议是其组网的基础路由协议是无线传感器网络研究的重点之一其主要的设计目标是降低节点能量消耗延长网络的生命周期。本次实验将仿真各类无线传感器网络路由协议。实验要求争取考虑全面,考虑到各因素对各类协议的影响,以提高无线传感网络的性能。设计思想(1)Flooding泛洪是一种传统的路由技术要求维护网络的拓扑结构进行路由计算,接收到消息的节点以广播形式转发分组对于自组织的传感器网络泛洪路由是一种较直接的实现方法息的“内爆”(implosion)和“叠”(overlap)其固有的缺陷。为了克服这些缺陷S.hedetniemi等人提出策略,节点随机选取一个相邻节点转发它接收到的分组而不是采用广播形式这种方法避免了消息的“内爆”现象,但有可能增加端到端的传输延时。路协议中的爆和重叠问题(2)SPINprotocolforinformationvianegotiation)SPIN是以数据为中心的自适应路由协议,通过协商机制来解决泛洪算法中)))))))

)))))))的“内爆”和重叠”问。传感器节点仅广播采集数据的描述信息,当有相应的请求时,才有目的地发送数据信息SPIN协议中有种类型的消息,即ADVREQ和DATA。ADV用于新数据广播。当一个节点有数据可共享时,它以广播方式向外送DATA数包中的元数据。REQ用于请求发送数据。当一个节点希望接收D数据包时,发送REQ数据包。DATA—含附上元数据头(meta一header)的实际数据包。协议有4种不同的形式:•SPIN-PP:采用点到点的通信模式,并假定两节点间的通信不受其他节点的干扰,分组不会丢失,功率没有任何限制。要发送数据的节点通过ADV它的相邻节点广播消息,感兴趣的节点通过发送请求,数据源向请求者发送数据。接收到数据的节点再向它的相邻节点广播ADV消息,如此重复,使所有节点都有机会接收到任何数据。•SPIN-EC在的基础上考虑了节点的功耗只有能够顺利完成所有任务且能量不低于设定阈值的节点才可参与数据交换。•SPIN-BC:设计了广播信道,使所有在效半径内的节点可以同时完成数据交换。为了防止产生重复REQ请求,节点在听ADV消以后,设定一个随机定时器来控制REQ请求的发送,其他节点听到该请求,动放弃请求权利。•SPIN:它是对完善,主要考虑如何恢复无线链路引入的分组差错与丢失。记ADV消息的相关状态,如果在确定时间间隔内接收不到请求数据,则发送重传请求,重传请求的次数有一定的限制。图3.2表明了S议的路由建立与数据传送。SPIN议由建立与数据传送基于数据描述的协商机制和能量自适应机制的SP创协议能够很好地解决传统的Flooding议所带来的信息爆炸、信息重复和资源浪费等问题。此外,由于)))))))

)))))))协议中每个节点只需知道其单跳邻居节点的信息拓扑改变呈现本地化特征SP州协议的缺点是数据广告机制不能保证数据的可靠传递果对数据感兴趣的节点远离源节点或者在源节点和目的节点中间的节点对数据不感兴趣么数据就不可能被传递到目的地因此对于入侵发现等需要在定期间隔内可靠传递数据的应用系统来说,SP州并不是一个很好的选择。(3)SAR在选择路径时有序分配路由(SAR)策略充分考虑了功耗QoS和分组优先权等特殊要求采用局部路径恢复和多路经备份策略避免节点或链路失败时进行路由重计算需要的过量计算开销。为了在每个节点与sink节点间生成多条路经,需要维护多个树结构,每个树以落在ink点有效传输半径内的节点为根向外生长枝干的选择需满足一定QOS要求并要有一定的能量储备这一处理使大多数传感器节点可能同时属于多个树,可任选其一将采集数据回传到sink节点。(4)LEACH(lowenergyclusteringLEACH是MIT的Chandrakasan等人为无线传感器网络设计的低功耗自适应聚类路由算法。与一般的平面多跳路由协议和静态聚类算法相比,可以将网络生命周期延15%,主要通过随机选择聚类首,平均分担中继通信业务来实现。定义了“轮(round)概念,轮由初始化和稳定工作两个阶段组成。为了避免额外的处理开销,稳定态一般持续相对较长的时间。图3.4所示:初始化阶段

稳定工作阶段时间LEACH协的时序图在初始化阶段,聚类首领是通过下面的机制产生的。传感器节点生0之间的随机数,果大于阈值T则选该节点为聚类首领T的计算方法如下:

Pr1

(3.1其中p为节点中成为聚类首领的百分数,r是当前的轮。)))))))

)))))))当簇头选定之后,簇头节点主动向网络中节点广播自己成为簇头的消息(ADV_CH)接收到此消息的节点依据接收信号的强度选择它所要加入的簇,并发消息通知相应的簇头(JOIN_REQ)。基于时分多址(TimeDivisionMultipleAddress,简TDMA)的方式,簇头节点为其中的每个成员分配通信时隙,并以广播的形式通知所有的簇内节点(这样保证了簇内每个节点在指定的传输时隙进行数据传输而在其他时间进入休眠状态减少了能量消耗在稳定工作阶段节点持续采集监测数据在自身传输时隙到来时把监测数据传给簇头节点(DATA),如图所示。簇头节点对接收到数据进行融合处理之后,发送到节点,这是一种减小通信业务量的合理工作模式。持续一段时间以后,整个网络进入下一轮工作周期,重新选择簇头节点。LEACH议采用动态转换簇头的方法来平均网络节点的能量消耗使因能量耗尽而失效的节点呈随机分布状态而与一般的多跳路由协议和静态簇算法相比,可以将网络生命周期延长15%。但是LEACH议在每轮固定簇头节点后在划分簇的过程中簇头节点开销较大并且簇头节点的选择无法达到最优有可能簇头节点位于网络的边缘或者几个簇头节点相邻某些节点不得不传输较远的距离来与簇头通信,这就导致了大量能量消耗。而且LEACH协议所有簇头节点直接与Sink节点通信采用连续数据发送模式和单跳路径选择模式,使得每轮中簇头节点能耗巨大,因此不适合在大规模的传感器网络中应用。(5)

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

)))))))作为新的硬门在接着到来的时隙内发送它。在接下来的过程中,如果监测数据的变化幅度大于软门限界定的范围节点传送最新采集的数据将它设定为新的硬门限过调节软门限值的大小以在监测精度和系统能耗之间取得合理的平衡。图3.6表示的是TEEN协议中由聚簇构成的层次结构。SinkHighclusterheadLowclusterheadNormalsensornodeClusteringTEEN议中由聚簇构成的层次构TENE适用于实时性要求较高的应用场合,比如入侵警报,爆炸预警等,用户可以及时获取感兴趣的信息用户可以通过设置不同的软门限方便地平衡监测的准确性与系统节能性两项指标是这个方案也有一些不足之处如门限值达不到就永远不会和簇头节点通信就无法从网络得到任何数据没有相应的机制去区分那些没有感应到足够大变化的节点和处于关闭状态的节点,所以TEEN协议不适合应用在。(6)PEGAGIS(power-efficientgatheringinsensorinformationsystem)PEGASIS由LEACH发展而来。它假定组成网络的传感器节点是同构且静止的送能量递减的测试信号检应答来确定离自己最近的相邻节点。在收集数据前先利用贪心算法将网络中的所有节点连接成一条单链过这种方式络中的所有节点能够了解彼此的位置关系而每个节点依据自己的位置选择所属的聚类类的首领向链的两端发出收集数据的请求据从单链的两个端点向首领流动间节点在传递数据前要执行融合操作终由首领节点将结果数据传送给S节点为PEGASIS中每个节点都以最小功率发送数据)))))))

)))))))分组,并有条件完成必要的数据融合,减小业务流量。因此整个网络的功耗较小研究结果表明支持的传感器网络的生命周期是L的近两倍。实验器材与工具MATLAB程序源代码functionsmall=5;medium=20;Color/{on/off/toggle}anim_def={...{'Init_Application',0,[00],{'Packet_Sent',1,[00],1,[010],...0,[10],...0,[00],{'Channel_Request',[0],{'Channel_Idle_Check',1,[10],{'Packet_Receive_Start',[01],0,[00],...{'Packet_Transmit_Start',[100],medium},{'Packet_Transmit_End',0,[00],small}};fori=1:length(anim_def)a=anim_def{i};x(i)=struct('event',a{1},a{2},'color',a{3},a{4});functionapplication(S)DONOTcode(linesthatwithS;)app_dataIDt)))))))

)))))))if~strcmp(event,'Init_Application')trycatchmemory=[];switcheventif%firstnodefloodPrintMessage('i')'Packet_Received'%receivedsignalifp=sim_params('get_app','P');ifisempty(p);p=.5;endifSend_Packet(radiostream(data.data,PrintMessage('r')'Collided_Packet_Received'fordebugpurposesonly'Clock_Tick'for00111frommemory.signal_strength));'GuiInfoRequest'disp(sprintf('MemoryDumpofID#disp(memory)eventiscalledwhensimulationisstopped/suspended'Application_Finished'eventiscalledwhensimulationisfinished)))))))

)))))))otherwisenameforapplication:'functionb=Send_Packet(data);globalIDtb=feval(radio,ID,t);functionb=Set_Clock(alarm_time);globalIDmake_event(alarm_time,'Clock_Tick',ID));functionPrintMessage(msg)globalIDprowler('TextMessage',msg)functionglobalIDID,msg)functiontitle1='Applicationstr1={'Thisapplicationsimpleflooding'';...'ThemoteaEachmotereceivingthe';...'messageretransmitsitwithp.';...'Theofpbesetinthe''Application'window.Thedefaultis'';...'Ifptoolow,flooddiesoutbeforeeverymoteIfpittoothemessageseveraltimesaftermote'thuscausinganunnecessarilyhightime.';...'';...'Thevaluehighlydependson'';...'Youcanthetopologyeditingthe'';...alsoFLOOD2D.';...''};ifnargout==0)))))))

file

)))))))helpwin({str1},'ApplicationInfo')title1,str1};functionparam=params;param(1).name='P';param(1).default=0.5;functionNy=1;%thegriddistx=1;disty=5;X=1:distx:(Nx-1)*distx+1;Y=1:disty:(Ny-1)*disty+1;fori=Xforj=Yt=[t;i,j];mote_IDs=1:Nx*Ny;functionx=animationpersistentifisempty(anim_data)small=5;medium=20;Sizeanim_def={...{'Init_Application',1,{'Packet_Sent',0,)))))))

Color/{on/off/toggle}[00],[1],[10],[10],[0],

))))))){'Channel_Request',[000],{'Channel_Idle_Check',[1],{'Packet_Receive_Start',0,[01],[00],{'Packet_Transmit_Start',[10],medium},{'Packet_Transmit_End',[010],small}};fori=1:length(anim_def)a=anim_def{i};ifi==1anim_data=struct('event',a{1},'animated',a{2},a{3},a{4});anim_data(i)=struct('event',a{1},'animated',a{2},a{3},a{4});functionapplication(S)app_dataIDtif~strcmp(event,'Init_Application')trycatchmemory=[];SENDER_ID=sim_params('get_app',ifisempty(SENDER_ID),SENDER_ID=1;switchevent)))))))

)))))))memory=struct('send',1,'signal_strength',signal_strength);ifID==SENDER_ID%thisnodestartsfloodPrintMessage('i')'Packet_Received'%receivedsignalifp=sim_params('get_app','P');ifisempty(p);p=.3;endp=0.3;%pto/CommentlineifwanttoitifSend_Packet(radiostream(data.data,PrintMessage('r')'Collided_Packet_Received'fordebugpurposesonly'Clock_Tick'ismemory.signal_strength));'GuiInfoRequest'ifdisp(sprintf('MemoryDumpofID#disp(memory)disp(sprintf('Nofornode%d.\n',ID));eventiscalledwhensimulationisstopped/suspended'Application_Finished'eventiscalledwhensimulationisfinishedotherwise)))))))

)))))))nameforapplication:'functionb=Send_Packet(data);globalIDtb=feval(radio,ID,t);functionb=Set_Clock(alarm_time);globalIDmake_event(alarm_time,'Clock_Tick',ID));functionPrintMessage(msg)globalIDprowler('TextMessage',msg)functiontitle1='Applicationstr1={applicationfloodingalgorithmin2D.';...'';...'ThemoteaEachmotereceivingthe';...'messageretransmitsitwithp.';...'Theofpbesetinthe''Application'window.Thedefaultisp=0.5.';...'';...'Thenodecanalsoselected1tofromthelowerlef

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论