从Linux学到NS2:(三)一个排队系统的仿真实例

这篇博客介绍了如何使用NS2进行队列溢出概率的仿真,通过Matlab算法研究Poisson流与EXPOO流聚合下队列的状态。文章详细阐述了NS2中的Tcl代码实现,包括网络拓扑、队列调度策略(如Droptail和RED)。此外,还分析了仿真结果并提供了计算队列溢出概率的方法,但指出仅有一组数据不足,需对比不同时延下的队列行为,并提出了后续研究方向。
摘要由CSDN通过智能技术生成

本篇问题:

       通过上篇对NS2各组件的了解和使用,本篇将更进一步地应用NS2,仿真得到一确定时延下队列溢出的概率,并附上Matlab算法和NS2代码。

1. 首先对上篇文章提到的问题进行明确和补充:

(1)进一步了解分裂对象模型:TclCL连接Tcl和C++的对象。Tcl类定义了解释器访问及通信方法,是解释器的真正实例;TclObject类储存bindings接口,绑定解释对象的实例变量(instance variables)和编译对象的C++成员变量(member variables)。每个对象由用户在解释器中创建,同时在编译层中创建相应投影对象(shadow object),映射机制在TclClass类中;

(2)OTcl变量任何变化都会被追踪到,并且要求当前C++与OTcl对应变量的值在解释器每次访问之后都保持一致(instvar类保证);

(3)创建解释类对象时,解释器执行其构造函数,同时传递用户设定的参数。相应地,NS2自动创建相应编译对象(投影对象的基类构造函数实现),返回对象的handler。

2. Matlab算法(研究Poisson流与EXPOO流聚合下,队列溢出概率与时延的关系):                                                     

%时刻i时队长L[i],泊松流的到达B[i],EXPOO流的到达slot[i],服务速度C[i]
delay=1:1:10;           %循环十次
i=1:1:M;                %在一确定时延下循环足够多次实验
L[i]=L[i-1]+slot[i]+B[i]-C[i]; %泊松流由随机种子输出
MaxL=delay*(lamda+Ron); %设最大队长为时延与泊松流和EXPOO流到达强度之和的乘积
L[i]>MaxL?overflow++:i++;
overflowP=overflow/M;   %得到该时延下的队列溢出概率

                                               EXPOO流                                                                  Xlabel:delay    Ylabel:overflowP 

3. NS2相关Tcl代码:

set ns [new Simulator]

//打开trace文件
set nd [open out.tr w]
$ns trace-all $nd
set namtracefd [open poisson.nam w]
$ns namtrace-all $namtracefd
//设置路由器(在ns2中,路由器就是节点),也可以设置各节点的orient和color
set r1 [$ns node]
set r2 [$ns node]
$ns duplex-link $r1 $r2 4.3kb 900ms DropTail
//设置r1与r2之间队列缓冲区的最大值为2.9个packet,每个packet的大小默认为40个字节,~/ns/tcl/lib/ns-default.tcl
$ns queue-limit $r1 $r2 2.9
//设置UDP的源节点和目的节点,并分别与两个路由器相连(创建链路)
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
$ns duplex-link $n0 $r1 10Mb 1ms DropTail
$ns duplex-link $n1 $r1 10Mb 1ms DropTail
$ns duplex-link $r2 $n2 1Mb 90ms DropTail
//建立UDP单向代理,udp为发送者,sink为接受者,并分别连接到相应节点上,然后建立UDP连接,在UDP建立应用    
    set udp0 [new Agent/UDP]
    set udp1 [new Agent/UDP]
    set sink0 [new Agent/Null]
set sink1 [new Agent/Null]
    $ns attach-agent $n0 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值