Ubuntu下使用bake安装NS3
ns3让我不得不爱,初次接触ns3,望与同学能够一同学习探讨!
【注】以下操作参考于NS官网:
https://www.nsnam.org/wiki/Installation#Installation
1)平台选择
在此选择Ubuntu进行操作:
依赖包下载,由于软件包较多,将其安装命令写入shell脚本,并加入自动确认-y,然后执行脚本。
【注】若嫌速度较慢,可先进行换源。
#! /usr/bin
apt-get install -y g++ python3 cmake #ns3的内核是使用C++开发的
apt-get install -y g++ python3 python3-dev pkg-config sqlite3 cmake
apt-get install -y python3-setuptools git
apt-get install -y qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools #Netanim animator: Netanim animator需要qt5开发工具
#支持 ns-3-pyviz 可视化工具
#对于 Ubuntu 18.04 及更高版本,不再提供 python-pygoocanvas。ns-3.29 及更高版本将支持升级到 GTK+ 版本 3,并需要以下软件包:
apt-get install -y gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3
#支持基于 MPI 的分布式仿真
apt-get install -y openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
#支持基于bake 构建的
apt-get install -y autoconf cvs bzr unrar
apt-get install -y gdb valgrind
apt-get install -y doxygen graphviz imagemagick
apt-get install -y texlive texlive-extra-utils texlive-latex-extra texlive-font-utils dvipng latexmk
#ns-3 手册和教程
apt-get install -y python3-sphinx dia
#GNU 科学库 (GSL) 支持更准确的 802.11b WiFi 错误模型(OFDM 不需要):
apt-get install -y gsl-bin libgsl-dev libgslcblas0
apt-get install -y tcpdump #读取 pcap 数据包跟踪
apt-get install -y sqlite sqlite3 libsqlite3-dev #统计框架的数据库支持
apt-get install -y libxml2 libxml2-dev #基于 XML 的配置存储版本(需要 libxml2 >= 2.7 版)
#支持生成修改后的 python 绑定
apt-get install -y cmake libc6-dev libc6-dev-i386 libclang-dev llvm-dev automake python3-pip
python3 -m pip install --user cxxfilt
apt-get install -y libgtk-3-dev #基于 GTK 的配置系统
apt-get install -y vtun lxc uml-utilities #试验虚拟机和 ns-3
apt-get install -y libxml2 libxml2-dev libboost-all-dev #支持 openflow 模块
apt-get install -y mercurial #Mercurial 需要与 ns-3 开发存储库一起使用。
apt-get install -y python-dev #
2) 安装
使用 Bake 安装: Bake 是一个新工具,用于在自己的环境中安装、构建和查找 ns-3 缺失的要求。
此方法就一个字 : 慢
但是,方便不用自己再有啥过多的操作。
首先下载git
git clone https://gitlab.com/nsnam/bake.git
添加相关路径
export BAKE_HOME=`pwd`/bake
export PATH=$PATH:$BAKE_HOME
export PYTHONPATH=$PYTHONPATH:$BAKE_HOME
然后进行检测
bake.py check
配置 bake 以告知它您要添加到 ns-3 的模块
bake.py configure -e ns-3.29
【注】在此可能会出现些许问题:
Problems writing the file, error: [Errno 13] Permission denied: '/ns3/bake/bakefile.xml'
(1) 若所在目录下没有该文件,利用touch进行创建即可。
(2) 遇到Permission denied:这种情况,是因为请求的文件或者文件夹没有权限导致服务器拒绝了请求。简单直接的方法就是su root 切换到root下进行操作。
然后要查看它添加的模块,以及此配置的具体系统要求,可以调用 bake show:
bake.py show
#并且可以在此选项中看到此具体系统要求,下载相关模块
若此时仍然有依赖包需要安装,按照提示下载即可。
下载模块、构建和安装,调用 bake deploy:
bake.py deploy
但此时的ns-3.29下载失败(我认为是网络问题)
>> Downloading ns-3.29 - Problem
> Error: Critical dependency, module "ns-3.29" failed
For more information call Bake with --debug and/or -v, -vvv, for full verbose mode (bake --help)
那么选择另一种方法进行ns的下载(Using Git)
https://www.nsnam.org/wiki/Installation#Installation_with_Bake
git clone https://gitlab.com/nsnam/ns-3-allinone.git
然后下载相应的版本
./download.py -n ns-3.29
下载成功后就要进行 build
./build.py
bake正常流程:下载选定的模块及其所有依赖项,并使用所有这些独立模块构建 ns-3
bake.py download
bake.py build
3)测试
【注】以下操作均在下载好的ns3里面去进行!
(1)使用test.py测试
./test.py -c core
可以看到,如下图所示:
(2)运行脚本测试
./waf --run scratch-simulator
若输出如下图内容,即说明安装成功!
若此步出现问题,即只有 ‘ build finished ’ , 而没有输出东西,那么就要重新配置编译 ns3
./waf -d debug --enable-examples --enable-tests configure
./waf
然后重新执行程序看是否输出结果。