2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  XX理工大學(xué)</b></p><p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  基于NS2的MIMO擴(kuò)展</p><p><b>  設(shè)計(jì)與實(shí)現(xiàn)</b></p><p>  學(xué)院(系): 信息工程學(xué)院 </p>

2、<p>  專業(yè)班級(jí): 信息SY0601班 </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p><b>  學(xué)位論文原創(chuàng)性聲明</b></p><p>  本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成

3、果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包括任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)的成果作品。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。</p><p><b>  作者簽名:</b></p><p><b>  年 月 日</b></p><p>  學(xué)位論文版權(quán)使用授權(quán)書(shū)</p><p> 

4、 本學(xué)位論文作者完全了解學(xué)校有關(guān)保障、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向有關(guān)學(xué)位論文管理部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)省級(jí)優(yōu)秀學(xué)士論文評(píng)選機(jī)構(gòu)將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。</p><p>  本學(xué)位論文屬于1、保密囗,在 年解密后適用本授權(quán)書(shū)</p><

5、;p><b>  2、不保密√。</b></p><p> ?。ㄕ?qǐng)?jiān)谝陨舷鄳?yīng)方框內(nèi)打“√”)</p><p>  作者簽名: 年 月 日</p><p>  導(dǎo)師簽名: 年 月 日</p><p>  畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū)</p

6、><p>  學(xué)生姓名 專業(yè)班級(jí) 信息SY0601 </p><p>  指導(dǎo)教師 工作單位 武漢理工大學(xué)信息工程學(xué)院 </p><p>  設(shè)計(jì)(論文)題目: 基于NS2的MIMO擴(kuò)展設(shè)計(jì)與實(shí)現(xiàn) </p><p>  設(shè)計(jì)(論文)主要內(nèi)容:<

7、;/p><p>  1. 了解MIMO基本概念,基本原理及其發(fā)展與應(yīng)用。</p><p>  2. 學(xué)習(xí)NS-2及相關(guān)的網(wǎng)絡(luò)知識(shí),通過(guò)修改源代碼來(lái)實(shí)現(xiàn)MIMO的擴(kuò)展。</p><p>  要求完成的主要任務(wù):</p><p>  1.根據(jù)設(shè)計(jì)(論文)任務(wù)書(shū),在充分調(diào)研的基礎(chǔ)上撰寫(xiě)并提交開(kāi)題報(bào)告;</p><p>  2.依

8、據(jù)設(shè)計(jì)(論文)內(nèi)容的要求,設(shè)計(jì)MIMO擴(kuò)展的算法,并通過(guò)修改NS-2源代碼來(lái)實(shí)現(xiàn)這一算法與仿真。</p><p>  3. 撰寫(xiě)并提交畢業(yè)設(shè)計(jì)論文(參考文獻(xiàn)至少15篇,其中外文資料至少2篇);</p><p>  4.提交專業(yè)外文翻譯材料(原文不少于20000印刷字符);</p><p>  5.按照畢業(yè)設(shè)計(jì)相關(guān)要求在答辯前必須完成的其它任務(wù)。</p>

9、<p><b>  必讀參考文獻(xiàn):</b></p><p>  [1] Ramon Agiiero Calvo.Adding Multiple Interface Support in NS-2.2007</p><p>  [2] The University of Southern Californiaps Information Sciences I

10、nstitute ( ISI). NSNAM[ EB /OL ]. http: //nsnam.isi.edu/nsnam /index. php /Main_Page, 2006</p><p>  [3] 方路平.NS-2網(wǎng)絡(luò)模擬基礎(chǔ)與應(yīng)用.國(guó)防工業(yè)出版社,2008</p><p>  [4] 張勇,郭達(dá).無(wú)線網(wǎng)狀網(wǎng)原理與技術(shù).電子工業(yè)出版社,2007</p><p

11、>  [5] 王凡,王甲琛.Ad Hoc網(wǎng)絡(luò)中的多信道多接口技術(shù)研究.電子科技,2008</p><p>  指導(dǎo)教師簽名 系主任簽名 </p><p>  院長(zhǎng)簽名(章) </p><p>  武漢理工大學(xué)本科學(xué)生畢業(yè)設(shè)計(jì)</p><p>&

12、lt;b> ?。ㄕ撐模╅_(kāi)題報(bào)告</b></p><p><b>  目錄</b></p><p><b>  摘要1</b></p><p>  Abstract2</p><p><b>  1 緒論3</b></p><p>

