D1、MD1、MM1排队性能分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信网仿真与NS仿真器大作业——D/D/1、M/D/1、M/M/1排队性能分析
姓名:黄颢
学号:1011010303
班级:通信三班
2012年2月
一、总体目标
获得D/D/1、M/M/1、M/D/1等不同排队系统的吞吐量与流入负载的变化关系。
二、任务分配:
针对本次作业,将本组所有成员分成三个小组:
第一小组的主要任务是负责D/D/1、M/M/1、M/D/1等不同排队系统业务源的生成。
第二小组的主要任务是在第一小组工作的基础上对模拟环境所生成的数据进行记录并做后续的数据处理。
第三小组的主要任务是在前两个小组的任务完成之后,进一步讨论实验结果,并在最后撰写实验报告。
三、实验环境
Unbuntu平台下的NS、Gnuplot。
其中Ubuntu的版本为11.10、NS的版本为2.34、Gnuplot 的版本为4.4。
四、D/D/1、M/D/1、M/M/1排队系统的概述
排队论(queuing theory), 或称随机服务系统理论, 是通过对服务对象到来及服务时间的统计研究,得出这些数量
指标(等待时间、排队长度、忙期长短等)的统计规律,然后根据这些规律来改进服务系统的结构或重新组织被服务对象,使得服务系统既能满足服务对象的需要,又能使机构的费用最经济或某些指标最优。
排队模型的表示方法:
M= 指数分布 D= 确定型分布
M/M/1:数据进入队列的概率服从泊松分布,数据离开队列的概率亦服从泊松分布,且只有一个队列。由随机过程知识可知数据到达的时间间隔服从指数分布,数据离开队列的时间间隔也是服从指数分布的,而在在队列处理能力一定的基础上,数据离开队列的时间间隔与其大小有正比关系,故可将M/M/1的生成转化为生成一个这样的节点:
1、其发送数据的时间间隔服从指数分布,在程序中设其参数为λ;
2、其发送的数据大小也服从指数分布,在程序中设其参数为μ。
D/D/1:即数据进入队列和离开队列的概率是固定的,由M/M/1的节点生成可知,D/D/1的生成转化为这样一个节点:
1、其发送数据的时间间隔固定;
2、其发送的数据大小也固定,为方便比较其间隔时间和大小也用λ和μ来表示。
M/D/1:综合M/M/1和D/D/1,M/D/1的生成可转化为这样一个节点:
1、其发送数据的时间间隔服从指数分布;
2、其发送的数据大小固定。
五、吞吐量的计算
网络的吞吐量(Throughput ,TH)是网络性能的一个重要参数,是指在不丢包的情况下单位时间内可以接收的数据量,单位是字节每秒或者比特每秒。端到端的吞吐量与网络状况有很大关系,为了测试端到端的最大吞吐量,应该逐渐增大发送端的数据发送速率,然后计算接收端的吞吐量,直至吞吐量达到最大。
在分析Trace 文件时,可以使用以下的计算方式计算吞吐量。
)()()()()(m TR i RT m TB i TB i TH m --=
上式中,TB(i)是指第i 个分组被目的节点接收时已经传输的数据总量,TR(i)是第i 个包的接收时间。i>m ,标识计算从第m 个分组到第i 个分组的吞吐量,特别的,若取m=1则是计算平均吞吐量。
六、实验步骤
1,根据实验的总体目标,确认本次实验的整体思路,书写仿真程序代码,具体程序代码内容请参考附录。
2,根据上文所述的测量吞吐量的方法,在仿真完成之后,书写awk程序对仿真结果的Trace文件进行分析,具体程序代码内容请参考附录。
3,将第2步中对Trace文件分析的结果送入Gnuplot 作图,得到具体直观的结果,并对结果进行验证;当所得结论与理论不符时,修改仿真程序或者awk程序,重复上述第1、2步骤。
七、运行结果与结论
参照上述的步骤,获得以下结果:
图1描述的是D/D/1、M/M/1、M/D/1三种排队系统的吞吐量对比图,其中λ均设为30.0,μ均为33.0,横轴为时间(单位为s),纵轴为平均吞吐量(Mbit/s)。
图1-小负载情况下三种排队系统的吞吐量对比图
由图1可见这三者在输入负载不大的情况下平均吞吐量相差亦不大,其中D/D/1的吞吐量比较稳定,而M/M/1和M/D/1的吞吐量有波动性。
图2-D/D/1队列系统在μ不同情况下的吞吐量对比
图2 为三个D/D/1队列的吞吐量对比,三个D/D/1队列的参数分别为如图所示,横轴为时间(单位为s),纵轴为平均吞吐量(Mbit/s)。λ不变时,随着μ的增大,数据包大小减小,从而输入负载也就减小,由图可知随着μ的增大平均吞吐量是减小的。
图3-M/M/1队列系统在λ不同情况下的吞吐量对比
图3为三个M/M/1队列系统的吞吐量对比,三个M/M/1队列的参数分别为如图所示,横轴为时间(单位为s),纵轴为平均吞吐量(Mbit/s)。μ不变时,随着λ的增大,数据包发送时间间隔减小,从而输入负载也就增大,由图可知随着λ的增大平均吞吐量是增大的。
图4-M/M/1队列系统在λ不同情况下的吞吐量对比
图4为三个M/D/1队列系统的吞吐量的对比,三个M/M/1队列的参数分别为如图所示,横轴为时间(单位为s),纵轴为平均吞吐量(Mbit/s)。μ不变时,随着λ的增大,数据包发送时间间隔减小,从而输入负载也就增大,由图可知随
着λ的增大平均吞吐量是增大的。
附录:
业务源生成程序:
D/D/1、M/M/1、M/D/1队列程序的共同部分:
set ns [new Simulator]
set f [open queue2.tr w]
set mu1 33.0
set lambda1 30.0
set n1 [$ns node]
set n2 [$ns node]
set link [$ns simplex-link $n1 $n2 1Mb 1ms DropTail]
$ns queue-limit $n1 $n2 50
set src1 [new Agent/UDP]
$ns attach-agent $n1 $src1
set sink1 [new Agent/LossMonitor]
$ns attach-agent $n2 $sink1
$ns connect $src1 $sink1
set holdtime1 0
set holdseq1 0
set holdrate1 0
D/D/1、M/M/1、M/D/1队列程序的不同部分:
针对D/D/1队列:
数据包发送
proc sendpacket1 {} {
global ns src1 mu1 lambda1
set time [$ns now]
$ns at [expr $time + [expr 1/$lambda1]] "sendpacket1"
set bytes [expr round ([expr 100000.0/(8*$mu1)] )]
$src1 send $bytes
}
针对M/M/1队列:
两个指数分布的生成:
set InterArrivalTime1 [new RandomVariable/Exponential] $InterArrivalTime1 set avg_ [expr 1/$lambda1]
set pktSize1 [new RandomVariable/Exponential]
$pktSize1 set avg_ [expr 100000.0/(8*$mu1)]
数据包的发送,将两个指数分布同数据发送间隔时间与数据大小绑定:proc sendpacket1 {} {
global ns src1 InterArrivalTime1 pktSize1