毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

主动队列管理算法BLUE的仿真研究(6)

时间:2017-06-13 22:13来源:毕业论文
2.3.5 NS扩展 NS2仿真分2个层次:一个是基于OTcl编程的配置、构造层次,利用NS2已有的网络仿真元素实现仿真,无需对NS2做修改,只需编写OTcl仿真脚本,如图


2.3.5  NS扩展
NS2仿真分2个层次:一个是基于OTcl编程的配置、构造层次,利用NS2已有的网络仿真元素实现仿真,无需对NS2做修改,只需编写OTcl仿真脚本,如图1.2中的流程1→2→3。另一个层次是基于C ++和OTcl编程的编译、配置层次。如果NS2中没有所需的仿真元素,NS2则提供用户自我升级或修改协议的技术,即利用OTcl和NS2的接口类实现NS2的更新。新NS2生成的流程,如图2.2[17]中的4→5→6→3。
对于C ++层次的扩展一般都可以在ns2.34目录下找到实现相应功能的结构部分。可以在该目录下直接添加实现新协议的文件,这样使得NS2的文件结构比较清晰。然后再重新编译生成ns.exe ,使之加进新的文件。扩充的文件,往往可以通过继承等方法部分利用NS2原来的一些代码。因此,需要对原有的NS2代码进行仔细研究。
基于C ++层次扩展的具体步骤如下:
(1)定义或继承C ++ 协议类;
(2)编写该类成员函数和协议算法;
(3)定义TCL 相关的类和变量;
(4)把C ++代码绑定到TCL;
(5)修改makefile文件,重新编译生成ns.exe文件。如果操作系统是Linux ,则需要修改makefile.in文件,如果是windows操作系统,则需要对makefile.vc 进行相应的改动[18]。
在NS2中加入新的路由算法后,就可以利用NS2的网络模拟功能,对算法的性能进行实验分析。
3    BLUE及RED算法概述
3.1  RED及BLUE算法产生背景
3.11  RED算法产生背景
最早提出的AQM算法是随机早期检测(RED)算法,也是目前最常用的一种AQM算法。RED的基本思想是路由器通过监控队列的平均长度来探测拥塞,一旦发现拥塞逼近,就随机地选择源端来通知拥塞,使它们在队列溢出之前降低发送数据速率,以缓解网络拥塞。RED算法主要包括两步,首先计算平均队列长度,然后计算丢弃包的概率。RED在计算平均队长avgq时,采用了类似低通滤波器(low-pass filter)带权值的方法:
avgq=(1-wq) ×avgq+q×wq
其中,wq为权值,q为采样测量时实际队列长度。从而“过滤”掉由于Internet数据的突发性导致的短期队长变换,尽量反映长期的拥塞变化。权值wq相当于低通滤波器的时间常数,它决定了路由器对输入流量变化的反应程度,计算平均队长的目的就是为了反映拥塞程度并据此来计算丢包概率。
RED有两个与队列长度相关的阀值:minth和maxth。当有数据包达到路由器时,RED计算出平均队长为avgq。若avgq小于minth,则没有包需要丢弃;当minth≤avgq≤maxth时,计算出概率P,并以此概率丢包;当avgq>maxth时,所有的包被丢弃。
概率P不仅和avgq有关,而且还和从上一次丢包开始到现在连续进入队列的包的数量count有关。随着count的增加,下一个包被丢弃的可能性也在缓慢增加。这主要是为了在到来的包之间均匀间隔地丢包,避免连续丢包,以消除对突发流的不合理丢包和产生全局同步现象。
3.12  BLUE算法产生背景
可以说,主动队列管理算法的基础是RED。RED队列管理的基本思想是在早期检测到初始的拥塞并把拥塞通知传达到终端,使他们能够在网络中的队列溢出和数据包丢弃前减小其传输速率。为此,RED将保持指数加权移动平均队列长度来检测拥塞。当平均队列长度超过最低门限(minth)时,数据包将会随机丢弃或标上一个ECN位。当平均队列长度超过了最大门限(maxth),所有的数据包就会被丢弃或标记[19]。
虽然RED的确已经比传统的队尾丢弃算法有了很大的进步,但它仍有几个缺点。RED和其他主动队列管理技术的一个最根本的问题就是它们依靠队列长度来估计拥塞程度。当用一个持续稳定的队列来表示拥塞时,其长度对于拥塞的严重程度,即共享同一链路的竞争连接的数量,所能给出的信息很少。在繁忙时期,单源传输速度大于瓶颈链路门限时导致的队列长度增加与多源导致的队列增长一样容易。在排队论里有一个众所周知的结论,那就是只有当数据包间隔按泊松分布的时候,队列长度才直接涉及到活动源的数量,从而表现真正的拥塞程度。然而不幸的是,通过网络链路的数据包间隔时间绝对是非泊松的。来自各个源的数据包间隔是由TCP协议分配的而各个源的间隔本质上是重叠的。这无疑使得配置队列长度成为了了主动队列管理方案的核心。由于RED算法依赖于队列长度,因此在确定拥塞情况的严重程度方面它存在着固有的问题。因此,RED需要众多不同的参数,以正确运行在不同的拥塞情况下。虽然RED可以达到一个理想工作点,但前提是,它得有足够多的缓冲空间,和正确的配置参数。 主动队列管理算法BLUE的仿真研究(6):http://www.youerw.com/tongxin/lunwen_9187.html
------分隔线----------------------------
推荐内容