基于早期随机检测(RED)算法的拥塞避免策略

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:clarkkevin_
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:RED算法采用随机丢弃策略,避免传统尾部丢弃方式而引起的TCP全局同步,同时通过控制队列的长度来抑制拥塞的发生
  关键词:尾部丢弃;早期随机检测;拥塞避免
  中图分类号:TP393.01 文献标识码:A文章编号:1009-3044(2007)05-11342-01
  
  1 IP网络中的拥塞问题
  拥塞避免技术通过监控网络流量负载情况,尽力在网络拥塞发生之前预计并且避免在普通的网路上拥塞的发生。这些技术用来为不同优先级别的流量种类提供处理,在发生拥塞的情况下使得网络的吞吐量和利用效率最大化,并且使报文丢弃和延迟最小化。
  传统的路由器允许在拥塞发生时期将输出流量存放在缓冲区中。决定到达路由器输出端口的数据包是否接收到缓冲器的算法是单纯的FIFO队列法。FIFO队列根据数据包到达顺序将其接收到队列中,再根据到达的顺序从队列中送出。如果队列达到一定的长度,它后面到达的数据包就被丢弃。由于内存资源的有限,当队列的长度达到规定的最大长度时,所有到来的报文都被丢弃。在拥塞发生期间,队列尾部的数据包将被丢弃,直到拥塞解决。对于TCP报文,由于大量的报文被丢弃,将造成TCP超时,从而引发TCP的慢启动和拥塞避免机制,使TCP减少报文的发送。当队列同时丢弃多个TCP连接的报文时,将造成多个TCP连接同时进入慢启动和拥塞避免,称之为:TCP全局同步。这样多个TCP连接发向队列的报文将同时减少,使得发向队列的报文流量超过线路发送的速度,减少了线路带宽的利用。并且,发向队列的报文的流量总是忽大忽小,使线路上的流量总在极少和饱满之间波动。
  为了避免拥塞,在网络没有发生拥塞以前根据队列状态进行有选择的丢包,当某个TCP连接的报文被丢弃,开始减速发送的时候,其他的TCP连接仍然有较高的发送速度。这样,无论什么时候,总有TCP连接在进行较快的发送,提高了线路带宽的利用率。随机早期检测(Random Early Detection, RED)就是这种用于早期避免拥塞的方法。本文探讨RED的原理极其在拥塞避免中的应用。
  
  2 RED算法原理
  早期随机检测算法是是目前最有名、应用最为广泛的拥塞避免算法。它的思想如下:
  (1)如图1所示,为每个输入流设置一个队列。但每个出口链路都设有输出队列。
  图1 RED输入输出队列
  (2)在输入队列处定义两个阀值Lmin、Lmax。其中Lmin是最小队列阀值, Lmax是最大队列阀值。
  (3)平均队列长度:
  其中L为当前队列长度,WL为当前队列长度加权系数,满足0<WL<1,Rold为平均队列长度的先前估算值,Rnew为当前的平均队列长度。
  (4)数据包丢弃率P(L), P(L)是该队列的平均队列长度的线性函数。分组丢弃概率的计算公式如下:
  P(L)=maxp×(Rnew-Lmin)/(Lmax-Lmin)
  其中maxp是预先设置的标记(丢弃)概率,P(L)为当前分组标记概率的计算值。
  图2 队列长度与数据包丢弃率
  (5)每到达一个数据包就计算该队列的加权平均值。
  如果 ≤Lmin,P(Lmin)=0,将到达的数据包接纳到队列中。
  如果Lmin≤ ≤Lmax,则从队列中的随机地选出一个数据包,丢弃该数据包的被概率为P(L)。
  如果Lmax≤ ,P(Lmax)=1,丢弃到达的数据包。
  
  3 RED算法应用
  RED算法基于平均队列长度预测可能到来的网络拥塞,并采用随机选择的策略对分组进行标记(或丢弃该分组,这是为了与早期TCP协议中拥塞控制机制相兼容),在拥塞尚未出现时提示端系统降低其发送速率,以达到避免拥塞的目的。同时,由于RED算法随机标记到达的数据分组,使不同TCP流的拥塞相应异步化,因而解决了TCP流的全局同步问题。
  RED算法采用完全共享策略和单队列结构对到达的分组进行排队。分组到达时,RED算法采用指数加权平均算法计算系统当前的平均队列长度,作为拥塞预测的依据,并依此计算该分组的标记(或丢弃)概率。根据平均队列长度的计算公式:Rnew=(1-Wq)×Rold+ Wq×q
  RED算法采用平均队列长度作为判断是否拥塞的依据,平滑了突发流量到来时对算法的影响。在网络流量突然增大的情况下,由于平均队列长度的计算采用指数平均算法,同时Wq参数的数值一般设置得较小,使得平均队列的长度变化得很缓慢,不会突然增大而导致大量分组丢弃,提高了系统对于突发流量的适应性。
  RED算法设定两个控制阀值Lmin和Lmax, 当平均队列长度avg小于最小阀值Lmin时,所有到达分组都将被允许进入队列,当Rnew超过最大阀值Lmax时,所有到达分组将直接标记(或丢弃);而当Rnew介于两个控制阀值之间时,将依据一定的概率标记(或丢弃)到达的分组。
  从公式P (L) =maxp×(Rnew-Lmin)/(Lmax-Lmin)和图2可以看出,RED算法的丢弃概率随平均队列长度的变化满足分段线性关系。在算法的实际实现中,为了使被标记的分组散布得更均匀,对标记概率可以作一些修正,修正后的分组标记概率使得两次分组丢弃之间到达的分组个数满足平均分布,有效地平滑了分组的标记过程。
  直接采用队列的长度和低限、高限比较并进行丢弃(这是队列的实际长度),将会对突发性的数据流造成不公正的待遇,不利于数据流的传输。所以,在和低限、高限比较并进行丢弃时,采用队列的平均长度。平均队列长度既反映了队列的变化趋势,又对队列长度的突发变化不敏感。避免了对突发性的数据流造成不公正的待遇。这里需要指出,平均队列长度与实际队列长度单位不同,不可简单比较。所配置的最大、最小阀值是用来和平均队列长度比较的。
  同时需要注意的是,RED算法对控制参数敏感,难以优化参数设定。算法的性能对控制参数和网络流量负载的变化非常敏感。在用户流增大的情况下,RED算法的性能会急剧下降。
  因此要想有效的运用这种算法,避免网络拥塞的发生。必须恰当的选择WL, Lmin, Lmax, maxp等参数。比如,
  Wq≥0.001
  Lmax≥2×Lmin
  Lmin≥maxp
  在此推荐以上设定方法。有关参数调节的详细内容请参考文献。[4]
  图3是RED 算法效果的一个例子,表明尾部丢失与RED的平均队列长度的比较结果。有关尾部丢失与RED的平均队列长度的比较结果的详细内容请参考文献。[8]
  从图3可以看出RED控制了队列的长度,其结果表明可以抑制拥塞的发生。
  
  4 结论
  RED算法采用随机丢弃策略,避免了尾部丢弃的方式而引起的TCP全局同步。通过设定队列的低限和高限。当队列的长度小于低限时,不丢弃队列。当队列的长度在低限和高限之间时,RED开始随机丢弃报文。队列的长度越长,丢弃的概率越高。当队列的长度大于高限时,丢弃所有到来的报文,最终通过控制队列的长度,来抑制拥塞的发生。
  图3 尾部丢失与RED的平均队列长度的比较结果
  参考文献:
  [1]RFC 2474,Definition of the Differentiated Services Field (DSField) in the IPv4 and IPv6 Headers.
  [2]B Nandy,J Ethridge,A Lakas,et al.Aggregate Flow Control: Improving Assurances for Differentiated Services[C].Proc.of IEEE INFOCOM,2001.
  [3]RFC 1633,Integrated Services in the Internet Architecture: An Overview.
  [4]S.Floyd, V.Jacobson. Random early detection gateways for congestion avoidance, IEEE/ACM transaction on Networking vol.1,no. 4,pp. 399-408,Aug-95.
  [5]S.Golestani.Network delay analysis of a class of fair queuing algorithms, IEEE J. SAC vol.13, no.6 Aug-95.
  [6]Cisco System. Distributed weighted random early detection. http://cco.cisco.com.
  [7]Floyd S, Jacobson A report on some recent developments in TCP congestion avoidance.
  [8]RFC2309[105].
  [9]任丰原.RED算法的稳定性:基于非线性控制理论的分析[J]. 计算机学报,2002,(12):1302-1307.
  [10]李琳.Internet上IP QoS的研究[J].计算机工程与设计, 2002,(5):15-17.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:组件是对数据和方法的简单封装,组件有自己的属性和方法,使用组件可以实现拖放式编程、快速的属性处理以及真正的面向对象的设计。组件技术日益成为软件开发新技术。本文详细介绍了动态网页开发中使用ASP组件的优势,ASP组件的特点,开发的工具以及一般开发流程。并以文件读取ASP组件为例,对Visual Basic中组件的开发作了具体阐述,并应用于Web应用程序。本文对了解ASP组件构成,以及利用组件进
