通信网仿真与NS仿真器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
(2011 / 2012 学年第一学期)
课程名称通信网仿真与NS仿真器
实验名称D/D/1、M/D/1、M/M/1排队性能分析
指导教师王文鼐
学生姓名窦轶班级学号1011041032
学院(系) 计算机学院专业计算机软件与理论
实验报告
实验名称D/D/1、M/D/1、M/M/1排队性能分析指导教师王文鼐
一、实验目的和要求
学习排队论的相关知识,掌握NS网络仿真器的使用方法,运用NS网络仿真器实现排队系统的模拟,并就D/D/1、M/D/1、M/M/1排队系统进行性能分析。
二、实验环境(实验设备)
Ubuntu虚拟机环境下使用ns-allinone-2.34安装NS
三、实验原理及内容
排队论(queuing theory), 是研究系统随机聚散现象和随机服务系统工作过程的数学理论和方法,又称随机服务系统理论,为运筹学的一个分支。随机服务系统性能分析的主要指标包括:一个顾客在接收服务之前需要等待的时间分布,在系统中逗留的时间的分布,在这里,顾客在系统中的逗留时间是等待时间以及服务时间的和;系统中工作量的分布,包括正在等待的顾客的服务时间的和,再加上正在被服务的顾客的剩余服务时间;服务员忙期的分布,忙期是指服务员联系工作的时间;系统的吞吐量等等。
排队模型的表示:X/Y/Z/A/B/C
X—顾客相继到达的间隔时间的分布;
Y—服务时间的分布;
Z—服务台个数;
A—系统容量限制(默认为∞);
B—顾客源数目(默认为∞);
C—服务规则(默认为先到先服务FCFS)。
顾客到达时间间隔,或服务时间的缩写符号:
D:定长分布(D是Deterministic的首字母);
M:指数分布(M是Markovian的首字母);
M/M/1排队模型,更具体地说是M/M/1/∞/∞/FCFS排队模型,即假设顾客的到达间隔是独立同分布的指数随机变量,其均值为
1,服务时间是独立同分布的指数随机变
λ
量,其均值为
1,服务员只有一人,等待空间以及客源都是无穷的,服务规则是先到先
μ
服务。其中λ表示单位时间内平均到达的顾客数,μ表示单位时间内平均客服务的顾客数。
这种模型是一种生灭过程,此随机过程中的每一个状态代表模型中人数的数目。当有人加入队列时,如果模型在状态k,它会以速率λ进入状态k + 1;当有人离开队列时,
λ<。
如果模型在状态k,它会以速率μ进入状态k−1;因此该模型的隐定条件为μ因此由以上分析可知M/D/1排队模型属于顾客的到达间隔是独立同分布的指数随
机变量,其均值为
1,服务时间是一个固定的值,服务员仍然只有一人,等待空间以及
客源都是无穷的,服务规则是先到先服务。D/D/1排队模型中顾客的到达间隔和服务时间均为固定数值,服务员只有一人,等待空间以及客源都是无穷的,服务规则是先到先服务。根据以上的概念编写网络仿真代码。
四、实验步骤:
4.1 安装NS网络仿真器:
下载ns-allinone-2.34.tar.gz,使用tar命令解压ns-allinone-2.34.tar.gz,执行命令./install,在找到/home/user/.bashrc(user是指用户名)文件,修改.bashrc文件中的三个环境变量值(.bashrc为隐藏文件,需要使用ls-a来找到,通过vi进行修改),如图1所示。
图1 修改3个环境变量后.bashrc文件内容
安装完成后可以在终端中输入ns命令应该出现一个“%”,并且在/ns-allinone-2.34/ns-2.34/tcl/ex目录下找到一些例子程序,通过输入命令ns example.tcl 来验证NS是否安装正确。
4.2 仿真实现与编码:
在本实验中,采用TCL语言描述整个仿真过程,运行后生成相应的仿真过程记录文件(traffic trace file)和nam动态演示程序,通过分析trace文件中数据实现对排队模型的性能分析。
M/M/1排队模型具体实现tcl文件内容如下:
# 建立一个新的模拟对象
set ns [new Simulator]
# 设定变量tracefile1指向mm1.tr文件,用来记录仿真过程的trace数据
set tracefile1 [open mm1.tr w]
$ns trace-all $tracefile1
# 设定变量namfile指向mm1.nam,用来记录nam的trace数据
set namfile [open mm1.nam w]
$ns namtrace-all $namfile
# 建立一个finish过程,用来关闭两个trace文件,并在模拟结束后调用nam程序
proc finish {} {
global ns tracefile1 namfile
$ns flush-trace
close $tracefile1
close $namfile
exec nam mm1.nam &
exit 0
}
# 定义M/M/1排队模型中的λ和μ的值
set lambda 1
set mu 1.1
# 创建两个节点n1和n2
set n1 [$ns node]
set n2 [$ns node]
# 在n1和n2之间建立简单单向链路,设定链路的带宽为44Kbit/s、时延为0ms,队伍类型为DropTail是典型的FCFS调度
set link [$ns simplex-link $n1 $n2 44Kb 0ms DropTail]
# 因为M/M/1等待空间以及客源都是无穷的,所以设定queue的容量,很大可看成无限$ns queue-limit $n1 $n2 100000
# 在M/M/1模型中包的到达间隔是独立同分布的指数随机变量,其均值为
1,
λ
set InterArrivalTime [new RandomVariable/Exponential]
$InterArrivalTime set avg_ [expr 1/$lambda]
# 服务时间是服从均值为
1的指数分布,但是在NS仿真过程中,数据包的处理速度由
μ
带宽决定,因此通过设定包的大小服从均值为的指数分布,来实现服务时间的指数分布。其mu的单位是:个/s,因此44000/(8*mu)的单位是:byte/个。