1.NS3目錄結(jié)構(gòu)
Waf是基于Python開發(fā)的編譯工具,ns-3系統(tǒng)本身和將要寫的仿真代碼都由waf負(fù)責(zé)編譯運(yùn)行。
Scratch目錄一般存放用戶腳本文件,也可以把要運(yùn)行的例子拷貝到該目錄下。
Example是ns-3提供的關(guān)于如何使用ns-3的例子,包含許多模塊的使用,如能量、路由、無線網(wǎng)絡(luò)等。
Doc目錄是幫助文檔,可以使用./waf --doxygen編譯本地Doxygen文檔。
Build目錄是ns-3編譯目錄,包含編譯文件時(shí)使用的共享庫和頭文件(build/ns3)。
Src是ns-3源碼目錄。

模塊里面的wscript文件結(jié)構(gòu)是固定的,用來注冊(cè)模塊中包含的源碼和使用其他模塊情況。Model目錄包含模塊代碼的.cc和.h文件。Helper目錄存放的是模塊對(duì)應(yīng)的helper類代碼的源文件。Test目錄包含的是模塊設(shè)計(jì)者編寫的模塊測(cè)試代碼,而examples目錄存放的是應(yīng)用該模塊的實(shí)例代碼。Doc是幫助文檔,bindings目錄是模塊用來綁定python語言的。

