基於OPNET的路由協議仿真教程(AODV、OLSR 、DSR等)


前言:

目前由於項目需要,學習了基於opnet的網絡仿真方法,發現該軟件的學習資料少之又少,所以將自己搜集到的學習資料進行整理,希望能幫助后來的人。

主要參考資料:OPNET網絡仿真(清華陳敏版)

仿真軟件介紹:

主流仿真軟件如下:

OPNET:

OPNET是商業軟件,所以界面非常好。功能上很強大,界面錯落有致,統一嚴格。操作也很方便,對節點的修改主要就是對其屬性的修改。由於OPNET14.5及以前的版本都是免費的,所以用戶量是三種網絡仿真軟件中最多的,這一點很像Windows。

QualNet:

QualNet是美國Scalable Networks Technologies公司的產品,前身是GloMoSim,根源於美國國防部高級研究計划署(DARPA)的全球移動通信計划,主要對無線移動通信網絡進行了優化處理,從仿真速度上得到了很大的提升,同時通過對無線信道和射頻技術的建模也保證了較高的仿真精度。QualNet基於已經過驗證的PARSEC並行仿真內核。每個結點都獨立進行運算,這也和現實相符合。允許用戶在真正的並行仿真環境當中優化並行仿真性能。對小規模同種復雜度的網絡模型仿真,QualNet仿真速度是其它仿真器的幾倍,對於大規模網絡,QualNet仿真速度是其它仿真器的幾十倍,如果QualNet采用並行仿真機制,能達到比其它仿真器快千倍的速度。相比與其他仿真軟件,QualNet有其過人之處,界面友好,功能強大,接口特別靈活(單從接口這一點上來說,QualNet倒像Windows,而OPNET像Mac),在用到多系統的聯合仿真是特別方便,物理層的建模可借助於Matlab實現。

NS:

NS的最好一個優點就是開源的,當然也是免費的(像Linux吧),由於是開源的,所以可以用於構建某些特殊的節點。但個人感覺,如果你不是編程高手的話,用NS仿真的話,會讓你頭大。同時,由於是商業軟件所以版本推出不如NS快。

OPNET介紹:

OPNET軟件包主要由三個模塊組成:
●ItDecisionGuru 適合最終用戶,它只有仿真、分析功能。
●Modeler 在ItDecisionGuru基礎上增加了建庫功能。
●Modeler/radio 在Modeler上又增加了對移動通信和衛星通信的支持。
ITDecisionGuru、Modeler、Modeler/Radio,這三個模塊並非相互獨立,而是層層嵌套的,采用同一用戶界面。  

OPNET有以下幾個特點:

(1) OPN ET 采用階層性的模擬方式, 分三層機制建模. 最底層為進程模型, 描述了構成節點模型的進程, 利用有限狀態機來設計; 其次為節點模型, 描述了構成網絡拓撲的節點, 因而每一類節點有相應的節點模型; 最上層為網絡模型, 構成了網絡拓撲結構.

(2) 基於事件出發的有限狀態機建模, 采用離散事件驅動的模擬機理.

(3) 基於包的通信, 通過包的字段來體現通信協議

(4) 豐富的統計量收集和分析功能.

圖1 OPNET14.5軟件界面

仿真教程:

試想一下,你需要為公司內部互聯網的擴展制定一個合理的方案。目前,公司在辦公樓的第一層有一個星型拓撲的網絡,現在要在第二層增加另一個星型拓撲網絡。

這時一個典型的“what-if”問題,所要解決的是確保增加的網絡不會導致整個網絡的連通失敗,如圖2所示:

 圖2. 計划中擴展后的網絡模型

步驟1:創建新的項目和場景

1) 打開Modeler。

2) 從File 菜單中選擇New...。

3) 從彈出的下拉菜單中選擇Project 並單擊OK。

 

圖3. 新建項目和場景

4) 單擊OK 按鈕, 出現開始向導,創建新的背景拓撲圖,如圖4所示:

 

 

圖4. 開始向導:創建新的背景拓撲圖

5) 單擊Next,選定網絡的范圍,如圖5所示:

 

 

圖5. 開始向導:選擇網絡范圍

6) 單擊Next,指定網絡的大小,如圖6所示:

 

 

圖6. 開始向導:指定網絡大小

7) 單擊Next,選擇 OPNET 自帶的對象模型家族種類,如圖7所示:

 

 

圖7. 開始向導:選擇對象模型家族種類

8) 單擊Next,再次確認環境變量,如圖8所示:

 

圖8. 設置完畢的開始向導

9) 單擊完成,這時出現大小和規格如同所指定的工作空間,同時彈出一個對象模板(包含剛剛選定的對象模型家族的所有模型),如圖9所示:

通過對象模板中的節點和鏈路模型來創建網絡模型。

節點模型:代表實際的設備。

鏈路模型:代表連接設備的物理媒質,可以是電纜或者光纜。

可以通過對象模板中的圖標直觀地看出節點模型和鏈路模型。可以使用以下三種方法之一創建網絡拓撲:

導入拓撲圖。

從對象模板中選擇模型並放置在工作空間中。

使用快速拓撲配置工具(Rapid Configuration)

 

 

圖9. 工作空間和對象模板

步驟2:創建網絡拓撲

Topology –〉Rapid Configuration

    從配置下拉列表中選擇Star,單擊OK...,如圖11 所示:

 圖11. Rapid Configuration對話框

接下來需要為網絡指定節點模型和鏈路模型:

OPNET 中標准模型的命名規則為:

<protocol1>_..._<protocoln>_<function>_<mod>其中<protocol>為模型用到的協議,可能同時用到幾個協議<function>代表模型的大致功能<mod>模型派生類別。

選擇中心節點模型為3C_SSII_1100_3300_4s_ae52_e48_ge3。這是3Com 公司的交換機。

選擇周邊節點模型為Sm_Int_wkstn,並設置節點個數為30。

選擇鏈路模型為10BaseT

指定網絡在工作空間中放置的位置:設置中心的 X 和Y 軸坐標為25,設置局域網的半徑范圍為 20。

設置好單擊OK 按鈕,如圖12所示:

 圖12. 快速拓撲配置對話框

項目編輯器中出現如圖13所示的網絡拓撲。

 圖13. 快速拓撲配置后的網絡模型

    接下來,需要擴展這個網絡,首先增加一個服務器。這時將用到第二種創建網絡模型的方法:在對象模板中選擇模型並放置在工作空間內。

打開對象模板,找到Sm_Int_server 對象,並將它放置在工作空間中。

 

圖14. 從對象模板中添加Sm_Int_server 對象

接下來,需要連接服務器和星型網絡:

在對象模板中找到10BaseT 鏈路對象。

在服務器上單擊鼠標左鍵,移動光標,再單擊星型網絡的中心節點。

這時出現連接兩個節點對象的鏈路。

單擊鼠標右鍵結束鏈路創建。

 圖15. 連接服務器和星型網絡

最后需要為網絡配置業務,包括應用定義(Application definition)和業務規格定義(Profile definition),設置業務涉及的內容較復雜,本例程不作要求,因此模板中應用定義對象和業務規格定義對象的參數已經配置好(為Light database 業務),只要將他們放置在工作空間中即可。

在對象模板中找到Sm_Application_Config 對象並將其放置在工作空間中。

單擊右鍵,光標重新移到對象模板中,單擊Sm_Profile_Config,並將其放置在工作空間中,單擊鼠標右鍵。

關閉對象模板。

圖16. 配置完畢的網絡模型

步驟3:收集統計信息

1) 打開節點模型編輯器和進程模型編輯器。

OPNET 采用三層建模機制,最底層為進程(Process)模型,以狀態機來描述協議;其次為節點(Node)模型,由相應的協議模型構成,反映設備特性;最上層為網絡模型。三層模型和實際的網絡、設備、協議層次完全對應,全面反映了網絡的相關特性。

每個網絡對象(鏈路除外)都是一個節點模型,它由一個或多個模塊(Modules)組成,模塊與模塊之間通過包流(Packet streams)或狀態線相連。而模塊實際上為進程模型,它通過狀態轉移圖(STD, State Transition Diagram)來描述模塊的行為。

    現在讓我們來看看第一層網絡服務器的結構:

在項目編輯器中鼠標雙擊node_31(服務器節點),這時打開一個新的節點模型編輯器窗口,如圖17所示:

 

圖17. 以太網服務器節點模型

    圖17為以太網服務器的內部結構,它由幾個模塊以及連接模塊的包流和狀態線組成。在仿真過程中,來自客戶端的數據包被收信機hub_rx_0_0 接收,然后由下至上穿過協議棧到application 模塊。經過處理后,又沿原路返回至發信機hub_tx_0_0,最后被傳輸到客戶端,如圖18 所示:

 

圖18. 包的輸入輸出接口模塊―收發機

接下來,我們來看看傳輸適應層tpal 模塊的內容。

    在節點模型編輯器中的tpal 模塊上雙擊鼠標,打開一個新的進程模型編輯器,如圖19所示:

 圖19. tpal進程模型

    在init 狀態的上半部雙擊鼠標,打開它的入口代碼。

在init 狀態的下半部雙擊鼠標,打開它的出口代碼。