13、  1.1 本課題國(guó)內(nèi)外研究現(xiàn)狀3</p><p>  1.2 本文主要研究工作3</p><p>  2 多信道多接口與節(jié)點(diǎn)模型4</p><p>  2.1 多信道多接口4</p><p>  2.2 節(jié)點(diǎn)模型4</p><p>  3 節(jié)點(diǎn)模型的修改7</p><p>  3.

14、1 對(duì)ns-lib.tcl的修改7</p><p>  3.1.1 四個(gè)新增的過(guò)程7</p><p>  3.1.2 修改node-config過(guò)程8</p><p>  3.1.3 修改create-wireless-node過(guò)程9</p><p>  3.2 對(duì)ns-mobilenode.tcl的修改10</p>

15、<p>  3.2.1 修改add-target過(guò)程10</p><p>  3.2.2 修改add-target-rtagent過(guò)程11</p><p>  3.2.3 修改add-interface過(guò)程12</p><p>  3.2.4 修改初始化復(fù)位過(guò)程13</p><p>  3.3 對(duì)mobilenode.[cc

16、,h],channel.cc,mac-802_11.cc的修改14</p><p>  3.3.1 修改mobilenode.[h,cc]14</p><p>  3.3.2 修改channel.cc15</p><p>  3.3.3 修改mac-802_11.cc16</p><p>  4 路由協(xié)議的修改17</p>

17、;<p>  4.1 對(duì)aodv.h的修改17</p><p>  4.2 對(duì)aodv.cc的修改18</p><p>  4.2.1 修改類AODV的構(gòu)造函數(shù)18</p><p>  4.2.2 AODV路由發(fā)現(xiàn)過(guò)程與相應(yīng)的修改19</p><p>  4.2.3 sendHello,sendError函數(shù)的修改23

18、</p><p>  4.2.4 路由表更新函數(shù)rt_update的修改25</p><p>  4.2.5 修改command函數(shù)25</p><p>  4.3 對(duì)路由表的的修改26</p><p>  5 仿真實(shí)現(xiàn)與結(jié)果分析28</p><p>  6 總結(jié)與展望30</p><p&

19、gt;  6.1 全文工作總結(jié)30</p><p><b>  6.2 展望30</b></p><p><b>  參考文獻(xiàn)31</b></p><p><b>  附錄32</b></p><p><b>  致謝39</b></p&g

20、t;<p><b>  摘要</b></p><p>  IEEE 802.11標(biāo)準(zhǔn)定義了在2.4 GHz和5 GHz頻段內(nèi)多個(gè)不重疊的物理層信道。然而,現(xiàn)在大多數(shù)的無(wú)線Ad-Hoc網(wǎng)絡(luò)是在一個(gè)單一的信道下配置的,以確保所有的節(jié)點(diǎn)相連接。因此,無(wú)線頻段所提供的總帶寬并沒(méi)有被充分利用。為了滿足高吞吐量的需求,必須利用一切可用的頻帶。在以往研究的若干建議中,通過(guò)多個(gè)同步無(wú)干擾的傳輸

21、,利用多信道、多接口來(lái)提高網(wǎng)絡(luò)容量。</p><p>  在這個(gè)項(xiàng)目中,我們運(yùn)行和評(píng)測(cè)所使用的網(wǎng)絡(luò)仿真軟件為ns-2。從單一接口轉(zhuǎn)換到利用多信道多接口的技術(shù)。這包括支持ns-2核心的集成的多信道、多接口(這在當(dāng)前版本的ns-2下是不可實(shí)現(xiàn)的)。仿真結(jié)果證明了在提高網(wǎng)絡(luò)吞吐量,降低丟包率,降低時(shí)延方面的有效性。</p><p>  關(guān)鍵詞:NS2;多信道,多接口;移動(dòng)節(jié)點(diǎn);AODV協(xié)議<

22、;/p><p><b>  Abstract</b></p><p>  The IEEE 802.11 standard defines multiple non-overlapping channels at the physical layer in the2.4 GHz and 5 GHz spectrums. However, most ad-hoc wirel

23、ess networks today are configured to operate under a single channel in order to ensure connectivity of all their nodes. Hence, the aggregate bandwidth provided by the radio spectrums is not fully-utilized. In order to me

24、et the high throughput demand, it is essential to use all available spectrums. Several past research proposals have exploited mult</p><p>  In this project, we implement and evaluate the technique of multipl

25、e channels and multiple interfaces using the Network Simulator (ns-2). This includes incorporating the multiple channel and multiple interface supports to the core of ns-2, which are not available in the current version

