NS-3网络仿真平台搭建及可视化
面向5G車聯(lián)網(wǎng)仿真平臺(tái)的搭建
本博客是基于SRTP(面向5G車聯(lián)網(wǎng)仿真平臺(tái)設(shè)計(jì)與開發(fā))而搭建的“面向5G車聯(lián)網(wǎng)的網(wǎng)絡(luò)仿真平臺(tái)”,以供大家學(xué)習(xí)使用。
目錄
前言概述
準(zhǔn)備工作
下載ns-3
構(gòu)建ns-3
測(cè)試ns-3
NS-3仿真可視化
前言概述
- 項(xiàng)目簡(jiǎn)介
項(xiàng)目立名為:”5G車聯(lián)網(wǎng)仿真平臺(tái)“,團(tuán)隊(duì)所有成員通過(guò)學(xué)習(xí)相關(guān)的NS-3相關(guān)技術(shù)知識(shí)、研究學(xué)習(xí)5G車聯(lián)網(wǎng)和V2X等相關(guān)參考文獻(xiàn),在研究3GPP Release 12 ProSe 系統(tǒng)架構(gòu)以及信令流程基礎(chǔ)上,綜述基于LTE-V2X的車聯(lián)網(wǎng)協(xié)議研究和標(biāo)準(zhǔn)化進(jìn)展,通過(guò)現(xiàn)有理論與技術(shù)分析,提出設(shè)計(jì)方案,在大唐研發(fā)的基于LTE網(wǎng)絡(luò)的V2X的基礎(chǔ)上,繼續(xù)研發(fā)出進(jìn)一步嚴(yán)禁的基于5G網(wǎng)絡(luò)的V2X,可望支持更低時(shí)延(< 10ms)、更高可靠性(99.999%)、更大寬帶(支持視頻共享)的”傳感共享“。 - 項(xiàng)目特色與創(chuàng)新
- 特色
以”車對(duì)外界“信息交換為主要功能的V2X技術(shù)正在成為車聯(lián)網(wǎng)的新亮點(diǎn),是繼信息娛樂(lè)之后,推動(dòng)汽車網(wǎng)絡(luò)組建的新應(yīng)用。基于將來(lái)5G網(wǎng)絡(luò)的V2X則可望支持更低時(shí)延(<10ms)、更高可靠性(99.999%)、更大帶寬(支持視頻共享)的“傳感共享”,并擴(kuò)展至通過(guò)采取“點(diǎn)對(duì)點(diǎn)”雙向應(yīng)答式通信方式,實(shí)現(xiàn)自動(dòng)駕駛所需的實(shí)時(shí)“多車協(xié)同”,同時(shí)實(shí)現(xiàn)大帶寬低時(shí)延的“車-云”互聯(lián),實(shí)時(shí)下載上傳3D地圖,并支持全體自動(dòng)駕駛車的實(shí)時(shí)經(jīng)驗(yàn)共享和“群學(xué)習(xí)”,大幅提高人工智能的學(xué)習(xí)速度,支撐自動(dòng)駕駛技術(shù)實(shí)現(xiàn)商用和普及。 - 創(chuàng)新
基于5G網(wǎng)絡(luò)的V2X將更具有智能化,在全新的5G時(shí)代,它將完全實(shí)現(xiàn)“5W”的理念:任何時(shí)間(whenever)、任何地點(diǎn)(wherever)、任何人(whoever)、任何事物(whatever)以及任何接收者(whomever),這不僅在技術(shù)上是一種革新,更是一種理念上的變革,實(shí)現(xiàn)了不僅是人與人,車與車之間的完全通信,更是將車與車,車與人也緊密的聯(lián)系到了一起,這在車聯(lián)網(wǎng)行業(yè)將是一項(xiàng)重大的突破!
- 特色
- NS-3概述
- ns-3 被構(gòu)建為能夠協(xié)同工作的軟件庫(kù)系統(tǒng)。可以編寫鏈接這些庫(kù)的(或?qū)脒@些庫(kù)的)用戶程序。用戶程序既可用 C++ 也可 Python 編寫。ns-3 以源碼形式發(fā)布,這意味著目標(biāo)系統(tǒng)需要有軟件開發(fā)環(huán)境能夠首先構(gòu)建所需的庫(kù),然后構(gòu)建用戶程序。
準(zhǔn)備工作
工具/環(huán)境
書籍(后續(xù)安裝ns-3需要用):
- 紙質(zhì)版:《ns-3網(wǎng)絡(luò)模擬器基礎(chǔ)與應(yīng)用》馬春光,姚建盛
- 電子閱讀版:《ns-3網(wǎng)絡(luò)模擬器基礎(chǔ)與應(yīng)用》
官方文檔閱讀:
- NS-3-installation
環(huán)境:
- 電腦、linux操作系統(tǒng)
- 依賴包安裝(重點(diǎn),可能會(huì)踩很多坑,這個(gè)要根據(jù)你的電腦環(huán)境而定):(<-在這里我將其總結(jié)為一個(gè)腳本->)
下載ns-3
- ns-3使用版本
我們使用的是 ns-allinone-3.26,現(xiàn)在版本已經(jīng)更新到ns-allinone-3.28,建議還是使用ns-allinone-3.26 - 第一種方法:直接下載tar壓縮包,網(wǎng)址下載: ns-allinone-3.26
- 第二種方法:命令行進(jìn)行下載
進(jìn)入到目錄ns-allinone-3.26,能看到如下文件和目錄:
$ ls bake constants.py ns-3.26 README build.py netanim-3.107 pybindgen-0.17.0.post57+nga6376f2 util.pyns-3下載工作到這里就基本完成了,接下來(lái)可以開始構(gòu)建ns-3了。
構(gòu)建ns-3
- 使用build.py編譯
進(jìn)入ns-allinone-3.26文件夾,并鍵入以下命令進(jìn)行編譯:
編譯完成后,您會(huì)看到顯示的是構(gòu)建腳本構(gòu)建你下載的各種內(nèi)容的信息。最終顯示如下:
Waf: Leaving directory `/path/to/workspace/ns-allinone-3.26/ns-3.26/build' 'build' finished successfully (6m25.032s)Modules built: antenna aodv applications bridge buildings config-store core csma csma-layout dsdv dsr energy fd-net-device flow-monitor internet internet-apps lr-wpan lte mesh mobility mpi netanim (no Python) network nix-vector-routing olsr openflow (no Python) point-to-point point-to-point-layout propagation sixlowpan spectrum stats tap-bridge test (no Python) topology-read traffic-control uan virtual-net-device visualizer wave wifi wimaxModules not built (see ns-3 tutorial for explanation): brite click尚未被構(gòu)建的部分:
Modules not built (see ns-3 tutorial for explanation): brite click這只是意味著某些ns-3模塊依賴的外部庫(kù)可能尚未安裝,或者配置文件專門指定的不構(gòu)建他們。這并不意味著模擬器沒(méi)有成功構(gòu)建,也不意味著其會(huì)對(duì)正在構(gòu)建的(被列出的)模塊給出錯(cuò)誤的的結(jié)果。
- 使用waf編譯
一旦工程已經(jīng)編譯過(guò),就不能再使用build.py腳本進(jìn)行編譯
進(jìn)入ns-allinone-3.26/ns-3.26目錄,鍵入以下命令:
正式編譯:
$ ./waf輸出如下結(jié)果:
[2593/2631] Linking build/bindings/python/ns/traffic_control.so [2594/2631] Linking build/bindings/python/ns/network.so [2595/2631] Linking build/bindings/python/ns/wifi.so [2596/2631] Linking build/bindings/python/ns/nix_vector_routing.so [2597/2631] Linking build/bindings/python/ns/lte.so [2598/2631] Linking build/bindings/python/ns/buildings.so [2599/2631] Linking build/bindings/python/ns/aodv.so [2600/2631] Linking build/bindings/python/ns/point_to_point.so [2601/2631] Linking build/bindings/python/ns/fd_net_device.so [2602/2631] Linking build/bindings/python/ns/mpi.so [2603/2631] Linking build/bindings/python/ns/wave.so [2604/2631] Linking build/bindings/python/ns/csma.so [2605/2631] Linking build/bindings/python/ns/dsdv.so [2606/2631] Linking build/bindings/python/ns/topology_read.so [2607/2631] Linking build/bindings/python/ns/internet_apps.so [2608/2631] Linking build/utils/ns3.26-print-introspected-doxygen-debug [2609/2631] Linking build/scratch/subdir/subdir [2610/2631] Linking build/bindings/python/ns/energy.so [2611/2631] Linking build/bindings/python/ns/antenna.so [2612/2631] Linking build/bindings/python/ns/internet.so [2613/2631] Linking build/bindings/python/ns/tap_bridge.so [2614/2631] Linking build/bindings/python/ns/wimax.so [2615/2631] Linking build/bindings/python/ns/_core.so [2616/2631] Linking build/bindings/python/ns/spectrum.so [2617/2631] Linking build/bindings/python/ns/sixlowpan.so [2618/2631] Linking build/bindings/python/ns/mobility.so [2619/2631] Linking build/bindings/python/ns/stats.so [2620/2631] Linking build/utils/ns3.26-test-runner-debug [2621/2631] Compiling src/fd-net-device/helper/tap-device-creator.cc [2622/2631] Compiling src/fd-net-device/helper/encode-decode.cc [2623/2631] Compiling src/fd-net-device/helper/creator-utils.cc [2624/2631] Linking build/src/fd-net-device/ns3.26-tap-device-creator-debug [2625/2631] Compiling src/fd-net-device/helper/raw-sock-creator.cc [2626/2631] Compiling src/fd-net-device/helper/encode-decode.cc [2627/2631] Compiling src/fd-net-device/helper/creator-utils.cc [2628/2631] Linking build/src/fd-net-device/ns3.26-raw-sock-creator-debug [2630/2631] Compiling src/tap-bridge/model/tap-encode-decode.cc [2630/2631] Compiling src/tap-bridge/model/tap-creator.cc [2631/2631] Linking build/src/tap-bridge/ns3.26-tap-creator-debug Waf: Leaving directory `/home/xuminghua/tmp/ns-allinone-3.26/ns-3.26/build' Build commands will be stored in build/compile_commands.json 'build' finished successfully (14m15.932s)Modules built: antenna aodv applications bridge buildings config-store core csma csma-layout dsdv dsr energy fd-net-device flow-monitor internet internet-apps lr-wpan lte mesh mobility mpi netanim (no Python) network nix-vector-routing olsr point-to-point point-to-point-layout propagation sixlowpan spectrum stats tap-bridge test (no Python) topology-read traffic-control uan virtual-net-device visualizer wave wifi wimax Modules not built (see ns-3 tutorial for explanation): brite click openflow測(cè)試ns-3
構(gòu)建完成之后,我們就可以開始測(cè)試ns-3是否能運(yùn)行了。
- 使用test.py進(jìn)行測(cè)試
進(jìn)入ns-3.26,鍵入以下命令:
輸出如下所示:
…… PASS: TestSuite traced-value-callback PASS: TestSuite aodv-routing-id-cache PASS: TestSuite routing-aodv PASS: TestSuite routing-aodv-loopback PASS: TestSuite routing-aodv-regression PASS: TestSuite ns3-wifi-msdu-aggregatorPASS: TestSuite lte-frequency-reuse 230 of 233 tests passed (230 passed, 3 skipped, 0 failed, 0 crashed, 0 valgrind errors) List of SKIPped tests:ns3-tcp-cwndns3-tcp-interoperabilitynsc-tcp-loss由輸出可以看出,除來(lái)未安裝成功的三個(gè)依賴包,其他均測(cè)試成功。
- 運(yùn)行腳本進(jìn)行測(cè)試
運(yùn)行ns-allinone-3.26/ns-3.26/scratch文件夾下的腳本文件scratch-simulator.cc
在ns-allinone-3.26/ns-3.26文件夾下,鍵入以下命令(因?yàn)閣af在這個(gè)文件夾下,也可以將waf 和 waf.bat 移至scratch文件夾下再進(jìn)行運(yùn)行)
waf首先執(zhí)行檢查以確保程序已經(jīng)正確構(gòu)建,并在需要時(shí)執(zhí)行構(gòu)建。然后執(zhí)行該程序,產(chǎn)生以下輸出:
Waf: Entering directory `/home/xuminghua/tmp/ns-allinone-3.26/ns-3.26/build' Waf: Leaving directory `/home/xuminghua/tmp/ns-allinone-3.26/ns-3.26/build' Build commands will be stored in build/compile_commands.json 'build' finished successfully (1.912s) Scratch Simulator輸出了Scratch Simulator,表明ns-3網(wǎng)絡(luò)仿真平臺(tái)已經(jīng)搭建完成來(lái),接下來(lái)就是用你的代碼進(jìn)行編譯,并進(jìn)行數(shù)據(jù)可視化分析展示了。
NS-3仿真可視化
數(shù)據(jù)可視化主要有兩種PyViz和NetAnim,都是作為可視化動(dòng)畫演示工具。
PyViz
- 使用參考網(wǎng)址:NS-3-PyViz
PyViz安裝
安裝依賴包
sudo apt-get install python-dev python-pygraphviz python-kiwi python-pygoocanvas python-gnome2 python-gnomedesktop python-rsvg安裝交互式Python使得GUI上有控制臺(tái)按鈕
sudo apt-get install ipython- PyViz測(cè)試
- Python腳本(3.26目錄下)
./waf --pyrun src/flow-monitor/examples/wifi-olsr-flowmon.py --visualize
如圖所示:
- C++腳本(3.26目錄下)
./waf --run src/olsr/examples/simple-point-to-point-olsr --vis
如圖所示:
- 需要修改的腳本wscript文件
obj=bld.create_ns3_program('simple-point-to-point-olsr', ['point-to-point', 'internet', 'olsr', 'applications', 'wifi'])
修改成
obj=bld.create_ns3_program('simple-point-to-point-olsr', ['point-to-point', 'internet', 'olsr', 'applications', 'wifi', 'visualizer'])
再次執(zhí)行前面的代碼
- Python腳本(3.26目錄下)
NetAnim
- 使用參考網(wǎng)址:NS-3-NetAnim
NetAnim安裝
- 安裝依賴包
sudo apt-get install mercurial
sudo apt-get install qt4-dev-tools - 下載并安裝NetAnim
hg clone http://code.nsnam.org/jabraham3/netanim
cd netanim
make clean
qmake NetAnim.pro (For MAC Users: qmake -spec macx-g++ NetAnim.pro)
make 運(yùn)行實(shí)例產(chǎn)生.xml文件供NetAnim解析
在src/netanim/examples目錄下執(zhí)行下面兩個(gè)命令:
./waf --run "dumbbell-animation --nLeftLeaf=5 --nRightLeaf=5 --animFile=dumbbell.xml"
./waf --run "grid-animation --xSize=5 --ySize=5 --animFile=grid.xml"若出現(xiàn)”權(quán)限不夠“,則退出到ns-3.26目錄下,執(zhí)行下面兩條命令:
./waf --run "src/netanim/examples/dumbbell-animation --nLeftLeaf=5 --nRightLeaf=5 --animFile=dumbbell.xml"
./waf --run "src/netanim/examples/grid-animation --xSize=5 --ySize=5 --animFile=grid.xml"
運(yùn)行NetAnim來(lái)解析xml文件:
cd ns-allinone-3.26/netanim-3.107
./NetAnim
打開NetAnim界面如下:
打開xml文件,進(jìn)行解析:
- 安裝依賴包
好了,以上就是整個(gè)平臺(tái)的搭建以及可視化全過(guò)程……
最后再進(jìn)行數(shù)據(jù)分析等過(guò)程……
總結(jié)
以上是生活随笔為你收集整理的NS-3网络仿真平台搭建及可视化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaOne美国之行–Session篇
- 下一篇: English trip EM3 LP