ns-3.29在Ubuntu系统的安装

ns-3.29在Ubuntu系统的安装

可以在ns-3的官方主页http://www.nsnam.org上了解ns-3的最新动态,并且可以下载ns-3最新版本的软件包及使用手册。ns-3.29是目前的最新版本,发布于2018年9月4日~

1.下载依赖包

在ns-3安装wiki主页上详细列出了在不同系统下安装ns-3 需要的软件包及其功能,有些是必须安装的,有些是为了支持个别功能和模块的,可以根据自己的需要选择安装。

C++和python的安装:

sudo apt-get install gcc g++ python
sudo apt-get install gcc g++ python python-dev

ns-3使用的轻量级分布式版本控制系统:

sudo apt-get install mercurial

python绑定:

sudo apt-get install bzr

调试程序:

sudo apt-get install gdb valgrind

支持更多精确wifi模块的GSL (GNU Scientific Library):

sudo apt-get install gsl-bin libgsl-dev libgsl23

词法分析器和语法分析生成器:

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格式包记录文件:

sudo apt-get install tcpdump

统计框架用到的数据库:

sudo apt-get install sqlite sqlite3 libsqlite3-dev

xml的配置存储软件:

sudo apt-get install libxml2 libxml2-dev

基于GTK的配置系统:

sudo apt-get install libgtk2.0-0 libgtk2.0-dev

在虚拟机和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

ns-3手册和教程是用Sphinx的RestructedText编写:

sudo apt-get install python-sphinx dia

Gustavo’s ns-3-pyviz的可视化软件:

sudo apt-get install python-dev python-pygraphviz python-kiwi python-pygoocanvas

支持openflow 模块:

sudo apt-get install libboost-signals-dev libboost-filesystem-dev

支持基于 MPI的分布式仿真:

sudo apt-get install openmpi*

2.下载辅助python脚本

ns-3官方支持3种下载方式:

  1. 压缩文件方式:直接使用wget下载allineone包的tar压缩文件。
  2. 版本控制方式:使用分布式版本控制工具mercurial从ns-3仓库中(http://code.nsnam.org/)下载。
  3. bake:ns-3中自带的源代码包管理工具。

以下将以方法1为例:创建Tarballs目录、进入目录、用wget下载压缩包、解压。

在命令行输入如下命令:

w@wangl:~$ mkdir tarballs
w@wangl:~$ cd tarballs
w@wangl:~/tarballs$ wget http://www.nsnam.org/release/ns-allinone-3.29.tar.bz2
w@wangl:~/tarballs$ tar xjf ns-allinone-3.29.tar.bz2

若无法建立 SSL 连接,是因为wget在使用HTTPS协议时,默认会去验证网站的证书,而这个证书验证经常会失败。这时只需要在原命令加上"–no-check-certificate"选项,就能排除掉这个错误。

w@wangl:~/tarballs$ wget --no-check-certificate http://www.nsnam.org/release/ns-allinone-3.29.tar.bz2

解压完成以后目录如图所示:
NS3目录

3.编译

ns-3使用Waf工具来编译源代码。但Waf只能编译ns-3主项目。对于第一次下载ns-3源代码包的用户,一个较好的方法是运行ns-3-allinone目录下的build.py脚本,这样可以一次性编译ns-3和其他辅助项目。

w@wangl:~/tarballs$ cd ns-allinone-3.29
w@wangl:~/tarballs/ns-allinone-3.29$ ./build.py --enable-examples

为了后续演示需要,这里添加了一个可选参数“enable-examples”。这个参数可以让build.py同时编译ns-3自带的网络模拟示例脚本。
这个过程大概需要几分钟,编译完成后的信息显示如下:
编译完成
“Modules built”部分列出了已完成编译的模块。“Modules not built”部分是未编译的模块,这些模块一般需要第三方库的支持,可以在后续按照需要进行添加。如果编译出错,则可能是缺失依赖包,需返回第1步检查是否有依赖包没有安装。

若使用waf命令编译,需进入ns-3.29目录下执行。(waf只能在该目录下执行)。

w@wangl:~/tarballs/ns-allinone-3.29$ cd ns-3.29

清除整个build目录:

w@wangl:~/tarballs/ns-allinone-3.29/ns-3.29$ ./waf distclean

打开debug并开启例子及帮助(默认例子和测试是不编译的):

w@wangl:~/tarballs/ns-allinone-3.29/ns-3.29$ ./waf configure --build-profile=debug --enable-examples --enable-tests
w@wangl:~/tarballs/ns-allinone-3.29/ns-3.29$ ./waf build

以上仅是配置ns-3,正式编译时用:./waf

4.运行

(1)使用test.y测试
test.py是Python编写的测试脚本,下面的命令是测试ns-3是否编译正确的典型方法:

w@wangl:~/tarballs/ns-allinone-3.29/ns-3.29$ ./test.py -c core

该脚本由waf并行执行,运行结果如下:

……//一些省略
PASS: TestSuite routing-aodv
PASS: TestSuite routing-aodv-loopback
PASS: TestSuite routing-aodv-regression
PASS: TestSuite lte-carrier-aggregation-configuration
PASS: TestSuite lte-frequency-reuse
253 of 256 tests passed (253 passed, 3 skipped, 0 failed, 0 crashed, 0 valgrind errors)

最后一行显示测试的结果,总共测试和测试通过的测试脚本数目。
(2)运行脚本测试
通过输入./waf --run hello-simulator运行:

w@wangl:~/tarballs/ns-allinone-3.29/ns-3.29$ ./waf --run hello-simulator

如果屏幕上打印了“hello-simulator”字符串,则表明安装成功。如果遇到program ‘hello-simulator’ not found的错误,则检查一下第3步是否添加了“enable-examples”参数。
这里的“hello-simulator”类似于其他语言的“hello world”。至此,就已经将ns-3网络模拟器成功安装到了自己的计算机里~

猜你喜欢

转载自blog.csdn.net/qq_31676673/article/details/87931285