Ubuntu16.04下ns3安装

说明
类似ns3之类的开源软件,安装教程最好是看官网上的安装教程最快。这里只是做个记录。ns3的安装方式有几种不同的方式。这里只是其中一种,具体说明可以参考NS3教程(https://www.nsnam.org/docs/release/3.29/tutorial/html/index.html)。但是教程里只是最基础的安装,如果要将所有库都安装,还需要其他步骤。

重要说明:博主在VM虚拟机上的Ubuntu装了ns3,没成功!!!尽量不要用虚拟机!!!

环境说明

本次安装的系统为Ubuntu 16.04
ns3的版本为NS3.28

安装步骤

1. 安装依赖库

本部分具体说明在(https://www.nsnam.org/wiki/Installation)
打开终端,在终端输入以下命令安装依赖库

sudo  apt-get install -y gcc g++ python
sudo  apt-get install -y gcc g++ python python-dev
sudo  apt-get install -y mercurial python-setuptools git
sudo  apt-get install -y qt5-default
sudo  apt-get install -y python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev ipython
sudo  apt-get install -y gir1.2-goocanvas-2.0 python-gi python-gi-cairo python-pygraphviz python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython ipython3  
sudo apt-get install -y openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
sudo  apt-get install -y autoconf cvs bzr unrar
sudo apt-get install -y gdb valgrind 
sudo apt-get install -y uncrustify
sudo  apt-get install -y doxygen graphviz imagemagick
sudo  apt-get install -y texlive texlive-extra-utils texlive-latex-extra texlive-font-utils texlive-lang-portuguese dvipng latexmk
sudo  apt-get install -y python-sphinx dia 
sudo  apt-get install -y gsl-bin libgsl2 libgsl-dev
sudo  apt-get install -y flex bison libfl-dev
sudo apt-get install -y tcpdump
sudo apt-get install -y sqlite sqlite3 libsqlite3-dev
sudo apt-get install -y libxml2 libxml2-dev
sudo apt-get install -y cmake libc6-dev libc6-dev-i386 libclang-dev llvm-dev automake
sudo apt-get install -y python-pip
pip install cxxfilt
sudo  apt-get install -y libgtk2.0-0 libgtk2.0-dev
sudo  apt-get install -y vtun lxc
sudo apt-get install -y libboost-signals-dev libboost-filesystem-dev

可以将这些命令写成shell文件,执行后一路yes到底。

2.下载NS3源码

源码下载方式有很多,这里直接从官网(https://www.nsnam.org/releases/ns-3-29/index.html)上下载源码。具体说明在(https://www.nsnam.org/docs/release/3.29/tutorial/html/getting-started.html)。

3.编译NS3源码

将下载的源码解压,解压完的文件应为ns-allinone-3.29
打开终端,进入ns-allinone-3.29/ns3.29目录下。
执行以下命令

./waf configure --build-profile=debug  --enable-examples --enable-tests

执行成功后应显示:
在这里插入图片描述
注意
如果仅仅为了使用ns3的基本功能,这个时候就可以进行下一步,如果要安装完全,还需要安装一些依赖库。
**安装依赖库 **

sudo pip install pygccxml
sudo apt-get install castxml
sudo apt-get install libgcrypt11-dev libgcrypt20-doc
sudo apt-get install gtk+-3.0

执行以下命令

./waf

执行成功后应显示:

Waf: Leaving directory `/path/to/workspace/ns-allinone-3.28/ns-3.28/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                      point-to-point     	    point-to-point-layout    
propagation               sixlowpan                 spectrum                  
stats                     tap-bridge                test (no Python)          
topology-read             traffic-control           uan                    
virtual-net-device        wave                      wifi                      
wimax

Modules not built (see ns-3 tutorial for explanation):
brite                     click                    openflow

完成安装

NS3测试

  1. 在终端中进入ns-allinone-3.29/ns-3.29目录下
    执行以下命令

    ./test.py -c core
    

    完成后应为:

    253 of 256 tests passed (253 passed, 3 failed, 0 crashed, 0 valgrind errors)
    

    注:不同版本数字可能有所不同,不过差异不大

  2. 运行程序
    在终端中进入ns-allinone-3.29/ns-3.29目录下

    ./waf  --run hello-simulator
    

    结果应显示

    Waf: Leaving directory `/home/yan/NS3/ns-allinone-3.25/ns-3.25/build'  
    Build commands will be stored in build/compile_commands.json  
    'build' finished successfully (2m32.830s)  
    Hello Simulator  
    

    如果没有看到输出“Hello Simulator”,说明你是在优化编译模式下进行的编译,在优化编译模式下,默认将关闭控制台输出。可以通过以下命令:

    ./waf clean
    ./waf configure --build-profile=debug --enable-examples --enable-tests
    ./waf
    

补充

NetAnim

官网wiki上NetAnim安装教程

!!!我安装的时候3.29版本这个有问题,所以返回到3.28版本
如果想看到仿真界面,可以进行如下步骤:

cd ns-allinone-3.28/netanim-3.108
make clean
qmake NetAnim.pro
make

之后就可以打开NetAnim

./NetAnim

可视化工具pyviz

官网wiki上pyviz安装教程(https://www.nsnam.org/wiki/PyViz)

1.在线安装一些该模块依赖的Python软件包

sudo apt-get install python-dev python-pygraphviz python-kiwipython-pygoocanvas  python-gnome2 python-rsvg python-gnomedesktop​

注:在我的源中python-gnomedesktop包含在python-rsvg​中,所以出现找不到python-gnomedesktop的时候可以尝试去掉这个包。本次安装就是去掉了python-gnomedesktop这个包安装的。
2.安装‘交互式Python’,以便在后面的可视化界面(the visualizerGUI:)中使用控制按钮,命令如下:

sudo apt-get install ipython​

3.此步骤可选。你可以测试一下,如果在你的Ubuntu的/NS3_install/ns-allinone-3.28/ns-3.28目录下使用如下命令进行测试:

./waf

如果出现下图所示:
​​​​​​在这里插入图片描述
即如果visualizer模块已被编译,那么该步骤可省略。

如果visualizer模块没有编译,需在(http://code.nsnam.org/gjc/ns-3.9-pyviz/​)下载pyviz软件包,解压后放在/NS3_install/ns-allinone-3.28/ns-3.28/目录下,再需重新编译如下命令:

./waf clean
./waf configure --build-profile=debug  --enable-examples --enable-tests
./waf

4、用如下命令可以测试是否安装成功:

./waf --pyrun src/flow-monitor/examples/wifi-olsr-flowmon.py --vis​

brite安装

  1. 安装过程
    cd ns-3.28
    hg clone http://code.nsnam.org/jpelkey3/BRITE
    cd BRITE
    make
    cd..
    hg clone http://code.nsnam.org/jpelkey3/ns-3-brite-modular
    cd ns-3-brite-modular
    ./waf configure --with-brite=BRITE的路径
    ./waf
    
  2. 测试
    ./waf –run "brite-generic-example –verbose=1"
    

click模块

下载地址不可用了
click是一个构建可配置路由器的软件架构,通过使用称之为元素element(即包处理单元)的不同组合,click路由器能够执行特定功能,这种灵活性提供了测试和实验不同协议的优良平台。

  1. 安装过程
    下载click(http://read.cs.ucla.edu/click/download)
    cd click
    ./configure --enable-userlevel --disable-linuxmodule --enable-nsclick --enable-wifi
    ./make //没有必要使用make install,或者用make
    ./waf configure --enable-examples --enable-tests --with-nsclick=click源码路径
    ./waf
    
    注意:如果click安装在ns-3-allinone文件夹中,即ns-3文件夹的上层文件夹中,"–with-nsclick=click源码路径"不需要,ns3构建器能够自动找到click源码
  2. 测试
    ./waf --run nsclick-simple-lan
    
    将得到两个.pcap跟踪结果文件:nsclick-simple-lan-0-0.pcap和nsclick-simple-lan-0-1.pcap

openflow

openflow交换广泛用于科研中,通过openflow API可以对OpenFlow交换进行配置。openflow交换拥有针对服务质量的多协议标签交换(MPLS)扩展和支持service-level-agreement。通过使用openflow交换,ns3能够精确仿真多种不同的交换。

  1. 安装过程
    //下载openflow
    hg clone http://code.nsnam.org/jpelkey3/openflow
    //配置和构建openflow(在openflow文件夹下运行)
    cd openflow
    ./waf configure
    ./waf build //此时生成libopenflow.a库文件
    //*链接OpenFlow模块到ns3(在ns3的源码文件夹下运行,如ns-3.28)
    cd ns-3.28
    ./waf configure --enable-examples --enable-tests --with-openflow=下载的openflow源码路径(openflow)
    ./waf build //构建ns3并激活ns3的openflow模块
    
  2. 测试
    ./waf --run openflow-switch
    ./waf --run "openflow-switch -v" //查看日志细节
    //*验证openflow模块
    ./test.py --suite=openflow
    
  3. 注释说明
    NS3本身自带的只是openflow的封装接口,这些接口要去调用openflow的库,就是后面下载的那一部分。在安装的过程中它会编译成相应的库连接到NS3中。在你没有安装openflow的时候在build/debug/src下是看不到的openflow模块的,只有完成以上操作是的时候,才能找到openflow的模块,进而可以执行openflow下相应的程序。
    ./waf --run openflow-switch
    
    openflow-switch是src下openflow模块下的代码编译的可执行文件。并不是下载的openlfow里面的

版权声明:本文为xiao_sheng_jun原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。