刘世华 导师:方路平 浙江工业大学软件学院 2018年9月20日星期四 网络仿真与NS-2简介 刘世华 导师:方路平 浙江工业大学软件学院 2018年9月20日星期四
内容提要 网络仿真概述 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料
网络研究的三类方法 分析方法 实验方法 模拟方法 模型分析、协议分析 通用表达式、集合论、概率分析方法 网络实验床(testbed) 实验室测试网 实际网络、小规模试验网 模拟方法 虚拟网络实验床(Virtual network testbed)--仿真软件
为什么需要仿真? 学习:学习协议和算法的实现,包括它们的行为和性能 测试:对未实现和未投入实际应用的协议和算法进行测试 比较:对各种研究结果、协议和算法的优缺点进行比较直观和客观的比较
仿真的优点 Inexpensive, Flexible and Reconfigurable Network phenomena interested can be reproduced Opportunity to study large-scale network Easier comparison of results across research efforts
仿真的缺点 Important network details may be missed Protocols or algorithms must be “added” before simulation can be done Have to be carefully verified before the test results can be used
网络仿真软件的基本要求 Easy network topology setup Protocols and application implementation TCP,UDP,… FTP, Telnet, Web, CBR, VBR,… Routing protocols Queue management protocols Configurability Extensibility
内容提要 网络仿真概述 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料
主流仿真软件有哪些? OPNET NS-2 MATLAB SPW QualNet/GloMoSim
OPNET简介 OPNET:Optimized Performance Network Engineering Tool OPNET最早是由麻省理工学院LIDS实验室受美国军方委拖开发. 可模拟LAN, WAN, ISDN及卫星通信网的模型.
OPNET界面
OPNET的特性 三层建模机制:最底层为Process模型,以状态机来描述协议;其次为Node模型,由相应的协议模型构成,反映设备特性;最上层为网络模型。三层模型和实际的网络、设备、协议层次完全对应,全面反映了网络的相关特性; 齐全的模型库:包括路由器、交换机、服务器、客户机、ATM设备、DSL设备、ISDN设备等常见网络设备模型;
OPNET的特性(续) 混合建模机制:把基于包的分析方法和基于统计的数学建模方法结合起来,既可得到非常细节的模拟结果,也大大提高了仿真效率。 丰富的统计量收集和分析功能:它可以直接收集常用的各个网络层次的性能统计参数,能够方便地编制和输出仿真报告。 网管系统、流量监测系统的接口:能够方便的利用现有的拓扑和流量数据建立仿真模型,同时还可对仿真结果进行验证。
OPNET的功能 Define Problem Gather Data OPNET可以模拟现有的绝大部分网络和协议: ATM, Frame Relay, FDDI Ethernet, Token Ring TCP/UDP/IP, HTTP Network Editor Node Editor Process Editor Build Models Run Simulations Simulation Tool Debugging Tool Analyze Results Analysis Tool Animation Viewer
MATLAB简介 MATLAB软件是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。MATLAB是英文MATrix LABoratory (矩阵实验室)的缩写。 MATLAB环境下,用户集成了程序设计、数值计算、图形绘制、输入输出、文件管理等各项功能。 MATLAB提供了一个人机交互的数学系统环境,该系统的基本数据结构是矩阵,在生成矩陈对象时,不要求作明确的维数说明。 开放源代码的Scilab与matlab类似。
SPW简介 SPW(Signal Process WorkSystem)仿真软件是Cadence公司的产品
SPW的特点 SPW的一个显著特点是他提供了HDS接口和MATLAB接口。MATLAB里面的很多模型可以直接调入SPW,然后利用HDS生成C语言仿真代码或者是HDL语言仿真代码。 SPW通常可以应用于无线和有线载波通信、多媒体和网络设计与分析等领域,特别提供第三代移动通信的模块支持。 适用于无线通信物理层、链路层算法和协议的开发仿真。
QualNet简介 QualNet 原是美国加州大学洛杉矶分校 (UCLA) 开发的开放源代码的GloMoSim 的商业版,Scalable Simulation Solutions 成功地将QualNet 由学术性质的开源软件转变为商业软件,主要客户包括:政府部门、军方承包商以及世界 500 强的许多公司。 从有线LAN和WAN,到蜂窝、卫星、WLAN和移动Ad Hoc网络,QualNet支持广泛的联网应用。
GloMoSim简介 GloMoSim(Global Mobile Information System Simulator) is a scalable simulation environment for wireless network systems. GloMoSim developer: University of California,Los Angeles Computer Science Department GloMoSim is a library written by Parsec.
GloMoSim的层次与功能 Application Layer PROPAGATION-MODEL BANDWIDTH Channel Layer Radio Layer MAC Layer Network Layer Transport Layer Application Layer PROPAGATION-MODEL BANDWIDTH MAC-PROTOCOL NETWORK-PROTOCOL ROUTING-PROTOCOL TRANSPORT-PROTOCOL MOBILITY
主流仿真软件比较 软件 条目 OPNET NS-2 MATLAB SPW QualNet/ GloMoSim 界面友好性 GUI、代码 Tcl script 主要是代码 拓扑结构配置 GUI,配置方便 代码编程 GUI?代码 支持的构件库 丰富的构件库 比较丰富 丰富的工具箱 丰富 配置灵活性 一般 非常灵活 比较灵活 执行效率 较高 低 较低 支持语言 Proto-C C++/OTcl C/FORTRAN C/HDL C/C++/Parsec 可扩展性 差 好 比较好 兼容性 与MATLAB兼容 使用成本 高 开源免费 高/开源免费 入门难度 难度大 较难 难 通用性 较好
内容提要 网络仿真概述 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料
NS-2简介 NS2(Network Simulator, version 2)是一种面向对象的网络仿真器,最初由UC Berkeley开发而成。 它本质上是一个离散事件模拟器,本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。 官方网址:http://www.isi.edu/nsnam/ns/ 维客(Wiki)网址:http://nsnam.isi.edu/nsnam/index.php/Main_Page
NS-2的历史 NEST (Network Simulation Testbed) REAL (Realistic and Large) NS-1 NS-2 1989: REAL network simulator 1995: DARPA VINT project (Virtual InterNetwork Testbed) at LBL, Xerox PARC, UCB, and USC/ISI Present: DARPA SAMAN(Simulation Augmented by Measurement and Analysis for Network) project and NSF CONSER(Collaborative Simulation for Education and Research) project.
NS-2的功能 Wired Wireless Tracing, visualization, various utilities Transportation: TCP,UDP,RTP,SRM Traffic sources:web, ftp, telnet, cbr, stochastic Queuing disciplines:drop-tail, RED, FQ, SFQ, DRR QoS: IntServ and Diffserv Emulation Wireless Ad hoc routing and mobile IP Directed diffusion, sensor-MAC Tracing, visualization, various utilities
NS-2版本状态 最新发布的稳定版本:2.30 最近发布时间:2006年9月26日 5月27日: ns-allinone-2.29.3发布 “A new four-year program to develop the next major version of ns-3 was officially started on July 1, 2006. The program is funded as part of the NSF CISE CRI program.”
NS-2的组成部分 Tcl release 8.4.13 (必备组件) Tk release 8.4.13 (必备组件) Otcl release 1.12 (必备组件) TclCL release 1.18 (必备组件) Ns release 2.30 (必备组件 ) Nam release 1.12 (可选组件) Xgraph version 12 (可选组件) CWeb version 3.4g (可选组件) SGB version 1.0 (?) (可选组件, 为所有类UNIX平台安装sgblib库) Gt-itm gt-itm and sgb2ns 1.1 (可选组件) Zlib version 1.2.3 (可选, 安装Nam软件包需要用到)
内容提要 网络仿真概述 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料
NS-2安装基本要求 必要的开发工具包 binutils gcc/g++ make 必要的库文件 glibc Xlibs-dev, libx11-dev
NS-2.30的安装 NS-2.30在Ubuntu6.06 Linux下的安装 (进入ns-allinone-2.30的源码目录) lsh@Ubuntu6:~$tar zxf ns-allinone-2.30.tar.gz ¶ 解压 lsh@Ubuntu6:~$cd ns-allinone-2.30¶ (进入ns-allinone-2.30的源码目录) lsh@Ubuntu6:~/ns-allinone-2.30$./intall ¶ 安装
环境变量设置 在家目录下的.bashrc文件中加入下面三行: export PATH=$PATH:~/ns-allinone-2.30/bin:/home/lsh/ns-allinone-2.30/tcl8.4.13/unix:/home/lsh/ns-allinone-2.30/tcl8.4.13/unix export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lsh/ns-allinone-2.30/otcl-1.12:/home/lsh/ns-allinone-2.30/lib export TCL_LIBRARY=$TCL_LIBRARY:/home/lsh/ns-allinone-2.30/tcl8.4.13/library
Cygwin的下载
Cygwin的安装
NS-2与操作系统的匹配(来源:网络论坛) 操作系统版本 NS版本 备注 RedHat Linux RH9.0 2.26~2.30 完全安装 FC2 2.29 FC4 2.28~2.30 FC5 2.26,2.30 FC6 2.30 AS4 2.29,2.30 装Xlib Ubuntu Linux 5.04 2.28,2.29 5.10 6.06 2.27~2.30 Kubuntu6.06 only KDE SuSe Linux Enterprise 10 NS-2.29.3 Mac OS X10.4 2.28~2.29 install X11 Windows 2000,XP + VC6 2.26 逐个编译 Cygwin 需要的包和库
内容提要 网络仿真概述 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料
NS-2的分裂对象模型 实现层:采用C++对象 方便协议和算法的实现 提高执行效率 表示层:采用OTcl对象 方便拓扑和节点属性的修改 提高仿真便利性
OTcl对象树
NS-2的体系架构
NS-2使用一般流程 问题 修改源代码 仿真建模 结果分析 建立/运行 仿真程序
NS-2的实际操作界面 用户采用NS-2原有的模块进行仿真分析时,其实际工作就是通过Tcl/OTcl编程建模/运行并分析结果。
内容提要 网络仿真概述 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料
NS-2实例详解 节点0:主机 四个节点:0~3 其中节点2作为路由器对网络流量进行转发 节点2:路由器 节点3:主机 节点1:主机 本实例的拓扑结构
NS-2仿真脚本的基本框架 set ns [new Simulator] //新建仿真器对象 set nf [open out.nam w] //打开输出文件 $ns namtrace-all $nf //记录所有输出 proc finish {} { //定义一个退出过程 //里面进行删除对象,关闭文件等操作 } $ns at 5.0 “finish“ //定时运行结束过程 $ns run //启动仿真程序
NS-2的网络构件 节点(网络设备或主机) set n0 [$ns node] #创建节点 链路(连接节点的通路) $ns duplex-link $n0 $n2 1Mb 10ms DropTail 代理(网络协议实体) set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0
本例完整代码(一) Set ns [new Simulator] proc finish {} { global ns nf #Define different colors for data flows $ns color 1 Blue $ns color 2 Red #Open the nam trace file set nf [open out.nam w] $ns namtrace-all $nf #Define a 'finish' procedure proc finish {} { global ns nf $ns flush-trace #Close the trace file close $nf exec nam out.nam & exit 0 }
(二)建立节点和链路 set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] $ns duplex-link $n0 $n2 1Mb 10ms DropTail $ns duplex-link $n1 $n2 1Mb 10ms DropTail $ns duplex-link $n3 $n2 1Mb 10ms SFQ (二)建立节点和链路 #Monitor the queue for the link between node 2 and node 3 $ns duplex-link-op $n2 $n3 queuePos 0.5 set udp0 [new Agent/UDP] $udp0 set class_ 1 $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0
(三)新建Agent set udp1 [new Agent/UDP] $udp1 set class_ 2 $ns attach-agent $n1 $udp1 set cbr1 [new Application/Traffic/CBR] $cbr1 set packetSize_ 500 $cbr1 set interval_ 0.005 $cbr1 attach-agent $udp1 #Create a Null agent (a traffic sink) and attach it to node n3 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 #Connect the traffic sources with the traffic sink $ns connect $udp0 $null0 $ns connect $udp1 $null0
(四)运行时间调度 #Schedule events for the CBR agents $ns at 0.5 "$cbr0 start“ $ns at 4.0 "$cbr1 stop“ $ns at 4.5 "$cbr0 stop“ #Call the finish procedure after 5 seconds of simulation time $ns at 5.0 "finish“ #Run the simulation $ns run
(五)运行结果
(六)结果的处理 了解trace文件的结构,自己编程处理 使用现有工具 Linux提供了许多小工具对结果进行处理 脚本语言:gawk、tcl、shell 绘制曲线图形: xgraph,gnuplot,tracegraph
实用参考资料 网络论坛(Network Forum):http://www.netforum.com.cn/ 科研论坛网络仿真版: http://bbs.sciei.com/index.asp?boardid=66 台湾柯志亨教授的主页: http://140.116.72.80/~smallko/ns2/ns2.htm NS by Example:http://nile.wpi.edu/NS/ Ns tutorial:http://www.isi.edu/nsnam/ns/tutorial/index.html 源码与架构分析: http://www-sop.inria.fr/planete/software/ns-doc/ns-current 中文书籍:《NS与网络模拟》 官方手册:~/ns-allinone-2.30/ns-2.30/doc/everything.pdf NS2学习交流论坛: http://ns2.tech.topzj.com/ (我们自己新建的论坛)
结束语 我们的兴趣方向: 1、NS2资料整理:出版第二本简体中文书籍 2、NS2应用研究:用于网络仿真(如Ad hoc) 谢谢大家!