第2章 NS2网络仿真实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章NS2网络仿真实验第2章NS2网络仿真实验•2.1NS2基础知识•2.2NS2实验部分•习题与思考题2.1NS2基础知识•2.1.1NS2概述•2.1.2Tcl和OTcl语言•2.1.3NS2的功能模块•2.1.4NS2的仿真元素•2.1.5NS2的仿真过程2.1.1NS2概述•NS2(NetworkSimulatorversion2,网络仿真软件第二版)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。最早来源于1989年哥伦比亚大学开发的RealNetworkSimulator项目,是一款开源免费的网络模拟软件。由加州大学伯克利分校(UCBerkeley)开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可用于仿真各种不同的通信网络。已经实现的仿真模块有:网络传输协议,如TCP和UDP;业务源流量产生器,如FTP、Telnet、WebCBR和VBR;路由队列管理机制,如Droptai、RED和CBQ;路由算法,如Dijkstra,以及无线网络的WLAN,Adhoc路由,移动IP和卫星通信网络等。NS2也为进行局域网的仿真而实现了多播以及一些MAC子层协议。2.1.1NS2概述(续)•NS2使用C++和OTcl作为开发语言。NS2可以说是OTcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器用于计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器,它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。由于效率的原因,NS2将数据通道和控制通道的实现相分离,为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对OTcl解释器可见。2.1.1NS2概述(续)NS2的结构图2.1.2Tcl和OTcl语言•Tcl的全称是ToolCommandLanguage,属于脚本语言的一种,它具有可以依照原型进行快速开发、脚本编程、GUI编写和测试方面应用广泛的特点。在NS2中为网络进行参数配置的脚本都是用Tcl编写而成的。Tcl主要由语言部分和解释器部分两部分组成,相对其他脚本语言而言,Tcl不但编程能力强劲而且能够方便地向应用程序中添加Tcl解释器,从而大幅提高编程效率。Tcl只支持“字符串”一种数据结构,一种分割符就是空格。2.1.2Tcl和OTcl语言(续)•Tcl本身不提供面向对象的支持,但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl,IncrTcl等。另外SNIT扩展本身就是用Tcl写的。使用最广泛的Tcl扩展是TK。TK提供了各种OS平台下的图形用户界面GUI。另一个流行的扩展包是Expect,Expect提供了通过终端自动执行命令的能力,例如(passwd,ftp,telnet等命令驱动的外壳)。OTcl是面向对象的Tcl,它在Tcl中增加了对象的支持,如类的定义、继承与封装、构造和析构函数等。2.1.3NS2的功能模块•NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等,下面对各个模块进行简单的介绍:•(1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。•(2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。•(3)链路(link):由多个组件复合而成,用来连接网络节点。所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。•(4)代理(agent):负责网络层分组的产生和接收,也可以用在各个层次的协议实现中。每个agent连接到一个网络节点上,由该节点给它分配一个端口号。2.1.3NS2的功能模块(续)•(5)分组(packet):由头部和数据两部分组成。一般情况下,packet只有头部、没有数据部分。•(6)应用层(Application):流量产生器(Trafficgenerators)创建了各种不同的概率模型来模拟产生实际网络中的业务流,它建立在UDP代理之上;应用模拟器(Simulatedapplication)产生建立在TCP代理之上的业务流。•(7)数据记录:Trace,功能是能够详细记录模拟过程,同时,用户也可以根据自己的需要记录模拟过程中的任何一个细节,模拟结束后会产生out.tr文件;Monitor,NS2中有两种监测,队列监测(QueueMonitoring)和流量监测(Per-FlowMonitoring)。2.1.3NS2的功能模块(续)•(8)动画演示Nam,是基于Tcl/Tk的动画演示工具,用来把模拟的过程用可视化的方式呈现出来,模拟结束后会产生out.man文件。•(9)数据分析:gawk。awk是一种程序语言,它具有一般程序语言常见的功能。因awk语言具有某些特点,使用awk撰写程序比起使用其他语言更简洁便利且节省时间。gawk是GNU所开发的awk,最初在1986年完成,之后不断改进和更新,gawk包含awk的所有功能。2.1.3NS2的功能模块(续)•(10)绘图工具:Xgraph,是NS2自带的绘图工具,是一个根据两列数据生成平面图形的绘图工具,他还可以根据数据文件里的数据绘制出相应的图形;gnuplot,是由ColinKelly和ThomasWilliams于1986年开发的科学绘图工具,支持多种平台,它支持2维和3维图形,用户可以在其命令提示符下键入命令实时观察输出,也可以将命令写成脚本用gnuplotfilename命令运行。2.1.4NS2的仿真元素•从网络拓扑仿真、协议仿真和通信量仿真等方面对NS2的仿真元素进行简单的介绍:•(1)网络拓扑由链路和节点组成。NS2的链路包括一系列的连接器(Connector),而它的节点包括一系列的分类器(Classifier,如地址分类器等)。•(2)在节点上,配置不同的代理可以实现相应的协议或其它模型仿真。如NS2的TCP代理,发送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sackl,TCP/FACK,TCP/FULLTCP等;接收代理有:TCPSINK,TCPSINK/DELACK,TCPSINK/SACK1,TCPSINK/SACKl/DELACK等。此外,还提供有UDP代理及接收代理Null(负责通信量接收)、LossMonitor(通信量接收并维护一些接收数据的统计)。2.1.4NS2的仿真元素(续)•(3)通过对节点附加路由协议可以完成对网络的路由设置。NS2包括静态、动态和会话三种单播路由策略。•(4)可以设置链路的带宽、时延和丢弃模型。NS2支持Drop-tail(FIFO)队列、RED缓冲管和CBO(包括优先权和Round-robin调度)。各种公平队列如FQ,SFQ和DRR等。•(5)对于通信量的仿真,NS2提供了多种通信的应用方法如:FTP(它产生较大的峰值数据传输);Telnet(它能依照相应的文件随机选取不同大小的传输数据)。此外,NS2提供了EXPOO,POO,CBR和TrafficTrace四种不同类型的通信量产生器。2.1.5NS2的仿真过程•进行网络仿真前,首先分析仿真涉及哪个层次,NS2仿真分两个层次:一个是基于OTcl编程的层次,利用NS2已有的网络元素实现仿真,无需修改NS2本身,只需编写OTcl脚本;另一个是基于C++和OTcl编程的层次,如果NS2中没有所需的网络元素,则需要对NS2进行扩展,添加所需网络元素,即添加新的C++和OTcl类,编写新的OTcl脚本。2.1.5NS2的仿真过程(续)•假设用户已经完成了对NS2的扩展,或者NS2所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:•(1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。•(2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。•(3)配置业务量模型的参数,从而确定网络上的业务量分布。•(4)设置Trace对象。NS2通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究。2.1.5NS2的仿真过程(续)•(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。•(6)用NS2解释执行刚才编写的OTcl脚本。•(7)对Trace文件进行分析,得出有用的数据。•(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。2.1.5NS2的仿真过程(续)•NS2采用两级体系结构,为了提高代码的执行效率,NS2将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C++实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个OTcl解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对C++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。2.1.5NS2的仿真过程(续)NS2的仿真流程图2.2NS2实验部分•2.2.1NS2的实验环境安装与基本操作•2.2.2NS2的Tcl脚本生成及仿真结果分析2.2.1NS2的实验环境安装与基本操作•2.2.1.1实验目的•2.2.1.2实验原理•2.2.1.3实验设备•2.2.1.4实验内容•2.2.1.5注意事项•2.2.1.6实验报告要求2.2.1.1实验目的•1、理解NS2的基本概念。•2、学习安装NS2的实验环境。•3、熟悉NS2的基本操作。2.2.1.2实验原理•Cygwin是一个在Windows平台上运行的Linux模拟操作环境,它提供了一个DLL(cygwin1.dll)作为LinuxAPI的模拟层,提供LinuxAPI的各种功能特性,同时,它还包含了一系列与Linux下一致的工具包和X图形界面等。使用cygwin,就可以在Windows的操作系统下体验Linux操作系统的绝大部分特性。本实验是在WindowsXP系统下进行的。2.2.1.2实验原理(续)•PSPad是一种免费的文本编辑器,支持简体中文界面。它集各种编辑器的优点于一身,同时编辑多个文件,可以使用project;内置HEX编辑器;内置HEX编辑器;支持宏的录制和使用;支持语法高亮和彩色显示,HTML,PHP,Pascal,JScript,VBScript,SQL,Perl,JAVA;内置文件比较工具;支持宏的录制和使用;内置FTP工具;可以针对不同的文件类型设置对应的外部工具;支持外部编译器。我们使用PSPad进行NS2模拟实验中的文本编辑工作。2.2.1.3实验设备•PC机、WindowsXP、cygwin、ns-allinone-2.30、PSPad2.2.1.4实验内容•1、安装PSPad•PSPad的安装非常简单,在这里不赘述,可从官网下载该软件。在安装NS2的过程中会用到该软件。2.2.1.4实验内容(续)•2、安装Cygwin•(1)从主页下载setup.exe,并运行,如图所示。2.2.1.4实验内容(续)•(2)单击“下一步”按钮,如图所示。•Cygwin安装有两种模式:一是网络安装,直接连上服务器从网上下载安装,另一种就是本地安装,得先把安装包下到本地硬盘再安装(大概60MB)。选择从网上下载安装。2.2.1.4实验内容(续)•(3)单击“下一步”按钮,如图所示。•在“RootDirectory”中,C:\cygwin为默认

1 / 87
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功