26、of the simulator.The simulation results demonstrate the effectiveness of the approach in improving the network capacity to reduce the ratio of packet loss and time delay.</p><p>  Key Words:NS2;Multi-channel

27、,Multi-interface;Mobilenode;AODV Protocol</p><p><b>  1 緒論</b></p><p>  1.1 本課題國(guó)內(nèi)外研究現(xiàn)狀</p><p>  隨著IEEE802. 11相關(guān)技術(shù)及產(chǎn)品的不斷普及,研究者開(kāi)始把他們的注意力移到了多信道多接口方面.需要修改NS2中的協(xié)議模型為進(jìn)行多信道多接口相

28、關(guān)的研究工作提供支持。前人已經(jīng)對(duì)這個(gè)問(wèn)題提出了多種方法,比較典型的如TENS[1]、Hyacinth[2]。</p><p>  TENS主要集中在媒體介入層(MAC)和物理層的修改,通過(guò)對(duì)信道實(shí)現(xiàn)的修改支持多信道,但對(duì)多信道的支持是單接口的。Hyacinth對(duì)接口的數(shù)量進(jìn)行了限制,并且只能是靜態(tài)的路由才能使用多接口多信道。通過(guò)對(duì)以上兩種方法的研究發(fā)現(xiàn),并沒(méi)有一種方法實(shí)現(xiàn)了有效靈活的多信道多接口擴(kuò)展方式,以致以前

29、的路由協(xié)議并不能夠有效的使用多信道多接口這個(gè)新特性[15] [16]。 本文的主要目的之一就是提供一種簡(jiǎn)單有效的擴(kuò)展方式,使得在模擬的時(shí)候能夠方便更改設(shè)置[3]。首先,每個(gè)節(jié)點(diǎn)能夠靈活定義接口數(shù)目,一個(gè)接口對(duì)應(yīng)一個(gè)信道。在同一個(gè)環(huán)境中并不是每個(gè)節(jié)點(diǎn)都需要相同數(shù)目的接口[5];其次,通過(guò)修改已有的路由協(xié)議或添加新的路由協(xié)議,使其具有多信道多接口能力[6] [7] [8]。 當(dāng)節(jié)點(diǎn)具有多信道以后如何合理利用新增信道,本文也作了初步探索[10

30、]。</p><p>  1.2 本文主要研究工作</p><p>  本設(shè)計(jì)中,我會(huì)針對(duì)NS2的機(jī)制對(duì)OTCL與C++代碼進(jìn)行修改。首先,我會(huì)修改節(jié)點(diǎn)模型使其具有多接口,這部分主要需要修改OTCL代碼,但也需要修改少許的C++代碼;其次,為了使路由協(xié)議能夠適應(yīng)多信道多接口,路由協(xié)議也需要修改,我以AODV協(xié)議為例進(jìn)行了修改,這部分基本上就是C++代碼;最后,我會(huì)編寫(xiě)一個(gè)簡(jiǎn)單的無(wú)線模擬仿真

31、腳本,對(duì)節(jié)點(diǎn)的多信道多接口性能進(jìn)行仿真,分析了吞吐量,丟包率以及實(shí)驗(yàn)特性,從而表明使用多信道多接口技術(shù)的有效性。</p><p>  2 多信道多接口與節(jié)點(diǎn)模型</p><p>  2.1 多信道多接口</p><p>  IEEE 802.11標(biāo)準(zhǔn)定義了在2.4 GHz和5 GHz頻段內(nèi)多個(gè)不重疊的信道。原始的NS2中的移動(dòng)節(jié)點(diǎn)只有一個(gè)接口[9] [11],在包含

32、有多跳的無(wú)線Ad - Hoc網(wǎng)絡(luò)中,如果每個(gè)節(jié)點(diǎn)只使用一個(gè)接口,若數(shù)據(jù)包的下一跳不在同一信道上,則它可能在某些跳發(fā)生延時(shí)。原因是,節(jié)點(diǎn)A需要在節(jié)點(diǎn)B的接口已經(jīng)轉(zhuǎn)到相同的信道上時(shí)進(jìn)行等待,這個(gè)相同的信道就是之前節(jié)點(diǎn)A用來(lái)向節(jié)點(diǎn)B發(fā)送數(shù)據(jù)包的信道,而采用多信道多接口則可以很好的解決這一問(wèn)題。同時(shí),當(dāng)存在多個(gè)接口,多個(gè)信道時(shí),我們可以使一個(gè)接口傳輸信道上的數(shù)據(jù),而另一個(gè)接口在另一個(gè)信道上接收數(shù)據(jù),吞吐量最高可以幾乎翻一番,時(shí)延和丟包率都有很好

