天天看點

NS2學習——洪泛路由協定的移植 一、背景三、驗證

一、背景

環境:vmware下安裝ubuntu18.04虛拟機,ns版本2.35

洪泛(mflood)算法是一個簡單有效的路由算法,其基本思想是每個節點都使用廣播轉發收到的資料分組,若收到重複分組則進行丢棄處理。

移植過程參照《NS網絡模拟和協定仿真》,黃化吉、馮穗力著。

二、移植過程

1.在NS中建立檔案夾放置協定的代碼檔案。

與mflood協定相關的檔案共有5個:mflood.h,mflood.cc,mflood-packet.h,mflood-seqtable.h,mflood-seqtable.cc。這五個檔案下載下傳後放在ns-allinone-2.35/ns-2.35目錄下建立的mflood檔案夾下。協定相關的檔案可以通過郵電出版社的官方網址搜尋下載下傳,我這裡也分享一下(有把注釋掉的代碼修改一點點)。 

mflood協定+移植測試例程下載下傳:https://download.csdn.net/download/hshiya0412/12120596 

2.修改ns相關檔案。

(1)ns-2.35/common/packet.h

因為mflood協定用到自己定義的分組類型:PT_MFLOOD,我們需要修改定義分組類型的頭檔案packet.h,添加mflood定義的分組類型,有下面兩處改動:

一是:在PT_NTYPE前添加PT_MFLOOD;如圖,PT_NTYPE必須是最後一個元素,在它之前添加我們所需的分組類型,後面的數字依次順延就可以了。

NS2學習——洪泛路由協定的移植 一、背景三、驗證

二是:在initName中,相應位置加入name_[PT_MFLOOD]="MFlood",在這裡添加的是對應分組類型PT_MFLOOD的字元串,這是在trace檔案中列印PT_MFLOOD類型的包時需要使用的字元串。

NS2學習——洪泛路由協定的移植 一、背景三、驗證

 (2)ns-2.35/tcl/lib/ns-packet.tcl

mflood協定定義了自己的分組頭部,該分組頭部必須被激活,否則将産生異常。是以我們需要修改定義分組頭部的ns-paket.tcl檔案,添加mflood的分組頭部。(這裡我的代碼和我網上找到的其他資料有點不一樣,這樣添加是可以成功運作的)

NS2學習——洪泛路由協定的移植 一、背景三、驗證

 (3)ns-2.35/tcl/lib/ns-lib.tcl

這個檔案也需要修改兩處地方。【這個檔案要千萬注意:空格和制表符的使用,不然就會報錯,建議直接複制差不多的,然後修改相應位置】

一是:在ns-lib.tcl中定義了Simulator類的建立節點函數,在這個函數下加入新的洪泛路由協定。

NS2學習——洪泛路由協定的移植 一、背景三、驗證

 二是:當節點使用MFlood路由協定時,将會調用create-mflood-agent函數來進行初始化,是以我們還要在ns-lib.tcl中定義create-mflood-agent函數。這個函數建立了一個Agent/MFlood的一個對象,這個對象最後将和某一個移動節點$node綁定在一起。

NS2學習——洪泛路由協定的移植 一、背景三、驗證

3. 修改Makefile檔案。

在Makefile檔案中的OBJ_CC變量的定義中增加下面這一行: mflood/mflood.o mflood/mflood-seqtable.o \

注意空格和斜杠方向。

NS2學習——洪泛路由協定的移植 一、背景三、驗證

 儲存後,回到ns-2.35目錄下,執行make指令重新編譯NS,先使用make clean指令清除之前編譯的檔案,然後使用make重新編譯,最後使用sudo make install。如果遇到錯誤,那麼重新修改步驟2的檔案或者步驟3的makefile檔案然後再重新編譯。

三、驗證

接下來驗證一下移植是否成功,驗證的例子和mflood的協定代碼一并上傳了,需要的可以下載下傳,名字為mflood-3node.tcl。

該例程是無線網絡模型,3個節點形成一字拓撲,路由協定使用MFlood,節點0向節點2發送恒定速率(CBR)的資料流,它們不在互相的信号覆寫範圍,但它們可以通過節點1的中繼實作互相間的通信。

然後在放mflood-3node.tcl檔案的檔案夾下使用ns mflood-3node.tcl指令運作仿真,如果出現如下的結果,則代表運作成功。

num_nodes is set 3

INITIALIZE THE LIST xListHead

Start Simulation...

channel.cc:sendUp - Calc highestAntennaZ_ and distCST_

highestAntennaZ_ = 1.5,  distCST_ = 550.0

SORTING LISTS ...DONE!

完成後會生成一個Trace跟蹤檔案和一個nam顯示檔案,可通過這兩個檔案檢視模拟過程。