安装NS-3.29
运用平台:ubuntu18.04.1
选择安装的版本是ns-3.29
主要参考链接是:ns-3官方网站指导下载链接
该链接里针对的ubuntu版本是19.04
-
准备工作,下载各种依赖包
①安装python相关依赖包
apt-get install gcc g++ python python3
apt-get install gcc g++ python python3 python3-dev
apt-get install python3-setuptools git mercurial
②. Netanim动画
apt-get install qt5-default mercurial
③. 支持ns-3-pyviz可视化工具 针对3.29版本的
apt-get install 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
④.支持基于mpi分布式仿真
apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
⑤.支持bake构建工具:
apt-get install autoconf cvs bzr unrar
⑥.调试:
apt-get install gdb valgrind
⑦.支持utils / check-style.py代码样式检查程序
apt-get install uncrustify
apt-get install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils texlive-lang-portuguese dvipng latexmk
⑧.ns-3手册和教程使用Sphinx的reStructuredText(doc / tutorial,doc / manual,doc / models)编写,并且图形通常以dia(还需要上面的texlive软件包)编写:
apt-get install python3-sphinx dia
⑨. GNU科学库(GSL)支持更精确的802.11b WiFi错误模型(OFDM不需要):
apt-get install gsl-bin libgsl-dev libgsl23 libgslcblas0
⑩. 读取pcap数据包跟踪
apt-get install tcpdump
⑪. 数据库对统计框架的支持
apt-get install sqlite sqlite3 libsqlite3-dev
⑫.配置存储的基于Xml的版本(需要libxml2> =版本2.7)
apt-get install libxml2 libxml2-dev
⑬.支持生成修改后的python绑定
apt-get install cmake libc6-dev libc6-dev-i386 libclang-6.0-dev llvm-6.0-dev automake pip
python3 -m pip install --user cxxfilt
(在这一步时:我无法下载pip,下载了python3-pip,暂不清楚是否对后续操作有影响)
⑭. 基于GTK的配置系统
apt-get install libgtk2.0-0 libgtk2.0-dev
⑮. 试验虚拟机和ns-3
apt-get install vtun lxc uml-utilities
⑯. 支持openflow模块(需要一些boost库)
apt-get install libboost-signals-dev libboost-filesystem-dev
这个过程特别耗时,要有耐心,出现错误不慌。
上述命令合集,可以写成一个shell脚本,来简化步骤,但还是建议一步一步操作比较好,防止出现奇奇怪怪的错误:
#!/bin/bash
apt-get install gcc g++ python python3
apt-get install gcc g++ python python3 python3-dev
apt-get install python3-setuptools git mercurial
apt-get install qt5-default mercurial
apt-get install 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
apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
apt-get install autoconf cvs bzr unrar
apt-get install gdb valgrind
apt-get install uncrustify
apt-get install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils texlive-lang-portuguese dvipng latexmk
apt-get install python3-sphinx dia
apt-get install gsl-bin libgsl-dev libgsl23 libgslcblas0
apt-get install tcpdump
apt-get install sqlite sqlite3 libsqlite3-dev
apt-get install libxml2 libxml2-dev
apt-get install cmake libc6-dev libc6-dev-i386 libclang-6.0-dev llvm-6.0-dev automake pip
python3 -m pip install --user cxxfilt
apt-get install libgtk2.0-0 libgtk2.0-dev
apt-get install vtun lxc uml-utilities
apt-get install libboost-signals-dev libboost-filesystem-dev
在安装ns-3之前,你可以用bake工具来检查一下,是否有环境缺失,但最好不用用bake工具来安装编译ns-3,比较麻烦,容易出错。
使用bake工具检查环境缺失可参考链接:检查ns-3安装的环境
- 安装ns-3.29
完成上述依赖包下载之后,直接下载tar压缩包(推荐使用,最简单直接)
如果你要下载其他版本,直接改版本号。
mkdir ns-3
cd ns-3
wget https://www.nsnam.org/release/ns-allinone-3.29.tar.bz2
tar -jxvf ns-allinone-3.29.tar.bz2
- 编译ns-3
对于第一次下载ns-3源码的用户,一个比较好的方法是运行ns-allinone目录下的build.py脚本,可以一次性编译ns-3和其他辅助项目,这个过程很久,我花了大概两个小时。
build.py --enable-example
编译完成后的信息显示如下:
'build’finished successfully
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
visualizer
未编译部分一般需要第三方库的支持,可以在后序按需添加。如果编译出错, 请返回第一步看是否有依赖包没有安装。
4.运行验证是否安装好了
进入ns-3.29目录下,运行实例代码hello-simulator
./waf --run hello-simulator
运行成功的话,屏幕打印出‘Hello Simulator’
运行到此,基本没什么问题了。
为了让用户能够完全验证ns-3能否正常工作,ns-3项目自带了test.py脚本(位于ns-3.29目录下),运行该脚本可以对ns-3的各个模块进行逐一测试,用时特别久。
其次注意waf命令有个缺陷是只能在ns-3.29中运行。