




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 揚(yáng) 州 市 職 業(yè) 大 學(xué) 畢 業(yè) 設(shè) 計(jì)(論 文)設(shè)計(jì)(論文)題目:基于NS2的泛洪路由協(xié)議的實(shí)現(xiàn)與仿真系 別:電 子 工 程 系專 業(yè): 通 信 技 術(shù) 班 級(jí):07 通信(1)班姓 名: 陸 鶴 勇 學(xué) 號(hào): 0706020117 指導(dǎo)教師: 丁 晨 陽 完成時(shí)間: 10年 5月 目 錄摘 要.3第1章 緒論 .41.1 論文背景 .41.2 論文研究內(nèi)容.41.3 論文組織結(jié)構(gòu).4第2章 Ad Hoc網(wǎng)絡(luò)的介紹及應(yīng)用.52.1 Ad Hoc網(wǎng)絡(luò)的概念及特點(diǎn).52.2 Ad Hoc網(wǎng)絡(luò)的結(jié)構(gòu).62.3 Ad Hoc網(wǎng)絡(luò)的應(yīng)用領(lǐng)域.7第3章 NS2體系結(jié)構(gòu)和功能模塊.83.1 NS2網(wǎng)絡(luò)
2、仿真概述.83.2 NS2的使用和安裝.83.3 NS2的相關(guān)工具介紹.93.4 NS2現(xiàn)有的仿真元素.103.5 NS2仿真的一般步驟.10第 4 章 泛洪路由協(xié)議的設(shè)計(jì)實(shí)現(xiàn).124.1 MFlood議類.124.2 添加協(xié)議類.124.3 添加包頭類型.144.4 編譯代碼.15第5章 泛洪路由協(xié)議的仿真測(cè)試.165.1 初步測(cè)試.165.2 場(chǎng)景測(cè)試.195.3 trace分析.21第6章 心得體會(huì).26 參考文獻(xiàn). .27 基于NS2的泛洪路由協(xié)議的實(shí)現(xiàn)與仿真摘要:網(wǎng)絡(luò)操作要求的不斷變化刺激了新協(xié)議和新算法的產(chǎn)生和發(fā)展。網(wǎng)絡(luò)模擬仿真是研究新協(xié)議、分析新算法的一種重要方法。絡(luò)仿真平臺(tái)NS
3、2正是這樣一種針對(duì)網(wǎng)絡(luò)技術(shù)的源代碼公開的、免費(fèi)的軟件模擬平臺(tái),其協(xié)議代碼與真實(shí)網(wǎng)絡(luò)應(yīng)用代碼很相似,仿真結(jié)果具有較高的可靠性。NS2(Network Simulator, version 2)是一種面向?qū)ο蟮木W(wǎng)絡(luò)仿真器,本質(zhì)上是一個(gè)離散事件模擬器。由UC Berkeley開發(fā)而成。它本身有一個(gè)虛擬時(shí)鐘,所有的仿真都由離散事件驅(qū)動(dòng)的。本文詳細(xì)討論了基于NS2仿真工具對(duì)無線通信協(xié)議MFlood泛洪路由協(xié)議進(jìn)行仿真的過程。通過在NS2中添加泛洪路由協(xié)議,進(jìn)行了NS2的擴(kuò)展性研究與實(shí)現(xiàn),最后通過使用相關(guān)工具對(duì)輸出結(jié)果進(jìn)行處理,為日后進(jìn)行網(wǎng)絡(luò)研究奠定基礎(chǔ)。關(guān)鍵詞:NS2 泛洪路由協(xié)議、分組頭、擴(kuò)展第1章
4、緒論1.1論文背景網(wǎng)絡(luò)模擬是進(jìn)行網(wǎng)絡(luò)技術(shù)研究的一種基本手段。在新技術(shù)的研究過程中,由于各種原因,實(shí)際網(wǎng)絡(luò)系統(tǒng)的實(shí)現(xiàn)往往是代價(jià)較高或是不現(xiàn)實(shí)的。在這種情況下,模擬就成了最佳可供選擇的測(cè)試、評(píng)估和驗(yàn)證手段之一。網(wǎng)絡(luò)模擬有著周期小、成本低等特點(diǎn),而且可以使研究者更容易利用他人的研究成果。NS2正是這樣一種針對(duì)網(wǎng)絡(luò)技術(shù)的源代碼公開的、免費(fèi)的軟件模擬平臺(tái)。它是美國DARPA支持的項(xiàng)目VINT(Virtual InterNet Testbed)開發(fā)的通用的多協(xié)議網(wǎng)絡(luò)模擬軟件,其中集成了大量典型的有線、無線甚至衛(wèi)星網(wǎng)絡(luò)下各個(gè)層的協(xié)議,同時(shí)NS廣泛的用戶又在不斷地對(duì)這個(gè)系統(tǒng)進(jìn)行完善和修改。正是由于NS2的這種
5、開放性,使研究者更好的進(jìn)行各種算法的實(shí)現(xiàn)和協(xié)議的改進(jìn)。Ad Hoc網(wǎng)絡(luò)是一組具有無線收發(fā)裝置的移動(dòng)節(jié)點(diǎn)組成的一個(gè)多跳的臨時(shí)性的自組織系統(tǒng),具有以下一些主要特征:動(dòng)態(tài)拓?fù)?,即網(wǎng)絡(luò)中的節(jié)點(diǎn)可以任意移動(dòng),因此,網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)也可能會(huì)變化;鏈路帶寬受限、容量時(shí)變,由于拓?fù)鋭?dòng)態(tài)變化導(dǎo)致每個(gè)節(jié)點(diǎn)轉(zhuǎn)發(fā)的非自身作為目的地的業(yè)務(wù)量隨時(shí)間而變化,因此與有線網(wǎng)絡(luò)不同,它的鏈路容量表現(xiàn)出時(shí)變特征;動(dòng)力受限,能量受限,由于網(wǎng)絡(luò)節(jié)點(diǎn)的移動(dòng)特征,其中大多數(shù)節(jié)點(diǎn)以電池作為動(dòng)力,在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)節(jié)能就成為一個(gè)非常重要的指標(biāo);物理上安全有限,移動(dòng)網(wǎng)絡(luò)比固定網(wǎng)絡(luò)(有線和無線)更易受到安全威脅,需要克服無線鏈路的安全弱點(diǎn)及移動(dòng)拓?fù)渌?/p>
6、帶來的新的安全隱患,因此,傳統(tǒng)的用于固定網(wǎng)絡(luò)的路由協(xié)議不適用于Ad Hoc網(wǎng)絡(luò)。由于Ad Hoc網(wǎng)絡(luò)的特點(diǎn),它對(duì)路由協(xié)議有了一些新的要求,如何更好地應(yīng)用這種自組織的網(wǎng)絡(luò),滿足更多的應(yīng)用,首先應(yīng)該掌握現(xiàn)有的一些路由算法協(xié)議的特點(diǎn)。1.2論文研究內(nèi)容在研究無線網(wǎng)的路由中,想要考察節(jié)點(diǎn)的運(yùn)動(dòng)型對(duì)路由協(xié)議帶來的沖突。在NS2中實(shí)現(xiàn)了AODV等無線路由協(xié)議,而缺乏最簡單的泛洪的實(shí)現(xiàn)。在節(jié)點(diǎn)運(yùn)動(dòng)型非常大的場(chǎng)景中,向全網(wǎng)進(jìn)行洪泛反而是最有效的路由手段。從而,我們要在NS2中為無線自組網(wǎng)部分添加一個(gè)洪泛協(xié)議。泛洪路由協(xié)議本身非常簡單,每個(gè)節(jié)點(diǎn)收到包后只要判斷不是重復(fù)包后就再次廣播。因此本文即是基于NS2這種網(wǎng)
7、絡(luò)仿真器對(duì)Ad Hoc網(wǎng)絡(luò)的泛洪路由協(xié)議進(jìn)行研究。1.3論文組織結(jié)構(gòu)第二章 對(duì)于Aod Hoc網(wǎng)絡(luò)的簡單介紹:包括其概念特點(diǎn),結(jié)構(gòu)組成等第三章 NS2體系結(jié)構(gòu)及功能模塊:具體描述了NS2的體系結(jié)構(gòu)和各項(xiàng)功能模塊,包括使用NS2進(jìn)行網(wǎng)絡(luò)模擬的過程,此外還進(jìn)一步考慮了C + + 建立新協(xié)議或修改已有網(wǎng)絡(luò)對(duì)象進(jìn)行擴(kuò)展時(shí)相關(guān)的問題。第四章 泛洪路由協(xié)議的設(shè)計(jì)實(shí)現(xiàn):對(duì)泛洪路由協(xié)議的設(shè)計(jì)步驟進(jìn)行了詳細(xì)的介紹。第五章 泛洪路由協(xié)議的仿真測(cè)試:對(duì)第四章實(shí)現(xiàn)的泛洪路由協(xié)議進(jìn)行了網(wǎng)絡(luò)仿真測(cè)試,最后對(duì)結(jié)果進(jìn)行了分析討論。第六章 從所作的畢業(yè)設(shè)計(jì)中得到的一些心得體會(huì)。第二章 Ad Hoc網(wǎng)絡(luò)的介紹2.1 Ad Hoc
8、網(wǎng)絡(luò)的概念及特點(diǎn)2.1.1 Ad Hoc網(wǎng)絡(luò)的概念(1)Ad Hoc網(wǎng)絡(luò)是一種分布式網(wǎng)絡(luò)。Ad Hoc網(wǎng)絡(luò)又稱為多跳網(wǎng)絡(luò)(multi-hop network)、無固定網(wǎng)絡(luò)設(shè)施的網(wǎng)絡(luò)(infrastructure less network)、自組(self organization)網(wǎng),自愈網(wǎng)或是對(duì)等網(wǎng),它是一種邏輯意義上的組網(wǎng)方式,即強(qiáng)調(diào)在不依賴基礎(chǔ)網(wǎng)絡(luò)設(shè)施的前提下由一定范圍內(nèi)的移動(dòng)終端動(dòng)態(tài)的建立可以互聯(lián)的網(wǎng)絡(luò)。同時(shí)它還將現(xiàn)有的主要網(wǎng)絡(luò)中廣泛應(yīng)用的中央控制管理的功能進(jìn)行分布式處理,由網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)同步完成,從而提高了網(wǎng)絡(luò)抗干擾,抗故障的能力,也使其成為在許多特殊場(chǎng)合進(jìn)行網(wǎng)絡(luò)互聯(lián)應(yīng)用的主要方案。
9、Ad Hoc網(wǎng)絡(luò)是一種沒有有線基礎(chǔ)設(shè)施支持的移動(dòng)網(wǎng)絡(luò),網(wǎng)絡(luò)中的節(jié)點(diǎn)均由移動(dòng)主機(jī)構(gòu)成。在Ad Hoc網(wǎng)絡(luò)中,當(dāng)兩個(gè)移動(dòng)主機(jī)在彼此的通信覆蓋范圍內(nèi)時(shí),它們可以直接通信。但是由于移動(dòng)主機(jī)的通信覆蓋范圍有限,如果兩個(gè)相距較遠(yuǎn)的主機(jī)要進(jìn)行通信,則需要通過它們之間的移動(dòng)主機(jī)B的轉(zhuǎn)發(fā)才能實(shí)現(xiàn)。因此在Ad Hoc網(wǎng)絡(luò)中,主機(jī)同時(shí)還是路由器,擔(dān)負(fù)著尋找路由和轉(zhuǎn)發(fā)報(bào)文的工作。在Ad Hoc網(wǎng)絡(luò)中,每個(gè)主機(jī)的通信范圍有限,因此路由一般都由多跳組成,數(shù)據(jù)通過多個(gè)主機(jī)的轉(zhuǎn)發(fā)才能到達(dá)目的地。(2)Ad Hoc網(wǎng)絡(luò)是移動(dòng)通信和計(jì)算機(jī)網(wǎng)絡(luò)的交叉。在Ad Hoc網(wǎng)絡(luò)中,使用計(jì)算機(jī)網(wǎng)絡(luò)的分組交換機(jī)制,而不是電路交換機(jī)制。通信的主
10、機(jī)一般是便攜式計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)等移動(dòng)終端設(shè)備。Ad Hoc網(wǎng)絡(luò)不同于目前因特網(wǎng)環(huán)境中的移動(dòng)IP網(wǎng)絡(luò)。在移動(dòng)IP網(wǎng)絡(luò)中,移動(dòng)主機(jī)可以通過固定有線網(wǎng)絡(luò)、無線鏈路和撥號(hào)線路等方式接入網(wǎng)絡(luò),而在Ad Hoc網(wǎng)絡(luò)中只存在無線鏈路一種連接方式。在移動(dòng)IP網(wǎng)絡(luò)中,移動(dòng)主機(jī)通過相鄰的基站等有線設(shè)施的支持才能通信,在基站和基站(代理和代理)之間均為有線網(wǎng)絡(luò),仍然使用因特網(wǎng)的傳統(tǒng)路由協(xié)議。而Ad Hoc網(wǎng)絡(luò)沒有這些設(shè)施的支持。此外,在移動(dòng)IP網(wǎng)絡(luò)中移動(dòng)主機(jī)不具備路由功能,只是一個(gè)普通的通信終端。當(dāng)移動(dòng)主機(jī)從一個(gè)區(qū)移動(dòng)到另一個(gè)區(qū)時(shí)并不改變網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),而Ad Hoc網(wǎng)絡(luò)中移動(dòng)主機(jī)的移動(dòng)將會(huì)導(dǎo)致拓?fù)浣Y(jié)構(gòu)
11、的改變。然而在全I(xiàn)P的趨勢(shì)下,很多研究機(jī)構(gòu)也在積極給出將Ad Hoc網(wǎng)絡(luò)無縫鏈接到Internet。2.1.2 Ad Hoc網(wǎng)絡(luò)的主要特點(diǎn)(1)無中心:Ad Hoc網(wǎng)絡(luò)沒有嚴(yán)格的控制中心。所有結(jié)點(diǎn)的地位平等,即是一個(gè)對(duì)等式網(wǎng)絡(luò)。結(jié)點(diǎn)可以隨時(shí)加入和離開網(wǎng)絡(luò)。任何結(jié)點(diǎn)的故障不會(huì)影響整個(gè)網(wǎng)絡(luò)的運(yùn)行,具有很強(qiáng)的抗毀性。(2)自組織:網(wǎng)絡(luò)的布設(shè)或展開無需依賴于任何預(yù)設(shè)的網(wǎng)絡(luò)設(shè)施。結(jié)點(diǎn)通過分層協(xié)議和分布式算法協(xié)調(diào)各自的行為,結(jié)點(diǎn)開機(jī)后就可以快速、自動(dòng)地組成一個(gè)獨(dú)立的網(wǎng)絡(luò)。(3)多跳路由:當(dāng)結(jié)點(diǎn)要與其覆蓋范圍之外的結(jié)點(diǎn)進(jìn)行通信時(shí),需要中間結(jié)點(diǎn)的多跳轉(zhuǎn)發(fā)。與固定網(wǎng)絡(luò)的多跳不同,Ad Hoc網(wǎng)絡(luò)中的多跳路由是由
12、普通的網(wǎng)絡(luò)結(jié)點(diǎn)完成的,而不是由專用的路由設(shè)備(如路由器)完成的。 (4)動(dòng)態(tài)拓?fù)洌篈d Hoc網(wǎng)絡(luò)是一個(gè)動(dòng)態(tài)的網(wǎng)絡(luò)。網(wǎng)絡(luò)結(jié)點(diǎn)可以隨處移動(dòng),也可以隨時(shí)開機(jī)和關(guān)機(jī),這些都會(huì)使網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)隨時(shí)發(fā)生變化。(5)獨(dú)立性:Ad Hoc網(wǎng)絡(luò)相對(duì)常規(guī)通信網(wǎng)絡(luò)而言,最大的區(qū)別就是可以在任何時(shí)刻、任何地點(diǎn)不需要硬件基礎(chǔ)網(wǎng)絡(luò)設(shè)施的支持,快速構(gòu)建起一個(gè)移動(dòng)通信網(wǎng)絡(luò)。它的建立不依賴于現(xiàn)有的網(wǎng)絡(luò)通信設(shè)施,具有一定的獨(dú)立性。(6)有限的無線通信帶寬:在Ad Hoc網(wǎng)絡(luò)中沒有有線基礎(chǔ)設(shè)施的支持,因此,主機(jī)之間的通信均通過無線傳輸來完成。由于無線信道本身的物理特性,它提供的網(wǎng)絡(luò)帶寬相對(duì)有線信道要低得多。除此以外,考慮到競(jìng)爭(zhēng)共
13、享無線信道產(chǎn)生的碰撞、信號(hào)衰減、噪音干擾等多種因素,移動(dòng)終端可得到的實(shí)際帶寬遠(yuǎn)遠(yuǎn)小于理論中的最大帶寬值。(7)有限的主機(jī)能源:在Ad Hoc網(wǎng)絡(luò)中,主機(jī)均是一些移動(dòng)設(shè)備,如PDA、便攜計(jì)算機(jī)或掌上電腦。由于主機(jī)可能處在不停的移動(dòng)狀態(tài)下,主機(jī)的能源主要由電池提供,因此Ad Hoc網(wǎng)絡(luò)有能源有限的特點(diǎn)。(8)有限的物理安全:移動(dòng)網(wǎng)絡(luò)通常比固定網(wǎng)絡(luò)更容易受到物理安全攻擊,易于遭受竊聽、欺騙和拒絕服務(wù)等攻擊?,F(xiàn)有的鏈路安全技術(shù)有些已應(yīng)用于無線網(wǎng)絡(luò)中來減小安全攻擊。不過Ad Hoc網(wǎng)絡(luò)的分布式特性相對(duì)于集中式的網(wǎng)絡(luò)具有一定的抗毀性。2.2 Ad Hoc網(wǎng)絡(luò)的結(jié)構(gòu)(1)結(jié)點(diǎn)結(jié)構(gòu):Ad Hoc網(wǎng)絡(luò)中的結(jié)點(diǎn)不
14、僅具備普通移動(dòng)終端的功能,而且具有報(bào)文轉(zhuǎn)發(fā)能力,即具備路由器的功能。因此,就功能而言可以將結(jié)點(diǎn)分為主機(jī)、路由器和電臺(tái)三部分。其中主機(jī)部分完成普通移動(dòng)終端的功能,包括人機(jī)接口、數(shù)據(jù)處理等應(yīng)用軟件。而路由器部分主要負(fù)責(zé)維護(hù)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和路由信息,完成報(bào)文的轉(zhuǎn)發(fā)功能。電臺(tái)部分為信息傳輸提供無線信道支持。從物理結(jié)構(gòu)上分,結(jié)構(gòu)可以被分為以下幾類:單主機(jī)單電臺(tái)、單主機(jī)多電臺(tái)、多主機(jī)單電臺(tái)和多主機(jī)多電臺(tái)。手持機(jī)一般采用的單主機(jī)單電臺(tái)的簡單結(jié)構(gòu)。作為復(fù)雜的車載臺(tái),一個(gè)結(jié)點(diǎn)可能包括通信車內(nèi)的多個(gè)主機(jī)。多電臺(tái)不僅可以用來構(gòu)建疊加的網(wǎng)絡(luò),還可用作網(wǎng)關(guān)結(jié)點(diǎn)來互聯(lián)多個(gè)Ad Hoc網(wǎng)絡(luò)。 (2) 網(wǎng)絡(luò)結(jié)構(gòu):Ad Hoc
15、網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)有平面結(jié)構(gòu)和分級(jí)結(jié)構(gòu)兩種。當(dāng)網(wǎng)絡(luò)的規(guī)模較小時(shí),可以采用簡單的平面式結(jié)構(gòu);而當(dāng)網(wǎng)絡(luò)的規(guī)模增大時(shí),應(yīng)用分級(jí)結(jié)構(gòu)。 .平面結(jié)構(gòu):在平面結(jié)構(gòu)中,所有結(jié)點(diǎn)的地位平等,所以又可以稱為對(duì)等式結(jié)構(gòu)。平面結(jié)構(gòu)的網(wǎng)絡(luò)比較簡單,網(wǎng)絡(luò)中所有結(jié)點(diǎn)是完全對(duì)等的,原則上不存在瓶頸,所以比較健壯。它的缺點(diǎn)是可擴(kuò)充性差:每一個(gè)結(jié)點(diǎn)都需要知道到達(dá)其他所有結(jié)點(diǎn)的路由。維護(hù)這些動(dòng)態(tài)變化的路由信息需要大量的控制消息。.分級(jí)結(jié)構(gòu):分級(jí)結(jié)構(gòu)中,網(wǎng)絡(luò)被劃分為簇。每個(gè)簇由一個(gè)簇頭和多個(gè)簇成員組成。這些簇頭形成了高一級(jí)的網(wǎng)絡(luò)。在高一級(jí)網(wǎng)絡(luò)中,又可以分簇,再次形成更高一級(jí)的網(wǎng)絡(luò),直至最高級(jí)。在分級(jí)結(jié)構(gòu)中,簇頭結(jié)點(diǎn)負(fù)責(zé)簇間數(shù)據(jù)的轉(zhuǎn)發(fā)。
16、簇頭可以預(yù)先指定,也可以由結(jié)點(diǎn)使用算法自動(dòng)選舉產(chǎn)生。分級(jí)結(jié)構(gòu)的網(wǎng)絡(luò)又可以被分為單頻分級(jí)和多頻分級(jí)兩種。單頻率分級(jí)網(wǎng)絡(luò)中,所有結(jié)點(diǎn)使用同一個(gè)頻率通信。為了實(shí)現(xiàn)簇頭之間的通信,要有網(wǎng)關(guān)結(jié)點(diǎn)(同時(shí)屬于兩個(gè)簇的結(jié)點(diǎn))的支持。而在多頻率分組網(wǎng)絡(luò)中,不同級(jí)采用不同的通信頻率。低級(jí)結(jié)點(diǎn)的通信范圍較小,而高級(jí)結(jié)點(diǎn)要覆蓋較大的范圍。高級(jí)的結(jié)點(diǎn)同時(shí)處于多個(gè)級(jí)中,有多個(gè)頻率,用不同的頻率實(shí)現(xiàn)不同級(jí)的通信。在兩級(jí)網(wǎng)絡(luò)中,簇頭結(jié)點(diǎn)有兩個(gè)頻率。頻率1用于簇頭與簇成員的通信。而頻率2用于簇頭之間的通信。分級(jí)網(wǎng)絡(luò)的每個(gè)結(jié)點(diǎn)都可以成為簇頭,所以需要適當(dāng)?shù)拇仡^選舉算法,算法要能根據(jù)網(wǎng)絡(luò)拓?fù)涞淖兓匦路执亍T诜旨?jí)結(jié)構(gòu)的網(wǎng)絡(luò)中,簇成
17、員的功能比較簡單,不需要維護(hù)復(fù)雜的路由信息。這大大減少了網(wǎng)絡(luò)中路由控制信息的數(shù)量,因此具有很好的可擴(kuò)充性。由于簇頭結(jié)點(diǎn)可以隨時(shí)選舉產(chǎn)生,分級(jí)結(jié)構(gòu)也具有很強(qiáng)的抗毀性。分級(jí)結(jié)構(gòu)的缺點(diǎn)是,維護(hù)分級(jí)結(jié)構(gòu)需要結(jié)點(diǎn)執(zhí)行簇頭選舉算法,簇頭結(jié)點(diǎn)可能會(huì)成為網(wǎng)絡(luò)的瓶頸。2.3 Ad Hoc網(wǎng)絡(luò)的應(yīng)用領(lǐng)域由于Ad Hoc網(wǎng)絡(luò)的特殊性,它的應(yīng)用領(lǐng)域與普通的通信網(wǎng)絡(luò)有著顯著的區(qū)別。它適合被用于無法或不便預(yù)先鋪設(shè)網(wǎng)絡(luò)設(shè)施的場(chǎng)合、需快速自動(dòng)組網(wǎng)的場(chǎng)合等。針對(duì)Ad Hoc網(wǎng)絡(luò)的研究是因國事應(yīng)用而發(fā)起的。因此,軍事應(yīng)用仍是Ad Hoc網(wǎng)絡(luò)的主要應(yīng)用領(lǐng)域,但是民用方面,Ad Hoc網(wǎng)絡(luò)也有非常廣泛的應(yīng)用前景。它的應(yīng)用場(chǎng)合主要有以
18、下幾類: 1、軍事應(yīng)用:軍事應(yīng)用是Ad Hoc網(wǎng)絡(luò)技術(shù)的主要應(yīng)用領(lǐng)域。因其特有的無需架設(shè)網(wǎng)絡(luò)設(shè)施、可快速展開、抗毀性強(qiáng)等特點(diǎn),它是數(shù)字人戰(zhàn)場(chǎng)通信的首選技術(shù)。Ad Hoc網(wǎng)絡(luò)技術(shù)已經(jīng)成為美軍戰(zhàn)術(shù)互聯(lián)網(wǎng)的核心技術(shù)。美軍的近期數(shù)字電臺(tái)和無線互聯(lián)網(wǎng)控制器等主要通信裝備都使用了Ad Hoc網(wǎng)絡(luò)技術(shù)。 2、傳感器網(wǎng)絡(luò):傳感器網(wǎng)絡(luò)是Ad Hoc網(wǎng)絡(luò)技術(shù)的另一大應(yīng)用領(lǐng)域。對(duì)于很多應(yīng)用場(chǎng)合來說傳感器網(wǎng)絡(luò)只能使用無線通信技術(shù)。而考慮到體積和節(jié)能等因素,傳感器的發(fā)射功率不可能很大。使用Ad Hoc網(wǎng)絡(luò)實(shí)現(xiàn)多跳通信是非常實(shí)用的解決方法。分散在各處的傳感器組成Ad Hoc網(wǎng)絡(luò),可以實(shí)現(xiàn)傳感器之間和與控制中心之間的通信。
19、這在爆炸殘留物檢測(cè)等領(lǐng)域具有非常廣闊的應(yīng)用前景。 3、緊急和臨時(shí)場(chǎng)合:在發(fā)生了地震、水災(zāi)、強(qiáng)熱帶風(fēng)暴或遭受其他災(zāi)難打擊后,固定的通信網(wǎng)絡(luò)設(shè)施(如有線通信網(wǎng)絡(luò)、蜂窩移動(dòng)通信網(wǎng)絡(luò)的基站等網(wǎng)絡(luò)設(shè)施、衛(wèi)星通信地球站以及微波接力站等)可能被全部摧毀或無法正常工作,對(duì)于搶險(xiǎn)救災(zāi)來說,這時(shí)就需要Ad Hoc網(wǎng)絡(luò)這種不依賴任何固定網(wǎng)絡(luò)設(shè)施又能快速布設(shè)的自組織網(wǎng)絡(luò)技術(shù)。類似地,處于邊遠(yuǎn)或偏僻野外地區(qū)時(shí),同樣無法依賴固定或預(yù)設(shè)的網(wǎng)絡(luò)設(shè)施進(jìn)行通信。Ad Hoc網(wǎng)絡(luò)技術(shù)的獨(dú)立組網(wǎng)能力和自組織特點(diǎn),是這些場(chǎng)合通信的最佳選擇。 4、個(gè)人通信:個(gè)人局域網(wǎng)(PAN,Personal Area Network)是Ad Hoc網(wǎng)
20、絡(luò)技術(shù)的另一應(yīng)用領(lǐng)域。不僅可用于實(shí)現(xiàn)PDA、手機(jī)、手提電腦等個(gè)人電子通信設(shè)備之間的通信,還可用于個(gè)人局域網(wǎng)之間的多跳通信。藍(lán)牙技術(shù)中的超網(wǎng)(Scatternet)就是一個(gè)典型的例子。 5、與移動(dòng)通信系統(tǒng)的結(jié)合:Ad Hoc網(wǎng)絡(luò)還可以與蜂窩移動(dòng)通信系統(tǒng)相結(jié)合,利用移動(dòng)臺(tái)的多跳轉(zhuǎn)發(fā)能力擴(kuò)大蜂窩移動(dòng)通信系統(tǒng)的覆蓋范圍、均衡相鄰小區(qū)的業(yè)務(wù)、提高小區(qū)邊緣的數(shù)據(jù)速率等。 在實(shí)際應(yīng)用中,Ad Hoc網(wǎng)絡(luò)除了可以單獨(dú)組網(wǎng)實(shí)現(xiàn)局部的通信外,它帶可以作為末端子網(wǎng)通過接入點(diǎn)接入其他的固定或移動(dòng)通信網(wǎng)絡(luò),與Ad Hoc網(wǎng)絡(luò)以外的主機(jī)進(jìn)行通信。因此,Ad Hoc網(wǎng)絡(luò)也可以作為各種通信網(wǎng)絡(luò)的無線接入手段之一。第三章 NS
21、2體系結(jié)構(gòu)和功能模塊3.1 NS2網(wǎng)絡(luò)仿真軟件概述NS2是指 Network Simulator version 2,NS(Network Simulator) 是一種針對(duì)網(wǎng)絡(luò)技術(shù)的源代碼公開的、免費(fèi)的軟件模擬平臺(tái),研究人員使用它可以很容易的進(jìn)行網(wǎng)絡(luò)技術(shù)的開發(fā),而且發(fā)展到今天,它所包含的模塊已經(jīng)非常豐富,幾乎涉及到了網(wǎng)絡(luò)技術(shù)的所有方面。所以,NS成了目前學(xué)術(shù)界廣泛使用的一種網(wǎng)絡(luò)模擬軟件。在每年國內(nèi)外發(fā)表的有關(guān)網(wǎng)絡(luò)技術(shù)的學(xué)術(shù)論文中,利用NS給出模擬結(jié)果的文章最多,通過這種方法得出的研究結(jié)果也是被學(xué)術(shù)界所普遍認(rèn)可的,此外,NS也可作為一種輔助教學(xué)的工具,已被廣泛應(yīng)用在了網(wǎng)絡(luò)技術(shù)的教學(xué)方面。因此,目
22、前在學(xué)術(shù)界和教育界,有大量的人正在使用或試圖使用NS。NS2(Network Simulator, version 2)是一種面向?qū)ο蟮木W(wǎng)絡(luò)仿真器,本質(zhì)上是一個(gè)離散事件模擬器。由UC Berkeley開發(fā)而成。它本身有一個(gè)虛擬時(shí)鐘,所有的仿真都由離散事件驅(qū)動(dòng)的。目前NS2可以用于仿真各種不同的IP網(wǎng),已經(jīng)實(shí)現(xiàn)的一些仿真有:網(wǎng)絡(luò)傳輸協(xié)議,比如TCP和UDP;業(yè)務(wù)源流量產(chǎn)生器,比如FTP, Telnet, Web CBR和VBR;路由隊(duì)列管理機(jī)制,比如Droptail , RED和CBQ;路由算法,比如Dijkstra等。NS2也為進(jìn)行局域網(wǎng)的仿真而實(shí)現(xiàn)了多播以及一些MAC 子層協(xié)議。NS2使用C
23、+和Otcl作為開發(fā)語言。NS可以說是Otcl的腳本解釋器,它包含仿真事件調(diào)度器、網(wǎng)絡(luò)組件對(duì)象庫以及網(wǎng)絡(luò)構(gòu)建模型庫等。事件調(diào)度器計(jì)算仿真時(shí)間,并且激活事件隊(duì)列中的當(dāng)前事件,執(zhí)行一些相關(guān)的事件,網(wǎng)絡(luò)組件通過傳遞分組來相互通信,但這并不耗費(fèi)仿真時(shí)間。所有需要花費(fèi)仿真時(shí)間來處理分組的網(wǎng)絡(luò)組件都必須要使用事件調(diào)度器。它先為這個(gè)分組發(fā)出一個(gè)事件,然后等待這個(gè)事件被調(diào)度回來之后,才能做下一步的處理工作。事件調(diào)度器的另一個(gè)用處就是計(jì)時(shí)。NS是用Otcl和C+編寫的。由于效率的原因,NS將數(shù)據(jù)通道和控制通道的實(shí)現(xiàn)相分離。為了減少分組和事件的處理時(shí)間,事件調(diào)度器和數(shù)據(jù)通道上的基本網(wǎng)絡(luò)組件對(duì)象都使用C+寫出并編譯
24、的,這些對(duì)象通過映射對(duì)Otcl解釋器可見。當(dāng)仿真完成以后,NS將會(huì)產(chǎn)生一個(gè)或多個(gè)基于文本的跟蹤文件。只要在Tcl腳本中加入一些簡單的語句,這些文件中就會(huì)包含詳細(xì)的跟蹤信息。這些數(shù)據(jù)可以用于下一步的分析處理,也可以使用NAM將整個(gè)仿真過程展示出來。 3.2 NS2的使用和安裝3.2.1 NS2的使用NS2網(wǎng)絡(luò)仿真可以分為兩個(gè)層次:一個(gè)是基于OTcl腳本編程的層次。因?yàn)槭抢肗S2已有的網(wǎng)絡(luò)元素實(shí)現(xiàn)網(wǎng)絡(luò)仿真,所以這時(shí)不需要對(duì)NS2本身進(jìn)行任何修改,只要編寫Otcl腳本即可;另一個(gè)層次是基于C+和OTcl編程的層次。如果NS2中沒有所需的網(wǎng)絡(luò)元素,這時(shí)就需要對(duì)NS2進(jìn)行功能擴(kuò)展,添加新的網(wǎng)絡(luò)元素,然
25、后再編寫OTcl腳本。使用NS2進(jìn)行網(wǎng)絡(luò)仿真的過程歸納為: (1)分析要解決的問題,設(shè)計(jì)仿真拓?fù)浣Y(jié)構(gòu)和仿真模型; (2)編寫OTcl腳本;或擴(kuò)展NS2類,再重新編譯NS2,然后編寫OTcl腳本; (3)用NS2運(yùn)行OTcl腳本,通過NAM等工具查看網(wǎng)絡(luò)仿真過程,對(duì)仿真結(jié)果進(jìn)行分析。 3.2.2 NS2的安裝 NS2可以運(yùn)行在Linux、Unix、Windows 等多種操作系統(tǒng)平臺(tái)上,但是在Unix、Linux平臺(tái)上的使用更方便。下面介紹在Linux操作系統(tǒng)下的安裝步驟。 (1)下載NS2的allinone包ns-allinone-2.30.tar.gz,用tar命令解壓縮。具體做法是:tar
26、xzvf ns-allinone-2.30.tar.gz (2)解壓縮完成后,進(jìn)入ns-allinone-2.30目錄,執(zhí)行./install完成安裝。(3)安裝完后,需要設(shè)置3個(gè)環(huán)境變量的值: PATH、LD_LIBRARY_PATH、TCL_LIBRA RY。3.3 NS2的相關(guān)工具介紹(1)gawkgawk是一種程序語言,對(duì)于資料的處理具有很強(qiáng)的功能,可以使用很短的代碼輕易地完成對(duì)文本檔案做修改、分析、提取和比較等處理。它的主要功能是針對(duì)文件的每一行搜尋制定的模式。當(dāng)一行里有符合制定的模式是,gawk就會(huì)在此一行執(zhí)行制定的動(dòng)作。采用這種方式一次處理輸入檔案的每一行,直到輸入文件結(jié)束。(2
27、)gnuplotgnuplot是一個(gè)命令驅(qū)動(dòng)的交互式畫圖軟件,它將數(shù)據(jù)資料和數(shù)學(xué)函數(shù)轉(zhuǎn)換成容易觀察的平面或立體的圖形,幫助研究者進(jìn)行數(shù)據(jù)分析。Gnuplot并不是一般常見的美工繪圖軟件,它最適合的是在科學(xué)研究的過程中,幫助研究人員完成數(shù)據(jù)資料繪制于理論模型比較等機(jī)械化的工作,來加速研究的進(jìn)行。(3)cbrgencbrgen是用來生成傳輸負(fù)載,可以產(chǎn)生TCP流或者CBR流。它所在目錄為ns/indep-utils/cmu-scen-gen,只有cbrgen.tcl一個(gè)文件。它的使用方式如下:ns cbrgen.tcl-type cbrltcp-nn nodes-seed seed-mc conn
28、ections-rate rate-type 該參數(shù)指定了產(chǎn)生的是tcp流還是cbr流-nn 通過nodes的值指定了有多少個(gè)節(jié)點(diǎn)-mc 這些節(jié)點(diǎn)間的最大連接數(shù)-rate 通過rate值指定了美工連接件的流的負(fù)載量-seed 指定了隨機(jī)數(shù)種子(4)setdestsetdest是CMU大學(xué)在NS中提供無線網(wǎng)模擬模塊時(shí)提供的一個(gè)工具,可以用來隨機(jī)生成無線網(wǎng)所需要的節(jié)點(diǎn)運(yùn)動(dòng)場(chǎng)景,即一旦數(shù)量的節(jié)點(diǎn)在某個(gè)固定大小的矩形區(qū)域中隨機(jī)朝某個(gè)目的節(jié)點(diǎn)運(yùn)動(dòng),在到達(dá)該目的地后做一段時(shí)間的停留或不停留,選擇里有個(gè)目的地隨機(jī)選擇一個(gè)速度繼續(xù)運(yùn)動(dòng)。setdest工具在ns/indep-utils/cmu-scen-gen
29、/setdest/目錄下,使用前需要進(jìn)行make。setdest的命令格式如下:./sctdest -n-p-s-t -x-y/它使用到的參數(shù)定義如下:-n num_of_nodes的值指定了場(chǎng)景中總共有多少節(jié)點(diǎn)-p pausetime指定了節(jié)點(diǎn)在運(yùn)動(dòng)到一個(gè)目的地后停留的時(shí)間,如果設(shè)為0,則節(jié)點(diǎn)不停留-s maxspeed指定了節(jié)點(diǎn)隨機(jī)運(yùn)動(dòng)速度的最大值-t simtime指定了模擬場(chǎng)景的持續(xù)時(shí)間-x maxx指定節(jié)點(diǎn)運(yùn)動(dòng)區(qū)域的長度-y maxy指定節(jié)點(diǎn)運(yùn)動(dòng)區(qū)域的寬度(5)namnam是基于Tcl/Tk的動(dòng)畫顯示工具,用于演示網(wǎng)絡(luò)運(yùn)行動(dòng)畫,例如網(wǎng)絡(luò)拓?fù)?、包傳輸和?duì)列管理等。nam的功能是根據(jù)網(wǎng)絡(luò)
30、模擬軟件或真實(shí)環(huán)境里的特定格式的trace輸出文件來運(yùn)行動(dòng)畫。3.4 NS2現(xiàn)有的仿真元素(1)網(wǎng)絡(luò)拓?fù)渲饕ü?jié)點(diǎn)、鏈路。NS的節(jié)點(diǎn)由一系列的分類器(Classifier,如地址分類器等)組成,而鏈路由一系列的連接器(Connector)組成。(2)在節(jié)點(diǎn)上,配置不同的代理可以實(shí)現(xiàn)相應(yīng)的協(xié)議或其它模型仿真。如NS的TCP代理,發(fā)送代理有:TCP,TCP/Reno,TCP/Vegas, TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。 TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,還提供有
31、UDP代理及接收代理Null(負(fù)責(zé)通信量接收)、Loss Monitor(通信量接收并維護(hù)一些接收數(shù)據(jù)的統(tǒng)計(jì))。(3)網(wǎng)絡(luò)的路由配置通過對(duì)節(jié)點(diǎn)附加路由協(xié)議而實(shí)現(xiàn)。NS中有三種單播路由策略:靜態(tài)、會(huì)話、動(dòng)態(tài)。(4)在鏈路上,可以配置帶寬、時(shí)延和丟棄模型。NS支持:Drop-tail(FIFO)隊(duì)列、RED緩沖管、CBO(包括優(yōu)先權(quán)和Round-robin 調(diào)度)。各種公平隊(duì)列包括:FQ,SFQ,DRR等。(5)信量仿真方面,NS提供了許多通信應(yīng)用,如FTP,它產(chǎn)生較大的峰值數(shù)據(jù)傳輸;Telnet則根據(jù)相應(yīng)文件隨機(jī)選取傳輸數(shù)據(jù)的大小。此外,NS提供了四 種類型的通信量產(chǎn)生器:EXPOO,根據(jù)指數(shù)分
32、布(On/Off)產(chǎn)生通信量,在On階段分組以固定速率發(fā)送,Off階段不發(fā)送分組,On/Off的分 布符合指數(shù)分布,分組尺寸固定;POO,根據(jù)Pareto分布(On/Off)產(chǎn)生通信量,它能用來產(chǎn)生長范圍相關(guān)的急劇通信量;CBR,以確定的速 率產(chǎn)生通信量,分組尺寸固定,可在分組間隔之間產(chǎn)生隨機(jī)抖動(dòng);Traffic Trace,根據(jù)追蹤文件產(chǎn)生通信量。3.5 NS2仿真的一般步驟NS2仿真可以分為構(gòu)件的擴(kuò)展階段,仿真階段,對(duì)仿真結(jié)果分析階段。一般分為以下幾個(gè)步驟:(1)構(gòu)件: 即新構(gòu)件的添加或移植。(2)測(cè)試:自己編寫的構(gòu)件是否通過。當(dāng)NS庫中的構(gòu)件滿足仿真需要(例如我們對(duì)NS庫已有的AODV、
33、DSDV、DSR等協(xié)議進(jìn)行仿真),則第1步和第2步可以省略,仿真過程直接從第3步開始。(3)編寫Otcl腳本文件:配置仿真網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),確定鏈路基本特性,移動(dòng)節(jié)點(diǎn)所使用的路由協(xié)議,節(jié)點(diǎn)的數(shù)量等,并進(jìn)行端設(shè)備的協(xié)議綁定,設(shè)置仿真使用的場(chǎng)景和傳輸負(fù)載(TCP流或CBR流),設(shè)置仿真的開始和結(jié)束時(shí)間等。并在腳本文件里設(shè)置trace對(duì)象, trace文件是記錄仿真過程中發(fā)生所有事件的文件。也可以同時(shí)設(shè)置nam對(duì)象,nam是用于演示網(wǎng)絡(luò)運(yùn)行動(dòng)畫的工具。(4)用NS命令執(zhí)行腳本文件: 執(zhí)行后會(huì)在與腳本文件同一目錄下生成*.tr的文件,記錄仿真結(jié)果。如果在腳本文件中設(shè)置了nam對(duì)象,則會(huì)在同一目錄下生成*
34、.nam的文件。(5)分析trace文件:由于trace文件比較大,我們需要編寫gawk程序進(jìn)行仿真后期的數(shù)據(jù)處理(計(jì)算分組投遞率、路由負(fù)載、吞吐量等),再用gnuplot或者matlab等繪圖工具將處理后獲得的數(shù)據(jù)繪制成圖形,以便更直觀的分析比較協(xié)議的性能。第四章 泛洪路由協(xié)議的設(shè)計(jì)實(shí)現(xiàn)4.1 MFlood協(xié)議泛洪協(xié)議MFlood是一種簡單的路由選擇技術(shù),每個(gè)節(jié)點(diǎn)收到包后只要判斷不是重復(fù)包就再次廣播,一個(gè)分組由源結(jié)點(diǎn)發(fā)送到與其相鄰的每一個(gè)結(jié)點(diǎn),在各個(gè)結(jié)點(diǎn)上,收到的分組再次被傳輸?shù)脚c其相鄰的各個(gè)結(jié)點(diǎn)。在節(jié)點(diǎn)運(yùn)動(dòng)性非常大的場(chǎng)景中,向全網(wǎng)進(jìn)行泛洪實(shí)際上會(huì)比ADOV等路由協(xié)議更為有效。MFlood協(xié)
35、議中每個(gè)包只轉(zhuǎn)發(fā)一次,路由表用于記錄以前轉(zhuǎn)發(fā)過的包,每一條路由表項(xiàng)記錄了為每個(gè)數(shù)據(jù)源轉(zhuǎn)發(fā)過的數(shù)據(jù)包情況。每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)序列號(hào)SEQ,數(shù)據(jù)源每發(fā)送一個(gè)數(shù)據(jù)包將SEQ值增加1,并把該序列號(hào)加到數(shù)據(jù)包的報(bào)頭信息中,其他節(jié)點(diǎn)收到一個(gè)數(shù)據(jù)包后依靠序列號(hào)來判斷自己是否轉(zhuǎn)發(fā)過該包。因此泛洪法是一種簡單的路由選擇技術(shù)。這種技術(shù)不需要任何網(wǎng)絡(luò)信息,一個(gè)分組由源結(jié)點(diǎn)發(fā)送到與其相鄰的每一個(gè)結(jié)點(diǎn),在各個(gè)結(jié)點(diǎn)上,收到的分組再次被傳輸?shù)脚c其相鄰的各個(gè)結(jié)點(diǎn)。泛洪法具有三個(gè)屬性:(1)在源結(jié)點(diǎn)與信宿結(jié)點(diǎn)之間所有可能的路由都被嘗試過;(2)分組中至少有一個(gè)副本使用的是最小跳數(shù)路由到達(dá)信宿;(3)所有直接或間接與源結(jié)點(diǎn)相連的結(jié)
36、點(diǎn)全部被訪問到。4.2 添加協(xié)議類路由協(xié)議類為MFlood,雖然是泛洪協(xié)議,但是為了進(jìn)行重復(fù)包檢測(cè)(即每一個(gè)包只轉(zhuǎn)發(fā)一次),它同樣維護(hù)一張路由表來記錄以前轉(zhuǎn)發(fā)過的包。路由表類為MFlood_Rtalbe,由一條條路由表項(xiàng)(MFlood_RTEntry類)組成,其中每一條路由表項(xiàng)針對(duì)每個(gè)數(shù)據(jù)源記錄了為它轉(zhuǎn)發(fā)過的數(shù)據(jù)包情況。MFlood協(xié)議為每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)序列號(hào)SEQ,數(shù)據(jù)源每發(fā)送一個(gè)數(shù)據(jù)包將SEQ增加,并把該序列號(hào)添加到數(shù)據(jù)包的包頭信息中,其他節(jié)點(diǎn)收到一個(gè)數(shù)據(jù)包后依靠序列號(hào)來判斷自己是否轉(zhuǎn)發(fā)過該包。在MFlood的實(shí)現(xiàn)中,編了五個(gè)程序文件,分別是Mflood.h/Mflood.cc(MFloo
37、d協(xié)議的定義和實(shí)現(xiàn)),Mflood-packet.h(Mflood新增包頭的定義)和Mflood-seqtable.h/Mflood-seqtable.cc(路由表的定義和實(shí)現(xiàn))。在NS2中,所有路由協(xié)議都是從Agent類繼承而來的,和UPD及TCP等傳輸層協(xié)議以及CBR等應(yīng)用層協(xié)議一樣.雖然如此,NS2很好地實(shí)現(xiàn)了層的概念,應(yīng)用層和傳輸層的數(shù)據(jù)回交到路由協(xié)議進(jìn)行處理,接收也是先由路由協(xié)議處理后,再由一層層送交各上層協(xié)議。路由協(xié)議Mflood的定義中recv函數(shù)和command函數(shù)是從Agent類繼承而來的。recv函數(shù)是路由層收到數(shù)據(jù)包的處理函數(shù),包括來自上層協(xié)議(如UDP或TCP)和下層協(xié)
38、議(IFQ)的數(shù)據(jù)包.這種層間關(guān)系在NS2的tcl代碼(參加ns/tcl/lib/目錄下的tcl文件)中已經(jīng)作了定義,只需要在Mflood類重載的recv函數(shù)中實(shí)現(xiàn)處理功能就行了,修改程序如下:class MFlood: public Agent friend class MFlood_RTEntry;/ MFlood_RTEntry類是路由表項(xiàng)類public:MFlood(nsAddr_t id);/構(gòu)造函數(shù)void recv(Packet *p, Handler *);/接收上層協(xié)議送來的數(shù)據(jù)并處理protected:int command(int, const char *const *
39、);/命令處理函數(shù)inline int initialized() return 1 & target_; / Route Table Managementvoid rt_resolve(Packet *p);/查詢路由表/ Packet TX Routinesvoid forward(MFlood_RTEntry *rt, Packet *p, double delay);nsAddr_t index_; / 本節(jié)點(diǎn)的IP地址/ Routing TableMFlood_RTable rtable_; /路由表/ A mechanism for logging the contents of
40、the routingTrace *logtarget; /調(diào)試信息的輸出NsObject *uptarget_; private: u_int32_t myseq_; /自己的序號(hào),用于包重復(fù)檢測(cè);MFlood路由協(xié)議需要被NS2接納并可以在tcl代碼中使用,還需要其它定義。其中AGENT/Mflood指定了C+中的Mflood類和TcL部分的AGENT/Mflood綁定在一起,在編寫TcL測(cè)試代碼時(shí)指定路由協(xié)議時(shí)就應(yīng)該使用AGENT/Mflood。AGENT/Mflood表示了一個(gè)繼承關(guān)系,即Mflood繼承于AGENT。static class MFloodclass : public
41、TclClass public:MFloodclass() : TclClass(Agent/MFlood) TclObject* create(int argc, const char*const* argv) assert(argc = 5);return (new MFlood(nsAddr_t) atoi(argv4); / PBO agrv4 is index_ class_rtProtoMFlood;由于添加的是無線自組網(wǎng)下的路由協(xié)議,在NS2運(yùn)行tcl中指定路由協(xié)議時(shí)其實(shí)只會(huì)用到路由協(xié)議的名稱,需要修改NS2的系統(tǒng)tcl代碼,使得當(dāng)設(shè)定路由協(xié)議為MFlood時(shí)會(huì)調(diào)用新增加的Age
42、ntFlood類(也就是C下的MFLood類)。這需要修改nsns-lib.tcl文件在Simulator類的create-wireless-node成員函數(shù)(該函數(shù)的定義為Simulator instproc create-wireless-node argx)中增加以下代碼:MFlood Set ragent $self ereate_mflood_agent $node 這表示當(dāng)無線移動(dòng)節(jié)點(diǎn)指定路由協(xié)議為MFlood時(shí),將會(huì)調(diào)用create_mflood_agent成員函數(shù)來進(jìn)行初始化。然后在ns/tcl/ns_lib.tcl文件中定義create_mflood_agent成員函數(shù),代碼
43、如下:Simulator instproc create_mflood_agentnode Set ragentnew Agent/MFloodSnode id $node set ragent_Sragent return $ragent從create_mflood_agent函數(shù)的定義中可以看到,創(chuàng)建了Agent/MFlood的一個(gè)對(duì)象,這個(gè)對(duì)象最后將和某一個(gè)移動(dòng)節(jié)點(diǎn)$node綁定在一起。4.3增加包頭類型在本文的泛洪協(xié)議中并沒有定義自己的控制包,但是為了進(jìn)行重復(fù)包檢測(cè),同樣需要定義自己的包頭,將序列號(hào)存在這個(gè)包頭中。雖然Mflood的包頭非常簡單,僅僅需要保存一個(gè)序列號(hào),可以同樣需要實(shí)現(xiàn)
44、NS2規(guī)定的功能。在hdr-mflood結(jié)構(gòu)的定義中,offset和access都是系統(tǒng)所要求的,只需要作相應(yīng)的修改。HDR-MFLOOD宏的定義是為了方便以后的使用,只需要使用這個(gè)宏就可以讀取到hdr-mflood結(jié)構(gòu)的包頭。/* JFlood Routing Protocol HeAder Macros*/#define HDR_MFLOOD(p)(structhdr_mflood*)hdr_mflood:access(p)struct hdr_mflood u_int32_tseq_;/序列號(hào)/ HeAder access methodsstatic int offset_; / req
45、uired by PacketHeAderManagerinline static int& offset() return offset_; inline static hdr_mflood* access(const Packet* p) return (hdr_mflood*) p-access(offset_);上面的代碼是在Mflood-packet.h中定義,為了和NS中的TCL代碼相結(jié)合,在Mflood.cc中還需要下面這段規(guī)范的實(shí)現(xiàn)代碼,使TCL中Packet HeAder/MFlood類與C+中的hdr-mflood綁定在一起。/Net packet typeint hdr-
46、Mflood+offset-;static class MfloodheAderclass,publicheAderclasspublic;MfloodheAderclass():publicheAderclass(“publicheAder/Mflood” Sizeof(hdr-Mflood)Bind-offset(&hdr-Mflood+offset_):class Mflood hdr;這樣定義出的包頭名字為Mflood。實(shí)際上一般的協(xié)議都會(huì)設(shè)定自己的包類型,以后該協(xié)議產(chǎn)生的分組將被默認(rèn)設(shè)定為這種類型的分組。MFlood路由協(xié)議其實(shí)并不會(huì)產(chǎn)生自己的包,它只是轉(zhuǎn)發(fā)上層協(xié)議產(chǎn)生的包或者鄰居送
47、來的包,但同樣需要設(shè)定一個(gè)自己的包類型。當(dāng)然,因?yàn)镸Flood協(xié)議并不真的產(chǎn)生包,這個(gè)包類型可以是任意指定已有的類型,也可以是自己新創(chuàng)建的包類型。這里創(chuàng)建一種新的包類型。為了創(chuàng)建包類型MFLOOD,需要修改NS2.27/common/packet.h,增加包類型的定義。首先,要在enum packet_t中增加一項(xiàng)表示新增的包類型,定義為PT_MFLOOD。然后,在class p_info的p_info()構(gòu)造函數(shù)中增加一項(xiàng)新增的包類型,定義為PT_MFLOOD。 Name_PT_MFLOOD=”MFlood”;最后在MFlood類的構(gòu)造函數(shù)定義時(shí)需要將新創(chuàng)建包的類型傳遞給Agent類的構(gòu)造函
48、數(shù),例如MFlood:MFlood(nsAddr_lid):Agent(PT_MFLOOD) 4.4 編譯代碼在完成了協(xié)議的定義和實(shí)現(xiàn)后,要對(duì)新增加的文件進(jìn)行編譯并鏈接到NS中,需要修改ns/Makefile文件,增加對(duì)新類的編譯。本次設(shè)計(jì)的文件放在ns/flood目錄下,在Makefile中OBJ_CC變量的定義中增加下面這行:flood/Mflood.o flood/ Mflood-seqtable.o重新編譯NS2,至此NS2中添加了泛洪協(xié)議。第五章 泛洪路由協(xié)議的仿真測(cè)試 5.1初步測(cè)試我們需要一段Tcl代碼來驗(yàn)證我們的程序是否正確。首先,我們通過最簡單的場(chǎng)景進(jìn)行測(cè)試,3個(gè)節(jié)點(diǎn)A、B和
49、C構(gòu)成一個(gè)兩跳的拓?fù)?,B位于中間,連接A和C。A作為發(fā)送源,C作為接受者,B在中間轉(zhuǎn)發(fā)。測(cè)試Tcl代碼如下:=# Define options=set val(ifqlen) 50 ;# max packet in ifqset val(nn) 3 ;# 移動(dòng)節(jié)點(diǎn)的數(shù)目set val(rp) MFlood ;# routing protocolset val(chan) Channel/WirelessChannelset val(prop) Propagation/TwoRayGroundset val(netif) Phy/WirelessPhyset val(mac) Mac/802_11set val(ifq) Queue/DropTail/PriQueueset val(ll) LLset val(ant) Antenna/OmniAntennaset val(stop) 200=# Main Program=#ns-random0 # Initialize Global Variablesset ns_ new Simulatorset tracefd open mflood.tr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 客服話務(wù)知識(shí)培訓(xùn)課件
- 供貨合同補(bǔ)充協(xié)議
- 交通運(yùn)輸行業(yè)智能化交通規(guī)劃與建設(shè)方案
- 湖北省武漢市2024-2025學(xué)年高一上學(xué)期1月期末地理試題 含解析
- 云南省昭通市昭通一中教研聯(lián)盟2024-2025學(xué)年高一上學(xué)期期中質(zhì)量檢測(cè)生物學(xué)B試題(含答案)
- 吉林省長春市榆樹市2024-2025學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 小學(xué)低年級(jí)數(shù)學(xué)故事讀后感
- 會(huì)議記錄表格:會(huì)議記錄臺(tái)賬分類
- 季度采購管理計(jì)劃與工作推進(jìn)安排
- 辦公用品采購與供應(yīng)鏈管理協(xié)議
- 新能源概論新能源及其材料課件
- 化學(xué)化工專業(yè)英語1課件
- 裝配式建筑裝配率計(jì)算評(píng)分表
- 1.1北京市基本概況與主要文旅資源《地方導(dǎo)游基礎(chǔ)知識(shí)》(第四版)PPT
- 綜述的寫作方法與技巧課件
- 零售藥店實(shí)施GSP情況的內(nèi)審報(bào)告
- 機(jī)械設(shè)計(jì)基礎(chǔ)網(wǎng)考題庫答案 吉林大學(xué)
- 新蘇教版科學(xué)六年級(jí)下冊(cè)全冊(cè)教案(含反思)
- 觸電事故應(yīng)急處置卡
- 國際貿(mào)易運(yùn)輸方式課件
- 南陽理工學(xué)院畢業(yè)論文格式規(guī)范
評(píng)論
0/150
提交評(píng)論