基于contiki平臺的路由協議仿真_第1頁
基于contiki平臺的路由協議仿真_第2頁
基于contiki平臺的路由協議仿真_第3頁
基于contiki平臺的路由協議仿真_第4頁
基于contiki平臺的路由協議仿真_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、評定成績: 課程設計報告(傳感器網絡組網)設計題目: 基于contiki平臺的路由協議及仿真 學 院 名 稱 :自動化學院學 生 姓 名 :專 業 :班 級 :學 號 :指 導 教 師 : 填表時間: 2016 年 5 月重慶郵電大學本科課程設計報告 摘要 摘要路由協議執行網絡拓撲描述、路由選擇和數據包轉發的功能,影響整個網絡的性能和存活時間。現有的路由協議需要發送大量數據包維護網絡拓撲,以及大量的存儲空間來存儲路由條目。由于硬件的限制,無線傳感器無論是能量還是處理能力,存儲能力都受到了極大的限制。因此,IETF ROLL工作組提出了一種針對低功耗有損網絡的IPV6路由協議,即RPL路由協議。

2、文中對RPL路由協議的拓撲構建過程進行分析,并通過利用cooja仿真工具進行仿真,在仿真中顯示出DODAG的構建過程,并對進行仿真出來的各種拓撲結構進行能耗的分析,在仿真過程中直觀地顯示涓流機制。關鍵字:IPV6 RPL路由協議 仿真 能耗分析重慶郵電大學本科課程設計報告 目錄目錄摘要I第一章 緒論11.1 設計題目:11.2 設計任務:11.3 設計要求:11.4 參考資料:1第二章 總體方案設計(或系統建模)22.1 RPL概述22.1.1DODAG的構建過程22.1.2 環路避免的機制22.1.3涓流機制32.2 基于Contiki平臺的RPL路由協議仿真3第三章 個人設計工作(或系統仿

3、真分析)53.1DODAG圖構建分析53.2能耗的分析63.3涓流機制83.4其他參數修改:8第四章 設計總結9參考文獻10附錄11I重慶郵電大學本科課程設計報告 第一章 緒論第一章 緒論1.1 設計題目:基于Contiki平臺的傳感網路由協議設計與仿真1.2 設計任務:基于Contiki操作系統和Cooja仿真器,運用所學的無線傳感網知識,選擇一種典型的傳感網路由協議進行組網設計和仿真。路由協議可在AODV、RPL、RIME等協議中任選一種,也可選擇其它典型的傳感網路由協議。1.3 設計要求:1掌握Contiki物聯網平臺開發的基礎知識。2. 組網規模不少于20個節點。3. 完成網絡的運行場

4、景分析、拓撲結構規劃和路由協議設計。4. 在Contiki平臺上獨立編寫符合需求的傳感網程序。5采用Contiki自帶的網絡仿真器,對編寫的程序和網絡路由協議進行仿真,給出網絡運行效果圖。6. 調節路由協議的一些參數,對路由協議的性能變化進行分析。1.4 參考資料:1Contiki開發組. Contiki: The Open Source OS for the Internet of Things. /2. 桂勁松. 物聯網系統設計. 北京:電子工業出版社. 2013.3. 謝希仁. 計算機網絡. 北京:電子工業出版社. 2008.4. 李曉維.

5、 無線傳感器網絡技術. 北京:北京理工大學出版社. 2007.重慶郵電大學本科課程設計報告 第二章 總體設計方案(或系統建模)第二章 總體方案設計(或系統建模)2.1 RPL概述 RPL是為LLN而設計的距離矢量路由協議,通過使用目標函數和度量集合構建具有目的地的有向無環圖(DODAG)。目標函數利用度量和約束條件的集合計算出最優路徑。由于網絡部署的目的性有異,同一網絡可能需要不同的鏈路質量要求等等。2.1.1 DODAG的構建過程DODAG的構造過程由根節點或LoWPAN邊界路由器(LBR)發起。為了實現DODAG的構造,RPL基于ICMPv6,新增加了如下三條控制消息:DIS、DIO、DA

