(2)丢包概率的计算。其计算方法如式(2.1)、式(2.2)所示:
    可见,丢包概率与平均队长有密切联系。
    下面,我们给出RED算法中关键步骤的源代码。首先给出计算平均队长的代码:
double REDQueue::estimator(int nqueued, int m, double ave, double q_w)
{
    double new_ave, old_ave;

    new_ave = ave;
    while (--m >= 1) {
        new_ave *= 1.0 - q_w;
    }
    old_ave = new_ave;
    new_ave *= 1.0 - q_w;
    new_ave += q_w * nqueued;
    
    double now = Scheduler::instance().clock();
    
         if (now > edv_.lastset + edp_.interval)
            updateMaxP(new_ave, now);
    }
    return new_ave;
}
    接下来,我们给出计算丢包概率的源代码:
double REDQueue::calculate_p_new(double v_ave,double th_min, double th_max, double v_a,
    double v_b,double max_p)
{
    double p;
    if ( v_ave>=th_min&&v_ave <=th_max) {
        
        // p ranges from 0 to max_p as the average queue
        // size ranges from th_min to th_max
        p = v_a * v_ave + v_b;
        p *= max_p;
    }
    if (p > 1.0)
        p = 1.0;
    return p;
}
2.2  RED算法分析
针对传统的DropTail丢尾算法的缺点,RED算法使用指数加权滑动平均法求解平均队长并均匀化分组丢弃概率,不仅使分组丢弃率和延迟达到最小,而且避免了全局同步以及对突发业务的偏见。由于Internet中含有很多突发数据,而在传统的丢尾算法中,突发性越高的流越容易造成缓冲队列溢出,使得突发性流被大量丢弃,这也被称为对突发业务的偏见[8]。然而,RED算法中当平均队长大于最大队长阈值时,分组被全部丢弃,这对稳定性有较大的影响。为此,我们对RED算法做出改进,使丢包概率更为平缓过渡,由此得到Gentle-RED算法。
2.3  Gentle-RED算法概述
由上文可知,在传统的RED算法中,当 时,丢包概率为1,为了降低不稳定性,我们引入变量 ,使得当 时,丢包概率不为1,而是依据式(2.3)计算[9]:
Gentle—RED的代码如下:
double REDQueue::calculate_p_new(double v_ave, double th_max, int gentle, double v_a,
    double v_b, double v_c, double v_d, double max_p)
上一篇:射频模块的ARM控制与通讯软件设计
下一篇:高速数模混合电路信号完整性分析

认知无线电网络中基于双...

基于TCP/IP技术的转向架振动测试系统设计

STC89C52单片机智能车红外避障控制设计

基于PM2.5浓度的健康出行路径规划及实现

基于涡旋电磁波的新型雷达成像技术研究

基于相关滤波器的长期跟踪算法研究

基于ZigBee协议轨道交通环...

拉力采集上位机软件开发任务书

《醉青春》导演作品阐述

谷度酒庄消费者回访调查问卷表

浅谈新形势下妇产科护理...

多元化刑事简易程序构建探讨【9365字】

辩护律师的作证义务和保...

中国古代秘书擅权的发展和恶变

浅谈传统人文精神茬大學...

高校网球场馆运营管理初探【1805字】

国内外无刷直流电动机研究现状