無線傳感器網絡各類路由協議仿真_第1頁
無線傳感器網絡各類路由協議仿真_第2頁
無線傳感器網絡各類路由協議仿真_第3頁
免費預覽已結束,剩余13頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、WORD格式實驗報告課程無線傳感網絡各類路由協議仿真1.實驗目的專業資料整理WORD格式網絡數據傳輸離不開路由協議,路由協議是其組網的根底, 路由協議是無線專業資料整理WORD格式傳感器網絡研究的重點之一, 其主要的設計目標是降低節點能量消耗, 延長網絡的生命周期。本次實驗將仿真各類無線傳感器網絡路由協議。2.實驗要求爭取考慮全面,考慮到各因素對各類協議的影響,以提高無線傳感網絡的性能。3.設計思想(1)Flooding泛洪是一種傳統的路由技術, 不要求維護網絡的拓撲構造, 并進展路由計算,接收到消息的節點以播送形式轉發分組。 對于自組織的傳感器網絡, 泛洪路由是一種較直接的實現方法, 但消息

2、的“內爆 (implosion)和“重疊 (overlap)是其固有的缺陷。為了抑制這些缺陷, S.hedetniemi等人提出了 Gossiping策略,節點隨機選取一個相鄰節點轉發它接收到的分組, 而不是采用播送形式。 這種方法防止了消息的 “內爆 現象,但有可能增加端到端的傳輸延時。Flooding 路由協議中的內爆和重疊問題(2)SPIN (sensor protocol for information via negotiation)SPIN是以數據為中心的自適應路由協議,通過協商機制來解決泛洪算法中的 “內爆 和 “重疊 問題。傳感器節點僅播送采集數據的描述信息,當有相應的請求時,

3、才有目的地發送數據信息。SPIN協議中有 3種類型的消息,即 ADV ,REQ和 DATA 。ADV 用于新數據播送。當一個節點有數據可共享時,它以播送方式向外發送專業資料整理WORD格式DATA 數據包中的元數據。REQ用于請求發送數據。當一個節點希望接收DATA 數據包時,發送 REQ數據包。DATA 包含附上元數據頭 (meta一header)的實際數據包。SPIN協議有 4種不同的形式 :? SPIN-PP:采用點到點的通信模式,并假定兩節點間的通信不受其他節點的干擾,分組不會喪失,功率沒有任何限制。要發送數據的節點通過ADV 向它的相鄰節點播送消息,感興趣的節點通過REQ發送請求,數

4、據源向請求者發送數據。接收到數據的節點再向它的相鄰節點播送ADV 消息,如此重復,使所有節點都有時機接收到任何數據。" SPIN-EC:在SPIN-PP的根底上考慮了節點的功耗,只有能夠順利完成所有任務且能量不低于設定閾值的節點才可參與數據交換。? SPIN-BC:設計了播送信道,使所有在有效半徑內的節點可以同時完成數據交換。為了防止產生重復的 REQ請求,節點在聽到 ADV 消息以后,設定一個隨機定時器來控制 REQ請求的發送,其他節點聽到該請求,主動放棄請求權利。? SPIN-RL :它是對 SPIN-BC的完善,主要考慮如何恢復無線鏈路引入的分組過失與喪失。記錄 ADV 消息的

5、相關狀態,如果在確定時間間隔內接收不到請求數據,那么發送重傳請求,重傳請求的次數有一定的限制。圖 3.2說明了 SPIN協議的路由建立與數據傳送。SPIN 協議的路由建立與數據傳送基于數據描述的協商機制和能量自適應機制的SP創協議能夠很好地解決傳統的 Flooding協議所帶來的信息爆炸、信息重復和資源浪費等問題。此外,由于協議中每個節點只需知道其單跳鄰居節點的信息,拓撲改變呈現本地化特征。 SP州協議的缺點是數據廣告機制不能保證數據的可靠傳遞,如果對數據感興趣的節點遠離源節點或者在源節點和目的節點中間的節點對數據不感興趣,那么數據就不可能被傳遞到目的地。 因此,對于入侵發現等需要在定期間隔內

6、可靠傳遞數據專業資料整理WORD格式的應用系統來說, SP州并不是一個很好的選擇。(3)SAR (sequential assignment routing)在選擇路徑時, 有序分配路由 (SAR) 策略充分考慮了功耗、 QoS和分組優先權等特殊要求, 采用局部路徑恢復和多路經備份策略,防止節點或鏈路失敗時進行路由重計算需要的過量計算開銷。為了在每個節點與sink節點間生成多條路經,需要維護多個樹構造,每個樹以落在sink節點有效傳輸半徑內的節點為根向外生長,枝干的選擇需滿足一定 QOS要求并要有一定的能量儲藏。 這一處理使大多數傳感器節點可能同時屬于多個樹,可任選其一將采集數據回傳到sink