6、O。RPL支持三種基本的數據傳輸模式: 多點到點,Multipoint-to-Point (MP2P)、點到多點,Point-to-Multipoint (P2MP)、點到點,Point-to-Point (P2P).。首先來說實現為MP2P構造上行到根節點的路徑。根節點利用DIO消息廣播DODAG的信息;根節點的鄰居節點收到DIO后,根據一定的準則,決定是否加入這個DODAG,這些準則包括:目標函數、DAG特性、各種自定義的本地策略等,當某個鄰居節點加入所廣播的DODAG后,它就建立了一條到達DODAG根節點的路徑。根節點被稱為該節點的“父節點”。如果新加入圖的節點類型是路由器,它將向自己的

7、鄰居節點繼續廣播包含DODAG信息的DIO消息。如果新加入圖的節點是“葉子節點”,則只是完成入網動作,不廣播DIO消息。鄰居節點不斷重復上述廣播和加入動作,直至到達網絡的所有葉子節點。每個節點都有一條路徑由指向自己的父節點,通過將數據消息發給父節點,最終就能到達根節點。然后來說實現為P2MP構造的從根節點出發的下行路徑,下行路由的構造通過DAO消息來完成。每個節點加入DODAG后,在網絡發起上行路徑構造指令后,將發送DAO消息到它的父節點。DAO消息中含有前綴、前綴的有效時間等信息,用于表征節點所在前綴的可達性。當一個節點收到DAO消息后,將對前綴信息進行處理,并在路由表中添加路由表項。然后將

8、該前綴信息進一步通過DAO上傳給自己的父節點。一個節點也可以將收到的前綴可達性信息進行匯集后,再發給自己的父節點。前綴上傳過程一直進行,直至前綴信息到達父節點。每個節點都完成前綴上傳后,整個網絡將建立起一個從根節點到達所有葉子節點的下行路由圖。2.1.2 環路避免的機制 RPL采用兩種策略避免環的出現,這些方法都用到rank值。策略1:最大深度策略,一個節點在鄰居中選擇父節點時,不能選擇rank值比它自己的rank重慶郵電大學本科課程設計報告 第二章 總體設計方案(或系統建模)值大一定程度的節點,即rank值超過node-rank+max_depth的節點,不能選擇作為父節點。至于超過多少深度

9、才不能選擇(max_depth的大小),由根節點確定。這種策略主要是防止選比自己還深的節點作為父節點。策略2:一個節點不能過度貪婪(greedy),不能為了增加父節點數,而移動自己在圖中的深度,使深度值加大。2.1.3涓流機制 大多數路由協議,都需要設計周期性的keep alive幀,保證路由表的更新和維護。在LLN中,需周期性的發送DIO等消息,而周期性的更新會導致過多的控制開銷,浪費能量。 所以RPL采用了一種自適應的定時器機制,稱為trickle timer。這種機制用來控制DIO消息發送的頻率。trickle timer機制將圖的更新視為一致性問題,使用trickle timer來決定

10、何時組播DIO消息。trickle timer有個初始值,當網絡趨于穩定時, trickle timer的周期會逐漸變大,相應的,網絡中DIO消息發送的頻率會減少。當網絡發生一些“不一致”事件時, trickle timer的值又會恢復到初始值,DIO消息的發送就會比較頻繁。這些事件有:節點檢測到環路、節點新入網、節點發生了移動,采用了trickle timer機制后,當網絡越來越穩定的時候,RPL控制報文會逐漸減少;而當網絡出現問題時,控制報文發送的頻率又會顯著增加,保障網絡及時通過控制報文快速修復問題。2.2 基于Contiki平臺的RPL路由協議仿真 我利用了Contiki平臺上的coo