33、的改善[12] [13] [14]。</p><p><b>  2.2 節(jié)點(diǎn)模型</b></p><p>  要實(shí)現(xiàn)多信道多接口必須對(duì)節(jié)點(diǎn)模型進(jìn)行修改,本設(shè)計(jì)的節(jié)點(diǎn)模型要求主要有以下四點(diǎn):</p><p><b>  a.信道數(shù)可變</b></p><p>  b.每個(gè)節(jié)點(diǎn)的接口數(shù)目可以不同<

34、;/p><p>  c.每個(gè)節(jié)點(diǎn)可以連接不同的信道數(shù)</p><p>  d.路由協(xié)議能夠適應(yīng)多信道多接口,并保持其向后兼容性</p><p>  也就是說(shuō),擴(kuò)展多信道多接口必須修改現(xiàn)有的MobileNode模型,如圖1所示。移動(dòng)節(jié)點(diǎn)是由一系列的網(wǎng)絡(luò)構(gòu)件構(gòu)成的,這些構(gòu)件主要包括:</p><p>  鏈路層(LL):LL對(duì)象負(fù)責(zé)模擬數(shù)據(jù)鏈路層的協(xié)

35、議。</p><p>  連接到LL上的ARP模塊(ARP):地址解析協(xié)議(Address Resolution Protocol)的主要功能是將IP地址解析為物理地址。</p><p>  接口隊(duì)列(Interface Queue):接口隊(duì)列是由類PriQueue實(shí)現(xiàn)的。PriQueu是一個(gè)優(yōu)先級(jí)隊(duì)列。它優(yōu)先處理路由協(xié)議分組,可以對(duì)所有隊(duì)列中的分組進(jìn)行過(guò)濾,刪除那些具有特定目的地址的分組

36、。</p><p>  MAC層:處理從鏈路層接受的或?qū)⒁l(fā)往鏈路層的數(shù)據(jù)包。發(fā)送時(shí),它增加MAC 包頭?;蛘?,從物理層的分類器異步接受數(shù)據(jù)包。</p><p>  網(wǎng)絡(luò)接口(Network Interface):移動(dòng)節(jié)點(diǎn)訪問(wèn)信道的接口,可以通過(guò)這個(gè)接口設(shè)定無(wú)線網(wǎng)絡(luò)物理層的一些相關(guān)特性值。</p><p>  傳播模型:用來(lái)計(jì)算每個(gè)分組在到達(dá)接收節(jié)點(diǎn)時(shí)的信號(hào)能量功率

37、。</p><p>  圖1 ns2中原始的mobilenode結(jié)構(gòu)</p><p>  修改后的節(jié)點(diǎn)模型應(yīng)具有多個(gè)鏈路層,ARP模塊,接口隊(duì)列,MAC,網(wǎng)絡(luò)接口和信道,這一方案模擬的是多信道多接口Ad Hoc網(wǎng)絡(luò),因此不需要修改任何的IEEE 802.11硬件,改后的mobilenode如圖2所示。</p><p>  圖2 修改后的mobilenode結(jié)構(gòu)<

38、;/p><p><b>  3 節(jié)點(diǎn)模型的修改</b></p><p>  前面我們已經(jīng)從宏觀上分析了如何修改節(jié)點(diǎn)模型結(jié)構(gòu),本章我們將具體實(shí)現(xiàn)其修改。以下所有修改的或者增加的代碼均以斜體給出。</p><p>  3.1 對(duì)ns-lib.tcl的修改</p><p>  在節(jié)點(diǎn)配置時(shí)會(huì)調(diào)用node-config過(guò)程,修改了后

39、的節(jié)點(diǎn)模型具備了接口數(shù)這個(gè)參數(shù),因此node-config過(guò)程必須修改。其次,在仿真腳本中我們會(huì)調(diào)用一些新增的過(guò)程,這些過(guò)程也需要在ns-lib.tcl中定義。</p><p>  3.1.1 四個(gè)新增的過(guò)程</p><p>  為了使每個(gè)節(jié)點(diǎn)可以有不同的接口數(shù)目,定義過(guò)程change-numifs,具體如表3.1所示。</p><p>  表3.1 改變接口數(shù)目&

40、lt;/p><p>  ----------------------------------------------------------------------------------------------------------------------</p><p>  Simulator instproc change-numifs { newnumifs } {</p>

41、;<p>  $self instvar numifs_</p><p>  set numifs_ $newnumifs</p><p><b>  }</b></p><p>  --------------------------------------------------------------------------

