今天整理一下这几天的工作,先记录一下在 Ubuntu 16.04 LTS 上安装 NS3 的教程。NS-3 是一个非常出名的网络模拟器,可以模拟各种网络流,用来做实验是非常好用的。不过安装过程比较繁琐,要装一大堆依赖包,一大堆的编译工作,但是真的装起来之后发现也还好,所以在此记录。
一、安装依赖包
更多系统的依赖可以前往官网查看:
- https://www.nsnam.org/wiki/Installation#Prerequisites
下面记录在 Ubuntu 16.04 LTS 上面安装过程,基本上没有出错。Ubuntu 其他版本暂时不敢保证是否会出错。
注意:ns-3 从 ns-3.30 这个版本开始默认使用 Python 3,但是之前的版本都是默认使用 Python 2,所以大家根据自己安装的版本进行选择。如果选择使用 Python 2,那么把下面所有的 python3 都换成 python 即可,比如 python3-dev 就是 python-dev 了。
依赖项比较多,这里就直接复制了,也不解释每一项什么意思。需要详细解释的可以参考这里的官网说明。
apt-get install g++ python3 apt-get install g++ python3 python3-dev pkg-config sqlite3 apt-get install python3-setuptools git apt-get install qt5-default mercurial apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev ipython 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 doxygen graphviz imagemagick apt-get install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils 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 libgtk-3-dev apt-get install vtun lxc uml-utilities apt-get install libboost-signals-dev libboost-filesystem-dev
二、安装 ns-3
接下来开始安装 ns-3,使用 ns-3 最新工具 Bake 进行安装,整个过程还是比较顺畅的。
克隆 Bake 项目:
git clone https://gitlab.com/nsnam/bake
添加到路径:
export BAKE_HOME=`pwd`/bake export PATH=$PATH:$BAKE_HOME export PYTHONPATH=$PYTHONPATH:$BAKE_HOME
检查依赖:
bake.py check
如果提示有任何错误,需要先解决问题。提示缺什么你就再装什么就行了,直到再次检查不提示任何错误。
进行配置:
bake.py configure -e ns-3.29
最后检查:
bake.py show
开始安装:
bake.py deploy
然后我们耐心等待即可,安装会自动完成。
参考:https://www.nsnam.org/wiki/Installation#Installation