为了有效地解决网络拥塞的问题,被动式的队列管理机制也就是丢尾算法已经不能满足现有的需求,IETF(Internet Engineering Task Force,互联网工程任务组)提出了主动式队列管理机制(Active Queue Management, AQM)。不同于丢尾算法在队列充满后才丢弃封包,主动式队列管理机制(AQM)在队列充满之前就开始主动丢弃封包,并向源端发送信息使源端降低发送速率,因此能够有效地避免网络拥塞的问题。
主动式队列管理机制(AQM)大致可以分类为:启发式、优化类、控制理论类。启发式包括了RED、ARED、BLUE、AVQ等,基于设计者启发式创造,较易实现但会存在种种不足,如RED的参数选择问题。优化类包括REM算法,是基于优化理论的拥塞控制,利用价格等经济因素限制用户对网络的需求来减少拥塞的发生。控制理论类包括了本文将要进行研究的PI算法,以及PD算法、PID算法、LRED算法、FAFC算法等,基于控制理论,从控制系统稳定性的角度,结合网络性能设计相应的速率控制器。[5]
作为最早被提出的主动式队列管理机制,RED算法是使用平均队列长度来预测早期拥塞的发生,采用随机丢弃的方式来丢弃封包。在网络拥塞发生之间给源端发送早期拥塞信息,提醒进行流量控制,从而避免网络拥塞的产生。RED算法作为第一个主动式队列管理机制,有着开创式的意义,但是也存在不少问题,如公平性问题、参数设置问题和网路性能问题。
在RED算法开创式地提出早期拥塞控制之后,大量的早期拥塞控制算法不断出现,如将RED算法的参数增加自适应性的ARED算法、以过去时刻丢包率和链路利用状态为控制参数的BLUE算法、设置虚拟队列提前丢弃封包的自适应虚拟队列AVQ(Adaptive Virtual Queue)算法等等。但是这些算法也存在很多不足。ARED算法队列波动较大、BLUE算法反应较慢缺乏公平性、AVQ算法稳定性受控制参数影响较大。
考虑到网络环境中的各种偏差值的存在,基于各种控制理论的算法也相继出现,这些算法准确来说并不是控制拥塞,而是通过对队列长度的控制来达到对网络拥塞的控制。PI算法、PD算法、PID算法分别采用了比例积分、比例微分、比例积分微分控制器,是基于反馈控制理论的拥塞控制算法,采用瞬时队列长度作为拥塞标识,引入期望队列的概念作为控制目标,并利用积分、微分控制器进行消除稳态误差。但是由于三种控制器都是静态控制器,因此在网络参数发生变化时,三种算法表现出来的鲁棒性不佳。
1.3 本文的主要内容和安排
本文对网络拥塞情况下的丢尾算法和PI算法进行了仿真、分析和比较。仿真结果表明,相对于丢尾算法,PI算法较为稳定,能够有效避免TCP全局同步化的产生,有较低的延迟时间,可以将队列长度保持在期望队列附近,避免了网络拥塞的发生。全文的安排如下:
第一章简要介绍了网络拥塞及网络拥塞控制的问题和发展,重点介绍了在网络中间节点进行拥塞控制的队列管理机制,及相关算法的一些资料。
第二章主要介绍了丢尾算法和PI算法,其中重点介绍了PI算法的原理和结构,分析了PI算法的优点和缺点,并介绍了一些基于PI算法的衍生算法和PI算法的发展方向。
第三章是关于TCP同步化的仿真,介绍了TCP全局同步化产生原因和影响,并通过NS-2网络仿真软件对丢尾算法和PI算法关于TCP同步化进行仿真,仿真结果表明丢尾算法进行队列管理的链路出现了TCP同步化的现象,而PI算法有效地避免了TCP全局同步化,保持了较高的频宽利用率。
第四章对丢尾算法和PI算法进行了对平均吞吐量、平均延迟时间和队列长度这三个网络性能指标的测量,并对测量结果进行分析比较,得出相对于丢尾算法,PI算法更加稳定,在网络负载较重的环境下,延迟时间更短,能够很好地将队列长度控制在期望队列长度附近,可以有效地避免网络拥塞的发生。 网络拥塞控制中丢尾算法与PI算法的分析比较(4):http://www.youerw.com/tongxin/lunwen_18892.html