42、--------------------------------------------</p><p>  第二個(gè)過(guò)程add-channel作用是給節(jié)點(diǎn)的接口配置信道,具體如表3.2所示。</p><p>  表3.2 接口配置信道過(guò)程</p><p>  ------------------------------------------------------

43、----------------------------------------------------------------</p><p>  Simulator instproc add-channel {indexch ch} {</p><p>  $self instvar chan</p><p>  set chan($indexch) $ch&l

44、t;/p><p><b>  }</b></p><p>  ----------------------------------------------------------------------------------------------------------------------</p><p>  第三個(gè)過(guò)程get-numifs

45、返回接口數(shù),具體如表3.3所示。</p><p>  表3.3 返回接口數(shù)</p><p>  ----------------------------------------------------------------------------------------------------------------------</p><p>  Simulat

46、or instproc get-numifs {} {</p><p>  $self instvar numifs_</p><p>  if [ info exists numifs_ ] {</p><p><b>  續(xù)表3.3</b></p><p>  return $numifs_</p>&

47、lt;p><b>  )eise(</b></p><p><b>  return ""</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ---------------

48、-------------------------------------------------------------------------------------------------------</p><p>  第四個(gè)過(guò)程ifNum作為node-config的一個(gè)參數(shù),配置接口數(shù),具體如表3.4所示。</p><p>  表3.4 ifNum過(guò)程</p>&l

49、t;p>  ----------------------------------------------------------------------------------------------------------------------</p><p>  Simulator instproc get-numifs {} {</p><p>  $self instvar

50、 numifs_</p><p>  if [ info exists numifs_ ] {</p><p>  return $numifs_</p><p><b>  )eise(</b></p><p><b>  return ""</b></p>&l

51、t;p><b>  }</b></p><p><b>  }</b></p><p>  ----------------------------------------------------------------------------------------------------------------------</p&

52、gt;<p>  3.1.2 修改node-config過(guò)程</p><p>  node-config用來(lái)對(duì)節(jié)點(diǎn)進(jìn)行配置,由于加入了新的接口參數(shù)chan($t),所以必須對(duì)其初始化,在多接口的情況下其為一數(shù)組,具體如表3.5所示。</p><p>  表3.5 node-config過(guò)程</p><p>  ---------------------

53、-------------------------------------------------------------------------------------------------</p><p>  Simulator instproc node-config args {</p><p><b>  ……</b></p><p&g

54、t;  set args [eval $self init-vars $args]</p><p>  $self instvar addressType_ routingAgent_ propType_ macTrace_ \</p><p>  routerTrace_ agentTrace_ movementTrace_ channelType_ channel_ numifs_

55、 \</p><p>  chan topoInstance_ propInstance_ mobileIP_ \</p><p>  rxPower_ txPower_ idlePower_ sleepPower_ sleepTime_ transitionPower_ \</p><p><b>  續(xù)表3.5 </b></p>

56、<p>  transitionTime_ satNodeType_ eotTrace_ phyTrace_</p><p><b>  ……</b></p><p>  # Multiple channel, multiple interfaces</p><p>  # original:set chan $channel_

57、</p><p>  #modifi as follows</p><p>  if {[info exists numifs_]} {</p><p>  set chan(0) $channel_</p><p><b>  } else {</b></p><p>  set chan $c

58、hannel_</p><p><b>  }</b></p><p><b>  ……</b></p><p><b>  }</b></p><p>  ------------------------------------------------------------

59、-------------------------------------------</p><p>  3.1.3 修改create-wireless-node過(guò)程</p><p>  由于節(jié)點(diǎn)具有多接口,因此該過(guò)程中的add-interface必須多次調(diào)用,調(diào)用的次數(shù)即節(jié)點(diǎn)具有的接口數(shù),具體如表3.6所示。</p><p>  表3.6 create-wire

60、less-node過(guò)程</p><p>  -----------------------------------------------------------------------------------</p><p>  Simulator instproc create-wireless-node args {</p><p>  $self instv

61、ar routingAgent_ wiredRouting_ propInstance_ llType_ \</p><p>  macType_ ifqType_ ifqlen_ phyType_ chan antType_ \</p><p>  energyModel_ initialEnergy_ txPower_ rxPower_ \</p><p>  

62、idlePower_ sleepPower_ sleepTime_ transitionPower_ transitionTime_ \</p><p>  topoInstance_ level1_ level2_ inerrProc_ outerrProc_ FECProc_ rtAgentFunction_ numifs_</p><p><b>  ……</b>

63、;</p><p>  #Adding Interface</p><p>  #original: $node add-interface $chan $propInstance_ $llType_ $macType_ \</p><p>  $ifqType_ $ifqlen_ $phyType_ $antType_ $topoInstance_ \</p

64、><p>  $inerrProc_ $outerrProc_ $FECProc_</p><p>  #modified as follows</p><p>  if {[info exist numifs_]} {</p><p><b>  續(xù)表3.6</b></p><p>  for {s

65、et i 0} {$i < $numifs_} {incr i} {</p><p><b>  #3.6</b></p><p>  $node add-interface $chan($i) $propInstance_ $llType_ $macType_ \</p><p>  $ifqType_ $ifqlen_ $phyTyp

66、e_ $antType_ $topoInstance_ \</p><p>  $inerrProc_ $outerrProc_ $FECProc_</p><p><b>  }</b></p><p><b>  } else {</b></p><p>  $node add-interfac

67、e $chan $propInstance_ $llType_ $macType_ \</p><p>  $ifqType_ $ifqlen_ $phyType_ $antType_ $topoInstance_ \</p><p>  $inerrProc_ $outerrProc_ $FECProc_ </p><p><b>  }</b&g

