湖南大学计算机网络实验报告 (4)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机网络实验报告(四)

实验报告仅供参考,因为我做的时候也参考了网络上的实验过程,所以想帮往后的学弟/学妹少走些弯路,我上传的是PDF档,但是也无法避免被抄袭,所以请慎重复制本报告中的语句

Anyway,学到的知识才是自己的。

一、实验目的

熟悉并掌握使用NS2网络仿真模拟器进行网络仿真模拟

二、实验原理

2.1 NS2简介

NS2(Network Simulator, version 2)是一种面向对象的网络仿真器,由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有:网络传输协议,比如TCP和UDP;业务源流量产生器,比如FTP,Telnet,Web CBR和VBR;路由队列管理机制,比如Droptail,RED和CBQ;路由算法,比如Dijkstra 等。NS2也为进行局域网的仿真而实现了多播以及一些MAC子层协议。NS2 使用C++和Otcl作为开发语言。

NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费的仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C++编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。

当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl 脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。

2.2使用NS进行网络仿真的方法

进行网络仿真前,首先分析仿真涉及哪个层次,NS仿真分两个层次:一个是基于OTcl编程的层次。利用NS已有的网络元素实现仿真,无需修改NS本身,只需编写OTcl脚本。另一个是基于C++和OTcl编程的层次。如果NS中没有所需的网络元素,则需要对NS进行扩展,添加所需网络元素,即添加新的C++和OTcl类,编写新的OTcl脚本。

假设用户已经完成了对NS的扩展,或者NS所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:

(1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。

(2)建立协议代理,包括端设备的协议邦定和通信业务量模型的建立。

(3)配置业务量模型的参数,从而确定网络上的业务量分布。

(4)设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究。

(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。

(6)用NS解释执行刚才编写的OTcl脚本。

(7)对Trace文件进行分析,得出有用的数据。

(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。

NS2采用两级体系结构,为了提高代码的执行效率,NS2将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C++实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl 脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对C++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。

2.3 NS2模块组成

Ns2的主要模块分为以下几类:

Tcl模块:提供平台,生成应用协议。

Tk模块:与tcl协同工作的工具包。

Ns模块:实现节点移动产生器和传输事件产生器。

Nam模块:协同ns2,将仿真过程动态演示。

Xgraph模块:包含交互式测量和绘制及动画效果。

Ns2的主要运行过程是ns2解释脚本,并把结果写至输出文件,最后通过调用nam或者xgraph来显示网络的动态变化。

2.4 ns2的使用

运行ns2时,可以将整个ns2看成一个解释器,有两种方法可以对网络事件进行仿真:

(1)命令行方式

即输入一个命令,返回一个结果,如:输入命令ns-version

返回版本号:2.35

(2)脚本方式

即指定一个脚本文件(*.tcl)让ns2执行,如:

Ns

Ns2允许在脚本中定义一个输出文件(或称为跟踪文件)来记录仿真过程,模拟整个网络活动的过程,最后调用Nam或Xgraph显示输出。

如果采用nam显示,就是仿真的整个过程,比如数据包传输,链路开合,节点移动和丢包

如果采用xgraph显示,就是仿真中的内部状态,如传输速率,各种峰值等等

2.5 使用ns2的仿真过程

首先,建立Network model:描述整个网络的网络拓扑,带宽等信息

然后,建立traffic model:描述所有的网络流量或错误情况的时间、类型或呈何种数学分布

最后,追踪分析结果,仿真完成后,可以调用nam观察整个仿真流程,或是将nam file中的信息抽取出来加以分析。

三、实验步骤及分析

1、NS2仿真——nam方式

编写tcl代码,构建网络拓扑结构,并设置网络流量信息:

在这个实例中构建了4个结点n0,n1,n2,n3,并设置n0-n2,n1-n2,n2-n3间直接相连,并设置链路的带宽为1Mbit/s,链路时沿为10ms,并采用FIFO队列,即缓冲区超出缓存则将丢弃队尾的内容。结点的拓扑布局为n2在n0的右下方,n2在n1的左下方,n3在n2的右方,即如图所示:

相关文档
最新文档