期刊
摘要:本文主要介绍OllyDbg调试器的常用命令的使用,通过设置API断点,对应用程序的反汇编调试,加深对OllyDbg调试器的了解和操作。  关键词:调试器;断点;反汇编   中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)05-11307-02    1 引言  很多应用程序都没有给出源代码,在没有源代码的情况下,能否修改一个应用程序的界面、改变它的工作流程呢?通
期刊
摘要:本文首先比较分析了B/S模式下几种常见的报表打印解决方案,结合在实际开发中遇到的问题,详细阐述了如何综合利用多种方法来解决具体的问题,并给出了相关实现代码。   关键词:B/s;报表打印;Asp.Net  中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2007)05-11300-02    1 引言  随着互连网的普及,B/S模式的应用程序获得了广泛的应用,在这种模式
期刊
关键词:EXCEL;题录文摘;文献;应用  中图分类号:TP39文献标识码:A文章编号:1009-3044(2007)05-11331-01  题录文摘型文献是我们常用的一种二次文献。我们在文献资料的利用过程中常需将题录文摘型文献转换成数据表格式,如果用EXCEL处理这种过程,将会给我们带来极大的便利、提高工作的效率。本文以实例对此进行阐述。    1 材料  以《中国生物医学文献光盘数据库(CB
期刊
摘要:介绍了如何在VB中调用SetWindowPos函数制作TopMost窗体的过程,详细描述了怎样声明SetWindowPos函数和SetWindowPos函数的具体功能,并给出了程序代码。  关键词:VB;SetWindowPos函数;TopMost窗体  中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)05-11326-01    1 引言  有时应用程序需要一个
期刊
摘要:从传统XML数据流查询处理中存在的问题出发,设计了XML数据流主动服务系统的框架模型,并提出了系统的实现策略,为用户快速、准确的找到所需信息提供了途径。  关键词:XML;XML数据流;主动服务;查询处理  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)05-11275-02    1 引言  随着XML逐渐成为信息描述和数据交换的事实标准,网络数据流信息会以
期刊
摘要:本文介绍了射频识别技术,以沃尔玛为例分析了在供应链中应用RFID技术会极大提高物流的效率,指出了它是现代物流信息化建设中基础数据获取的重要手段,并分析了RFID技术在供应链应用中的优势及前景。   关键词:RFID技术;射频识别;供应链   中图分类号:TP391文献标识码:A 文章编号:1009-3044(2007)05-11309-02    1 引言  RFID是Radio Frequ
期刊
摘要:数字视频的同步不同于模拟视频的同步。传统的同步分离技术具有其局限性,不适用于数字视频。本文以ITU-656为例,简要介绍了其数据格式和同步原理,并分析了如何用VERILOG HDL编程提取其行、场同步信息,最后给出了部分核心代码和结果的波形图。  关键词:同步;数据流;SAV;EAV;状态机  中图分类号:TP391.4文献标识码:A文章编号:1009-3044(2007)05-11329-
期刊
摘要:文章从当前对软件开发过程的需求及动向出发,提出了UML 柔性软件开发过程的概念,并给出了相应的UML柔性软件开发模型。  关键词:UML;柔性软件;开发过程  中图分类号:TP311.52 文献标识码:A文章编号:1009-3044(2007)05-11312-02    1 引言  统一建模语言UML是一种直观化、明确化、构建和归档软件系统产品的通用可视化建模语言。它捕捉了构建系统的有关决
期刊
摘要:远程调试是调试嵌入式系统的基本方式。GDB是一款被广泛使用的调试器,但是GDB的远程调试方案不能完全满足调试系统开发中的调试需求。文中介绍了一种利用ARM处理器硬件调试模块,扩展GDB远程调试功能的方案。并以ARM920T处理器为例,描述了该方案的设计与关键功能实现原理。  关键词:嵌入式开发;调试;GDB;ARM  中图分类号:TP368文献标识码:A文章编号:1009-3044(2007
期刊