68、t;</p><p><b>  ……</b></p><p><b>  }</b></p><p>  -------------------------------------------------------------------------------------------------------</

69、p><p>  3.2 對(duì)ns-mobilenode.tcl的修改</p><p>  3.2.1 修改add-target過(guò)程</p><p>  add-target過(guò)程用來(lái)給端口綁定代理,在多接口的情況下需要為每個(gè)接口都綁定代理,在添加之前需先調(diào)用get-numifs過(guò)程取得節(jié)點(diǎn)接口數(shù),具體如表3.7所示。</p><p>  表3.7 修

70、改add-target過(guò)程</p><p>  -----------------------------------------------------------------------------------</p><p>  Node/MobileNode instproc add-target { agent port } {</p><p>  $se

71、lf instvar dmux_ imep_ toraDebug_ </p><p>  set ns [Simulator instance]</p><p>  set newapi [$ns imep-support]</p><p>  $agent set sport_ $port</p><p>  set numIfsSimul

72、ator [$ns get-numifs]</p><p><b>  ……</b></p><p>  #original: if { $port == [Node set rtagent_port_] } {</p><p>  # Ad hoc routing agent setup needs special handling&l

73、t;/p><p>  $self add-target-rtagent $agent $port</p><p><b>  續(xù)表3.7</b></p><p><b>  return</b></p><p><b>  }</b></p><p>  #

74、modified as follows</p><p>  if { $port == [Node set rtagent_port_] } {</p><p>  if {$numIfsSimulator != ""} {</p><p>  for {set i 0} {$i < [$self set nifs_]} {incr i}

75、{</p><p>  $agent if-queue $i [$self set ifq_($i)]</p><p><b>  }</b></p><p><b>  }</b></p><p>  $self add-target-rtagent $agent $port</p>

76、<p><b>  return</b></p><p><b>  }</b></p><p><b>  ……</b></p><p><b>  }</b></p><p>  -----------------------------

77、------------------------------------------------------</p><p>  3.2.2 修改add-target-rtagent過(guò)程</p><p>  此過(guò)程用來(lái)給接口添加路由代理,修改原則和上一過(guò)程類似。首先調(diào)用get-numifs過(guò)程取得接口數(shù),具體如表3.8所示。</p><p>  表3.8 修改add

78、-target-rtagent</p><p>  -----------------------------------------------------------------------------------</p><p>  Node/MobileNode instproc add-target-rtagent { agent port } {</p><

79、p><b>  ……</b></p><p>  set numIfSimulator [$ns get-numifs]</p><p><b>  ……</b></p><p>  #original:} else { ;# no IMEP</p><p>  $agent target

80、 $sndT</p><p><b>  }</b></p><p>  $sndT target [$self set ll_(0)]</p><p>  #modified as follows:</p><p>  } else { ;# no IMEP</p><p>  if {$n

