NS-3网络仿真平台搭建及可视化
面向5G車聯網仿真平臺的搭建
本博客是基于SRTP(面向5G車聯網仿真平臺設計與開發)而搭建的“面向5G車聯網的網絡仿真平臺”,以供大家學習使用。
目錄
前言概述
準備工作
下載ns-3
構建ns-3
測試ns-3
NS-3仿真可視化
前言概述
- 項目簡介
項目立名為:”5G車聯網仿真平臺“,團隊所有成員通過學習相關的NS-3相關技術知識、研究學習5G車聯網和V2X等相關參考文獻,在研究3GPP Release 12 ProSe 系統架構以及信令流程基礎上,綜述基于LTE-V2X的車聯網協議研究和標準化進展,通過現有理論與技術分析,提出設計方案,在大唐研發的基于LTE網絡的V2X的基礎上,繼續研發出進一步嚴禁的基于5G網絡的V2X,可望支持更低時延(< 10ms)、更高可靠性(99.999%)、更大寬帶(支持視頻共享)的”傳感共享“。 - 項目特色與創新
- 特色
以”車對外界“信息交換為主要功能的V2X技術正在成為車聯網的新亮點,是繼信息娛樂之后,推動汽車網絡組建的新應用。基于將來5G網絡的V2X則可望支持更低時延(<10ms)、更高可靠性(99.999%)、更大帶寬(支持視頻共享)的“傳感共享”,并擴展至通過采取“點對點”雙向應答式通信方式,實現自動駕駛所需的實時“多車協同”,同時實現大帶寬低時延的“車-云”互聯,實時下載上傳3D地圖,并支持全體自動駕駛車的實時經驗共享和“群學習”,大幅提高人工智能的學習速度,支撐自動駕駛技術實現商用和普及。 - 創新
基于5G網絡的V2X將更具有智能化,在全新的5G時代,它將完全實現“5W”的理念:任何時間(whenever)、任何地點(wherever)、任何人(whoever)、任何事物(whatever)以及任何接收者(whomever),這不僅在技術上是一種革新,更是一種理念上的變革,實現了不僅是人與人,車與車之間的完全通信,更是將車與車,車與人也緊密的聯系到了一起,這在車聯網行業將是一項重大的突破!
- 特色
- NS-3概述
- ns-3 被構建為能夠協同工作的軟件庫系統。可以編寫鏈接這些庫的(或導入這些庫的)用戶程序。用戶程序既可用 C++ 也可 Python 編寫。ns-3 以源碼形式發布,這意味著目標系統需要有軟件開發環境能夠首先構建所需的庫,然后構建用戶程序。
準備工作
工具/環境
書籍(后續安裝ns-3需要用):
- 紙質版:《ns-3網絡模擬器基礎與應用》馬春光,姚建盛
- 電子閱讀版:《ns-3網絡模擬器基礎與應用》
官方文檔閱讀:
- NS-3-installation
環境:
- 電腦、linux操作系統
- 依賴包安裝(重點,可能會踩很多坑,這個要根據你的電腦環境而定):(<-在這里我將其總結為一個腳本->)
下載ns-3
- ns-3使用版本
我們使用的是 ns-allinone-3.26,現在版本已經更新到ns-allinone-3.28,建議還是使用ns-allinone-3.26 - 第一種方法:直接下載tar壓縮包,網址下載: ns-allinone-3.26
- 第二種方法:命令行進行下載
進入到目錄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下載工作到這里就基本完成了,接下來可以開始構建ns-3了。
構建ns-3
- 使用build.py編譯
進入ns-allinone-3.26文件夾,并鍵入以下命令進行編譯:
編譯完成后,您會看到顯示的是構建腳本構建你下載的各種內容的信息。最終顯示如下:
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尚未被構建的部分:
Modules not built (see ns-3 tutorial for explanation): brite click這只是意味著某些ns-3模塊依賴的外部庫可能尚未安裝,或者配置文件專門指定的不構建他們。這并不意味著模擬器沒有成功構建,也不意味著其會對正在構建的(被列出的)模塊給出錯誤的的結果。
- 使用waf編譯
一旦工程已經編譯過,就不能再使用build.py腳本進行編譯
進入ns-allinone-3.26/ns-3.26目錄,鍵入以下命令:
正式編譯:
$ ./waf輸出如下結果:
[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測試ns-3
構建完成之后,我們就可以開始測試ns-3是否能運行了。
- 使用test.py進行測試
進入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由輸出可以看出,除來未安裝成功的三個依賴包,其他均測試成功。
- 運行腳本進行測試
運行ns-allinone-3.26/ns-3.26/scratch文件夾下的腳本文件scratch-simulator.cc
在ns-allinone-3.26/ns-3.26文件夾下,鍵入以下命令(因為waf在這個文件夾下,也可以將waf 和 waf.bat 移至scratch文件夾下再進行運行)
waf首先執行檢查以確保程序已經正確構建,并在需要時執行構建。然后執行該程序,產生以下輸出:
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網絡仿真平臺已經搭建完成來,接下來就是用你的代碼進行編譯,并進行數據可視化分析展示了。
NS-3仿真可視化
數據可視化主要有兩種PyViz和NetAnim,都是作為可視化動畫演示工具。
PyViz
- 使用參考網址:NS-3-PyViz
PyViz安裝
安裝依賴包
sudo apt-get install python-dev python-pygraphviz python-kiwi python-pygoocanvas python-gnome2 python-gnomedesktop python-rsvg安裝交互式Python使得GUI上有控制臺按鈕
sudo apt-get install ipython- PyViz測試
- 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'])
再次執行前面的代碼
- Python腳本(3.26目錄下)
NetAnim
- 使用參考網址: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 運行實例產生.xml文件供NetAnim解析
在src/netanim/examples目錄下執行下面兩個命令:
./waf --run "dumbbell-animation --nLeftLeaf=5 --nRightLeaf=5 --animFile=dumbbell.xml"
./waf --run "grid-animation --xSize=5 --ySize=5 --animFile=grid.xml"若出現”權限不夠“,則退出到ns-3.26目錄下,執行下面兩條命令:
./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"
運行NetAnim來解析xml文件:
cd ns-allinone-3.26/netanim-3.107
./NetAnim
打開NetAnim界面如下:
打開xml文件,進行解析:
- 安裝依賴包
好了,以上就是整個平臺的搭建以及可視化全過程……
最后再進行數據分析等過程……
總結
以上是生活随笔為你收集整理的NS-3网络仿真平台搭建及可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaOne美国之行–Session篇
- 下一篇: English trip EM3 LP