常用模塊:
Core:ns-3的內(nèi)核模塊,實(shí)現(xiàn)了ns-3的基本機(jī)制,如智能指針(Ptr)、屬性(attribute)、回調(diào)(callback)、隨機(jī)變量(random ariable)、日志(logging)、追蹤(tracing)和事件調(diào)度(event scheduler)等內(nèi)容。
Network:網(wǎng)絡(luò)數(shù)據(jù)分組(packet)的模塊,一般仿真會(huì)用到。
Internet:實(shí)現(xiàn)了關(guān)于TCP/IPv4和IPv6的相關(guān)協(xié)議族,包括IPv4、IPv6、ARP、UPP、TCP、鄰居發(fā)現(xiàn)和其他相關(guān)協(xié)議,目前大多數(shù)網(wǎng)絡(luò)都是基于Internet協(xié)議棧的。
Applications:集中常用的應(yīng)用層協(xié)議
Mobility:移動(dòng)模型模塊
Topolopy-read:讀取指定軌跡文件數(shù)據(jù),按照指定格式生成相應(yīng)的網(wǎng)絡(luò)拓?fù)?。網(wǎng)絡(luò)協(xié)議時(shí)能量不得不考慮。
Status:統(tǒng)計(jì)框架模塊,方便ns-3仿真的數(shù)據(jù)收集、統(tǒng)計(jì)和分析。
Tools:統(tǒng)計(jì)工具,包括統(tǒng)計(jì)作圖工具gnuplot的接口和使用。
Visualizer:可視化界面工具PyViz
Netanim:動(dòng)畫演示工具Netnim
Propagation:傳播模型模塊
Flow-monitor:流量監(jiān)控模塊。
下面是幾種典型的網(wǎng)絡(luò)模塊。
Point-to-point:實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信的網(wǎng)絡(luò)
CSMA:實(shí)現(xiàn)了基于IEEE802.3的以太網(wǎng)絡(luò),包括MAC層、物理層和媒體信道。
Wifi:如何實(shí)現(xiàn)基于IEEE 802.11 a/b/g的無線網(wǎng)絡(luò),可以是有基礎(chǔ)設(shè)施的也可以是ad hoc網(wǎng)絡(luò)。
Mesh:實(shí)現(xiàn)基于IEEE 802.11s的無線mesh網(wǎng)絡(luò)。
Wimax:實(shí)現(xiàn)了基于IEEE802.16標(biāo)準(zhǔn)的無線城域網(wǎng)絡(luò)。
LTE:(long term evolution,長期演進(jìn))是第三代合作伙伴計(jì)劃(3GPP,3rd generation partnership project )主導(dǎo)的通用移動(dòng)通信系統(tǒng)(UMTS,universal mobile telecommunications system)技術(shù)的長期演進(jìn)。
UAN:ns-3的水聲通信網(wǎng)絡(luò)(UAN,underwater acoustic network)模塊,能仿真水下網(wǎng)絡(luò)場(chǎng)景。實(shí)現(xiàn)了信道、物理層和MAC層。
對(duì)新技術(shù):
Click:ns-3中集成的可編程模塊化的軟件路由(the click modular router)。
Openflow:在ns-3中仿真OpenFlow交換機(jī)。
MPI:并行分布式離散事件仿真,ns-3實(shí)現(xiàn)了標(biāo)準(zhǔn)的信息傳遞接口(MPI,message passing interface)。
Emu:ns-3可以集成到實(shí)驗(yàn)床和虛擬機(jī)環(huán)境下。
使用ns-3進(jìn)行網(wǎng)絡(luò)仿真時(shí),一般經(jīng)過一下4個(gè)步驟:
1、選擇或開發(fā)相應(yīng)模塊。
根據(jù)實(shí)際仿真對(duì)象和仿真場(chǎng)景選擇相應(yīng)的仿真模塊。
如有限局域網(wǎng)絡(luò)(CSMA),無線局域網(wǎng)絡(luò)(Wi-Fi);
節(jié)點(diǎn)是否需要移動(dòng)(mobility);
使用何種應(yīng)用程序(application);
是否需要能量管理(energy);
使用何種路由協(xié)議(Internet、aodv等);
是否需要?jiǎng)赢嬔菔荆╲isualizer、netanim)等
如果搭建的網(wǎng)絡(luò)比較新,讀者就需要開發(fā)自己設(shè)計(jì)的協(xié)議
2、編寫網(wǎng)絡(luò)仿真腳本:C++或者Python。
編寫腳本過程:
1)生成節(jié)點(diǎn)(如網(wǎng)卡、應(yīng)用程序、協(xié)議棧等)
節(jié)點(diǎn)相當(dāng)于一個(gè)空的計(jì)算機(jī)外殼,接下來要給計(jì)算機(jī)安裝網(wǎng)絡(luò)所需要的軟硬件,如網(wǎng)卡、應(yīng)用程序、協(xié)議棧等
2)安裝網(wǎng)絡(luò)設(shè)備(如CSMA、WiFi、wimax、point-to-point)
不同的網(wǎng)絡(luò)類型有不同的網(wǎng)絡(luò)設(shè)備,從而提供不同的信道、物理層和mac層
3)安裝協(xié)議棧:ns-3一般是TCP/IP協(xié)議棧。
依據(jù)網(wǎng)絡(luò)選擇具體協(xié)議(如udp還是tcp)、選擇路由協(xié)議(olsr、aodv、global等)并為其配置ip地址
4)安裝應(yīng)用層協(xié)議
依據(jù)選擇的傳輸層協(xié)議選擇相應(yīng)的應(yīng)用層協(xié)議,有時(shí)需要自己編寫應(yīng)用層產(chǎn)生網(wǎng)絡(luò)數(shù)據(jù)流量的代碼。
5)其他配置(如節(jié)點(diǎn)是否要移動(dòng),是否要能量管理)
6)啟動(dòng)仿真。
網(wǎng)絡(luò)場(chǎng)景配置完成,啟動(dòng)仿真。
以上概念使網(wǎng)絡(luò)節(jié)點(diǎn)實(shí)現(xiàn)了物理連接,要實(shí)現(xiàn)通信還需要軟件支持,也就是協(xié)議,應(yīng)用層產(chǎn)生數(shù)據(jù),利用類socket編程實(shí)現(xiàn)數(shù)據(jù)分組的向下傳遞,數(shù)據(jù)分組通過協(xié)議棧tcp、ip向下傳遞給網(wǎng)絡(luò)設(shè)備(可簡單理解為網(wǎng)卡),該網(wǎng)絡(luò)設(shè)備包括mac層物理層協(xié)議,于是數(shù)據(jù)分組就像在真實(shí)網(wǎng)絡(luò)中流動(dòng)一樣,由數(shù)據(jù)幀轉(zhuǎn)換成二進(jìn)制流,最終變成信號(hào)通過媒體信道傳輸?shù)侥康墓?jié)點(diǎn)。
目的節(jié)點(diǎn)收到數(shù)據(jù)分組后從下往上逐層轉(zhuǎn)交,由媒體信號(hào)轉(zhuǎn)換成二進(jìn)制,二進(jìn)制轉(zhuǎn)換成數(shù)據(jù)幀,再轉(zhuǎn)換成IP數(shù)據(jù)分組,然后經(jīng)由傳輸層的端口號(hào)轉(zhuǎn)交給相應(yīng)進(jìn)程。
3、仿真結(jié)果分析。
仿真結(jié)果有兩種:一種是網(wǎng)絡(luò)場(chǎng)景,另外一種是網(wǎng)絡(luò)數(shù)據(jù)。
網(wǎng)絡(luò)場(chǎng)景,如節(jié)點(diǎn)拓?fù)浣Y(jié)構(gòu)、移動(dòng)模型等,一般通過可視化界面(pyviz或netanim)可直觀觀察到
網(wǎng)絡(luò)數(shù)據(jù)也可在可視化界面下有簡單統(tǒng)計(jì)。此外可以通過專門的統(tǒng)計(jì)框架(status)或自行通過ns3提供的追追蹤系統(tǒng)(tracing)收集、統(tǒng)計(jì)、分析相應(yīng)的網(wǎng)絡(luò)數(shù)據(jù),如數(shù)據(jù)分組的延遲、網(wǎng)絡(luò)流量、分組丟失了、節(jié)點(diǎn)消息緩存隊(duì)列
4、依據(jù)仿真結(jié)果調(diào)整網(wǎng)絡(luò)配置參數(shù)或修改源代碼
轉(zhuǎn)自:https://blog.csdn.net/jocelyn_osshun/article/details/77765892