可以在ns-3的官方主页http://www.nsnam.org上了解ns-3的最新动态,并且可以下载ns-3最新版本的软件包及使用手册。ns-3.29是目前的最新版本,发布于2018年9月4日~
在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*
ns-3官方支持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
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
(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网络模拟器成功安装到了自己的计算机里~