ns-3快速上手-开发环境搭建篇(译)
0 前言
在现代网络通信技术的教学和科研中,迫切希望有一种先进的网络仿真技术。在网络模拟工具的研究和开发方面国内所做的工作较少,但是国外早已出现了很多研究成果和仿真工具,如ns-2
、OMNet++
、OPNET
、GloMoSim
、GTNetS
、QualNet
、Yans
、NCTUNS
、SSFNet
、JiST
和SimPy
等。ns-3
是在广泛汲取现有优秀开源工具ns-2
、GTNetS
、Yans
等技术经验,摒弃现有工具的缺点开发出来的。最重要的是,ns-3
基于GNU GPLv2
许可,相信在开源力量的推动下,ns-3
一定会会更加强大。
本文写作的目的就是借此发扬开源精神,给相关从业人士提供尽可能多的相关知识。本文重点内容是ns-3
的下载、编译和安装。所谓“条条大路通罗马”,ns-3
环境的搭建也是有多种可行之法,作为开发新手,快速掌握其中的一种方法,并且过滤掉所谓的“高大上”之法,未必不是件好事。
1 准备工作
ns-3
的开发文档在nsnam
官网有详细的介绍,通过官网可以链接到nsnam
的wiki
页面, https://www.nsnam.org/wiki/Installation
,该页面详细介绍了ns-3
的安装,截止今日页面维护的版本是ns-3.13
。按照页面的介绍基本上能够顺利的搭建好ns-3.13
的环境。本人根据该文档,成功搭建了Ubuntu14.04+ns-3.24.1
的开发环境。
下面将准备工作总结为一个小脚本,省时!
#!/bin/sh
# Copyright(C) 2016 Ruijie Network. All rightsreserved.
# ns-3setup
#
# setup ns-3 env on `Ubuntu14.04+ns-3.24.1`
# History
# v1.0.0 2016-02-22
# Create.
#
# Permanent effective QQ Group: 110205992, join inus to communicate with ns-3 and wireless.
sudo apt-get install gcc g++ python -y
sudo apt-get install gcc g++ python python-dev -y
sudo apt-get install qt4-dev-tools libqt4-dev -y
sudo apt-get install mercurial -y
sudo apt-get install bzr -y
sudo apt-get install cmake libc6-dev libc6-dev-x32 g++-multilib -y
sudo apt-get install gdb valgrind -y
sudo apt-get install gsl-bin libgsl0-devlibgsl0ldbl -y
sudo apt-get install flex bison libfl-dev -y
sudo apt-get install tcpdump -y
sudo apt-get install sqlite sqlite3 libsqlite3-dev-y
sudo apt-get install libxml2 libxml2-dev -y
sudo apt-get install libgtk2.0-0 libgtk2.0-dev -y
sudo apt-get install vtun lxc -y
sudo apt-get install uncrustify -y
sudo apt-get install doxygen grphviz imagemagick -y
sudo apt-get install texlive texlive-extra-utilstexlive-latex-extra texlive-font-utils dvipng -y
sudo apt-get install python-sphinx dia -y
sudo apt-get install python-pygraphviz python-kiwipython-pygoocanvas libgoocanvas-dev -y
sudo apt-get install libboost-signals-dev libboost-filesystem-dev -y
sudo apt-get install openmpi-bin openmpi-commonopenmpi-doc libopenmpi-dev -y
注意:支持python
绑定生成修改,需要安装如下的软件包:apt-get install cmake libc6-dev libc6-dev-i386g++-multilib
,但是ubuntu14.04
系统源中未能发现软件包libc6-dev-i386
,于是使用libc6-dev-x32
代替。如果系统缺少模块所需的软件包,会造成模块安装失败。但是一般不会影响系统影响ns-3
的主体和其他模块的运行。
如果不需要某个模块可以完全忽略不管这些依赖软件包。突然发现自己越来越啰嗦啦,OVER
!
2 下载ns-3
直接下载tar
压缩包(推荐使用,最简单直接)
mkdir ns-3
cd ns-3
wget http://www.nsnam.org/release/ns-allinone-3.24.1.tar.bz2
tar -jxvf ns-allinone-3.24.1.tar.bz2
cd ns-allinone-3.24.1/; ls
图4 ns-allinone-3.24.1
cd ns-3.24.1; ls
图5 ns-3.24.1
3 编译安装
1
)使用build.py
编译
sudo ./build.py --enable-examples --enable-tests
2
)使用waf
编译
一旦工程已经编译过,就不能再使用build.py
脚本
使用waf
重新配置和编译ns-3
系统
./waf clean
清除先前配置编译
./waf -d optimized --enable-examples--enable-tests configure
重新配置ns-3
,优化编译例子和测试
optimized
参数,优化模式下默认是禁止ns-3
特殊的日志系统(logging
),这样导致运行的的结果不能再控制台上显示。因此,建议更改为./waf -d debug --enable-examples --enable-tests configure
./waf
正式编译
4 测试
1
)使用test.py
测试
cd ns-3.24.1/
./test.py -c core
测试ns-3
发行版是否编译正确
图7 测试ns-3编译结果
2
)运行脚本测试
sudo ./waf --run scratch-simulator
图8 运行scratch-simulator
5 结语
以上关于ns-3快速上手的简单解析,还有很多具体细节的问题没有涉及到。还请各位工程师从网络上获取相关文档并研究。经常访问锐捷社区无线版本的网页,http://bbs.ruijie.com.cn/?fromuser=unrecoverable找到最新的信息和资料。也非常欢迎您加我好友一起切磋技术,同时也欢迎各位在论坛上提问。另外,欢迎加入ns-3和无线技术交流QQ群110205992,杜绝广告商!
最近家中网络出现了问题,后续补上图片(非工作时间)。计划ns-3快速上手下一篇:用Eclipse IDE编译ns-3工程,敬请期待!