1、网络仿真与NS-2简介,刘世华 导师:方路平 浙江工业大学软件学院 2018年12月22日星期六,内容提要,网络仿真概述 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料,网络研究的三类方法,分析方法 模型分析、协议分析 通用表达式、集合论、概率分析方法 实验方法 网络实验床(testbed) 实验室测试网 实际网络、小规模试验网 模拟方法 虚拟网络实验床(Virtual network testbed)仿真软件,为什么需要仿真?,学习:学习协议和算法的实现,包括它们的行为和性能 测试:对未实现和未投入实际应用的协议和算法进行测试 比较:对各种研
2、究结果、协议和算法的优缺点进行比较直观和客观的比较,仿真的优点,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”
3、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,内容提要,网络仿真概述
4、 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料,主流仿真软件有哪些?,OPNET NS-2 MATLAB SPW QualNet/GloMoSim其中只有NS-2是免费开源软件,其他都是商业软件,价格不菲。,OPNET简介,OPNET:Optimized Performance Network Engineering Tool OPNET最早是由麻省理工学院LIDS实验室受美国军方委拖开发. 可模拟LAN, WAN, ISDN及卫星通信网的模型.,OPNET界面,OPNET的特性,三层建模机制:最底层为Process模型,以状态机来描述协议;
5、其次为Node模型,由相应的协议模型构成,反映设备特性;最上层为网络模型。三层模型和实际的网络、设备、协议层次完全对应,全面反映了网络的相关特性; 齐全的模型库:包括路由器、交换机、服务器、客户机、ATM设备、DSL设备、ISDN设备等常见网络设备模型;,OPNET的特性(续),混合建模机制:把基于包的分析方法和基于统计的数学建模方法结合起来,既可得到非常细节的模拟结果,也大大提高了仿真效率。 丰富的统计量收集和分析功能:它可以直接收集常用的各个网络层次的性能统计参数,能够方便地编制和输出仿真报告。 网管系统、流量监测系统的接口:能够方便的利用现有的拓扑和流量数据建立仿真模型,同时还可对仿真结
6、果进行验证。,OPNET的功能,Define Problem Gather Data,OPNET可以模拟现有的绝大部分网络和协议: ATM, Frame Relay, FDDI Ethernet, Token Ring TCP/UDP/IP, HTTP,MATLAB简介,MATLAB软件是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。MATLAB是英文MATrix LABoratory (矩阵实验室)的缩写。 MATLAB环境下,用户集成了程序设计、数值计算、图形绘制、输入输出、文件管理等各项功能。 MATLAB提供了一个人机交互的数学系统环境,该系统的基本数据结
7、构是矩阵,在生成矩陈对象时,不要求作明确的维数说明。 开放源代码的Scilab与matlab类似。,SPW简介,SPW(Signal Process WorkSystem)仿真软件是Cadence公司的产品,它提供了面向电子系统的模块化设计、仿真及实施环境,是进行算法开发,滤波器设计,C代码生成,硬/软件结构联合设计和硬件综合的理想环境。,SPW的特点,SPW的一个显著特点是他提供了HDS接口和MATLAB接口。MATLAB里面的很多模型可以直接调入SPW,然后利用HDS生成C语言仿真代码或者是HDL语言仿真代码。 SPW通常可以应用于无线和有线载波通信、多媒体和网络设计与分析等领域,特别提供
8、第三代移动通信的模块支持。 适用于无线通信物理层、链路层算法和协议的开发仿真。,QualNet简介,QualNet 原是美国加州大学洛杉矶分校 (UCLA) 开发的开放源代码的GloMoSim 的商业版,Scalable Simulation Solutions 成功地将QualNet 由学术性质的开源软件转变为商业软件,主要客户包括:政府部门、军方承包商以及世界 500 强的许多公司。 从有线LAN和WAN,到蜂窝、卫星、WLAN和移动Ad Hoc网络,QualNet支持广泛的联网应用。,GloMoSim简介,GloMoSim(Global Mobile Information System
9、 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的层次与功能,PROPAGATION-MODEL BANDWIDTH MAC-PROTOCOL NETWORK-PROTOCOL ROUTING-PROTOCOL TRANS
10、PORT-PROTOCOL MOBILITY,主流仿真软件比较,内容提要,网络仿真概述 主流网络仿真软件简介 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
11、-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 CO
12、NSER(Collaborative Simulation for Education and Research) project.,NS-2的功能,Wired 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 diffu
13、sion, sensor-MAC Tracing, visualization, various utilities,NS-2版本状态,最新发布的稳定版本:2.30 最近发布时间:2006年9月26日 5月27日: ns-allinone-2.29.3发布 6月1日:启动下一版本:NS-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 C
14、ISE 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
15、 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的安装,lshUbuntu6:$tar zxf ns-allinone-2.30.tar.gz 解压 lshUbuntu6:$cd ns-allinone-2.30 (进入ns-allinone-2.30的源码目
16、录) lshUbuntu6:/ns-allinone-2.30$./intall 安装,NS-2.30在Ubuntu6.06 Linux下的安装,环境变量设置,在家目录下的.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-
17、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-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料,NS-2的分裂对象模型,实现层:采用C+对象 方便协议和算法的实现 提高执行效率,表示层:采用OTcl对象 方便拓扑和节点属性的修改 提高仿真便利性,OTcl对象树,N
18、S-2的体系架构,NS-2使用一般流程,问题,仿真建模,建立/运行 仿真程序,结果分析,修改源代码,NS-2的实际操作界面,用户采用NS-2原有的模块进行仿真分析时,其实际工作就是通过Tcl/OTcl编程建模/运行并分析结果。,内容提要,网络仿真概述 主流网络仿真软件简介 NS-2简介 NS-2安装 NS-2架构与使用 NS-2简单实例 参考资料,NS-2实例详解,本实例的拓扑结构,四个节点:03其中节点2作为路由器对网络流量进行转发,节点0:主机,节点1:主机,节点2:路由器,节点3:主机,NS-2仿真脚本的基本框架,set ns new Simulator /新建仿真器对象 set nf
19、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,本例完整代码(
20、一),Set ns new Simulator #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 ,(二)建立节点和
21、链路,set n0 $ns node set n1 $ns node set n2 $ns node set n3 $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 A
22、gent/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 pack
23、etSize_ 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
24、events for the CBR agents $ns at 0.5 “$cbr0 start“ $ns at 1.0 “$cbr1 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提供了许多小工具对结果进行处理 脚
25、本语言:gawk、tcl、shell 绘制曲线图形: xgraph,gnuplot,tracegraph,实用参考资料,网络论坛(Network Forum):http:/ 科研论坛网络仿真版: http:/ 台湾柯志亨教授的主页: 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:/ (我们自己新建的论坛),结束语,我们的兴趣方向: 1、NS2资料整理:出版第二本简体中文书籍 2、NS2应用研究:用于网络仿真(如Ad hoc) 3、NS2源码分析:分析架构,扩展功能 4、NS2用户界面:改进NS2的操作界面谢谢大家!,