第五组基于NS2的差异式服务网络仿真.docx
- 文档编号:9949768
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:45
- 大小:584.57KB
第五组基于NS2的差异式服务网络仿真.docx
《第五组基于NS2的差异式服务网络仿真.docx》由会员分享,可在线阅读,更多相关《第五组基于NS2的差异式服务网络仿真.docx(45页珍藏版)》请在冰豆网上搜索。
第五组基于NS2的差异式服务网络仿真
《网络性能分析与测试》
课程设计报告
(2012—2013学年第1学期)
题 目基于NS-2的差异式服务网络仿真
学生姓名李燕清林小琼王文婷
阮玲玲蔡伟胜兰海月
专业_09网络工程
学号_0907022101(1831495155)
班级_1班
指导教师陈仁
成绩_
计算机科学与技术系
2012年11月
目录
1.前言1
1.1差异式服务网络的简介1
1.2项目分工1
2.常用算法简介3
2.1以量测数据流平均速率的算法——TSWTCM3
2.2以令牌桶桶(TokenBucket)为测量方法的算法3
2.2.1SRTCM(单速率三色标记器)3
2.2.2TRTCM(双速率三色标记器)4
3.NS2的简介和安装6
3.1NS2的简介6
3.2在ubuntu10.04下安装ns22.34以及GNUPLOT8
3.2.1在ubuntu10.04下安装ns22.348
3.2.2在ubuntu10.04下安装GNUPLOT9
4.基于NS-2差异式服务网络仿真的算法实现10
4.1TCL程序代码——TSWTCM算法的实现10
4.2TCL程序代码——SRTCM算法的实现15
4.3TCL程序代码——TRTCM算法的实现19
5.算法的比较25
6.心得体会26
参考文献27
基于NS-2的差异式服务网络仿真
1.前言
随着多媒体应用程序如随选视频(VideoOnDdmandVOD)、网络电话(VoiceOverIP,VOIP)、网络会议(ConferencingOverIP)等的发展,这使的目前Internet所采用的尽力服务(Best-dffortService)不能再满足这些多媒体应用程序的需求,所以IETF(InternetEngineeringTaskForce)就针对网络服务质量(QualityofService)提出了两种服务的模型——整合式服务(IntegratedService,IntServ)网络模型和差异式服务(DifferentiatedService,DiffServ)网络模型。
但是,整合式服务网络模型有复杂度(Complexity)高和扩充性(Scalability)分问题因此差异性服务式网络模型获得研究学者们较多的注意。
E而NS(NetworkSimulator)是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术的所有方面。
所以,NS成了目前学术界广泛使用的一种网络模拟软件,对差异式服务网络的研究起到了积极的作用。
1.1差异式服务网络的简介
差异式服务网络结构的精神在于它设法简化核心核心路由器(CoreRouter)的复杂度,尽量将复杂的允入控制(AdmissionControl)交友频宽管理者(BandwidthBroker,BB)负责,封包辨识工作(PacketClssification)交有边境路由器(EdgeRouter,ER)负责,并且采用比较粗略的以类别区分网络质量保证(Per-classOoS);所以差异式服务网络结构就比整合式服务网络结构能够提供较高的可扩充性。
目前差异式服务网络结构定义了两种服务的形态——EF(ExpeditedForwarding)服务和AF(AaasuredForwarding)服务。
EF主要是听歌低延迟(LowDelay)、低延迟抖动(LowJitter)和低封包遗失率(LowLossRate)的服务;而AF则提供更有弹性的服务,因此AF只有对吞吐量(Throughput)有所要求,对于延迟(Delay)或延迟抖动(Jitter)没有严格的要求。
AF就是希望通过有效地控制具有较低封包丢弃概率值的封包流进核心路由器中,以达到最低吞吐量(MinimumThroughput)的保证。
在AF服务中常用一些算法来测量用户数据是否符合规范,这些算法可以分为两种类型,一种是以量测数据流平均速率的算法,常见的是TSWTCM(TimeSlidingWindowThreeColorMarker);另一种是以令牌桶桶(TokenBucket)为测量方法的算法,常见的是SRTCM(SingRateThreeColorMarker)和TRTCM(TwoRateThreeColorMarker)。
我们将通过分工的形式,利用NS-2模拟环境,使用TSWTCM、SRTCM、TRTCM这三种算法来仿真模拟端点到端点的服务质量,再利用GAWK处理文档,跟踪TRACE文件,利用GNUPLOT对数据进行绘图分析,分析其平均吞吐量来量测用户数据是否达到要求,并用TCP和UDP的封包进行比较,分析这三种算法的优缺点。
1.2项目分工
为了确保项目能高效地完成,通过毛遂自荐的方式选举组长,而后由组长分解任务,组员按照自己的意愿及能力自主选择任务,后经讨论、自选等方式,我们做了如下的项目分工:
表1.2.1项目分工
任务分工
小组成员
工期(天)
起始时间
结束时间
领取、分配任务
林小琼(组长)
0.5天
2012-11-29
2012-11-29
前期借书学习相关知识,了解三个算法如何仿真,比较三种算法的优缺点
全组成员
0.5天
2012-11-29
2012-11-29
环境搭配
王文婷
2天
2012-11-30
2012-12-04
算法仿真,学习TSWTCM算法,学习利用GAWK处理文档
李燕清
2天
2012-11-30
2012-12-04
算法仿真,学习SRTCM算法,记录实验操作
阮玲玲
2天
2012-11-30
2012-12-04
算法仿真,学习TRTCM算法,记录实验操作
兰海月
2天
2012-11-30
2012-12-04
利用GNUPLOT对数据进行绘图分析,学习如何跟踪TRACE文件,文档记录与编写,课程设计日志编写,PPT制作
林小琼、蔡伟胜
2天
2012-11-30
2012-12-04
检查答辩
全组成员
1天
2012-12-05
2012-12-05
任务分配完工后,小组各成员各司其职,认真完成自己所分配的任务。
2.常用算法简介
2.1以量测数据流平均速率的算法——TSWTCM
在TSWTCM(TimeSlidingWindowThreeColorMarker)中包含了两个部分,一个是速率估计器(RateEstimator),另一个是封包丢弃概率值标注器(PacketMarker),如图2.1.1为TSWTCM结构图:
图2.1.1TSWTCM结构图
2.2以令牌桶桶(TokenBucket)为测量方法的算法
IETF建议采用SRTCM(SingleRateThreeColorMarker,RFC2697)算法或TRTCM(TwoRateThreeColorMarker,RFC2698)算法对流量进行评测,根据评估结果为报文打颜色标记,即绿色、黄色和红色。
被标示为红色的封包有很高的机率会被丢弃,被标示为黄色的封包会尽可能的被传送出去,被标示为绿色的封包只有很低的可能会被丢弃。
SRTCM和TRTCM算法均采用两个令牌桶对到达的报文进行评估,允许流量在某种级别上突发。
SRTCM与TRTCM算法有两种工作模式:
色盲模式(Color-Blind)与感色模式(Color-Aware)。
2.2.1SRTCM(单速率三色标记器)
SRTCM测量信息流,并根据三种流量参数(提交信息速率,CommittedInformationRate,CIR;提交组量大小CommittedBurstSize,CBS;超量组量大小ExcessBurstSize,EBS)对包进行标记,这三个参数我们分别称为绿,黄和红标记。
一般采用双桶结构:
C桶和E桶。
Tc表示C桶中的令牌数,Te表示E桶中令牌数,两桶的总容量分别为CBS和EBS。
初始状态时两桶是满的,即Tc和Te初始值分别等于CBS和EBS。
如果包没有超过CBS就是绿的,如果超过CBS但未超过EBS就是黄的,如果超过EBS就是红的。
令牌的产生速率是CIR,通常是先往C桶中添加令牌,等C桶满了,再往E桶中添加令牌,当两桶都被填满时,新产生的令牌将会被丢弃。
如图2.2.1.1是SRTCM双桶结构:
图2.2.1.1SRTCM双桶结构
SRTCM有两种工作模式:
色盲模式(Color-Blind)与感色模式(Color-Aware):
1)色盲模式(Color-Blind)
图2.2.1.2SRTCM色盲模式
2)感色模式(Color-Aware)
图2.2.1.3SRTCM感色模式
2.2.2TRTCM(双速率三色标记器)
IETF的RFC文件[3]定义了双速率三色算法,主要是根据4种流量参数来评估:
CIR、CBS、峰值信息速率(PIR),峰值突发尺寸(PBS)。
前两种参数与单速率三色算法中的含义相同,PIR这个参数只在交换机上才有,路由器没有这个参数。
该值必须不小于CIR的设置值,如果大于CIR,则速率限制在CIR于PRI之间的一个值。
与单速率三色标记算法不同,双速率三色标记算法的两个令牌桶C桶和P桶填充令牌的速率不同,C桶填充速率为CIR,P桶为PIR;两桶的容量分别为CBS和PBS。
用Tc和Tp表示两桶中的令牌数目,初始状态时两桶是满的,即Tc和Tp初始值分别等于CBS和PBS。
如图2.2.2.1是TRTCM双桶结构:
图2.2.2.1是TRTCM双桶结构:
TRTCM有两种工作模式:
色盲模式(Color-Blind)与感色模式(Color-Aware):
1)色盲模式(Color-Blind)
图2.2.2.2TRTCM色盲模式
3)感色模式(Color-Aware)
图2.2.2.3TRTCM感色模式
3.NS2的简介和安装
对于如何验证网络协议的正确性和进行相关性能测试,人们提出了很多方法,目前最广泛使用的方法就是通过虚拟环境进行模拟仿真。
NS2是最流行的进行网络模拟的软件之一,已广泛被科研院所和各大高校用于进行网路分析、研究和教学。
它支持众多的协议,并提供了丰富的测试脚本。
3.1NS2的简介
NS2,即NetworkSimulatorVersion2,是面向对象的、离散事件驱动的网络环境模拟器,主要用于解决网络研究方面的问题。
NS2提供了在无线或者有线网络上的TCP、路由、多播等多种协议的模拟。
NS2使用一整套完整C++类库实现了绝大多数常见的网络协议以及链路层的模型,利用这些类的实例就可以搭建起整个网络的模型,而且包括详尽的细节实现。
它实现了诸如TCP,UDP等网络协议,数据传输如FTP,Telnet,Web,CBR和VBR的模拟以及路由队列的管理机制诸如DropTail,RED和CBQ,路由算法Dijkstr等。
NS2还可用于多播和MAC层协议的仿真。
图3.1.1 从一个用户的角度看NS2
如图3.1.1所示,从一个简单用户的角度来看,NS2是面向对象的Tcl脚本解释器(即OTcl),这个解释器由模拟事件调度器、网络组件对象库和网络组装(plumbing)模块库(事实上,组装模块就是基本模拟对象的成员函数)等组成。
换句话说,使用NS2,就是用OTcl脚本语言编写程序、设置和运行模拟网络;用OTcl脚本语言初始化一个事件调度器,设置网络的拓扑结构;用网络对象和它的成员函数通过使用事件调度器通知网络源什么时候启动、什么时候结束。
如图3.1.2所示,是NS2的基本结构。
图3.1.2NS2的基本结构
对一般使用NS2的用户来说,可能会用OTcl脚本语言来撰写网络拓扑部分,而OTcl事实上就是架构在Tcl之上的通过面向对象后所延伸出来的脚本语言。
事件调度器(EventScheduler)和网络组件(NetworkComponent)这两部分,主要是用C++语言来完成的。
NS2是以事件驱动(EventDriven)的概念来进行模拟,比如说,在1.2s的时候开始做FTP数据的传输,在2.0s的时候结束传输,这是由事件调度器完成的部分。
至于网络组件则是NS2中的诸如Agent(TCP,UDP,…)、TraficGenerator(FTP,CBR,…)部分。
图2.1.2中将C++画在最底层是表示NS2的核心是C++,然后通过Tclcl作为桥梁来沟通OTcl及C++,最后搭配一个用户接口(UserInterface),这就构成了NS2本身。
一个普通的NS2用户可以被想象站在图2.1.2的左下角。
通过使用OTcl库中的模拟对象设计和运行模拟器。
事件调度器和大多数的网络组件在C++中实现并且通过OTcl连接(即Tclcl)使其在OTcl中有效。
所有这些就构成了NS2,这是一个面向对象的带有网络模拟库的OTcl解释器。
使用NS2的流程如图2.1.3所示,首先应先提出问题,其次按照问题的要求编写Tcl脚本,完成环境的模拟,接下来,执行Tcl脚本,可以得到一个或多个文本文件,这些文件是NS2的执行过程中产生的跟踪文件,通过对这些文件的分析统计,可以从中得到模拟结果。
图3.1.3使用NS2流程图
NS2和TCP/IP,OSI七层网络结构的大致对应关系如图3.1.4所示。
图3.1.4NS2和TCP/IP,OSI七层网络结构的对应关系
3.2在ubuntu10.04下安装ns22.34以及GNUPLOT
3.2.1在ubuntu10.04下安装ns22.34
1)先下载ns2的最新版本ns-allinone-2.34,并解压到对应目录下(也可以用命令解压:
tarzxfns-allinone-2.34.tar.gz如果想看解压的输出过程:
把"zxf"改为"zxvf");
2)执行如下命令,安装ns2需要的库:
sudoapt-getinstallbuild-essential
sudoapt-getinstalltcl8.4tcl8.4-dev
sudoapt-getinstalltk8.4-dev
sudoapt-getinstalllibxmu-dev
3)进入ns2的解压缩后的文件夹中cdns-allinone-2.34(可省略)
4)如果gcc的版本大于4.0则在./install之前要做一些修改("gcc4.0版本以前是用ld-share来生成共享库的,但是到了4.0以上的版本,这个命令改为了gcc-share即可")
cdns-allinone-2.34/otcl-1.13
sudogeditconfigure.in
把77行处的SHLIB_LD="ld-shared"改为SHLIB_LD="gcc-shared"保存退出,然后:
sudogeditconfigure
把6304行(Ctrl+F)的SHLIB_LD="ld-shared"改为SHLIB_LD="gcc-shared"保存退出,然后:
cdns-allinone-2.34#到安装目录
sudo./install#开始安装
5)配置环境变量
cd#进入目录/home/*user*(**是用户名),然后
sudogedit.bashrc
在文件末尾加入:
PATH="$PATH:
/usr/ns-allinone-2.34/bin:
/usr/ns-allinone-2.34/tcl8.4.18/unix:
/usr/ns-allinone-2.34/tk8.4.18/unix"
LD_LIBRARY_PATH="/usr/ns-allinone-2.34/otcl-1.13:
/usr/ns-allinone-2.34/lib"
TCL_LIBRARY="$TCL_LIBRARY:
/usr/ns-allinone-2.34/tcl8.4.18/library"
保存退出,使环境变量生效source.bashrc(可省略)
6)验证(测试)
(1)打开一个新的终端
(2)输入ns并回车
$ns(如果正常,回出现"%"操作提示符)
(3)输入一段测试用的Tcl脚本代码进行测试
%puts"HelloWorld"(输出HelloWorld字符串)
HelloWorld(如果正确,会显示HelloWorld)
%(然后跳到下一个"%"提示符等待下一条指令输入)
7)安装nam
cdns-allinone-2.34/nam-1.14
./configure
make
sudomakeinstall
ns22.34安装完毕。
3.2.2在ubuntu10.04下安装GNUPLOT
在装有NS2程序的乌邦图虚拟机中打开终端,运行下列程序:
sudoapt-getinstallgnuplot
GNUPLOT安装完毕。
4.基于NS-2差异式服务网络仿真的算法实现
如图4.1仿真网络结构图所示,e1和e2是边界路由器,在此我们设置TSWTCM、SRTCM和TRTCM来测量用户数据是否符合规范,core是核心路由器。
另外,这三个路由器所采用的队列管理机制是WRED(WeightedRandomEarlyDetection),包含了三个虚拟队列(VirtualQueue),用来记录三种不同封包丢弃概率值的封包队列长度,但实际上只有一个队列(PhysicalQueue),这个实际的队列是真正用来暂时存放封包用的,而这三个虚拟队列设置不同的临界值(Threshold)和封包丢弃率,使具有红色标注的封包能在发生队列长度在超过临界值时优先丢弃,接着黄色标注的封包,最后才是绿色标注的封包。
图4.1仿真网络结构图
4.1TCL程序代码——TSWTCM算法的实现
(1)在装有NS2程序的乌邦图虚拟机中打开终端,运行下列程序:
setns[newSimulator]
#开启一个tracefile,用来记录封包传送的过程
setnd[opentsw3cm.trw]
$nstrace-all$nd
#设定TSWTCM的参数,在NS2中TSWTCM名称是TSW3CM
#设定第一个分组的CIR为1500000bps,PIR为3000000bps
#设定第二个分组的CIR为1000000bps,PIR为2000000bps
#设定第一个分组的CBR的传送速率为4000000bps,第二组的为4000000bps
setcir01500000
setpir03000000
setrate04000000
setcir11000000
setpir12000000
setrate14000000
#模拟时间为85秒,每个传送的CBR的封包大小为1000byte
settestTime85.0
setpacketSize1000
#设定网路模拟架构
sets1[$nsnode]
sets2[$nsnode]
sete1[$nsnode]
setcore[$nsnode]
sete2[$nsnode]
setdest[$nsnode]
$nsduplex-link$s1$e110Mb5msDropTail
$nsduplex-link$s2$e110Mb5msDropTail
#指定e1为边境路由器,core为核心路由器
$nssimplex-link$e1$core10Mb5msdsRED/edge
$nssimplex-link$core$e110Mb5msdsRED/core
#指定e2为边境路由器
$nssimplex-link$core$e25Mb5msdsRED/core
$nssimplex-link$e2$core5Mb5msdsRED/edge
$nsduplex-link$e2$dest10Mb5msDropTail
#设定在nam中节点的位置关系图
$nsduplex-link-op$s1$e1orientdown-right
$nsduplex-link-op$s2$e1orientup-right
$nsduplex-link-op$e1$coreorientright
$nsduplex-link-op$core$e2orientright
$nsduplex-link-op$e2$destorientright
#设定伫列名称
setqE1C[[$nslink$e1$core]queue]
setqE2C[[$nslink$e2$core]queue]
setqCE1[[$nslink$core$e1]queue]
setqCE2[[$nslink$core$e2]queue]
#设定e1到core的参数
$qE1CmeanPktSize$packetSize
#设定一个physicalqueue
$qE1CsetnumQueues_1
#设定三个virtualqueue
$qE1CsetNumPrec3
#设定从s1到dest为第一个分组,采用TSW3CM
#并把符合标准的封包标成绿色(10)
$qE1CaddPolicyEntry[$s1id][$destid]TSW3CM10$cir0$pir0
#设定从s2到dest为第二个分组,采用TSW3CM
#并把符合标准的封包标成绿色(10)
$qE1CaddPolicyEntry[$s2id][$destid]TSW3CM10$cir1$pir1
#把不符合标准的封包标注成黄色(11)和红色(12)
$qE1CaddPolicerEntryTSW3CM101112
#把绿色(10)的封包放到第一个实际伫列中(0)的第一个虚拟伫列(0)
$qE1CaddPHBEntry1000
#把黄色(11)的封包放到第一个实际伫列中(0)的第二个虚拟伫列
(1)
$qE1CaddPHBEntry1101
#把红色(12)的封包放到第一个实际伫列中(0)的第三个虚拟伫列
(2)
$qE1CaddPHBEntry1202
#设定第一个实际伫列中(0)的第一个虚拟伫列(0)的RED参数
#{min,max,maxdropprobability}={20packets,40packets,0.02}
$qE1CconfigQ0020400.02
#设定第一个实际伫列中(0)的第二个虚拟伫列
(1)的RED参数为{10,20,0.1}
$
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 基于 NS2 差异 服务 网络 仿真