11、ja對RPL路由協議進行仿真,下面為仿真過程:(1) 打開cooja,新建一個模擬器。圖2.1 新建模擬器重慶郵電大學本科課程設計報告 第二章 總體設計方案(或系統建模) (2)加入根節點和葉子節點。圖2.2 加入節點 (3)創建成功后,便能出現如下畫面,其中ID1為根節點,其他為葉子節點,按下simulation control的start鍵,便開始DODAG圖的構造。圖2.3 開始仿真重慶郵電大學本科課程設計報告 第三章 個人設計工作(或系統仿真分析)第3章 個人設計工作(或系統仿真分析)3.1 DODAG圖構建分析 我對icmp6.c中的打印函數進行修改,使得整個DODAG圖的構建過程能

12、夠清楚地顯示出來。 (1)上行路徑的構建:從打印信息可清楚地看出構建上行路徑的過程,根節點利用DIO消息廣播DODAG的信息;根節點的鄰居節點收到DIO后,根據一定的準則,決定是否加入這個DODAG,這些準則包括:目標函數、DAG特性、各種自定義的本地策略等,當某個鄰居節點加入所廣播的DODAG后,它就建立了一條到達DODAG根節點的路徑。圖3.1 上行路徑構建 (2)下行路徑的構建: 下行路由的構造通過DAO消息來完成。每個節點加入DODAG后,在網絡發起上行路徑構造指令后,將發送DAO消息到它的父節點。DAO消息中含有前綴、前綴的有效時間等信息,用于表征節點所在前綴的可達性。重慶郵電大學本

13、科課程設計報告 第三章 個人設計工作(或系統仿真分析)圖3.2 下行路徑構建 (3)最終DODAG圖的建立圖3.3 建立DODAG圖3.2 能耗的分析 我對節點分布較分散的情況和節點較密集的情況進行了仿真,結果顯示,節點較密集的時候在拓撲建立的過程中能耗較高且較為均衡。另外,我發現在第一種情況的仿真過程中,連接多條路徑的節點都會消耗更多的能量,結果如圖所示。重慶郵電大學本科課程設計報告 第三章 個人設計工作(或系統仿真分析)圖3.4 不同節點分布情況的示意圖圖3.5 情況1的節點能耗示意圖圖3.6 情況2的節點能耗示意圖重慶郵電大學本科課程設計報告 第三章 個人設計工作(或系統仿真分析)3.3

14、 涓流機制下圖為節點的DIO消息發送間隔統計圖,橫軸代表網絡運行時間,縱軸代表DIO消息的發送間隔,從圖中可以看出涓流機制的工作原理。初始的DIO發送間隔是區間內的隨機數,節點收到一致的DIO消息后,DIO發送間隔在原來的基礎上翻倍,圖中呈現出階梯型增長的趨勢。隨著網絡的穩定,信道中的控制消息數據包數量大大減少。當網絡發生一些“不一致”事件時, trickle timer的值又會恢復到初始值,DIO消息的發送就會比較頻繁。如圖所示就是節點10發生了位置的移動,導致其DIO消息的發送間隔時間又回到初始值。圖3.7 涓流機制示意圖3.4 其他參數修改: (1) 在collect-commmon.c

15、中Line 053:#define PERIOD 60改為30,修改過后使用collect-view工具進行數據收集的時間提前,可以在開始后30秒的時候看到收集到的個節點的信息。方便我們對RPL的性能進行分析。 (2)在rpl-conf.h Line 148:#define RPL_DIO_INTERVAL_MIN 12 改為10,使DIO消息發送間隔變為10秒,加快節點發送消息的速度。重慶郵電大學本科課程設計報告 第四章 設計總結第四章 設計總結這次課程設計我進行了對RPL路由協議的仿真,感覺獲益良多,在這里總結一下這次課程設計的收獲與感受。前段時間我們在物聯網系統設計的課堂上才剛剛學習了R

