ubuntu13.04下安装ns-3.17,以及openflow模块的安装

最近使用ns3,看到别人写的帖子,是两篇文章,按我的实际经历,总结一下,不过是将两篇文章整合到一起,省去冗余步骤。。。


安装NS3之前,需要在Ubuntu中进行NS3环境设置,安装必须的开发环境如C++环境,gcc,g++等,安装步骤参考:http://www.nsnam.org/wiki/index.php/Installation,具体如下:

一. NS3安装预先设置Ubuntu环境如下(Prerequisites for Ubuntu12.04)


  • C++和python安装,必装
 sudo apt-get install gcc g++ python
 sudo apt-get install gcc g++ python python-dev
  • NS3代码维护使用的源码版本控制管理系统
 sudo apt-get install mercurial
  • 运行python绑定ns-3-dev需要bazaar这个组件
 sudo apt-get install bzr
  • 调试工具
 sudo apt-get install gdb valgrind 
  • 支持更多精确WIFI模块的GNU Scientific Library (GSL) 
 sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl
  • 仿真必需的词法分析器和语法分析生成器,必装
 sudo apt-get install flex bison libfl-dev
  • 一些Network Simulation Cradle (nsc) stacks需要gcc-3.4
 sudo apt-get install g++-3.4 gcc-3.4
  • 读取pcap的packet traces,即包嗅探器
sudo apt-get install tcpdump
  • 支持统计特性的数据库软件
sudo apt-get install sqlite sqlite3 libsqlite3-dev
  • xml的配置存储软件(requires libxml2 >= version 2.7)
sudo apt-get install libxml2 libxml2-dev
  • 基于GTK的配置系统
 sudo apt-get install libgtk2.0-0 libgtk2.0-dev
  • 在虚拟机and ns-3上测试
 sudo apt-get install vtun lxc
  • 支持utils/check-style.py 代码风格检查程序
sudo apt-get install uncrustify
  • 文档生成器,从源代码中生成说明文档(很大,我没有装)
 sudo apt-get install doxygen graphviz imagemagick
 sudo apt-get install texlive texlive-extra-utils texlive-latex-extra
  • The ns-3 manual and tutorial are written in reStructuredText for Sphinx (doc/tutorial, doc/manual, doc/models), and figures typically in dia:
 sudo apt-get install python-sphinx dia 

Note: Sphinx version >= 1.12 required for ns-3.15. To check your version, type "sphinx-build". To fetch this package alone, outside of the Ubuntu package system, try "sudo easy_install -U Sphinx".

  • Gustavo's ns-3-pyviz的可视化软件(没装)
sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev
  • 支持openflow 模块(requires some boost libraries)
sudo apt-get install libboost-signals-dev libboost-filesystem-dev
  • 支持基于 MPI的分布式仿真
sudo apt-get install openmpi*


------------------------------------------------------------
二、NS3下载

是直接从网站下载源码 http://www.nsnam.org/ns-3-17/,然后进行解压

tar xjf ns-allinone-3.17.tar.bz2


下面是之前blog的办法:

(1)使用Mercurial下载 (下载dev版本)

 cd
 mkdir repos
 cd repos
 hg clone http://code.nsnam.org/ns-3-allinone
 


---------------------------------------------------------

./download.py -n ns-3-dev
 




(2)下载 realse tarball
 cd
 mkdir tarballs
 cd tarballs
 wget http://www.nsnam.org/release/ns-allinone-3.17.tar.bz2(此处根据版本号作相应修改,如ns-allinone-3.16.tar.bz2)
 tar xjf ns-allinone-3.17.tar.bz2


------------------------------------------------------------


三、编译NS3

因为编译要得时间比较长,而加入openflow模块要重新编译构建ns3,所以在这里先不编译,如果不需要这个模块,可以按下面的步骤直接编译。

需要加入openflow模块的按 http://blog.csdn.net/roger__king/article/details/9272141 执行即可。


进入ns-allinone-3.17目录,在终端shell中执行

./build.py --enable-examples --enable-tests

一轮长时间的等待,
最终执行完后看到

".Waf: Leaving directory `/path/to/workspace/ns-allinone-3.17/ns-3.17/build'
'build' finished successfully (6m25.032s)

Modules built:
antenna                    aodv                       applications
bridge                     buildings                  config-store
core                       csma                       csma-layout
dsdv                       dsr                        emu
energy                     fd-net-device              flow-monitor
internet                   lte                        mesh
mobility                   mpi                        netanim (no Python)
network                    nix-vector-routing         olsr
point-to-point             point-to-point-layout      propagation
spectrum                   stats                      tap-bridge
test (no Python)           tools                      topology-read
uan                        virtual-net-device         wifi
wimax                     visualizer

Modules not built (see ns-3 tutorial for explanation):
brite                      click                      openflow
Leaving directory `./ns-3.17`."


也可以使用waf构建(Building with Waf)
进入ns-3.17文件目录:

 ./waf clean
./waf -d optimized --enable-examples --enable-tests configure

