1選擇或開發相應模塊:根據實際仿真對象和仿真場景選擇相應的仿真模塊:如果是有線局域網絡(CSMA)還是無線局域網絡(Wi-Fi);節點是否需要移動(mobility);使用何種應用程序(application);是否需要能量(energy)管理;使用何種路由協議(internet、aodv等);是否需要動畫演示等可視化界面(visualizer、netanim)等。如果要搭建的網絡是比較新的網絡,如延遲容忍網絡(DTN)等,需要開發設計協議,如路由協議、移動模型、能量管理模型等。
2編寫網絡仿真腳本:有了相應的模塊,就可以搭建網絡仿真環境,ns3仿真腳本支持兩種語言:C++和Python,但是兩種語言的API接口是一樣的,部分API可能還沒有提供Python接口。編寫ns3仿真腳本的大體過程如下。
生成節點:ns3中節點相當於一個空的計算機外殼,接下來要給這個計算機安裝網絡所需要的軟硬件,如網卡、應用程序、協議棧等。
安裝網絡設備:不同的網絡類型有不同的網絡設備,從而提供不同的信道、物理層和MAC層,如CSMA、WiFi、WiMAX和point-to-point等。
安裝協議棧:ns3網絡中一般是TCP/IP協議棧,依據網絡選擇具體協議棧,如是UDP還是TCP,選擇何種不同的路由協議(OLSR、AODV和Global等)並為其配置相應的IP地址,ns3即支持IPv4也支持IPv6。
安裝應用層協議:依據選擇的傳輸層協議選擇相應的應用層協議,但有時需要自己編寫應用層產生網絡數據流量的代碼。
其他配置:如節點是否移動,是否需要能量管理等。
啟動仿真:整個網絡場景配置完畢,啟動仿真。
ns3仿真的基本模型如下圖所示,搭建ns3網絡仿真場景和搭建實際網絡類似,首先需要有網絡節點,ns3中使用節點的概念;節點需要有網絡設備,類似於網絡接口卡,ns3中有相應網絡設備的概念;網絡設備通過傳輸媒體連接起來,ns3中使用信道的概念來代表傳輸媒體,設置信道延遲等屬性,並且和實際網絡相似;信道和網絡設備是對應的,CSMA網絡設備是對應的,CSMA網絡設備對應CSMA的信道,WiFi網絡設備對應WiFI的信道。
以上概念使網絡節點實現了物理連接,但要實現通信,還需要軟件支持,也就是協議,應用層產生數據,利用類socket編程(和真實的BSD socket很像)實現數據分組的向下傳遞,數據分組通過協議棧--TCP/IP向下傳遞給網絡設備(可以簡單理解為網卡),該網絡設備包括MAC層、物理層協議,於是數據分組就像在真實網絡中流動一樣,由數據幀轉換成二進制流,最終變成信號通過媒體信道傳輸到目的節點。
目的節點收到數據分組后從下層往上逐層轉交,由媒體信號轉換成二進制流,由二進制轉換成數據幀,再由數據幀轉換成IP數據分組,然后經由傳輸層的端口號轉交給相應的進程(應用程序application),至此在ns3中完成了一次和真實網絡及其相近的完整數據傳輸過程。
3.仿真結果分析
仿真結果一般有兩種:一種是網絡場景,二是網絡數據。網絡場景如節點拓撲結構、移動模型等,一般通過可視化界面(PyViz或NetAnim)可直觀觀測到;網絡數據也可在可視化界面下有簡單的統計,此外,可以通過專門的統計框架(status)或者自行通過ns3提供的追蹤(tracing)系統收集、統計和分析相應的網絡數據,如數據分組的遲延、網絡流量、分組丟失率和節點消息隊列等。
4.依據網絡仿真結果調整網絡配置參數或修改源代碼
有時實際結果與預期結果相差較遠,這時我們要分析原因,是網絡參數有問題,還是協議本身有出入等,然后再重新設計,重新仿真,如此反復,直到達到滿意的結果。
————————————————
版權聲明:本文為CSDN博主「特立獨行的一只miao」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41816035/article/details/86646716