NS3模擬基礎(chǔ)(轉(zhuǎn))

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)境下。

2.NS-3模擬基本流程

使用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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,317評(píng)論 2 89
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,380評(píng)論 0 5
  • 夜幕下 風(fēng)殷勤的像個(gè)騎士 知了懂事的如個(gè)乖孩子 而我靜靜的想著你 仿佛我們就在一起 夜幕下 手機(jī)忽明忽暗 多像調(diào)皮...
    戶未一閱讀 289評(píng)論 0 0

友情鏈接更多精彩內(nèi)容