NS3安装(Windows+VMware+Kali) 2022.2
VMware安装
导入kali
换源
进入root模式
sudo su
配置源
vim /etc/apt/sources.list
注释原本的源,换成国内源地址(下列代码采用阿里云)
ies/
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
~
~
其他源
官方源
deb http://http.kali.org/kali kali-rolling main non-free contrib
deb-src http://http.kali.org/kali kali-rolling main non-free contrib
中科大源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
阿里云源
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
清华大学源
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
浙大源
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
东软大学源
deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
新加坡kali源
deb http://mirror.nus.edu.sg/kali/kali/ kali main non-free contrib
deb-src http://mirror.nus.edu.sg/kali/kali/ kali main non-free contrib
163 Kali源
deb http://mirrors.163.com/debian wheezy main non-free contrib
deb-src http://mirrors.163.com/debian wheezy main non-free contrib
更新索引、软件
apt-get update
apt-get upgrade
环境搭建
官方tutorial给出
ns-3 has various optional extensions, but the main features just require a C++ compiler (g++ or clang++), Python (version 3.6 or above), CMake and a build-system (e.g. make, ninja, Xcode). We focus in this chapter only on getting ns-3 up and running on a system supported by a recent C++ compiler and Python runtime support.
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 doxygen graphviz imagemagick
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-dev llvm-dev automake
apt-get install python-pip
pip install cxxfilt
apt-get install libgtk2.0-0 libgtk2.0-dev
apt-get install vtun lxc
apt-get install libboost-signals-dev libboost-filesystem-dev
apt-get install python-dev python-pygraphviz python-kiwi python-pygoocanvas python-gnome2 gir1.2-goocanvas-2.0 python-rsvg
全部安装后显示
Package python-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
python2-dev python2 python-dev-is-python3
E: Package 'python-dev' has no installation candidate
E: Unable to locate package python-pygraphviz
E: Unable to locate package python-kiwi
E: Unable to locate package python-pygoocanvas
E: Unable to locate package python-gnome2
E: Unable to locate package python-rsvg
NS3下载与安装
使用git速度非常快,以git下载为例 git只能下载ns本体,如果想要同时安装NetAnim,则下载官网的软件包。然后用build.py 来build(而不是waf)
$ git clone https://gitlab.com/nsnam/ns-3-dev.git
如果想要使用最新版本,可以选择切换分支(202202最新版本为3.35)
$ git checkout -b ns-3.35-branch ns-3.35
个人切换成了最新版本
在正式bulid NS3前可以使用以下代码检查所需的环境是否齐全
$ ./waf configure --enable-examples --enable-tests
如果没有更新成最新版本,从git下载的内容没有waf文件,取代它的是ns3,以上代码改为
./ns3 configure --enable-examples --enable-tests
下面是一些可选模块的安装情况
---- Summary of optional NS-3 features:
Build profile : debug
Build directory :
BRITE Integration : not enabled (BRITE not enabled (see option --with-brite))
DES Metrics event collection : not enabled (defaults to disabled)
DPDK NetDevice : not enabled (libdpdk not found, $RTE_SDK and/or $RTE_TARGET environment variable not set or incorrect)
Emulation FdNetDevice : enabled
Examples : enabled
File descriptor NetDevice : enabled
GNU Scientific Library (GSL) : not enabled (GSL not found)
Gcrypt library : not enabled (libgcrypt not found: you can use libgcrypt-config to find its location.)
GtkConfigStore : not enabled (library 'gtk+-3 >= 3.22' not found)
MPI Support : not enabled (option --enable-mpi not selected)
NS-3 Click Integration : not enabled (nsclick not enabled (see option --with-nsclick))
NS-3 OpenFlow Integration : not enabled (OpenFlow not enabled (see option --with-openflow))
Netmap emulation FdNetDevice : not enabled (needs net/netmap_user.h)
Network Simulation Cradle : not enabled (NSC not found (see option --with-nsc))
PlanetLab FdNetDevice : not enabled (PlanetLab operating system not detected (see option --force-planetlab))
PyViz visualizer : not enabled (Python Bindings are needed but not enabled)
Python Bindings : not enabled (PyBindGen missing)
Real Time Simulator : enabled
SQLite stats support : not enabled (library 'sqlite3' and/or semaphore.h not found)
Tap Bridge : enabled
Tap FdNetDevice : enabled
Tests : enabled
Threading Primitives : enabled
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)
XmlIo : enabled
'configure' finished successfully (3.546s)
visualizer 相关
因为我非常想安装visualizer 模块,所以我继续安装
PyViz visualizer : not enabled (Python Bindings are needed but not enabled)
Python Bindings : not enabled
首先解决pyBindings
pip install pybindgen
PyViz visualizer : not enabled (Missing python modules: gi.repository.GooCanvas)
Python API Scanning Support : not enabled (Missing 'pygccxml' Python module)
Python Bindings : enabled
在源中增加
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse
并更新索引、软件
安装后,虚拟机可能出现无法与物理机共享剪切板的情况,此时reboot即可
apt-get install gi.cairo
apt-get install gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3
其他人的解决方法
#安装依赖包(
sudo apt install g++ python3 python3-dev pkg-config sqlite3 python3-setuptools git qt5-default mercurial gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar gdb valgrind uncrustify doxygen graphviz imagemagick tcpdump sqlite sqlite3 libsqlite3-dev libxml2 libxml2-dev libgtk-3-dev vtun lxc uml-utilities libboost-filesystem-dev python3-pip cmake libc6-dev libc6-dev-i386 automake -y #安装Python依赖库 sudo pip3 install PyBindGen pygccxml castxml -i https://pypi.douban.com/simple #build ./build.py
PyViz环境ok!
PyViz visualizer : enabled
Python API Scanning Support : not enabled (Missing 'pygccxml' Python module)
Python Bindings : enabled
Real Time Simulator : enabled
build NS3
$ ./waf build
常见错误
build中可能存在内存问题(status 4)
法1
sudo dd if=/dev/zero of=/swapfile bs=64M count=16
sudo mkswap /swapfile
sudo swapon /swapfile
编译完成后可以选择撤销该操作(也可以不做)
sudo swapoff /swapfile
sudo rm /swapfile
法2
直接修改内存为4G(或者更高)
status 1的解决方法
CXXFLAGS="-Wall" ./waf configure --enable-examples --enable-tests
然后build
build结果
测试与运行NS3
测试NS3
$ ./test.py
所有的测试要么通过,要么被跳过。如果这样,说明NS3模拟器运行正常。
可以开始运行程序,以系统自带的first.cc为例
$ ./waf --run first
└─
Waf: Entering directory `/home/kali/Desktop/ns-3-dev/build'
Waf: Leaving directory `/home/kali/Desktop/ns-3-dev/build'
Build commands will be stored in build/compile_commands.json
'build' finished successfully (1.309s)
At time +2s client sent 1024 bytes to 10.1.1.2 port 9
At time +2.00369s server received 1024 bytes from 10.1.1.1 port 49153
At time +2.00369s server sent 1024 bytes to 10.1.1.1 port 49153
At time +2.00737s client received 1024 bytes from 10.1.1.2 port 9
如果想要获得更多信息,可以输入
$ ./waf --run 'first --PrintHelp'
|