7、節點。(4) LEACH (low energy adaptive clustering hierarchy)LEACH 是 MIT 的 Chandrakasan等人為無線傳感器網絡設計的低功耗自適應聚類路由算法。與一般的平面多跳路由協議和靜態聚類算法相比,LEACH 可以將網絡生命周期延長 15%,主要通過隨機選擇聚類首領,平均分擔中繼通信業務來實現。 LEACH 定義了“輪(round)的概念 ,一輪由初始化和穩定工作兩個階段組成。為了防止額外的處理開銷,穩定態一般持續相對較長的時間。如圖 3.4所示:初始化階段穩定工作階段時間LEACH 協議的時序圖在初始化階段 ,聚類首領是通過下面的機

8、制產生的。傳感器節點生成0,1之間的隨機數 ,如果大于閾值 T,那么選該節點為聚類首領 .T的計算方法如下 :P3.1T1 P r mod 1p其中 p為節點中成為聚類首領的百分數,r是當前的輪數。當簇頭選定之后,簇頭節點主動向網絡中節點播送自己成為簇頭的消息(ADV_CH) 。接收到此消息的節點,依據接收信號的強度, 選擇它所要參加的簇,并發消息通知相應的簇頭(JOIN_REQ) 。基于時分多址(Time DivisionMultipleAddress,簡稱 TDMA) 的方式,簇頭節點為其中的每個成員分配通信時隙,并以專業資料整理WORD格式播送的形式通知所有的簇內節點 (ADVSCH)

9、。這樣保證了簇內每個節點在指定的傳輸時隙進展數據傳輸, 而在其他時間進入休眠狀態, 減少了能量消耗。 在穩定工作階段,節點持續采集監測數據, 在自身傳輸時隙到來時把監測數據傳給簇頭節點 (DATA) ,如圖 3.5 所示。簇頭節點對接收到數據進展融合處理之后,發送到 Sink 節點,這是一種減小通信業務量的合理工作模式。持續一段時間以后,整個網絡進入下一輪工作周期,重新選擇簇頭節點。LEACH 協議采用動態轉換簇頭的方法來平均網絡節點的能量消耗,使因能量耗盡而失效的節點呈隨機分布狀態,因而與一般的多跳路由協議和靜態簇算法相比, LEACH 可以將網絡生命周期延長15%。但是 LEACH 協議在

10、每輪固定簇頭節點后在劃分簇的過程中, 簇頭節點開銷較大。 并且簇頭節點的選擇無法到達最優,有可能簇頭節點位于網絡的邊緣或者幾個簇頭節點相鄰,某些節點不得不傳輸較遠的距離來與簇頭通信,這就導致了大量能量消耗。而且LEACH 協議所有簇頭節點直接與Sink 節點通信,采用連續數據發送模式和單跳路徑選擇模式,使得每輪中簇頭節點能耗巨大,因此不適合在大規模的傳感器網絡中應用。(5) TEEN (threshold sensitive energy efficient sensor network protocol)依照應用模式的不同,通常可以簡單地將無線自組織網絡(包括傳感器網絡和 Ad-hoc 網絡

11、 )分為主動 (proactive)和響應 (reactive)兩種類型。主動型傳感器網絡持續監測周圍的物質現象, 并以恒定速率發送監測數據; 而響應型傳感器網絡只是在被觀測變量發生突變時才傳送數據。相比之下 ,響應型傳感器網絡更適合應用在敏感時間的應用中。 TEEN 和 LEACH 的實現機制非常相似 ,只是前者是響應型的,而后者屬于主動型傳感器網絡。在 TEEN 中定義了硬、軟兩個門限值,以確定是否需要發送監測數據。當監測數據第一次超過設定的硬門限時 ,節點用它作為新的硬門限 ,并在接著到來的時隙內發送它。在接下來的過程中,如果監測數據的變化幅度大于軟門限界定的X圍, 那么節點傳送最新采集

12、的數據, 并將它設定為新的硬門限。 通過調節軟門限值的大小, 可以在監測精度和系統能耗之間取得合理的平衡。圖 3.6 表示的是 TEEN 協議中由聚簇構成的層次構造。專業資料整理WORD格式SinkHigh level cluster headLow level cluster headNormal sensor nodeClusteringTEEN 協議中由聚簇構成的層次構造TENE 適用于實時性要求較高的應用場合,比方入侵警報,爆炸預警等,用戶可以及時獲取感興趣的信息。 而且用戶可以通過設置不同的軟門限方便地平衡監測的準確性與系統節能性兩項指標。但是這個方案也有一些缺乏之處,例如門限值達不

13、到,節點就永遠不會和簇頭節點通信, 用戶就無法從網絡得到任何數據;沒有相應的機制去區分那些沒有感應到足夠大變化的節點和處于關閉狀態的節點,所以 TEEN 協議不適合應用在。(6) PEGAGIS (power-efficient gathering in sensor information system) PEGASIS由 LEACH 開展而來。它假定組成網絡的傳感器節點是同構且靜止的。節點發送能量遞減的測試信號, 通過檢測應答來確定離自己最近的相鄰節點。在收集數據前, 首先利用貪心算法將網絡中的所有節點連接成一條單鏈。 通過這種方式,網絡中的所有節點能夠了解彼此的位置關系, 進而每個節點依

