官网:https://www.nsnam.org/
引用官网的介绍:
ns-3是用于因特网系统的离散事件网络模拟器,主要用于研究和教育用途。ns-3是免费软件,根据GNU GPLv2许可证授权,可公开用于研究,开发和使用。
NS-3是一个离散的事件驱动的网络系统模拟器,旨在为科研和教学服务.NS-3是免费的软件,使用GNU GPLv2证书,对研究,开发,和使用开放。目前(2016年10月24日)的最新版本是NS-3.27。稳定版本是NS-3.26。几乎每三到四个月就会更新一个版本.ns3之前有NS2。但是NS2与NS3区别很大。强烈建议使用NS3。另外,ns3.26版本是支持C ++ 11。所以建议使用最新的版本。
官方提供了说明文档,教程文档,模块库文档,API文档等。这些文档很重要。
通过可以网址https://www.nsnam.org/ns-3-26/documentation/电子杂志。
这里写图片描述
官网提供了PDF格式和HTML格式。下载PDF格式更好,本地查看,不受网络限制。
需要说明的是,上面的文档都是英文的。如果英文好,直接阅读这些文档,就可以入门NS3了。
但是肯定有英文不好的同学喽,怎么办呢?还是有办法的。有一本书,名字是“NS-3网络模拟器基础及应用”,走淘宝就可以了。这本书就是上面的官方文档的翻译版本。如果英文好的话,别花冤枉钱了。
根据NS3-教程文档的说明,来进行安装。网上也有博客说明安装步骤。大家可以参考。需要说明的是,NS3安装以及配置都是ubuntu的下进行的。
对于视窗系统用户来说,最好使用双系统,因为在视窗下使用虚拟机来做的话,太慢了。个人建议用双系统。如果你自己使用的就是Linux的的话,那就更好了。
在安装NS3前需要安装一些依赖库,否则,安装NS3会出错。
sudo apt-get install gcc g++ Python
sudo apt-get install mercurial
sudo apt-get install bzr
sudo apt-get install gdb valgrind
sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl
sudo apt-get install flex bison
sudo apt-get install g++-3.4 gcc-3.4
sudo apt-get install tcpdump
sudo apt-get install sqlite sqlite3 libsqlite3-dev
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install libgtk2.0-0 libgtk2.0-dev
sudo apt-get install vtun lxc
sudo apt-get install uncrustify
sudo apt-get install doxygen graphviz imagemagick
sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended
sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended
sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev
sudo apt-get install libboost-signal-dev libboost-filesystem-dev
主要有上面这些。安装之后,再安装教程文档中的步骤进行,下载NS3,编译。
详细过程请看教程文档。
我在安装的时候遇到了错误。其中大部分错误应该是没有安装依赖的库造成的。如果在安装过程中出了错误,请看看终端上面显示的错误,是不是依赖的库没有安装?如果是因为有些库没有安装的话,可以先安装提示的库,然后在向下进行安装。
如果上面依赖的库安装完成之后,按照教程文档中的下载过程下载NS3便可,就不多说了,下载过程简单要看各位的网速了。
下载完成之后,目录截图如下:
这里写图片描述
完成之后,就是要编译这个工程了。
其实我们下载的NS3文件没有IDE来打开看是肯定不行的,稍后会说明如何在蚀中打开我们下载的NS3。
首先编译并运行一下NS3。看看是否安装成功。此时的NS3文件总大小大约150M左右。我使用的是WAF进行配置和编译。这里完全不用看教程文档了。里面说的太啰嗦了。
打开终端,进行到下载的NS3目录下,(是在上面的目录下打开命令行终端),输入以下运行命令:
./waf configure --build-profile=debug --enable-examples --enable-tests
这一行命令是为了配置NS3。
命令中的点号代表当前目录,当前命令下的WAF文件,WAF文件是一个蟒蛇。是NS3自带的。
通过上面的命令,使用当面目录下的WAF文件配置NS3,并使得编译版本为调试模式,同时使得实例代码和测试代码可用。
终端上输出日志如下:
Setting top to : .
Setting out to : build
Checking for 'gcc' (c compiler) : /usr/bin/gcc
Checking for cc version : 4.2.1
Checking for 'g++' (c++ compiler) : /usr/bin/g++
Checking boost includes : 1_46_1
Checking boost libs : ok
Checking for boost linkage : ok
Checking for click location : not found
Checking for program pkg-config : /sw/bin/pkg-config
Checking for 'gtk+-2.0' >= 2.12 : yes
Checking for 'libxml-2.0' >= 2.7 : yes
Checking for type uint128_t : not found
Checking for type __uint128_t : yes
Checking high precision implementation : 128-bit integer (default)
Checking for header stdint.h : yes
Checking for header inttypes.h : yes
Checking for header sys/inttypes.h : not found
Checking for header sys/types.h : yes
Checking for header sys/stat.h : yes
Checking for header dirent.h : yes
Checking for header stdlib.h : yes
Checking for header signal.h : yes
Checking for header pthread.h : yes
Checking for header stdint.h : yes
Checking for header inttypes.h : yes
Checking for header sys/inttypes.h : not found
Checking for library rt : not found
Checking for header netpacket/packet.h : not found
Checking for header sys/ioctl.h : yes
Checking for header net/if.h : not found
Checking for header net/ethernet.h : yes
Checking for header linux/if_tun.h : not found
Checking for header netpacket/packet.h : not found
Checking for NSC location : not found
Checking for 'mpic++' : yes
Checking for 'sqlite3' : yes
Checking for header linux/if_tun.h : not found
Checking for program sudo : /usr/bin/sudo
Checking for program valgrind : /sw/bin/valgrind
Checking for 'gsl' : yes
Checking for compilation flag -Wno-error=deprecated-d... support : ok
Checking for compilation flag -Wno-error=deprecated-d... support : ok
Checking for compilation flag -fstrict-aliasing... support : ok
Checking for compilation flag -fstrict-aliasing... support : ok
Checking for compilation flag -Wstrict-aliasing... support : ok
Checking for compilation flag -Wstrict-aliasing... support : ok
Checking for program doxygen : /usr/local/bin/doxygen
---- Summary of optional NS-3 features:
Build profile : debug
BRITE Integration : not enabled (BRITE not enabled (see option --with-brite))
Build directory : build
Build examples : enabled
Build tests : enabled
Emulated Net Device : enabled (netpacket/packet.h include not detected)
Emulation FdNetDevice : not enabled (needs netpacket/packet.h)
File descriptor NetDevice : enabled
GNU Scientific Library (GSL) : enabled
GtkConfigStore : enabled
MPI Support : enabled
NS-3 Click Integration : not enabled (nsclick not enabled (see option --with-nsclick))
NS-3 OpenFlow Integration : not enabled (Required boost libraries not found, missing: system, signals, filesystem)
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 : enabled
Python Bindings : enabled
Real Time Simulator : enabled (librt is not available)
SQlite stats data output : enabled
Tap Bridge : not enabled (linux/if_tun.h include not detected)
Tap FdNetDevice : not enabled (needs linux/if_tun.h)
Threading Primitives : enabled
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)
XmlIo : enabled
'configure' finished successfully (1.944s)
上面命令完成之后,编译NS3,在终端输入命令:
./waf build
该命令会编译整个NS3编译完成之后,在终端会显示如下日志信息:
这里写图片描述
编译完成之后,整个NS3文件大小大约在1.2G左右此后,在此输入构建命令,终端输出信息如下:
这里写图片描述
其中,根据终端中的提示信息,还有四个模块没有编译。这是因为这四个模块并不是必须的。你可以在使用到的时候再添加也不晚。我在做的时候,没有用到过。所以我一直没有添加。
下面运行NS3,测试一下,在终端输入命令:
./test.py -c core
这一行命令会测试整个NS3的代码。在终端的日志信息会输出每一个测试用例。这个过程会比较久。
下面运行NS3 Hello代码,在终端输入命令:
./waf --run hello-simulator
上面代码完成之后,在终端会输出信息:
这里写图片描述
至此就完成了NS3的安装。
下面说说如何在日食中配置NS3。
https://www.nsnam.org/wiki/HOWTO_configure_Eclipse_with_ns-3
这个网址是官方给出的如何在蚀中配置NS3的过程。但是这个过程复杂难懂。本来挺简单的事情,我在看这个文章的时候觉得写得太复杂。
下面我一方面截图一方面文字说明,一步步来。
首先,我们进入刚刚下载的NS3目录下,在终端打开,输入命令行:
./waf clean
这样做可清除NS3项目的编译。从上面我们知道,编译之后NS3工程有1.2G左右,太大了。但是运行此命令之后,工程要小很多。一会儿再配置蚀中,需要导入该NS3文件。
3.1安装eclipse
可从
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neon2
这个网址下载对应的eclipse c ++版本。具体安装过程就不多说了。
3.2安装mercurial eclipse插件
百度一下google一下就可以了。
https://www.nsnam.org/wiki/HOWTO_configure_Eclipse_with_ns-3
这个网址里面在说明如何安装这个插件的时候说的不清楚。不用看。记得安装善变的插件就行。
我给一个参考网址:
http:
//wireframesketcher.com/support/install/installing-mercurial-plugin.html可以参考这个进行安装。
3.3新建c ++工程
安装成功之后,随便打开一个命令行终端,输入蚀命令即可启动蚀。
这里写图片描述
打开之后,File-> new C ++ project
这里写图片描述
输入项目工程名字,选择空工程和Linux GCC,next-> Finish即可。
新建工程目录如下:
这里写图片描述
然后在工程上右键鼠标,选择导入...按钮
这里写图片描述
选择文件系统,然后接下来
这里写图片描述
点击浏览按钮,选择我们下载的NS3目录,全选我这里是把ns326目录导入ns327工程然后点击完成按钮。
导入成功之后,工程结构图如下,我已ns326项目实例:
这里写图片描述
3.4配置waf Build
工程右键鼠标,选择属性。
这里写图片描述
选择c / c ++ build-> builder settings
填写其中的build命令和构建目录。
其中的ns326必须替换成你自己新建的工程的名字。完成之后,选择行为。
这里写图片描述
严格按照图中的选择。然后点击OK。
3.5配置配置外部流道
点击eclipse中的Run-> External Tools-> External Tools Configuration
这里写图片描述
在最左边计划上面有一排按钮,第一个按钮新建配置,点击,会出现图中所示的右边的三个空白行要填写,填写内容如下:
这里写图片描述
姓名随机自己起名字,不重要,自己看得懂就行。
下面的三个位置,工作目录,参数按照上面的填写。
其中上面出现ns3字样的地方,需要换成你自己新建的工程的名字。其他的内容按照上面的字符串填写。
位置指定的是waf文件的位置。
工作目录指的是工作目录
.Arguments指定的是参数,字符串参数,基本不用,按照图中书写就行。
完成之后,点击运行按钮,会弹出一个框:
这里写图片描述
这里需要输入一个运行代码文件名,这里输入hello-simulator。
为什么输入这个名字呢?
因为我们上面配置了工作目录,工作目录,这里指定的目录下有一个hello-simulator.cc文件,所以可以运行这个代码。
点击OK按钮,在日食控制台输出信息如下:
这里写图片描述
3.6配置配置Runner
点击eclipse界面上的Run - > Run Configuration
这里写图片描述
左边有一个C / C ++应用。上面的按钮第一个新建一个,就会出现上面图中的右边的界面,主要选项卡下项目为你自己新建的工程文件名。
第二个C / C ++应用为你自己的工程中可以运行的文件,这个工程配置的编译之后的代码都放在建立目录下,这个建目录在你自己的工程目录下,点击浏览按钮,选择可执行文件。然后,选择环境选项卡
这里写图片描述
点击新建...新建一个变量LD_LIBRARY_PATHValue值就是上面的图中所示。记得把NS3换成你自己的工程的名字。
还有最下面有两个选择,勾选第一个追加的环境,原生环境。然后点击RUN按钮就会运行上面的工作目录中配置的对应的编译代码文件,在控制台就会有输出信息。
3.7其他提示
打开任意命令行终端,输入
pkg-config --cflags libxml-2.0
回车
这里写图片描述
然后右键鼠标,属性 - > C / C ++一般 - >路径和符号 - >语言下的GNU C ++点击添加按钮,
这里写图片描述
把命令行输出的在/ usr /包括/ libxml2的复制到图中所有位置。然后重新编译整个工程。
这一步貌似可以不要。我后来新建的工程,没有用这个,也照样运行的良好。可省略。
至此,完成了全部的配置。
关于编译NS3工程,有两种方式
一种是命令行模式,在工程目录下,直接输入命令
./waf build
即可编译整个项目
这里写图片描述
第二种是使用eclipse->运行 - >外部工具 - >外部工具配置
这里写图片描述
点击右下角的RUN按钮,编译的日志输出会在蚀的控制台输出。
对于这两种方式,我建议使用命令行终端。
因为蚀界面上日志输出,在工程大的情况下,非常卡,耗时耗力,在终端上要好很多。
同样有两种方式。
第一种使用命令行:
这里写图片描述
这种方式可以添加运行参数,其中的HELLO-模拟器是默认工作目录下的代码。如果是想要运行其他目录下的代码,比如示例目录下的代码,这需要把喂模拟器替换成/示例/ XXX / XXX就可以运行了。
第二种方式eclipse界面,运行 - >运行配置选项
这里写图片描述
想要运行什么代码,只需要选择c / c ++ application选项就可以了。
对于以上两种运行方式,个人建议使用蚀界面。简单方便。命令行要输入很多字符,很容易出错。
NS3中可以使用Python的开发,不过我没有用过。如果想用的话,可以在日食中安装Python的插件。即使不用蟒蛇开发,安装Python的插件,可以对数据进行处理,也是不错的选择。
点击eclipse界面中的帮助 - >安装新软件
这里写图片描述
选择第一个的PyDev即可。第二个不用选。一路接下来就可以了。
上面的过程,大家看着可能感觉很麻烦。确实如此,整个的过程可能花一天的时间才能搞好,并且还是顺利的情况下。如果出现奇奇怪怪的问题,可能要很久时间才能搞好。
不过,其实完成上面的过程一次之后,下面如果在配置就很容易了。
编译就是,/ waf build运行的话直接使用eclipse界面完成。
如果想再新建工程,直接新建C ++工程,然后导入原来的NS3工程就可以。需要做的就是配置CONFIGRATION。
如果想使用NS3最新版本,直接下载NS3最新版本之后,新建C ++工程,然后再导入下载的最新版本文件就可以了,然后再配置的配置就可以了。
最后,就可以苦逼的玩耍了〜
NS3常用命令汇总:
./waf clean
./waf configure --build-profile=debug --enable-sudo --enable-examples --enable-tests./test.py -c core
./waf --run hello-simulator
运行程序命令行:
./waf --run "examples/wireless/wifi-simple-learn-tcptest
Eclipse的快速操作组合键:
ctrl + shift + r:打开资源
ctrl + o:快速大纲
ctrl + e:快速切换编辑器
alt + shift + r:重命名
shift + enter:在当前行之下,添加空白行
ctrl + shift + enter:在当前行之上,添加空白行
alt +方向键:将当前行内容上下移动
Ctrl + T:显示一个类的继承关系
Ctrl + shift + X:转换成大写字母
Ctrl + shift + Y:转换成小写字母
sudo su root权限
磁盘挂载:
sudo ntfsfix /dev/sda7
双系统情况下,Ubuntu的打开文件系统时候,有时候不能访问的Windows系统文件,会出现磁盘挂载出现问题的提示,可以使用该命令修复,之后就可以打开窗口系统文件。
不过,要注意sda7其中的7不能照抄。按照自己的ubuntu系统标记改成对应的数字。
没有声音:
登录ubuntu系统是没有声音的,反正我的是没有,开启方法:
root登录后打开终端输入:
pulseaudio --start --log-target=syslogsudo sh -c echo “pulseaudio –start –log-target=syslog” >> /etc/environment
只需运行这一次,以后每次启动音量调节都可以使用。
如果每次启动都可以这样:/etc/rc.local中加入pulseaudio --start --log-target = syslog语句。
gnuplot的使用命令:
进入.PLT文件所在的目录,打开终端,输入命令:
gnuplot xxxx.plt
回车即可生成PNG或者EPS图片文件。即可查看效果图。
netanim使用命令:
进入netanim所在的目录下,命令行输入:
./NetAnim
回车之后进入NetAnim界面,打开XML文件即可。
Wireshark的使用命令:
进入Wireshark的-2.0.1所在的目录下,命令行输入:
sudo wireshark
如果有异常,尝试输入:
sudo ldconfigwireshark
查看和杀死进程:
ps -ekill pid
如果还杀不死,使用
kill -9 pid
扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!
例如:想获得Python入门至精通学习资料,请回复关键词Python即可。