NUAA 2018 网络通信实现技术 实验3
通俗来说,NS3是一个运行在Linux系统上的网络模拟器,你可以通过写代码的方式来构造一些网络拓扑、离散事件,满足学术研究、测试的需要。
实验的内容是用代码分别模拟一个WiFi星形网络和WiFi多跳网络,并且使之可视化,最后求出吞吐量
安装方法以
Ubuntu/Debian系系统为例
官方的教程中给出了两种安装方法:
- Tarball
- Bake
这里推荐使用Tarball方法进行安装,简单粗暴,首先下载NS3的源码包,你可以根据需要更改版本号:
wget http://www.nsnam.org/release/ns-allinone-3.29.tar.bz2
解压之:
tar xjf ns-allinone-3.29.tar.bz2
解压之后会得到NS3的源码文件夹,里面有编译脚本、源码、实例、测试用例等,进入文件夹运行编译脚本进行编译即可:
cd ns-allinone-3.29
./build.py --enable-examples --enable-tests
编译的时间将会十分漫长,一般如果你的Linux机器内存过小,编译时很难通过的,2G内存一般都不够用,如果失败了,请提高内存重试
编译完成之后,可以看见目录下多了一个ns3-3.29文件夹,这边是NS3的主程序文件夹了,可以进去尝试使用:
./waf --run hello-simulator
来尝试运行NS3官方附带的简单示例程序,如果能看到正确编译的提示并且终端输出了Hello Simulator,这说明安装成功了
NS3的脚本运行有一些麻烦,首先你需要将hoc.cc和star.cc放到NS3主程序waf同目录的文件夹scratch下,这个目录是NS3默认的脚本存放目录
放过去之后,启动waf来进行编译:
./waf
如果没有问题的话应该会编译成功,编译成功之后可以使用waf来辅助运行,以star.cc为例,运行的方法如下:
./waf --run scratch/star
那么如何可视化呢,如果想要使代码可视化,需要先安装NetAnim,这是一个基于Qt5的NS3可视化程序,它的源码也一同附带在了NS3的源码包中,我们要做的就是使用Qt5编译它
首先需要安装Qt5和Mercurial:
sudo apt-get install mercurial
sudo apt-get install qt5-default
安装完成之后,进入ns-allinone-3.29/netanim-3.108目录,使用Qt5的编译器qmake进行编译:
cd ns-allinone-3.29/netanim-3.108
qmake ./NetAnim.pro
编译完成后,则可以打开NetAnim程序了:
./NetAnim
在NS3的脚本运行后,在waf同级的目录下会生成对应的xml文件,使用NetAnim载入xml文件然后点击开始运行,即可看到可视化效果:
那么吞吐量怎么求呢,首先你需要安装gnuplot:
sudo apt-get install gnuplot
这是一个根据NS3脚本运行时产生的trace文件生成图标的软件,这里提供了一个用于求吞吐量的awk脚本,也就是throughout.awk
具体的使用方法是,将这个脚本放在waf同级的目录下,然后使用输入:
gawk -f throughout.awk xxx.tr > xxx
即可将数据存入xxx,其中xxx.tr是你的脚本在运行过程中生成的.tr文件,在waf同级目录下
最后使用gnuplot来画图,首先进入gnuplot的shell:
gnuplot
然后输入:
plot "xxx" with lines
即可看到效果:
author: John KindemNUAA ID: 161520311