14、據自己的位置選擇所屬的聚類, 聚類的首領向鏈的兩端發出收集數據的請求, 數據從單鏈的兩個端點向首領流動。 中間節點在傳遞數據前要執行融合操作, 最終由首領節點將結果數據傳送給 Sink節點。因為 PEGASIS中每個節點都以最小功率發送數據分組,并有條件完成必要的數據融合,減小業務流量。因此 ,整個網絡的功耗較小。研究結果說明, PEGASIS支持的傳感器網絡的生命周期是 LEACH 的近兩倍。專業資料整理WORD格式4.實驗器材與工具MATLAB5.程序源代碼function x=animation_datasmall=5; medium=20; large=50;%Event_nameAn

15、imatedColor/on/off/toggleSizeanim_def=.'Init_Application',0,0 00 ,small, .'Packet_Sent',1,010,small, .'Packet_Received',1,010,small, .'Collided_Packet_Received', 0,100,small, .'Clock_Tick',0,000,small, .'Channel_Request',0,000,small, .'Channel_Idle

16、_Check',1,100,small, .'Packet_Receive_Start',0,010,small, .'Packet_Receive_End',0,000,small, .'Packet_Transmit_Start',1,1 00 ,medium, .'Packet_Transmit_End',0,010,small;for i=1:length(anim_def)a=anim_defi;x(i)=struct('event', a1, 'animated', a2, &#

17、39;color', a3, 'size', a4);endfunction application(S)% DO NOT edit simulator code (lines that begin with S;)專業資料整理WORD格式S;S;S;S;S;S;S;S;persistent app_dataglobal ID tt, event, ID, data=get_event(S);topology, mote_IDs=prowler('GetTopologyInfo');ix=find(mote_IDs=ID);if strcmp(event

18、, 'Init_Application')try memory=app_dataix; catch memory=; end,end專業資料整理WORD格式S;switch eventcase 'Init_Application'專業資料整理WORD格式signal_strength=1;if ID=1 % first node starts floodSet_Clock(1000)endPrintMessage('i')case 'Packet_Sent'PrintMessage('s')case 'Pa

19、cket_Received'% data.data% message% data.signal_strength % received signal strength if 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 'Co

20、llided_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_Stoppe

21、d'% 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_dataix=memory;function b=Send_Packet(data);global ID t專業資料整理WORD格式radio=prowl

22、er('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

23、 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.&#

24、39; ;.'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

25、 several times after every mote have received it,' ;.'thus causing an unnecessarily high settling time.'.''.'The optimal value of p highly depends on topology.'.''.'YoucanchangethetopologybyeditingthefileFLOOD1D_TOPOLOGY .'.''.'See also FLOOD2D

26、.'.''if nargout=0helpwin( title1, str1, 'Application Info')elsevarargout= title1, str1;endfunction param=params;param(1).name='P'param(1).default=0.5;專業資料整理WORD格式function topology,mote_IDs=topology(varargin);Nx=10; Ny=1; % number of points on the gridix=1;t=;distx=1;disty

27、=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_nameAnimatedColor/on/off/toggleSizeanim_def=.small, .'Init_Application',1,000,'Pa

28、cket_Sent',2,100,small, .'Packet_Received',3,100,small, .'Collided_Packet_Received',4,100,small, .'Clock_Tick',0,000,small, .small, .'Channel_Request',0,000,'Channel_Idle_Check',1,100,small, .'Packet_Receive_Start',0,010,small, .'Packet_Receive

29、_End',0,000,專業資料整理WORD格式small, .'Packet_Transmit_Start',1,100,medium, .'Packet_Transmit_End',1,010,small;for i=1:length(anim_def)a=anim_defi;if i=1anim_data=struct('event', a1,'animated', a2,'color', a3,'size',a4);elseanim_data(i)=struct('event

30、', a1, 'animated', a2, 'color', a3, 'size',a4);endendendx=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_Appli

31、cation')S;try memory=app_dataix; 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)

32、; if ID=SENDER_ID % this node starts floodSet_Clock(1000)endPrintMessage('i')case 'Packet_Sent'memory.send=0;專業資料整理WORD格式PrintMessage('s')case 'Packet_Received'% data.data% message% data.signal_strength % received signal strength if memory.sendp=sim_params('get_ap

33、p', '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 f

34、or 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

35、.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)end專業資料整理WORD格式S;S;app_dataix=memory;專業資料整理

36、WORD格式function b=Send_Packet(data);專業資料整理WORD格式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)gl

37、obal 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 proba

38、bility 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 fro

39、m'.'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 optima

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論