進程中的每個狀態(圖中紅色的或綠色的圓圈)都包含一個入口代碼(enter executive)和一個出口代碼(exit executive),它們由C/C++代碼組成。入口代碼在進入狀態時執行,出口代碼在離開狀態時執行,如圖20所示:

 圖20. Init 狀態的入口執行代碼和出口執行代碼

關閉這兩個代碼窗口。

狀態與狀態之間通過轉移線transitions 相連。轉移線可以是帶條件的(必須滿足條件才能轉移)或者無條件的(直接轉移)。圖21包含兩條轉移線,一條是從wait 狀態到open 狀態的條件轉移線(虛線表示)。虛線中間的OPEN 條件必須滿足,wait 狀態才能轉移到open 狀態。然而,從open 狀態到wait 狀態的轉移(實線表示)是無條件的,因此當執行完open 狀態的代碼后立即轉移到wait 狀態。

 圖21. 狀態之間的條件轉移

關閉節點和進程模型編輯器。

2) 收集統計量

在網絡模型中可以對單個對象收集統計量(Object statistics),也可以對整個網絡收集全局統計量(Global statistics)。

到現在為止,已經建好了網絡模型,現在要根據實例要求解決的問題決定收集哪些統計量:

a) 服務器有能力處理擴展網絡的額外業務負載嗎?

b) 一旦與擴展網絡連接,整個網絡的延時性能還能夠接受嗎?

為了找到這些問題的答案,需要選擇一個對象統計量:Server Load 和一個全局統計量:Ethernet Delay。

服務器負載(Server Load)是整個網絡的性能瓶頸。下面來收集與服務器負載相關的統計量:

a) 在服務器節點(node_31)上單擊鼠標右鍵,從彈出的菜單中選擇Choose Individual Statistics。這時出現node_31 的選擇統計量對話框,如圖22所示(統計量對話框以樹型結構顯示統計量,可以清楚地了解它們的隸屬關系)。

b) 單擊Node Statistics->Ethernet,選擇Load(bits/sec)統計量,如圖22。

c) 單擊OK 關閉對話框。

 

圖22. 選擇結果統計量

全局統計量可以用來收集整個網絡的信息。下面,我們通過選擇全局Delay 統計量來查看整個網絡的延時性能。

d) 在網絡編輯器的工作空間(避免指到對象)上單擊鼠標右鍵,從彈出的菜單中選擇Choose Individual Statistics,圖23。

e) 單擊Gobal Statistics 樹型結構,找到並點開Ethernet 節點統計量,圖24。

f) 選中Delay(sec)統計量,圖24。

g) 單擊OK 按鈕關閉對話框。

 

圖23. 設置網絡全局統計量

圖24. 選擇網絡全局延時統計量

步驟4:運行仿真

下面,可以准備運行仿真了。

1) 首先,需要確定repositories屬性設置正確:

    a) 在Edit 菜單中選擇Preferences。

    b) 在查找文本框中輸入“repositories”,單擊Find 按鈕,圖25。

    c) 在彈出的對話框的左下角單擊Insert 按鈕,在文本框中輸入stdmod,然后回車,圖26、27。

d) 單擊OK 關閉repositories 和Preferences 對話框。

 圖25. 確定repositories屬性設置

 

圖26. 編輯Network Simulation Repositories

 

圖27. 設置Network Simulation Repositories為stdmod

優化仿真核心:

仿真核心有development(調試)和optimized(優化)兩種。調試狀態的仿真核心會收集仿真信息,這些信息可用來調試模塊。而優化仿真核心使運行速度加快。系統缺省為development狀態。

設置優化仿真的方法如下:

在Edit 菜單中選擇Preferences,在查找文本框中輸入kernel_type,單擊Find 按鈕。將對應的value 設置為optimized。

2) 接下來運行仿真:

a) 在Simulation 菜單中選擇Configure Simulationl...,或者在工具欄中選擇運行仿真按鈕。

b) 將仿真時間Duration 設置為0.5,即模擬執行半小時的仿真,如圖28所示。

 圖28. 配置仿真參數

c) 單擊Run 按鈕運行仿真。

d) 運行完畢后單擊Close 按鈕關閉對話框。

步驟5:查看結果

    可以從項目編輯器中彈出的菜單中選擇View Results 查看結果。

1) 查看服務器Ethernet load 結果:

a) 在服務器節點(node_31)上單擊鼠標右鍵,從彈出的菜單中選擇View Results,這時出現查看結果對話框,如圖30所示。

b) 然后選中Load(bits/sec)。

 圖30. 查看結果