81、umIfsSimulator != ""} {</p><p>  for {set i 0} {$i < [$self set nifs_]} {incr i} {</p><p>  set sndT [cmu-trace Send "RTR" $self]</p><p><b>  續(xù)表3.8</

82、b></p><p>  $agent target $i $sndT</p><p>  $sndT target [$self set ll_($i)]</p><p><b>  }</b></p><p><b>  } else {</b></p><p> 

83、 $agent target $sndT</p><p>  $sndT target [$self set ll_(0)]</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  ……</b></p><

84、;p>  -------------------------------------------------------------------------------------------------------</p><p>  3.2.3 修改add-interface過(guò)程</p><p>  原始的add-interface過(guò)程只會(huì)為每個(gè)節(jié)點(diǎn)創(chuàng)造一個(gè)ARP表,而不是為每個(gè)

85、接口創(chuàng)造一個(gè)ARP表,因此我們?yōu)槊總€(gè)接口創(chuàng)造一個(gè)ARP表更為合適,具體如表3.9所示。</p><p>  表3.9 修改add-interface過(guò)程</p><p>  -------------------------------------------------------------------------------------------------------</p

86、><p>  Node/MobileNode instproc add-interface { channel pmodel lltype mactype qtype qlen iftype anttype topo inerrproc outerrproc fecproc } {</p><p><b>  ……</b></p><p><

87、b>  #</b></p><p>  # Initialize ARP table only once.</p><p><b>  #</b></p><p>  #modified as follows</p><p>  set arptable_($t) [new ARPTable $self

88、 $mac]</p><p>  set arptable $arptable_($t)</p><p>  if {$imepflag != ""} {</p><p>  set drpT [$self mobility-trace Drop "IFQ"]</p><p><b>  }

89、else {</b></p><p>  set drpT [cmu-trace Drop "IFQ" $self]</p><p><b>  }</b></p><p>  $arptable drop-target $drpT</p><p><b>  續(xù)表3.9<

90、/b></p><p>  if { $namfp != "" } {</p><p>  $drpT namattach $namfp</p><p><b>  }</b></p><p><b>  #</b></p><p>  # Link

91、 Layer</p><p><b>  #</b></p><p>  $ll arptable $arptable</p><p><b>  ……</b></p><p><b>  }</b></p><p>  ----------------

92、-------------------------------------------------------------------</p><p>  3.2.4 修改初始化復(fù)位過(guò)程</p><p>  由于上述的ARP表發(fā)生了改變,因此在初始化和復(fù)位時(shí)需要對(duì)ARP表進(jìn)行修改,具體如表3.10與3.11所示。</p><p>  表3.10 修改init過(guò)程&l

93、t;/p><p>  -------------------------------------------------------------------------------------------------------</p><p>  Node/MobileNode instproc init args {</p><p><b>  ……<

94、;/b></p><p>  #original:set arptable_ “”</p><p>  #modified as follows</p><p>  # set arptable_ "" ;# no ARP table yet</p><p><b>  ……&

95、lt;/b></p><p><b>  }</b></p><p>  -------------------------------------------------------------------------------------------------------</p><p>  表3.11 修改reset過(guò)程<

96、/p><p>  -------------------------------------------------------------------------------------------------------</p><p>  Node/MobileNode instproc reset {} {</p><p><b>  ……</b

97、></p><p>  if { $arptable_($i) != "" } {</p><p>  $arptable_($i) reset </p><p><b>  }</b></p><p><b>  }</b></p><p>  -

98、---------------------------------------------------------------------------------------------------------------------</p><p>  3.3 對(duì)mobilenode.[cc,h],channel.cc,mac-802_11.cc的修改</p><p>  前面我們已經(jīng)修

99、改了節(jié)點(diǎn)模型TCL的實(shí)現(xiàn),下面我們針對(duì)節(jié)點(diǎn)模型的c++代碼進(jìn)行修改,關(guān)于c++代碼的修改在后面還有路由協(xié)議的實(shí)現(xiàn), 將在第四部分介紹。</p><p>  3.3.1 修改mobilenode.[h,cc]</p><p>  在TCL中我們已經(jīng)完成了節(jié)點(diǎn)模型多接口的修改,相應(yīng)的在mobilenode.h中,原始的兩個(gè)指針:nextX_,prevX_都是指向一個(gè)借口,擴(kuò)展了以后就必須改為指

100、針數(shù)組,所以必須把mobilenode.h中的nextX_,prevX_都改為數(shù)組,MAX_CHANNELS表示最大的接口數(shù),需預(yù)先定義。另外還有一個(gè)與擴(kuò)展多信道多接口無(wú)關(guān)的問(wèn)題,原始的內(nèi)置函數(shù)getLoc出現(xiàn)了問(wèn)題,當(dāng)改為非內(nèi)置函數(shù)時(shí)就不會(huì)報(bào)錯(cuò),同時(shí)在mobilenode.cc中相應(yīng)的修改。具體如表3.12與表3.13所示。</p><p>  表3.12 修改mobilenode.h</p>&

101、lt;p>  ----------------------------------------------------------------------------------------------------------------------</p><p><b>  ……</b></p><p>  /* For list-keeper */<

102、/p><p>  //Original;MobileNode* nextX_;</p><p>  //MobileNode* prevX_;</p><p>  //modified as follows</p><p>  MobileNode* nextX_[MAX_CHANNELS];</p><p>  Mobi

103、leNode* prevX_[MAX_CHANNELS];</p><p><b>  ……</b></p><p>  /original:*inline void getLoc(double *x, double *y, double *z) {</p><p>  update_position(); *x = X_; *y = Y_;

104、 *z = Z_;</p><p><b>  }*/</b></p><p>  //modified as follows</p><p>  void getLoc(double *x, double *y, double *z);</p><p><b>  ……</b></p>

105、;<p>  ----------------------------------------------------------------------------------------------------------------------</p><p>  表3.13 修改mobilenode.cc</p><p>  ---------------------

106、-------------------------------------------------------------------------------------------------</p><p><b>  ……</b></p><p><b>  續(xù)表3.13</b></p><p><b> 

107、 void</b></p><p>  MobileNode::getLoc(double *x, double *y, double *z)</p><p><b>  {</b></p><p>  update_position(); </p><p><b>  *x = X_; <

108、/b></p><p><b>  *y = Y_; </b></p><p><b>  *z = Z_;</b></p><p><b>  }</b></p><p>  -----------------------------------------------

109、----------------------------------------------------------------------</p><p>  3.3.2 修改channel.cc</p><p>  前面提到的兩個(gè)指針nextX_,prevX_由于改為了指針數(shù)組,因此存在一個(gè)怎樣知道其索引的問(wèn)題,在這里我們采用this->index()的方法,我們需要把chann

110、el.cc里nextX_,prevX_都改為nextX_[this->index()],prevX_[this->index()] 。此外,當(dāng)發(fā)送一個(gè)包的時(shí)候,我們需要確定發(fā)向哪個(gè)具體的接口,因此我們需要一個(gè)條件來(lái)判斷目的節(jié)點(diǎn)的接口是否和對(duì)應(yīng)的信道相連接,具體修改如表3.14與表3.15所示。</p><p>  表3.14 修改節(jié)點(diǎn)列表</p><p>  ---------

111、-------------------------------------------------------------------------------------------------------------</p><p>  nextX_[this->index()]</p><p>  prevX_[this->index()]</p><p

112、>  ----------------------------------------------------------------------------------------------------------------------</p><p>  表3.15 修改affectedNodes函數(shù)</p><p>  ---------------------------

113、-------------------------------------------------------------------------------------------</p><p>  affectedNodes = getAffectedNodes(mtnode, distCST_ + /* safety */ 5, &numAffectedNodes);</p><

114、;p>  for (i=0; i < numAffectedNodes; i++) {</p><p>  rnode = affectedNodes[i];</p><p>  if(rnode == tnode)</p><p><b>  continue;</b></p><p>  newp = p

115、->copy();</p><p><b>  續(xù)表3.15</b></p><p>  propdelay = get_pdelay(tnode, rnode);</p><p>  rifp = (rnode->ifhead()).lh_first;</p><p>  for(; rifp; rifp

116、= rifp->nextnode()){</p><p>  if(rifp->channel() == this) {</p><p>  s.schedule(rifp, newp, propdelay);</p><p><b>  }</b></p><p><b>  }</b>

117、;</p><p><b>  }</b></p><p>  delete [] affectedNodes;</p><p><b>  }</b></p><p>  Packet::free(p);</p><p><b>  }</b><

118、/p><p>  ----------------------------------------------------------------------------------------------------------------------</p><p>  3.3.3 修改mac-802_11.cc</p><p>  修改mac-802_11.cc的

119、目的是為了后面路由協(xié)議里找到接口索引,第4章有詳細(xì)敘述,具體如表3.16所示。</p><p>  表3.16 修改mac-802_11.cc</p><p>  ------------------------------------------------------------------------------------------------------------------

120、----</p><p><b>  ……</b></p><p>  if(tx_active_ && hdr->error() == 0) {</p><p>  hdr->error() = 1;</p><p><b>  }</b></p><

121、;p>  hdr->iface() = addr(); </p><p>  if(rx_state_ == MAC_IDLE) {</p><p>  setRxState(MAC_RECV);</p><p>  pktRx_ = p;</p><p><b>  ……</b></p>&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論