最终看到:Checking for program g++ : ok /usr/bin/g++
Checking for program cpp : ok /usr/bin/cpp
Checking for program ar : ok /usr/bin/ar
Checking for program ranlib : ok /usr/bin/ranlib
Checking for g++ : ok
Checking for program pkg-config : ok /usr/bin/pkg-config
Checking for -Wno-error=deprecated-declarations support : yes
Checking for -Wl,--soname=foo support : yes
Checking for header stdlib.h : ok
Checking for header signal.h : ok
Checking for header pthread.h : ok
Checking for high precision time implementation : 128-bit integer
Checking for header stdint.h : ok
Checking for header inttypes.h : ok
Checking for header sys/inttypes.h : not found
Checking for library rt : ok
Checking for header netpacket/packet.h : ok
Checking for pkg-config flags for GSL : ok
Checking for header linux/if_tun.h : ok
Checking for pkg-config flags for GTK_CONFIG_STORE : ok
Checking for pkg-config flags for LIBXML2 : ok
Checking for library sqlite3 : ok
Checking for NSC location : ok ../nsc (guessed)
Checking for library dl : ok
Checking for NSC supported architecture x86_64 : ok
Checking for program python : ok /usr/bin/python
Checking for Python version >= 2.3 : ok 2.5.2
Checking for library python2.5 : ok
Checking for program python2.5-config : ok /usr/bin/python2.5-config
Checking for header Python.h : ok
Checking for -fvisibility=hidden support : yes
Checking for pybindgen location : ok ../pybindgen (guessed)
Checking for Python module pybindgen : ok
Checking for pybindgen version : ok 0.10.0.640
Checking for Python module pygccxml : ok
Checking for pygccxml version : ok 0.9.5
Checking for program gccxml : ok /usr/local/bin/gccxml
Checking for gccxml version : ok 0.9.0
Checking for program sudo : ok /usr/bin/sudo
Checking for program hg : ok /usr/bin/hg
Checking for program valgrind : ok /usr/bin/valgrind
---- Summary of optional NS-3 features:
Python Bindings :                          enabled
Python API Scanning Support :    not enabled (Missing 'pygccxml' Python module)
BRITE Integration :                         not enabled (BRITE not enabled (see option --with-brite))
NS-3 Click Integration :                  not enabled (nsclick not enabled (see option --with-nsclick))
GtkConfigStore :                              enabled
XmlIo :                                               enabled
Threading Primitives :                    enabled
Real Time Simulator :                    enabled
Emulated Net Device :                   enabled
File descriptor NetDevice :            enabled
Tap FdNetDevice :                           enabled
Emulation FdNetDevice :               enabled
PlanetLab FdNetDevice :               not enabled (PlanetLab operating system not detected (see option --force-planetlab))
Network Simulation Cradle :          not enabled (NSC not found (see option --with-nsc))
MPI Support :                                     not enabled (option --enable-mpi not selected)
NS-3 OpenFlow Integration :         not enabled (OpenFlow not enabled (see option --with-openflow))
SQlite stats data output :                enabled
Tap Bridge :                                       enabled
PyViz visualizer :                                enabled
Use sudo to set suid bit :                enabled
Build tests :                                        enabled
Build examples :                                enabled
GNU Scientific Library (GSL) :         enabled

'configure' finished successfully (4.768s)


PS:此次出现很多“Not enable“ 暂时还不清楚怎么使其”enable“


./waf clean
./waf -d debug --enable-examples --enable-tests configure

最终看到"...finished successfully (s)"
./waf 

又将是一轮长时间的等待

Enable something
./waf configure -d debug --enable-sudo --enable-examples --enable-tests

Help
./waf --help


四、测试NS3

./test.py -c core

出现Waf: Leaving directory `/home/rogerking/ns-allinone-3.17/ns-3.17/build'
'build' finished successfully (6m1.803s)

Modules built:
antenna                      aodv                              applications
bridge                         buildings                      config-store
core                             csma                             csma-layout
dsdv                            dsr                                  emu
energy                         fd-net-device                flow-monitor
internet                        lte                                   mesh
mobility                       mpi                                 netanim (no Python)
network                       nix-vector-routing         olsr
point-to-point             point-to-point-layout     propagation
spectrum                   stats                                tap-bridge
test (no Python)        tools                                topology-read
uan                              virtual-net-device         visualizer
wifi                               wimax

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


PASS: TestSuite attributes
PASS: TestSuite callback
PASS: TestSuite command-line
PASS: TestSuite config
PASS: TestSuite global-value
PASS: TestSuite int64x64
PASS: TestSuite object-name-service
PASS: TestSuite object
PASS: TestSuite ptr
PASS: TestSuite basic-random-number
PASS: TestSuite sample
PASS: TestSuite simulator
PASS: TestSuite time
PASS: TestSuite timer
PASS: TestSuite traced-callback
PASS: TestSuite type-traits
PASS: TestSuite watchdog
PASS: TestSuite threaded-simulator
PASS: TestSuite random-number-generators


...

PASS: TestSuite static-routing
PASS: TestSuite mobility
PASS: TestSuite ns3-wifi-interference
PASS: TestSuite ns3-wifi-msdu-aggregator
SKIP: TestSuite ns3-tcp-cwnd
SKIP: TestSuite ns3-tcp-interoperability
PASS: TestSuite ns3-tcp-loss
PASS: TestSuite ns3-tcp-no-delay
PASS: TestSuite ns3-tcp-socket
PASS: TestSuite ns3-tcp-state
SKIP: TestSuite nsc-tcp-loss
153 of 156 tests passed (153 passed, 3 skipped, 0 failed, 0 crashed, 0 valgrind errors)

说明安装成功,这个信息非常重要

./waf --run hello-simulator

出现"Hello Simulator"信息,恭喜你现在正式成为ns3的用户(若没有出现"Hello Simulator",请确定waf构建是否使用-d debug)

你可能感兴趣的:(ns3网络仿真)