RED实验报告.docx
《RED实验报告.docx》由会员分享,可在线阅读,更多相关《RED实验报告.docx(8页珍藏版)》请在冰豆网上搜索。
RED实验报告
实验名称:
RED算法分析
一、RED算法提出背景
当网络上开始出现拥塞的时候,路由器的缓存就充满了,于是路由器就开始丢弃分组,对于TCP通信量,这就是进入慢启动阶段的一个信号,这样就可以减轻网络的负载和缓解拥塞。
但在这种情况下有两个困难,第一,丢失的分组必须重传,这就又增加了网络的负载,并对TCP的流增加了明显的时延。
更严重的发生全局同步现象,当出现通信量突发时,队列就排满了,然后就丢失很多的分组,可能出现的结果就是有许多的TCP连接受到影响,接着就进入了慢启动。
这样会引起网络通信量的急剧下降,所以在一段时间内,网络处在不必要的低利用率的状况。
因为许多TCP连接在大约同一时刻进入慢启动,它们也将在大约同一时刻脱离慢启动,而这将引起另一个大的突发和另一次拥塞的循环。
有一种解决方法就是在路由器中使用更大的缓存以减少丢弃分组的概率,但一方面,当这些大的缓存都充满时,所有的连接上的时延将急剧增大,另一方面,如果通信量基本上是自相似的,那么就不能构造足够大的缓存,大的突发一个接一个地达到,如果拥塞继续下去,而对缓存的需求一直在增长。
一个更好的解决方法应当是能够预计拥塞的开始,并告诉一个TCP连接应当在某个时刻慢下来,然后就测量这一个连接慢下来的效果,在此之后才使另一个连接慢下来,用这种方式,在拥塞开始时,放慢速率是逐渐进行的,因而通信量负荷也是逐渐减轻的,这样对TCP的连接影响也最小,不会出现全局同步。
二、RED算法设计目标
AQM的主要技术目标是在减小排队时延的同时保证较高的吞吐量,具体分析AQM解决的问题主要包括以下几个方面:
(1)早期探测路由器可能发生的拥塞,并通过随机丢弃或标记分组来通知源端采取措施避免可能发生的拥塞。
(2)公平地处理包括突发性、持久性和间歇性的各种TCP业务流。
(3)避免多个TCP连接由于队列溢出而造成的同步进入“慢启动”状态。
(4)维持较小的队列长度,在高吞吐量和低时延之间做出合理平衡。
虽然Brade等人在IETF提出AQM的研究议题是在1998年,但与其密切相关的RED(RandomEarlyDeteetion)算法的研究却是由来已久了,早在1993年,Floyd和Jacobeon就提出了RED算法,当时的主要目的是克服“早期随机丢弃”(EarlyRandomDrop,ERD)网关偏袒突发业务而造成的不公平问题。
因为在提出AQM的研究时,既D是唯一一个能实现它技术目标的算法,所以将其推荐为AQM的唯一候选算法,随后,围绕着AQM和RED的研究逐渐丰富起来。
与AQM相区别,RED的设计目标如下:
(l)拥塞避免,RED的设计是为了避免拥塞,而不是对拥塞做出反应,这样,既D必须检测拥塞的开始,以便使网络维持在一个低时延和高吞吐量的工作区域。
(2)避免全局同步,当得知拥塞开始时,路由器必须决定应当通知哪个连接或哪些连接要进行退避,在当前的实现中,通知时是隐式的,同时还有丢弃的分组。
由于及早检测出拥塞,并且只通知必要的那些连接,因此不会出现全局同步。
(3)避免对突发通信量的偏见,拥塞开始往往是由于到达了来自一个或几个源站的突发通信量而发生的。
这个突发加重了路由器己经在支持的负载,如果只选择一些正在到达的分组来丢弃,那么这种丢弃算法可能是对突发源有偏见,否则应当是对具有同样平均通信量的一些源站进行平等处理。
三、RED算法原理
RED算法使用一个指数权值平均的低通滤波器计算平均队列长度。
平均队列长度和两个门限值比较:
一个下限(minth)和一个上限(maxth);当平均队列长度在上限和下限之间时,每个到来的分组以概率Pa标记,Pa是队列平均长度avg的函数,每当有个分组被标记时,该分组被标记的可能性与该特定节点所要求占用的带宽成比例。
当平均队列长度低于下限时,不丢弃(即丢弃概率为0)到来的分组;当平均队长在下限和上限之间时,以概率Pa丢弃到来的分组;当平均队长超过上限时,则丢弃到来的全部分组(即丢弃概率为1)。
可以看出,RED算法分两部分:
一是计算平均队长,一是计算标记概率。
平均队长的设定影响到网关队列突发度;标记概率则决定网关标记数据包的频度,表明网关当前拥塞程度。
3.1平均队长的计算
RED算法用低通滤波器来计算平均队长,所以由突发业务或者瞬时拥塞导致的队长短期增长,并不会过大的影响平均队长。
低通滤波器是指数加权动态均值,平均值计算如下:
avg=(1-wq)avg+wqq
即
avg=avg+wq(q-avg)
式中avg为平均队列长度;wq为权值,对应于低通滤波器时间常数;q为当前队列长度。
3.2标记概率的计算
初始的分组标记概率Pb是平均队列长度的线性函数。
标记概率有两种方法:
其一,当平均队列长度是常量时,两次标记之间的分组数是几何随机变量;其二,两次标记之间的分组数是统一随机变量。
最初的标记概率计算方法如下:
Pb=maxp(avg-minp)/(maxth-minth)
maxp参量是标记概率的最大值,当平均队列长度到达上限时取。
几何随机变量法。
此法每个分组以概率Pb标记,设X为两次被标记分组之间的分组数,由于每个分组均以概率Pb标记,则:
Prob[X=n]=(1-Pb)n-1Pb(4)
因此,X是一个几何随机变量,并有:
E[X]=1/Pb
平均队列长度是常数时,如果以一定时间间隔标记分组,则短时间内标记太多的分组是不能接受的,两个标记分组之间间隔太久也是不能接受的;因为这些情况都能引起许多节点同时减小发送窗口,从而导致全局同步。
四、参数分析
平均队列长度的公式类似于加权移动平均控制的低通滤波器。
权值
对平均队列长度的影响很大。
这一节是对权值
取值范围的研究。
如果
过大则不能过滤掉太长的队列,从而导致队列的拥塞。
为了方便研究,假设开始到达的分组为空,平均队列的长度为零,然后到达分组的数据包的个数从0增加到L数据包或者超过三数据包。
当三数据包到达后,平均队列长度为
根据Floyd经典论文中提出的参数设定,设定L=50,minth=5。
因此我们通过下列公式可以求出
的上限
我们得到
≤0.0042。
RED算法的设计是为了使平均队列长度始终保持在适当的范围。
如果
太小不能及时控制平均队列长度,这样RED算法不能有效地进行拥塞控制。
五、算法流程图及伪代码
由上可见,RED拥塞控制算法有2个独立的算法组成,其中计算平均队列长度的算法决定了路由器队列容纳突发性数据流的程度;计算丢弃概率的算法决定了在当前拥塞程度下,路由器丢弃分组的频率。
由流程图不难写出RED算法语言描述:
Avq=0,Count=-1;
当有分组到达时:
[
If(队列空)
{
m=f(time-q_time);
Avq=(1-w)m*Avq;
}
else
Avq<—(1-w)*Avq+wq;
If(MINth<=Avq<=MAXth)
{
Count=Count+1;
Pb=maxp((Avq-MINth)/(MAXth-MINth));
Pa=Pb/(1-Count*P);
}
elseif(Avq>=MAXth)
丢弃分组
else
Count=-1;
]
其中:
Avq:
路由器队列平均长度;
q:
当前队列长度。
Pa:
当前分组被丢弃的概率;
Pb:
计算中临时使用的概率。
m:
路由器空闲期间可能发送的最小分组数;
time:
当前时间。
q_time:
队列空闲时间的开始;
f(t):
时间t的一个线性函数;
Count:
上次丢弃分组后收到的分组个数
maxp:
Pb的最大值。
在队列长度介于两个阀值之间的时候,包被丢弃的概率和队列的长度成正比,也就可以引申得到,队列中的包中,流量越大的包越容易被丢弃,这是不公平的,TCP的RTT和发送的频率一般成反比,但是RED算法的丢包率的计算根本不考虑连接属性,只管到达此接口的数据包,这样的话,越是RTT小的连接其数据包越容易被丢弃,但是RTT小的链接一般都比较近,不会造成太大的拥堵。
六、REO算法性能分析
6.1REO算法优缺点
RED算法作为路由器中的拥塞控制机制,发挥了行之有效的作用。
①当存在动态变化的负载时,RED通过控制平均队列长度检测链路当前状态,并采取相应的措施,在平均队列长度超过了最大闰值后就丢分组,可以有效地控制平均队列长度,限制平均时延的大小,允许一定范围的突发。
②RED路由器处采用均匀随机分布丢分组,可以缓解TCP流的“全局同步”现象。
③RED算法能够通过保持较低的平均队列长度吸收突发流,削减了对突发流的偏见。
④由于RED路由器可以控制平均对长,调解短暂拥塞现象,RED更适合于高速网络中具有大窗口TCP连接中,并且可以提高吞吐量和获得低延时。
总而言之,RED是IETF推荐的一种基于路由器的有效的拥塞避免机制,其和传输协议的合作能有效的控制网络上发生的拥塞。
七、实验截图
参数设定
实验结果