第2章 NS2网络仿真实验

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

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