NS2网络仿真实验_第1页
NS2网络仿真实验_第2页
NS2网络仿真实验_第3页
NS2网络仿真实验_第4页
NS2网络仿真实验_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 移动自组织网络 实实 验验 报报 告告 NS2 网络仿真实验 何云瑞 电信研 1301 班 2 1 实验目的和要求 实验目的和要求 1 学会NS2的安装过程 并熟悉NS2的环境 2 观察并解释NAM动画 分析Trace文档 3 学会用awk和gnuplot分析吞吐量 封包延迟 抖动率和封包丢失率 2 实验环境 实验环境 先在 PC 上安装 VMware 虚拟机 再在虚拟机上安装 Ubuntu 系统 最后再 Ubuntu 系统上安装 NS2 软件 本次实验采用的是 NS 2 34 版本 3 基本概念 基本概念 3 1 NS2 简介简介 NS2 是一款开放源代码的网络模拟软件 最初由 UC Berkeley 开发 它是 一种面向对象的网络模拟器 它本质上是一个离散事件模拟器 其本身有一个 模拟时钟 所有的模拟都由离散事件驱动 其采用了分裂对象模型的开发机制 采用 C 和 OTcl 两种语言进行开发 它们之间采用 TclCL 进行自动连接和映 射 考虑效率和操作便利等因素 NS2 将数据通道和控制通道的实现相分离 为了减少封包和事件的处理时间 事件调度器和数据通道上的基本网络组件对 象都使用 C 编写 这些对象通过 TclCL 映射对 OTcl 解释器可见 目前 NS2 可以用于模拟各种不同的通信网络 它功能强大 模块丰富 已经实现的主要模块有 网络传输协议 如 TCP 和 UDP 业务源流量产生器 如 FTP Telnet CBR Web 和 VBR 路由队列管理机制 如 Droptail RED 和 CBQ 路由算法 以及无线网络 WLAN 移动 IP 和卫星通信网络等模块 也为进行局域网的模拟实现了多播协议以及一些 MAC 子层协议 3 2 NS2 的功能模块的功能模块 NS2 仿真器封装了许多功能模块 最基本的是节点 链路 代理 数据包 格式等 下面对各个模块进行简单的介绍 1 事件调度器 目前 NS2 提供了四种具有不同数据结构的调度器 分 别是链表 堆 日历表和实时调度器 3 2 节点 node 是由 TclObject 对象组成的复合组件 在 NS2 中可以 表示端节点和路由器 3 链路 link 由多个组件复合而成 用来连接网络节点 所有的链 路都是以队列的形式来管理封包的到达 离开和丢弃 4 代理 agent 负责网络层封包的产生和接收 也可以用在各个层 次的协议实现中 每个 agent 连接到一个网络节点上 由该节点给它分配一个 端口号 5 封包 packet 由头部和数据两部封包成 一般情况下 packet 只 有头部 没有数据部分 6 应用层 Application 流量产生器 Traffic generators 创建了各种 不同的概率模型来模拟产生实际网络中的业务流 它建立在 UDP 代理之上 应 用模拟器 Simulated application 产生建立在 TCP 代理之上的业务流 7 数据记录 Trace 功能是能够详细记录模拟过程 同时 用户也可 以根据自己的需要记录模拟过程中的任何一个细节 模拟结束后会产生 out tr 文件 Monitor NS2 中有两种监测 队列监测 Queue Monitoring 和流量监 测 Per Flow Monitoring 8 动画演示 Nam 是基于 Tcl Tk 的动画演示工具 用来把模拟的过程 用可视化的方式呈现出来 模拟结束后会产生 out man 文件 9 数据分析 gawk awk 是一种程序语言 它具有一般程序语言常见的 功能 由于 awk 语言具有使用直译器 Interpreter 不需先行编译 变量无型别之 分 Typeless 可使用文字当数组的注标 Associative Array 等特色 所以使用 awk 撰写程序比起使用其它语言更简洁便利且节省时间 awk 还具有一些内建 功能 使得 awk 擅于处理具资料列 Record 字段 Field 型态的资料 此外 awk 内建有 pipe 的功能 可将处理中的资料传送给外部的 Shell 命令加以处理 再将 Shell 命令处理后的资料传回 awk 程序 这个特点也使得 awk 程序很容易 使用系统资源 而 gawk 是 GNU 所开发的 awk 最初在 1986 年完成 之后不 断改进和更新 gawk 包含 awk 的所有功能 3 3 Trace 文件的格式文件的格式 1 2 3 4 5 6 7 8 9 10 11 12 4 Event Time From node To node Pkt type Pkt size Flags Fid Src addr Dst addr Seq num Pkt id 1 Event 发生的事件类型 表示封包进入链路队列 Enqueue 表示封包离开链路队列 Dequeue r 表示目的队列接受 receive 事件 d 表示队列丢弃 drop 封包事件 2 time 表示事件发生的时间 3 From node 表示封包发送节点的 id 4 From node 表示封包传送目的节点的 id 5 Pkt type 表示封包类型 6 Pkt size 表示封包的大小 7 Flags 表示标志项 8 Fid 为 Flow id 的简写 流标识符 9 Src addr 表示源地址 格式为 node port node 为封包发送节点的 id port 代表发送封包节点的端口号 10 Dst addr 表示目的地址 格式为 node port node 为封包接收节点 的 id port 代表接收封包节点的端口号 11 Seq num 封包的序列号 12 Pkt id 封包的唯一标识符 表示封包的 id 3 4 CBR 和和 FTP 简介简介 CBR Constant Bit Rate 固定传输速率 这是一个用来形容通信服务质量 Quality of Service QoS 的术语 和该词相对应的词是可变码率或可变比特 率 Variable Bit Rate 缩写 VBR 当形容编解码器的时候 CBR 编码指的是 编码器的输出码率 或者解码器的输入码率 应该是固定制 常数 当在一个 带宽受限的信道中进行多媒体通信的时候 CBR 是非常有用的 因为这时候受限 的是最高码率 CBR 可以更好的易用这样的信道 但是 CBR 不适合进行存储 因为 CBR 将导致没有足够的码率对复杂的内容部分进行编码 从而导致质量下 降 同时在简单的内容部分会浪费一些码率 5 FTP File Transfer Protocol 文件传输协议 中文简称为 文传协议 用于 Internet 上的控制文件的双向传输 同时 它也是一个应用程序 Application 用户可以通过它把自己的 PC 与世界各地所有运行 FTP 的服务器相连 访问服 务器上的大量程序和信息 FTP 的主要作用 就是让用户连接上一个远程计算 机 这些计算机上运行着 FTP 服务器程序 查看远程计算机有哪些文件 然后 把文件从远程计算机上复制到本地计算机 或把本地计算机的文件送到远程计 算机去 3 5 其他概念其他概念 1 丢包率 是一个比率 表示在单位时间内未收到的数据封包数与发送 的数据封包数的比率 由于信号衰减 网络质量等诸多因素的影响 可能产生 数据封包的丢失 2 端到端时延 是由各种因素引起的 包括打包和解包时延 以及网络 传送时延 本文中主要讨论的是网络传输时延 3 吞吐量 单位时间内某个节点发送和接受的数据量 单位一般为 b s 4 抖动率 网络延迟的变化量 它是由同一应用的任意两个相邻数据包 在传输路由中经过网络延迟而产生的 由相邻数据包延迟时间差除以数据包序 号差得到 4 实验步骤 实验步骤 4 1 NS2的安装的安装 本文NS2的安装参照博文 最终运行NS2自带simple tcl得到图1 以示成功 6 图1 NS2安装成功 4 2 Tcl脚本运行脚本运行 本实验中编写的脚本simulator tcl见附录一 实际模拟的网络结构图如图2所 示 包含4个node 各节点之间都是以全双工的链路相连 n0和n2之间链路的带 宽为2Mbps 延迟为10ms 为DropTail队列方式 n1和n2之间链路带宽为 2Mbps 延迟为10ms 也为DropTail队列方式 n2和n3之间链路的带宽为 1 7Mbps 延迟为20ms 也为DropTail方式 n0处有一个FTP的TCP流量产生器 n1处为CBR的UDP流量产生器 n3有一个接收TCP的sink和接收UDP的NULL 图2 网络结构图 7 仿真结束后 会产生两个档案 一个是out nam 这是给NAM用的 用来把 仿真的过程用可视化的方式呈现出来 这可以让我们很直观的方式去了解封包 传送是如何从来源端送到接收端 另一个档案是out tr 这个档案记录了仿真过 程中封包传送中所有的事件 例如第一笔记录是一个CBR的封包 长度为 1000bytes 在时间0 1秒的时候 从n1传送到n2 4 3 吞吐量 封包延迟 抖动率和封包丢失率吞吐量 封包延迟 抖动率和封包丢失率 4 3 1 封包延迟封包延迟 测量 CBR 封包端点到端点间延迟时间的程序写在 measure delay awk 中 measure delay awk 的具体代码查看附录 在终端输入如下命令 gawk f measure delay awk out tr cbr delay 此指令将运行结果存储到 cbr delay 文件中 以便进行绘图 接着输入 gnuplot 得到下图 接着按下图输入 为接下来要画的时延图做标识 8 运行上图最后一条指令后得到图 3 图 3 封包延迟随时间的变化 4 3 2 抖动率抖动率 抖动率就是延迟时间变化量 delay variance 由于网络的状态随时都在变化 有时候流量大 有时候流量小 当流量大的时候 许多封包就必需在节点的队 列中等待被传送 因此每个封包从传送端到目的地端的时间不一定会相同 而 这个不同的差异就是所谓的 Jitter Jitter 越大 则表示网络越不稳定 量测 CBR flow 抖动率的代码写在 measure jitter awk 内 具体见附录 运行方法仿照 4 3 1 可得下图 4 9 图 4 抖动率随封包序列的变化 4 3 3 封包丢失率封包丢失率 测量 CBR 封包丢失率的代码写在 measure drop awk 内 具体见附录 运行 awk f measure drop awk out tr cbr drop 后 可在 cbr drop 中找到如 下信息 其中第一行表示 CBR 总共送出了 550 个封包 丢失了 8 个 第二行表示总 的丢包率为 0 接下来的几行中 第一列表示时间 第二列表示丢包率 仿照上两例 只不不过为了利用 gnuplot 要把先把前两行删除 最终可得 10 丢包率随时间的变化如图 5 所示 图 5 封包丢失率随时间的变化 4 3 4 吞吐量吞吐量 量测CBR吞吐量的代码写在measure throughput awk内 具体见附录 图 6 吞吐量随时间的变化 11 5 实验结果分析 实验结果分析 从丢包率 时延 吞吐量和抖动率的变化图中 可以看出当丢包率增加时 端到端之间的时延也在增加 而吞吐量则下降 丢包率 时延和吞吐量在表示 网络性能的好坏时有一定的关系 在时延的变化图中 在一刚开始的时候 由于只有 CBR 的封包 所以端到 端时延都是固定的 但在 1 0 秒后 网络多了 FTP 的封包 这使得 CBR 封包和 FTP 封包必须互相的抢夺网络的资源 因此端到端时延变得不在固定 但等到 FTP 传输结束后 CBR 封包的端到端时延又变成是固定值了 在抖动率的变化图中 抖动率产生变化的原因同时延变化的原因相同 都 是由于 FTP 封包的加入才使得端到端时延产生变化 6 附录 附录 6 1 网络拓扑仿真脚本网络拓扑仿真脚本simulator tcl 有线场景 四个节点 FTT TCP 用蓝色表示 CBR UDP 用红色表示 set ns new Simulator 设置颜色 ns color 1 Blue ns color 2 Red set tracefd open out tr w ns trace all tracefd set namtracefd open out nam w ns namtrace all namtracefd proc finish global ns tracefd namtracefd ns flush trace close tracefd 12 close namtracefd exec nam out nam ns detach agent n3 sink ns at 5 0 finish puts CBR packet size cbr set packet size puts CBR interval cbr set interval ns run 14 6 2 丢包率丢包率awk处理脚本处理脚本measure drop awk BEGIN dropNum 0 totalNum 0 i 0 lossrate i 0 timeArr i 0 event 1 time 2 fromNode 3 toNode 4 pktType 5 pktSize 6 flags 7 fid 8 srcAddr 9 stAddr 10 seqNum 11 pktId 12 if fromNode 1 timeArr i time lossrate i float dropNum totalNum i if fid 2 END printf number of packet sent d lost d n totalNum dropNum printf lost rate of packets f n dropNum totalNum printf f t f n timeArr j lossrate j 6 3 处理时延的处理时延的awk脚本脚本measure delay awk BEGIN 程序初始化 设定一变量以记录目前最高处理封包的ID highest packet id 0 action 1 time 2 node 1 3 node 2 4 type 5 16 flow id 8 node 1 address 9 node 2 address 10 seq no 11 packet id 12 记录目前最高的packet ID if packet id highest packet id highest packet id packet id 记录封包的传送时间 if start time packet id 0 start time packet id time 记录CBR flow id 2 的接收时间 if flow id 2 else 把不是flow id 2 的封包或者是flow id 2 但此封包被drop 的时间设为 1 end time packet id 1 END 当资料列全部读取完后 开始计算有效封包的端点到端点延迟时间 for packet id 0 packet id highest packet id packet id start start time packet id end end time packet id 17 packet duration end start 只把接收时间大于传送时间的记录列出来 if start end printf f f n start packet duration 6 4 吞吐量吞吐量awk代码代码measure throughput awk BEGIN init 0 i 0 action 1 time 2 node 1 3 node 2 4 src 5 pktsize 6 flow id 8 node 1 address 9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论