1.2.2 算法实现
本部分讨论RED网关的有效实现。我们说明了RED网关算法可以在包到达时仅用少量加法和移位就可以有效被实现。此外,RED网关算法不是严格与传输的包结合的,且它的计算不必在有严格时间限制的包传输通道完成。RED网关算法的许多工作,例如平均队列长度和包标记概率pb的计算可以与包传输并行或时间允许时被网关以低优先级任务计算。这意着RED网关算法不削弱网关处理包的能力,且可以适应越来越高速的输出线路。本算法伪代码如下:
Initialization:
avg←0
count t←-1
for each packet arrival
calculate the new average queue sizeavg:
对每个网关队列的包到达,RED网关都计算其平均队列长度。这可以按如下方法实现:
if the queue is nonempty
avg ← (1 - wq)avg + wqq
else
因为RED网关在包到达时而不是在固定时间间隔计算平均队列长度,当包到达网关空队列时平均队列长度的计算被修正。包到达网关空队列后,网关计算在线路自由时可能已经被网关传输的包数量m。网关把m个包当做已经到达网关空队列来计算平均队列长度。计算方法如下:
m←f(time – q_time)/s
avg ← (1 - wq )m avg
q_time是队列闲时的开始,s是小包的的典型传输时间。整个计算是一个大概的计算,因为它依据的是在某段时间可能已经到达网关的数据包数量。闲时(time-q_time)被计算到一个大概的精度,可以用表检查来得到(1.wq)(time-q_time)/s,该值本身可以是一个2次幂的近似值。
if min t h ≤ avg <maxth,
当一个包到达网关,且平均队列长度avg在两个阈值minth和maxth中间,初始包标记概率pb如下计算:
increment count
calculate probability p a :
pb←maxp (avg- min t h)/( maxth - min t h)
pa←pb/(1.count•pb)
参数maxp,maxth和minth是被提前确定的固定参数。maxth和minth的值被平均队列长度的期望阈值决定,可能有有限的灵活性。然而,固定参数maxp可以很容易的被设置为很多值。
with probability pa:
mark the arriving packet
count ← 0
当一个包到达网关,平均队列长度avg超过了阈值maxth,该到打包被标记。没有对包标记概率的再一次计算。
else if maxth < avg
mark the arriving packet
count←0
else count ←-1
when queue becomes empty
q_time←time
保存的变量:
avg: average queue size
q-time: start of the queue idle time
count: packets since last marked packet
固定参数:
wq: queue weight
minth : minimum threshold for queue
maxth : maximum threshold for queue
maxp: maximum value for pb
p a : current packet-marking probability
q: current queue size
t i m e : current time
f ( t ) : a linear function of the time t
1.3 RED网关的国内外研究现状
1.4 本课题论文章节安排
第一部分为绪论,简要概括了网络拥塞控制及拥塞控制的经典算法RED(Random Early Detection)——早期随机检测的基本思想和算法实现,并介绍了RED网关的国内外研究现状。第二部分为网络仿真平台NS2系统的工作概述。第三部分为NS仿真程序所使用的脚本语言——Tcl语言和Otcl语言的介绍。第四部分包括RED网关仿真的前期准备工作,包括Linux环境下NS系统的安装和运行,然后介绍了不同网络场景下,RED网关的仿真及其相关参数值如延时、丢包率、吞吐量的比较和分析。第优尔部分为RED算法的特点,优势和缺陷。
网络拥塞控制经典算法RED仿真(3):http://www.youerw.com/tongxin/lunwen_8262.html