NS2网络仿真实验要点
基于NS2软件 的网络协议仿真
基于网络模拟软件NS2的网络协议仿真【摘要】:网络模拟是网络协议性能及研究中非常重要的一个组成部分。
本文介绍了网络模拟软件 NS2 的结构和特点以及仿真过程,并实例介绍了基于NS2的网络协议仿真。
【关键词】:NS2;TCP;UDP;路由;仿真一、引言网络模拟是网络协议性能及研究中非常重要的一个组成部分,算法是否合理、是否具有实用价值、是否能够提高网络的性能等都需要通过实验证明。
由于在真实的网络环境中进行实践验证耗资巨大,多数高校和科研机构并不具备完整有效的实验环境,而且真实网络中实验数据的收集和分析也有一定困难。
网络仿真软件通过在计算机上建立一个虚拟的网络环境来实现对真实网络环境的模拟,科研人员在这个平台上不仅能对网络的通信、设备、协议、结构以及应用进行研究,还能对网络的性能进行分析和评估。
仿真软件大大提高了网络设计开发的效率,同时也降低了费用和风险,已经成为研究中不可或缺的工具。
二、NS2 的结构和特点目前,使用较多的网络仿真软件有OPNET,Matlab,NS2 和GloMoSim 等。
选择免费且开放源代码的NS2作为仿真平台,是因为该平台是一种离散事件网络仿真平台,可以运行在Linux或Windows操作系统上。
作为一种可扩展、易配置、可编程的事件驱动的网络仿真软件,NS2能够近乎真实地在各个层次上模拟网络运行,并支持多种协议。
其主要功能包括以下几点。
一)灵活的仿真环境作为一款开源软件,NS2所有源代码公开,任何人都可以获得、使用和修改其源代码。
这对于利用NS2来构建特殊的网络仿真实验环境非常方便和迅速。
二)结果分析及再现容易研究人员通过配置环境参数获得理想的网络环境,即可实时跟踪并记录关键节点的重要信息,从而获得网络性能参数,并可以随时再现某些特殊情况,这在真实网中是难以做到的。
三)良好的可扩展性NS2使用C++和OTCL两种程序设计语言,分别完成具体协议的模拟,实现与网络仿真环境的配置和建立。
NS2仿真实验报告
Ns2简单有线网络仿真实验报告一、实验概述1、在windows系统下安装Centos虚拟机2、在Centos系统下安装NS2仿真工具包3、Nam方式示例二、实验内容1)NS2仿真工具包安装说明1.在Centos系统下设置root账户2.解压NS2文件3.安装ns-allinone-2.35设置环境变量4.验证NS2工具包安装情况2)Nam方式Otcl脚本# 产生一个仿真的对象set ns [new Simulator]#针对不同的资料流定义不同的颜色,这是要给NAM用的$ns color 1 Green$ns color 2 Red#开启一个NAM trace fileset nf [open out.nam w]$ns namtrace-all $nf#开启一个trace file,用来记录封包传送的过程set nd [open out.tr w]$ns trace-all $nd#定义一个结束的程序proc finish {} {global ns nf nd$ns flush-traceclose $nfclose $nd#以背景执行的方式去执行NAMexec nam out.nam &exit 0}#产生6个网络节点set n0 [$ns node]set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set n4 [$ns node]set n5 [$ns node]#把节点连接起来$ns duplex-link $n0 $n2 2Mb 10ms DropTail$ns duplex-link $n1 $n2 2Mb 10ms DropTail$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail$ns duplex-link $n3 $n4 1.7Mb 30ms DropTail$ns duplex-link $n3 $n5 1.5Mb 30ms DropTail#设定ns2到n3之间的Queue Size为10个封包大小$ns queue-limit $n2 $n3 10$ns queue-limit $n3 $n4 5#$ns queue-limit $n3 $n5 10#设定节点的位置,这是要给NAM用的$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n1 $n2 orient right-up$ns duplex-link-op $n2 $n3 orient right$ns duplex-link-op $n3 $n4 orient right-up$ns duplex-link-op $n3 $n5 orient right-down#观测n2到n3之间queue的变化,这是要给NAM用的$ns duplex-link-op $n2 $n3 queuePos 0.5#建立一条n0-n5TCP的联机set tcp [new Agent/TCP]$ns attach-agent $n0 $tcpset sink [new Agent/TCPSink]$ns attach-agent $n5 $sink$ns connect $tcp $sink#在NAM中,TCP的联机会以Green表示$tcp set fid_ 1#在TCP联机之上建立FTP应用程序set ftp [new Application/FTP]$ftp attach-agent $tcp$ftp set type_ FTP#建立一条UDP的联机set udp [new Agent/UDP]$ns attach-agent $n1 $udpset null [new Agent/Null]$ns attach-agent $n3 $null$ns connect $udp $null#在NAM中,UDP的联机会以红色表示$udp set fid_ 2#在UDP联机之上建立CBR应用程序set cbr [new Application/Traffic/CBR]$cbr attach-agent $udp$cbr set type_ CBR$cbr set packet_size_ 1000$cbr set rate_ 1mb$cbr set random_ false#设定FTP和CBR资料传送开始和结束时间$ns at 0.1 "$cbr start"$ns at 1.0 "$ftp start"$ns at 4.0 "$ftp stop"$ns at 4.5 "$cbr stop"#结束TCP的联机(不一定需要写下面的程序代码来实际结束联机)$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"#在仿真环境中,5秒后去呼叫finish来结束仿真(这样要注意仿真环境中#的5秒并不一定等于实际仿真的时间$ns at 5.0 "finish"#执行仿真$ns run3)仿真结果仿真结束后,会产生out.nam和out.tr两个档案用来把仿真的过程用可视化的方式呈现出来4)数据分析1.End-to-End Delay把测量CBR封包端点到端点间延迟时间的awk程序,写在档案measure-delay.awk档案中BEGIN {#程序初始化,设定一变量以记录目前最高处理封包的ID。
网络模拟器NS2中仿真功能的问题分析及改进
第21卷第2期 系统 仿 真 学 报© V ol. 21 No. 22009年1月 Journal of System Simulation Jan., 2009网络模拟器NS2中仿真功能的问题分析及改进况晓辉1, 赵 刚1,2, 郭 勇1,3(1.北京系统工程研究所, 北京 100101; 2.清华大学计算机科学与技术系, 北京 100084; 3.国防科技大学信息系统与管理学院, 长沙 410073)摘 要:网络仿真技术为解决大规模网络规划、应用和协议设计面临的挑战提供了新的途径。
作为广泛应用的网络模拟器,NS2为建立可扩展的网络仿真环境奠定了重要基础。
在描述NS2仿真功能实现的基础上,重点分析了NS2仿真功能存在的不足。
针对发现的问题,提出并实现了NS2仿真功能扩展,最后验证了仿真功能扩展的正确性。
关键词:网络仿真;NS2;报文转换;功能扩展中图分类号:TP393 文献标识码:A 文章编号:1004-731X (2009) 02-0427-05Improvement of Emulation Function in Network SimulatorKUANG Xiao-hui 1, ZHAO Gang 1,2, GUO Yong 1,3(1. Beijing Institute of System and Engineering, Beijing 100101, China; 2. Department of Computer Science and Technology,Tsinghua University, Beijing 100084, China; 3. Department of Information System and Management of NUDT, Changsha 410073, China)Abstract: Network emulate technology which enables real hosts and a real network to interact with a virtual network, becomes a very important way to resolve the challenge faced in network plan, application and protocol design. As a famous network simulator, NS2 proposed a foundation to construct network emulate platform. The emulation function of NS2 was described firstly. Based on analysis the problem of emulation function in NS2, the extension of NS2 emulation function was proposed and implemented. The correctness of extension was dominated in the end. Key words: network emulation; NS2; packet reform; function extension引 言互联网的迅速发展与膨胀对网络的规划、应用和协议的设计提出了新的挑战。
网络仿真与模拟验教案
网络仿真与模拟实验教案一、教学目标1. 让学生了解网络仿真的基本概念和作用。
2. 让学生掌握网络仿真软件的基本操作。
3. 让学生学会利用网络仿真软件进行网络实验的设计与分析。
4. 培养学生动手实践能力和团队协作精神。
二、教学内容1. 网络仿真与模拟实验概述1.1 网络仿真的定义1.2 网络仿真的作用1.3 网络仿真软件分类及特点2. NS-2网络仿真软件2.1 NS-2简介2.2 NS-2的安装与配置2.3 NS-2基本操作3. 网络仿真实验设计3.1 实验需求分析3.2 实验方案设计3.3 实验步骤与注意事项4. 网络仿真实验案例分析4.1 案例一:单播路由实验4.2 案例二:组播路由实验4.3 案例三:网络攻击与防御实验5.1 实验报告结构与内容三、教学方法1. 讲授法:讲解网络仿真与模拟实验的基本概念、原理和方法。
2. 演示法:展示网络仿真软件的操作步骤和实验结果。
3. 实践法:引导学生动手实践,进行网络仿真实验。
4. 案例分析法:分析网络仿真实验案例,培养学生分析问题和解决问题的能力。
5. 小组讨论法:分组进行实验,培养团队协作精神。
四、教学资源1. 网络仿真与模拟实验教材或指导书。
2. NS-2网络仿真软件及其安装包。
3. 网络仿真实验案例及实验数据。
4. 投影仪、计算机等教学设备。
五、教学评价1. 平时成绩:考察学生课堂表现、实验操作和小组讨论参与程度。
2. 实验报告:评估学生实验设计、实验结果分析和总结能力。
3. 期末考试:考察学生对网络仿真与模拟实验知识的掌握程度。
六、教学安排1. 课时:32课时(4学分)2. 授课方式:理论课与实验课相结合3. 授课时间:第1-8周,每周4课时七、实验要求1. 学生需提前预习实验内容,了解实验目的和实验原理。
2. 实验过程中,学生需严格遵守实验纪律,不得随意操作他人计算机。
3. 实验报告需在实验结束后一周内提交。
八、实验内容1. 实验一:NS-2安装与基本操作80分钟2. 实验二:单播路由实验90分钟3. 实验三:组播路由实验90分钟4. 实验四:网络攻击与防御实验90分钟九、实验步骤与注意事项1. 实验一:9.1 安装NS-2软件9.2 配置NS-2环境9.3 运行NS-2示例脚本2. 实验二:10.1 设计单播路由实验场景10.2 配置网络参数10.3 运行仿真实验10.4 分析实验结果3. 实验三:11.1 设计组播路由实验场景11.2 配置网络参数11.3 运行仿真实验11.4 分析实验结果4. 实验四:12.1 设计网络攻击与防御实验场景12.2 配置网络参数12.3 运行仿真实验12.4 分析实验结果1. 实验报告应包括实验目的、实验原理、实验步骤、实验结果和实验总结五个部分。
基于NS2的网络仿真实验教学研究-最新教育文档
基于NS2的网络仿真实验教学研究网络的发展日新月异,作为电气信息类和计算机类专业的核心专业课――计算机网络,需要教师在教学的过程中不断更新和追踪最新网络技术,以更加适应“计算机网络”教学的要求。
但目前计算机网络教学中存在两个方面的突出问题,首先,缺少必要的实验设备。
像路由器、网关等实验设备比较昂贵,一般的院校无法为学生配备,只能在教学的过程中安排较多的演示,学生无法更好地通过真正的实验环境亲自动手来理解和掌握网络通信原理、锻炼网络工程应用能力[1]。
其次,网络技术和产品的更新换代速度非常快,像近年来无线网络技术飞速发展,对于想学习和研究无线网络的学生而言,再依靠原有局域网环境已无法验证无线网络协议的正确性以及对无线网络性能进行直观、可靠的测试。
因此,尝试将网络仿真软件NS2(Network Simulator Version 2)运用到计算机网络课程教学中,利用NS2,特别是Nam 工具的动画演示可以清晰地向学生演示网络协议的运行过程。
通过NS2进行教学,学生可以直观的看到网络协议的行为,了解各种环境或因素对网络的影响,将抽象的网络概念形象化,把枯燥的网络原理具体化。
1NS2原理和结构NS2是由加州大学伯克利分校(University of California at Berkeley)开发的一种面向对象的、离散事件驱动的网络环境模拟器。
NS2是一款源代码开放且免费的模拟软件,是用于教学、网络研究与分析等方面的网络模拟工具,它内含离散事件模拟引擎,构件库丰富,可以构建并仿真分析整个协议栈的运行情况,也可使用自带的Nam 动画演示程序来观察网络的运行效果,它集成了多种网络协议(如TCP、UDP),业务类型(如FTP、Telnet、Web、CBR等),路由排队机制(如Droptail、RED),路由算法(如Dijkstra算法)可以对固定、无线、卫星以及混合等多种网络进行仿真,实现了绝大多数常见的网络协议以及链路层的模型,利用这些类的实例可以搭建起整个网络的模型。
基于NS2的网络仿真
基于NS2的网络仿真1 引言在计算机网络技术迅速发展的今天,网络科研人员需要开发新的网络协议,为网络发展做开拓性的研究;网络设计人员需要研究如何利用现有的资源,使设计的网络达到最高效能。
无论哪一方面,都需要对网络方案进行分析和评价。
通过网络仿真,能对各组件的行为进行较精确的模拟,获得足够数据对系统的性能进行较准确的预测。
NS2(Network Simulator, version 2)是由美国加州Lawrence Berkeley 国家实验室等单位开发的开源免费网络仿真软件。
NS2仿真器的功能非常强大,可扩展性强,执行效率高,目前已广泛应用于局域网、广域网、无线移动网和卫星网络的仿真。
2 NS2简介NS2是一种面向对象的网络仿真器。
从整体上可以将NS2分成三个部分,其中两个部分是提供给用户的接口,另外一部分是核心仿真器。
用户接口1主要由Tcl/Tk、OTcl扩展解释器构成,用户通过使用TCL/TK、OTcl脚本语言,编写网络仿真脚本文件。
脚本语言直观、简洁,用户无需过多了解核心仿真器的内部机制就可以使用NS2。
核心仿真器NS2使用C++代码编写,利用了C++面向对象的机制。
Tclcl提供了NS2与Tcl/Tk、OTcl解释器的连接。
用户接口2是指NAM、Xgraph之类的图形显示工具,仿真器执行用户编写的仿真脚本文件,将运行结果加以记录,随后将记录文件交由NAM程序可视化地显示。
3 NS2的使用与安装3.1 NS2的使用NS2网络仿真可以分为两个层次:一个是基于OTcl脚本编程的层次。
因为是利用NS2已有的网络元素实现网络仿真,所以这时不需要对NS2本身进行任何修改,只要编写Otcl脚本即可;另一个层次是基于C++和OTcl编程的层次。
如果NS2中没有所需的网络元素,这时就需要对NS2进行功能扩展,添加新的网络元素,然后再编写OTcl脚本。
使用NS2进行网络仿真的过程归纳为:(1)分析要解决的问题,设计仿真拓扑结构和仿真模型;(2)编写OTcl脚本;或扩展NS2类,再重新编译NS2,然后编写OTcl脚本;(3)用NS2运行OTcl脚本,通过NAM等工具查看网络仿真过程,对仿真结果进行分析。
NS2简单无线网络模拟实验报告
HUNAN CITY UNIVERSITYNS2与网络模拟实验报告实验题目:简单无线网络模拟 __专业: ____班级学号_____ _2015年 10月 27日1.实验目的•熟悉NS2网络模拟的基本操作流程•练习TCL脚本代码的编写•理解基本的无线网络节点的配置过程、以及数据流的发生2.实验原理NS2是指 Network Simulator version 2,NS(Network Simulator)是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术的所有方面。
所以,NS成了目前学术界广泛使用的一种网络模拟软件。
此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。
因此,目前在学术界和教育界,有大量的人正在使用NS。
NS2是一种面向对象的网络仿真器,本质上是一个离散事件模拟器,由UC Berkeley开发而成。
它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。
目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有网络传输协议,比如TCP和UDP, 流量产生器,比如FTP, Telnet, Web CBR和VBR;路由队列管理机制,比如Droptail, RED和CBQ;路由算法,比如AODV、DSDV、DSR等无线路由协议。
NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。
3.实验内容和步骤•打开虚拟机播放器VMware Player•打开播放Ubuntu虚拟机镜像(Ubuntu.vmx)•登录系统后,打开控制台Terminal输入下列命令:•cd Desktop/EXP/•ns 6-simple-wireless.tcl•模拟运行完毕后,动画演示器NAM自动打开,播放动画,观察模拟过程。
4.实验结论•截取NAM动画演示结果。
••详细解释TCL脚本文件中与无线网络相关的代码。
NS2仿真技术在计算机网络实验教学中的应用与研究
51计算机教育 2005.10教/育/信/息/化长时间以来,很多学生反映计算机网络的教学很枯燥,其实,很多计算机网络任课教师也反映这个问题,这主要是因为计算机网络原理涉及到很多协议和算法,这些内容在传统的实验环境下很难模拟或成本太高。
因此,很多高校的计算机网络教学仅仅是让学生练习组建局域网、网络命令、服务器或其他网络互连设备的配置,更有甚者,只是简单地通过IE访问Internet,而很少深入到网络的内核,这直接影响到计算机网络的教学效果。
为此,我们构建了一个计算机网络仿真平台,不仅可以演示底层协议的工作原理,通过自己修改协议参数来改进协议并进行验证,还可以模拟网络拓扑和一些网络设备的工作方式。
仿真技术的引入,不仅节约了实验成本,极大地提高了学生的积极性,更提高了实验教学的水平和质量,仿真环境和真实环境结合,达到了很好的效果。
经过两年的应用,我校计算机网络的教学效果有了明显改善。
目前,知名的仿真软件主要有Seawind、OPNET、MATLAB、NS2和GloMoSim。
我们采用了免费且开放源代码的网络仿真软件NS2。
NS2仿真软件工作机制NS2由编译和解释两个层次组成。
编译层包括C++类库,而解释层包括对应的Otcl类,用户以Otcl解释器作为前台使用NS。
其体系结构如图1所示。
NS2仿真有两个层次:一个基于Otcl编程,通过Tcl脚本程序设计,利用现有的NS元素实现仿真,不用修改NS本身;另一个层次基于C++(在图2中用虚线表示)和Otcl的编程,利用Otcl和NS的接口,编写C++程序,然后重新编译NS来增加新的功能,从而实现仿真的目的,如图2所示。
对于本科生的实验教学来说,只需要用到第一种仿真方法,对于部分水平较高的学生,可以涉及到第二个层次。
使用NS2进行网络仿真的一般过程(如图2所示)为:(1)分析要解决的问题,建立模型;(2)编写Tcl脚本,模拟问题的处理过程,或修改C++代码并重新编译NS;(3)运行Tcl脚本,得到仿真结果数据;(4)对结果数据进行分析,并以动画或静态图像来演示仿真结果。
NS2仿真实验分析报告
NS2仿真实验分析报告一引言1 NS2简介NS2是一款开放源代码的网络模拟软件,最初由UC Berkeley开发。
它是一种向象的网络模拟器,它本质上是一个离散事件模拟器,其本身有一个模拟时钟,所有的模拟都由离散事件驱动。
其采用了分裂对象模型的开发机制,采用C++和OTcl两种语言进行开发。
它们之间采用Tclcl 进行自动连接和映射。
考虑效率和操作便利等因素,NS2将数据通道和控制通道的实现相分离。
为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++编写,这些对象通过Tclcl映射对OTcl解释器可见。
目前NS2可以用于模拟各种不同的通信网络,它功能强大,模块丰富,已经实现的主要模块有:网络传输协议,如TCP和UDP;业务源流量产生器,如FTP、Telnet、CBR、We b和VBR;路由队列管理机制,如DropTail、RED和CBQ;路由算法;以及无线网络WLAN、移动IP和卫星通信网络等模块,也为进行局域网的模拟实现了多播协议以及一些MAC子层协议。
2 基本概念(1)RED:随机早期探测(Random Early Detect,RED)。
RED属于主动队列管(Active Queue Management, AQW),是目前常见的TCP上防止拥塞的手段。
它通过以一定概率丢失或标记报文来通知端系统网络的拥塞情况。
RED使用平均队列长度度量网络的拥塞程度,然后以线性方式将拥塞信息反馈给端系统。
RED使用最小阈值,最大阈值和最大概率等几个参数。
RED的基本思想是通过监控路由器输出端口队列的平均长度来探测拥塞,一旦发现拥塞逼近,就随机地选择连接来通知拥塞,使它们在队列溢出导致丢包之前减少拥塞窗口,降低发送数据速度,缓解网络拥塞。
RED配置在路由器监视网络流量以便避免拥塞,当拥塞即将发生时,它随机丢弃进来的分组,而不是等到队列缓冲区满是才开始丢弃所有进来的分组,这样可以最少化全局同步的发生。
NS-2的仿真模拟技术分析
第 31 卷 Vol.31第 15 期 № 15计 算 机 工 程 Computer Engineering文章编号:1000—3428(2005)15—0110—03 文献标识码:A2005 年 8 月 August 2005中图分类号:TP393·网络与通信·NS-2 的仿真模拟技术分析杨玉华,刘培宁,刘际炜,陈涵生(华东计算技术研究所,上海 200233) 摘 要:网络仿真是研究通信网络技术的有效工具。
仿真模拟功能提供了实际网络和仿真器交互的能力。
该文介绍了 NS-2 的结构及网络 仿真的设计流程,重点分析了网络仿真 NS-2 中仿真模拟功能的设计和实现。
关键词:仿真;模拟;网络仿真;代理;网络对象Analysis of Network Emulation Technology in NS-2 SimulatorYANG Yuhua, LIU Peining, LIU Jiwei, CHEN Hansheng(East China Institute of Computer Technology, Shanghai 200233) 【Abstract】Network simulation is one of the efficient analysis tools to study the technology of communication networks. Employing an emulation capability in network simulation provides the ability for real-world traffic to interact with a simulation. This paper firstly introduces the architecture of NS-2 simulator, and describes the design of simulation, emphatically analyzes the design and implementation of the emulation facility in the NS-2 simulator. 【Key words】Simulation; Emulation; Network simulation(NS); Agent; Network object网络仿真(Network Simulation, NS)是近几年来被提出的 一个新概念。
计算机网络ns2实验报告
课程:计算机网络项目:实验4 ns2 实验一、实验目的安装并运行网络仿真器NS2,了解其功能模块及配套工具的使用,掌握利用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子层协议。
NS2使用C++和OTcl作为开发语言。
NS2可以说是OTcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。
事件调度器用于计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。
所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器,它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。
事件调度器的另一个用处就是计时。
由于效率的原因,NS2将数据通道和控制通道的实现相分离,为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对OTcl解释器可见。
三、实验内容(1)安装ns-allinone-2.35(2)NS2仿真示例-nam方式四、实验结果与分析:建立一个OTcl脚本文件set ns [new Simulator] /建立对象$ns color 1 Blue /设定颜色$ns color 2 Redset nf [open out.nam w] /打开跟踪文件$ns namtrace-all $nfproc finish {} { /定义结束过程global ns nf$ns flush-traceclose $nfexec nam out.nam &exit 0}set ns0 [$ns node]set ns1 [$ns node]set ns2 [$ns node]set ns3 [$ns node]$ns duplex-link $ns0 $ns2 1Mb 10ms DropTail$ns duplex-link $ns1 $ns2 1Mb 10ms DropTail$ns duplex-link $ns3 $ns2 1Mb 10ms DropTail$ns duplex-link-op $ns0 $ns2 orient right-down$ns duplex-link-op $ns1 $ns2 orient right-up$ns duplex-link-op $ns2 $ns3 orient right$ns duplex-link-op $ns2 $ns3 queuePos 0.5set udp0 [new Agent/UDP] /建立代理UDP $udp0 set class_ 1$ns attach-agent $ns0 $udp0set cbr0 [new Application/Traffic/CBR]$cbr0 set packetSize_ 500$cbr0 set interval_ 0.005$cbr0 attach-agent $udp0set udp1 [new Agent/UDP]$udp1 set class_ 2$ns attach-agent $ns1 $udp1set cbr1 [new Application/Traffic/CBR]$cbr1 set packetSize_ 500$cbr1 set interval_ 0.005$cbr1 attach-agent $udp1set null0 [new Agent/Null] /建立代理NULL$ns attach-agent $ns3 $null0$ns connect $udp0 $null0$ns connect$udp1 $null0$ns at 0.5 "$cbr0 start" /传送数据$ns at 1.0 "$cbr1 start"$ns at 4.0 "$cbr1 stop"$ns at 4.5 "$cbr0 stop"$ns at 5.0 "finish" /调用结束过程$ns run /仿真结果如下:实验分析:系统从n0开始传送数据实验分析:系统从n1开始传送数据实验分析:采用FIFO机制丢包,丢弃n0发送的数据包(3)代码:set ns [new Simulator]set f0 [open out0.tr w]set f1 [open out1.tr w]set f2 [open out2.tr w]for { set i 0 } { $i<5 } {incr i} {set n$i [$ns node]}$ns duplex-link $n0 $n3 1Mb 100ms DropTail$ns duplex-link $n1 $n3 1Mb 100ms DropTail$ns duplex-link $n2 $n3 1Mb 100ms DropTail$ns duplex-link $n3 $n4 1Mb 100ms DropTailproc finish {} {global f0 f1 f2close $f0close $f1close $f2exec xgraph out0.tr out1.tr out2.tr -geometry 800x400 & exit 0}proc attach-expoo-traffic { node sink size burst idle rate } { set ns [Simulator instance]set source [new Agent/UDP]$ns attach-agent $node $sourceset traffic [new Application/Traffic/Exponential]$traffic set packetSize_ $size$traffic set burst_time_ $burst$traffic set idle_time_ $idle$traffic set rate_ $rate$traffic attach-agent $source$ns connect $source $sinkreturn $traffic}proc record {} {global sink0 sink1 sink2 f0 f1 f2set ns [Simulator instance]set time 0.5set bw0 [$sink0 set bytes_]set bw1 [$sink1 set bytes_]set bw2 [$sink2 set bytes_]set now [$ns now]puts $f0 "$now [expr $bw0/$time*8/1000000]"puts $f1 "$now [expr $bw1/$time*8/1000000]"puts $f2 "$now [expr $bw2/$time*8/1000000]"$sink0 set bytes_ 0$sink1 set bytes_ 0$sink2 set bytes_ 0$ns at [expr $now+$time] "record"}set sink0 [new Agent/LossMonitor]set sink1 [new Agent/LossMonitor]set sink2 [new Agent/LossMonitor]$ns attach-agent $n4 $sink0$ns attach-agent $n4 $sink1$ns attach-agent $n4 $sink2set source0 [attach-expoo-traffic $n0 $sink0 200 2s 1s 100k]set source1 [attach-expoo-traffic $n1 $sink1 200 2s 1s 200k]set source2 [attach-expoo-traffic $n2 $sink2 200 2s 1s 300k]$ns at 0.0 "record"$ns at 10.0 "$source0 start"$ns at 10.0 "$source1 start"$ns at 10.0 "$source2 start"$ns at 50.0 "$source0 stop"$ns at 50.0 "$source1 stop"$ns at 50.0 "$source2 stop"$ns at 60.0 "finish"$ns run结果如下:实验分析:三条数据流的峰值分别为0.1Mbit/s, 0.2Mbit/s,0.3Mbit/s五、实验总结在nam辅助分析工具中发现ftp1在零秒开始启动,ftp2在第三秒时刻开始启动,都在第十秒停止,这符合设计目标。
NS2与网络仿真part1
– 避重就轻:可以通过软件的方法,有选择性的选择在研究中感兴趣的方 面,而把其他一些不相干的方面忽略,这样更加有利于对感兴趣点的深 入研究,提高研究效率。
– 提供研究大规模网络的机会:大规模网络不一定每人都有机会参与建设 和研究,而网络仿真平台给了无这样条件的科研人员一个研究大规模网 络的机会 – 易于比较:由于可以通过软件配置轻松建立、重构各种网络模型,实现 各种不同的协议和算法,这使得研究人员能够轻松的比较这些不同模型、 协议和算法之间的性能等各方面的优劣。
网络仿真概述
• 由于是通过软件进行模拟仿真,它毕竟是虚拟网 络,与真实的网络环境还是有一定的差异性,因 此,仿真方法也存在一些天生的不足之处:
– 无法完全重现真实网络环境,使得仿真网络可能会忽略一些重要 的网络细节; – 在对协议、算法和网络系统进行仿真之前,必须通过软件编程对 其进行软件模块的实现,这增加了额外的工作量; – 网络仿真所得的结果并不一定与真实网络环境下的结果一致,因 此,在投入实际应用之前,还需要多方面的验证和通过测试网和 真实网络的检验。
• QualNetБайду номын сангаасGloMoSim
– QualNet 是 Scalable Network Technologies, Inc. (SNT)的旗舰产品, QualNet 原是美国加州大学洛杉矶分校 (UCLA) 开发的开放源代码的 GloMoSim 的商业版,GloMoSim(Global Mobile Information System Simulator)是一款面向无线网络系统的大规模网络仿真平台,它是用并行 运算语言 Parsec 编写的。 – QualNet Developer是一套先进的用于定制网络模型和进行网络仿真的软件。 QualNet拥有较快的速度、较好的可扩展性和保真度,通过快速建模和深 入分析工具,使得工程师们易于优化现有的网络性能。模型的源代码为 开发人员提供构建配合新网络功能的实验所需的库。 – 从有线LAN和WAN,到蜂窝、卫星、WLAN和移动Ad Hoc网络,QualNet支 持广泛的联网应用仿真功能。QualNet拥有高效的内核,能够以合理的仿 真速度模拟具有大话务量和高移动性的大型网络。
NS2实验报告
实验报告一、实验概述1.在windows系统下安装ubuntu虚拟机2.在ubuntu混井下安装NS2仿真工具包,附说明3.Nam方式示例4.Xgraph方式示例二、实验要求1.内存较大的机器2.Ubuntu系统或linux系统,NS工具包三、实验内容1.NS2仿真工具包安装说明:①在ubuntu系统下设置root账户;②解压NS2文件;③安装ns-allinone-2.35;④设置环境变量⑤验证NS2工具包安装情况2.nam方式otcl脚本:set ns [new Simulator] /建立对象$ns color 1 Blue /设定颜色$ns color 2 Redset nf [open out.nam w] /打开跟踪文件$ns namtrace-all $nfproc finish {} { /定义结束过程global ns nf$ns flush-traceclose $nfexec nam out.nam &exit 0}set ns0 [$ns node] /建立节点set ns1 [$ns node]set ns2 [$ns node]set ns3 [$ns node]$ns duplex-link $ns0 $ns2 1Mb 10ms DropTail /建立节点间的链路$ns duplex-link $ns1 $ns2 1Mb 10ms DropTail$ns duplex-link $ns3 $ns2 1Mb 10ms DropTail$ns duplex-link-op $ns0 $ns2 orient right-down /定义节点位置$ns duplex-link-op $ns1 $ns2 orient right-up$ns duplex-link-op $ns2 $ns3 orient right$ns duplex-link-op $ns2 $ns3 queuePos 0.5set udp0 [new Agent/UDP] /建立代理UDP $udp0 set class_ 1$ns attach-agent $ns0 $udp0set cbr0 [new Application/Traffic/CBR] /产生CBR流量$cbr0 set packetSize_ 500$cbr0 set interval_ 0.005$cbr0 attach-agent $udp0set udp1 [new Agent/UDP]$udp1 set class_ 2$ns attach-agent $ns1 $udp1set cbr1 [new Application/Traffic/CBR]$cbr1 set packetSize_ 500$cbr1 set interval_ 0.005$cbr1 attach-agent $udp1set null0 [new Agent/Null] /建立代理NULL $ns attach-agent $ns3 $null0$ns connect $udp0 $null0$ns connect $udp1 $null0$ns at 0.5 "$cbr0 start" /传送数据$ns at 1.0 "$cbr1 start"$ns at 4.0 "$cbr1 stop"$ns at 4.5 "$cbr0 stop"$ns at 5.0 "finish" /调用结束过程$ns run /仿真分析:节点n0开始传送数据分析:节点n1开始传送数据分析:采用FIFO队列机制丢包,丢弃n0发送的数据包3.Xgraph方式otcl脚本:set ns [new Simulator] /建立对象set f0 [open out0.tr w] /打开输出文件set f1 [open out1.tr w]set f2 [open out2.tr w]for { set i 0 } { $i<5 } {incr i} { /建立节点set n$i [$ns node] /$i外无括号}$ns duplex-link $n0 $n3 1Mb 100ms DropTail /建立链路$ns duplex-link $n1 $n3 1Mb 100ms DropTail$ns duplex-link $n2 $n3 1Mb 100ms DropTail$ns duplex-link $n3 $n4 1Mb 100ms DropTailproc finish {} { /定义结束过程global f0 f1 f2close $f0close $f1close $f2exec xgraph out0.tr out1.tr out2.tr -geometry 800x400 & /tr后面有空格,调用Xgraph显示仿真结果exit 0}proc attach-expoo-traffic { node sink size burst idle rate } { /建立UDP,产生Expoo流量set ns [Simulator instance]set source [new Agent/UDP]$ns attach-agent $node $sourceset traffic [new Application/Traffic/Exponential] /设置流量参数$traffic set packetSize_ $size$traffic set burst_time_ $burst$traffic set idle_time_ $idle$traffic set rate_ $rate$traffic attach-agent $source$ns connect $source $sinkreturn $traffic}proc record {} { /定义记录过程global sink0 sink1 sink2 f0 f1 f2set ns [Simulator instance]set time 0.5 /定义调用周期set bw0 [$sink0 set bytes_]set bw1 [$sink1 set bytes_] /获取字节数set bw2 [$sink2 set bytes_]set now [$ns now] /获取当前时间puts $f0 "$now [expr $bw0/$time*8/1000000]" /计算带宽puts $f1 "$now [expr $bw1/$time*8/1000000]"puts $f2 "$now [expr $bw2/$time*8/1000000]"$sink0 set bytes_ 0 /重置变量byte的值$sink1 set bytes_ 0$sink2 set bytes_ 0$ns at [expr $now+$time] "record" /重新排程}set sink0 [new Agent/LossMonitor] /建立流量接收代理set sink1 [new Agent/LossMonitor]set sink2 [new Agent/LossMonitor]$ns attach-agent $n4 $sink0$ns attach-agent $n4 $sink1$ns attach-agent $n4 $sink2set source0 [attach-expoo-traffic $n0 $sink0 200 2s 1s 100k] /建立UDP,产生Expoo流量set source1 [attach-expoo-traffic $n1 $sink1 200 2s 1s 200k]set source2 [attach-expoo-traffic $n2 $sink2 200 2s 1s 300k]$ns at 0.0 "record" /排程$ns at 10.0 "$source0 start"$ns at 10.0 "$source1 start"$ns at 10.0 "$source2 start"$ns at 50.0 "$source0 stop"$ns at 50.0 "$source1 stop"$ns at 50.0 "$source2 stop"$ns at 60.0 "finish"$ns run /执行仿真实验日志:使用Xgraph画图,编写OTcl文件,运行出现如下错误:Parameter LabelFont: can't translate `helvetica-10' into a font(defaulting to `fixed')X Error: BadFont (invalid Font parameter)Major opcode of failed request: 55 (X_CreateGC)解决方案:将“elvetica-10”改为“fixed”,在~/ns-allinone-2.35/xgraph-12.2目录查找名为init.c的文件后重新编译init.c文件,切换到~/ns-allinone-2.35/ns-2.35/xgraph-12.2目录下make,此时make的文件列表内产生了init.c。
基于NS2的无线传感器网络软件仿真实验
中南大学信息科学与工程学院《无线传感器网络》课程设计题目名称:基于NS2的无线传感器网络软件仿真实验姓名:董嘉伟学号:03专业:物联网工程1002班组员:裘铖、施国豪指导教师:何小贤时间:2013、07、11目录●课程设计目的●课程设计内容●课程设计实验原理⏹WSN路由协议⏹WSN MAC层协议⏹修改的路由协议●课程设计小组分工●课程设计实验流程●课程设计实验结果分析●课程设计心得体会●课程设计总结●参考文献●源代码一、课程设计目的无线传感器网络是物联网的基本组成部分,是物联网用来感知和识别周围环境的信息生成和采集系统,传感器网络对信息处理来说如同人体的感觉突触一样重要。
为了方便感知和部署并提高网络的可扩展性,传感器网络一般采用无线通信方式,从而形成了节点之间可自组织拓扑结构的无线传感器网络。
本课程设计的目的综合应用学生所学知识,建立系统和完整的传感器网络概念,理解和巩固无线传感器网络基本理论、原理和方法,掌握无线传感器网络开发的基本技能。
二、课程设计内容软件仿真实验。
要求使用相关软件仿真一个无线传感器网络,要求如下:●自行参考相关资料,成功安装NS2(或OPNET也可以);●利用NS2自带的范例,构建一个100个节点的无线传感器网络,能够成功运行;最好能有界面显示;●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器网络一种路由协议(例如一种多播路由协议);●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器网络采用一种MAC协议;●修改或自行编写一个简单路由协议或MAC协议,并进行仿真运行。
三、课程设计实验原理a)WSN路由协议传统计算机网络对路由协议要求如下:正确性,健壮性,稳定性,公平性,最优性。
除此之外,无线传感器网络对路由协议更注重以下特殊要求:能源有效性,简单性,多路性。
无线传感器网络是以数据为中心(Data Centric)进行路由的,不同于传统Ad hoc网络以地址为中心(Address Centric)进行路由的模式。
(完整word版)NS2网络仿真实验
移动自组织网络实验报告NS2网络仿真实验何云瑞13120073电信研1301班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提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。
(2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器.(3)链路(link):由多个组件复合而成,用来连接网络节点.所有的链路都是以队列的形式来管理封包的到达、离开和丢弃。
基于NS2的无线传感器网络软件仿真实验
中南大学信息科学与工程学院《无线传感器网络》课程设计题目名称:基于NS2的无线传感器网络软件仿真实验姓名:董嘉伟学号:03专业:物联网工程1002班组员:裘铖、施国豪指导教师:何小贤时间:2013、07、11目录●课程设计目的●课程设计内容●课程设计实验原理⏹WSN路由协议⏹WSN MAC层协议⏹修改的路由协议●课程设计小组分工●课程设计实验流程●课程设计实验结果分析●课程设计心得体会●课程设计总结●参考文献●源代码一、课程设计目的无线传感器网络是物联网的基本组成部分,是物联网用来感知和识别周围环境的信息生成和采集系统,传感器网络对信息处理来说如同人体的感觉突触一样重要。
为了方便感知和部署并提高网络的可扩展性,传感器网络一般采用无线通信方式,从而形成了节点之间可自组织拓扑结构的无线传感器网络。
本课程设计的目的综合应用学生所学知识,建立系统和完整的传感器网络概念,理解和巩固无线传感器网络基本理论、原理和方法,掌握无线传感器网络开发的基本技能。
二、课程设计内容软件仿真实验。
要求使用相关软件仿真一个无线传感器网络,要求如下:●自行参考相关资料,成功安装NS2(或OPNET也可以);●利用NS2自带的范例,构建一个100个节点的无线传感器网络,能够成功运行;最好能有界面显示;●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器网络一种路由协议(例如一种多播路由协议);●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器网络采用一种MAC协议;●修改或自行编写一个简单路由协议或MAC协议,并进行仿真运行。
三、课程设计实验原理a)WSN路由协议传统计算机网络对路由协议要求如下:正确性,健壮性,稳定性,公平性,最优性。
除此之外,无线传感器网络对路由协议更注重以下特殊要求:能源有效性,简单性,多路性。
无线传感器网络是以数据为中心(Data Centric)进行路由的,不同于传统Ad hoc网络以地址为中心(Address Centric)进行路由的模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
移动自组织网络实验报告NS2网络仿真实验何云瑞13120073电信研1301班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提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。
(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)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将导致没有足够的码率对复杂的内容部分进行编码(从而导致质量下降),同时在简单的内容部分会浪费一些码率。
FTP:File Transfer Protocol,文件传输协议,中文简称为“文传协议”,用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序(Application)。
用户可以通过它把自己的PC与世界各地所有运行FTP的服务器相连,访问服务器上的大量程序和信息。
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上复制到本地计算机,或把本地计算机的文件送到远程计算机去。
3.5 其他概念(1)丢包率:是一个比率,表示在单位时间内未收到的数据封包数与发送的数据封包数的比率,由于信号衰减、网络质量等诸多因素的影响,可能产生数据封包的丢失。
(2)端到端时延:是由各种因素引起的,包括打包和解包时延,以及网络传送时延,本文中主要讨论的是网络传输时延。
(3)吞吐量:单位时间内某个节点发送和接受的数据量,单位一般为b/s。
(4)抖动率:网络延迟的变化量,它是由同一应用的任意两个相邻数据包在传输路由中经过网络延迟而产生的,由相邻数据包延迟时间差除以数据包序号差得到。
4.实验步骤4.1 NS2的安装本文NS2的安装参照博文:/s/blog_53e4f67d0101f5tr.html最终运行NS2自带simple.tcl得到图1,以示成功:图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 网络结构图仿真结束后,会产生两个档案,一个是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,得到下图接着按下图输入,为接下来要画的时延图做标识:运行上图最后一条指令后得到图3:图3 封包延迟随时间的变化4.3.2 抖动率抖动率就是延迟时间变化量delay variance,由于网络的状态随时都在变化,有时候流量大,有时候流量小,当流量大的时候,许多封包就必需在节点的队列中等待被传送,因此每个封包从传送端到目的地端的时间不一定会相同,而这个不同的差异就是所谓的Jitter。
Jitter越大,则表示网络越不稳定。
量测CBR flow抖动率的代码写在measure-jitter.awk内,具体见附录。
运行方法仿照4.3.1,可得下图4:图4 抖动率随封包序列的变化4.3.3 封包丢失率测量CBR封包丢失率的代码写在measure-drop.awk内,具体见附录。
运行awk -f measure-drop.awk out.tr > cbr_drop后,可在cbr_drop中找到如下信息:其中第一行表示CBR总共送出了550个封包,丢失了8个。
第二行表示总的丢包率为0.014545。
接下来的几行中,第一列表示时间,第二列表示丢包率。
仿照上两例,只不不过为了利用gnuplot,要把先把前两行删除。
最终可得丢包率随时间的变化如图5所示:图5 封包丢失率随时间的变化4.3.4 吞吐量量测CBR吞吐量的代码写在measure-throughput.awk内,具体见附录。
图6 吞吐量随时间的变化5.实验结果分析从丢包率、时延、吞吐量和抖动率的变化图中,可以看出当丢包率增加时,端到端之间的时延也在增加,而吞吐量则下降,丢包率、时延和吞吐量在表示网络性能的好坏时有一定的关系。
在时延的变化图中,在一刚开始的时候,由于只有CBR的封包,所以端到端时延都是固定的,但在1.0秒后,网络多了FTP的封包,这使得CBR封包和FTP封包必须互相的抢夺网络的资源,因此端到端时延变得不在固定,但等到FTP传输结束后,CBR封包的端到端时延又变成是固定值了。