16、PL路由協議的相關知識,而這次則對此進行了一次實踐,進一步加深了對此的理解。從仿真的過程中,可以直觀地看到DODAG的構建過程,直觀地看到上行路徑到根節點和下行路徑的構建。在icmp6.c中有一段代碼直觀地描述了避免環路的機制。通過實際操作了解到了涓流機制的實質。另外,通過這次課程設計,也開拓了我的視野,使我有了第一次的機會對windows以外的操作系統進行操作,了解到了makefile的一些規則以及Linux的一些命令。另外,這次設計對我C語言學習的幫助是巨大的,在啃代碼,提高看代碼的能力的同時,還能加深對RPL協議的理解,可謂是一舉兩得。我也希望自己在后續學習中去補足自己在這次課程設計所發

17、現的一些問題,繼續提高自己讀寫代碼的能力,為日后學習工作打下一個良好的基礎。重慶郵電大學本科課程設計報告 參考文獻參考文獻1 郭梯云,鄔國揚,李建東移動通信M西安:西安電子科技大學出版社,20012 董曉芳,孫巖,陳仁貴等自行研制儀器設備的規范化管理J實驗技術與管理,2007,245:1631653 孫利民,李建中. 無線傳感器網絡M. 北京:清華大學出版社,2005.4 李振強. IPV6技術解密M. 北京.人民郵電出版社,2006.重慶郵電大學本科課程設計報告 附錄附錄Leaf.c:PROCESS_THREAD(rpl_leaf_process,ev,data) static struct

18、 etimer periodic;/*定義etimer 周期性定時器*/static struct ctimer backoff_timer;/*定義ctimer 補償定時器*/ PROCESS_BEGIN();PROCESS_PAUSE();set_global_address();printf("UDP LEAF IP ADDRESS:");print_local_addresses();leaf_connection =udp_new(NULL,UIP_HTONS(UDP_LEAF_PORT),NULL);if(leaf_connection = NULL) PRIN

19、TF("Fail to make UDP connection, exiting the process!n"); PROCESS_EXIT(); udp_bind(leaf_connection, UIP_HTONS(UDP_LEAF_PORT); PRINTF("Created a connection with the root "); PRINT6ADDR(&leaf_connection->ripaddr); PRINTF(" local/remote port %u/%un", UIP_HTONS(leaf_

20、connection->lport), UIP_HTONS(leaf_connection->rport);etimer_set(&periodic, SEND_INTERVAL);/*設置etimer定時器,定時時長為SEND_INTERVAL*/* *etimer:定時器期滿,發送事件 *ctimer:定時器期滿,調用函數 *rtimer:實時時鐘,在一個精確的時間調用函數*/while(1) PROCESS_YIELD(); if(ev = tcpip_event) tcpip_handler(); if(etimer_expired(&periodic)et

21、imer_reset(&periodic);ctimer_set(&backoff_timer, SEND_TIME, send_packet, NULL); 重慶郵電大學本科課程設計報告 附錄 PROCESS_END(); Root.c:PROCESS_THREAD(udp_root_precess,ev,data)uip_ipaddr_t ipaddr;struct uip_ds6_addr *root_if;PROCESS_BEGIN(); PROCESS_PAUSE(); SENSORS_ACTIVATE(button_sensor); PRINTF("UDP

22、 root startedn");#if UIP_CONF_ROUTER uip_ip6addr(&ipaddr, 0xaaaa, 0, 0, 0, 0, 0, 0, 0xbbbb);/*構造ipv6地址*/ /* uip_ds6_set_addr_iid(&ipaddr, &uip_lladdr); */ uip_ds6_addr_add(&ipaddr, 0, ADDR_MANUAL); root_if = uip_ds6_addr_lookup(&ipaddr); if(root_if != NULL) rpl_dag_t *dag; /* *rpl_set_root(uint8_t instance_id,uip_ipaddr_t * dag_id) *0x2a,42 */ dag = rpl_set_root(0x2a,(uip_ip6addr_t *)&ipaddr); uip_ip6addr(&ipaddr, 0xaaaa, 0, 0, 0, 0, 0, 0, 0xbbbb); print_local_addresses(); NETSTACK_RDC.off(1);/*udp_new(const uip_ipaddr_t * rip

溫馨提示

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

評論

0/150

提交評論