日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

NS-3网络仿真平台搭建及可视化

發(fā)布時(shí)間:2023/12/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NS-3网络仿真平台搭建及可视化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

面向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è)腳本->)
1.sudo apt-get install gcc g++ python python-dev //C++和python安裝,必裝 2.sudo apt-get install mercurial //NS3代碼維護(hù)使用的源碼版本控制管理系統(tǒng) 3.sudo apt-get install bzr //運(yùn)行python綁定ns-3-dev需要bazaar這個(gè)組件 4.sudo apt-get install libgtk2.0-0 libgtk2.0-dev //基于GTK的配置系統(tǒng) 5.sudo apt-get install gdb valgrind //調(diào)試工具 6.sudo apt-get install doxygen graphviz imagemagick //文檔生成器 7.sudo apt-get install texlive texlive-latex-extra //文檔生成器,從源代碼中生成說(shuō)明文檔 8.sudo apt-get install texinfo dia texlive-extra-utils texi2html //ns-3手冊(cè)和tutorial編寫查看工具 9.sudo apt-get install flex bison //仿真必需的詞法分析器和語(yǔ)法分析生成器,必裝 10.sudo apt-get install libgoocanvas-dev //部分移動(dòng)場(chǎng)景仿真的可視化測(cè)試需要 這個(gè)組件 11.sudo apt-get install tcpdump //讀取pcap的packet traces,即包嗅探器 12.sudo apt-get install sqlite sqlite3 libsqlite3-dev //支持統(tǒng)計(jì)特性的數(shù)據(jù)庫(kù)軟件 13.sudo apt-get install libxml2 //xml的配置存儲(chǔ)軟件 14.sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas //Gustavo's ns-3-pyviz的可視化軟件 15.sudo apt-get install qt4-qmake 16.sudo apt-get install qt4-dev-toolsps:安裝過(guò)程中肯定會(huì)出現(xiàn)各種各樣的錯(cuò)誤,不過(guò)一般網(wǎng)上都有答案,這里我也就不需要一一列出來(lái)來(lái),這個(gè)要根據(jù)安裝實(shí)際情況而定。
下載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)行下載
mkdir tarballs //創(chuàng)建名字為tarballs的文件夾 cd tarballs //進(jìn)入tarballs文件夾 wget http://www.nsnam.org/release/ns-allinone-3.26.tar.bz2 //連網(wǎng)下載NS-3.26版本 tar xjf ns-allinone-3.26.tar.bz2 //使用tar解壓

進(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.py

ns-3下載工作到這里就基本完成了,接下來(lái)可以開始構(gòu)建ns-3了。

構(gòu)建ns-3
  • 使用build.py編譯
    進(jìn)入ns-allinone-3.26文件夾,并鍵入以下命令進(jìn)行編譯:
$ ./build.py --enable-examples --enable-tests

編譯完成后,您會(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 clean //清除以前的版本 $ ./waf -d debug --enable-examples --enable-tests configure //重新配置ns-3項(xiàng)目,并構(gòu)建系統(tǒng)檢查各種依賴關(guān)系

正式編譯:

$ ./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,鍵入以下命令:
./test.py -c core //測(cè)試ns-3發(fā)行版示范編譯正確

輸出如下所示:

…… 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 --run scratch/scratch-simulator

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í)行前面的代碼
  • 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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。