c) 單擊Show 按鈕,這時在項目編輯器上出現如圖31所示的結果。

 

圖31. 網絡負載結果

不同的實驗曲線走勢應該是大致相同,當然具體的取值會因為節點放置的位置和鏈路長度不同而有微弱的差別。

注意到負載最大值為 7,000 bits/second。這個場景是我們想得到的值,用它和后面擴展網絡后的結果進行比較,關閉對話框。

2) 現在來查看Ethernet Delay 的結果,這是一個全局統計量:

    在工作空間中單擊鼠標右鍵,從彈出的菜單中選擇View Results。

    選擇Global Statistics→Ethernet→Delay(sec),然后單擊Show 按鈕。

注意到網絡收斂時的延時大約為0.4 微秒,如圖32所示。

 圖32. 網絡延時結果

步驟6:復制場景並擴展網絡

    現在已經創建了一個基本的網絡,並且收集了相關結果。現在可以擴展該網絡並且驗證在增加額外負載下,網絡仍然能夠很好地工作。

為了保留剛才的網絡場景,以便和擴展的網絡場景的仿真結果相比較,需要復制場景:

    1)在Scenarios 菜單中選擇Duplicate Scenario...。

    2)命名新的場景為expansion。

    3)單擊OK 按鈕。

    這時出現和剛才網絡模型一模一樣的場景。

    接下來,需要構建網絡的另一部分。

    4)從Topology 菜單中選擇Rapid Configuration。

    5)從配置下拉列表中選擇Star,單擊OK...。

    􀂉 選擇中心節點模型為 3C_SSII_1100_3300_4s_ae52_e48_ge3。

    􀂉 選擇周邊節點模型為 Sm_Int_wkstn,並設置節點個數為15。

    􀂉 選擇鏈路模型為 10BaseT。

    􀂉 指定網絡在工作空間中放置的位置:中心的 X 軸坐標為75 和Y 軸坐標為62.5。局域網的半徑范圍為20。

    6)設置好以后單擊OK 按鈕,這時項目編輯器中出現另一個局域網。

連接這兩個局域網:

    7)單擊對象模板工具按鈕。

    8)選中Cisco 2514 路由器並將它放置在兩個局域網之間。單擊鼠標右鍵結束放置。

    9)在對象模板中選中10BaseT 鏈路圖標,在項目編輯器中分別連接node_30 和node_50(Cisco 路由器),以及node_49 和node_50。

    10)單擊鼠標右鍵。

    11)關閉對象模板。

    12)在File 菜單中選擇Save 保存項目。

這時整個網絡建好了,如圖33所示。

 

圖33. 擴展后的網絡模型

步驟7:再次運行

現在可以運行仿真了。

 1)在Simulation 菜單中選擇Configure Simulationl...,或者在工具欄中選擇運行仿真按鈕。

    2)將仿真時間Duration 設置為0.5,即模擬執行半小時的仿真。

    3)單擊Run 按鈕運行仿真。

4)運行完畢后單擊Close 按鈕關閉對話框。

3.1.8步驟8:比較結果

為了回答最開始提出的問題,需要將這兩個網絡的仿真結果進行比較:

1)比較服務器負載:

    i)在服務器節點(node_31)上單擊鼠標右鍵從彈出的菜單中選擇View Results。

ii)選中Results for “Current Project”,選中兩個場景,Office Network.node_31→Ethernet→Load(bits/sec)結果統計量,並在比較結果對話框的左下角的下拉列表中選擇Overlaid Statistics,如圖34所示。

 圖34. 比較負載結果

    iii)單擊show 查看比較的結果。

圖35中曲線抖動很厲害,為了更加清楚兩條曲線的走勢,我們可以改變結果的收集模式,從View Results(如圖36)對話框中間下面的下拉列表中選擇time average,單擊show,這時出現圖37的結果,可以看出抖動被平滑了。

 

圖35. 服務器負載結果比較圖

 

圖36. 平均負載比較圖

iv)關閉server 的比較結果對話框。

2)比較網絡延時:

最后,我們來查看增加第二個網絡對網絡的延時性能的影響。比較這兩個場景的Ethernet delay 結果:

    i)在工作空間中單擊鼠標右鍵,從彈出的菜單中選擇View Results。

    ii)選擇Global Statistics→Ethernet→Delay(sec)統計量。

iii)單擊show 顯示比較結果,如圖37所示。

 

圖37. 端對端延時比較

iv)關閉比較結果對話框。

v)從File 菜單中選擇Close,保存並關閉項目文件。

結論

1)從圖36可以看出服務器的負載有明顯增加;

2)從圖37可以看出以太網延時性能並沒有因為服務器負載的增加而受影響。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM