唐子蛟
(四川理工学院计算机学院,四川自贡 643000)
在复杂网络环境中,引起数据丢包的原因很多,如突发流量、错误传输、误码率、超时、接收分组缓冲区大小及TTL等都会引起丢包[1],这严重影响了网络的服务质量。针对上述问题,本文通过分析2种不同TCP算法(vegas和reno)控制下的数据流在不同时间加入对丢包率的影响[2],说明了新加入的数据流对丢包率的增加有直接的影响,原因是TCP-vegas算法把新进入的数据流认为是发生了拥塞,不能区分突发数据流,所以会造成拥塞避免算法被“误调”,导致丢包率增大,网络性能受到影响。为了更好的研究和学习复杂网络环境中,突发数据流对丢包率的影响问题,本文提出了改进的随机早期预测检测算法(RED:Random Early Detection)结合传输层上的拥塞控制算法来降低拥塞丢包率和改善网络性能的方法[3-4]。
RED算法使用指数加权平均算法来计算平均队列长度,并以此作为判断拥塞的依据。路由队列分组丢包模型如图1所示,队列从路由器的左边端口输入,随着发送端数据速度的快慢,平均队列长度avg也跟着变化,但平均队列长度几乎在最大阈值max和最小阈值min之间变化,如果avg的值在最小门限的右边,其丢包概率为0;如果avg的值在最大阈值的左边,其丢包概率为1,这时进入队列的数据包将全部被丢弃;如果在最大阈值和最小阈值之间,丢包概率就为一个随机概率。如果发现平均长度逼近最大门限值,就通知发送方减少数据发送速度,在丢包之前减小拥塞窗口,从而缓解网络拥塞。在这个过程中,与RED算法效率直接相关的是平均队列长度和概率值的计算。
图1 路由队列分组丢包模型
RED算法在计算平均队列长度avg时,采用了类似低通滤波器带权值的方法,计算公式如下:
其中,qw为权值,是由路由器允许发生的突发流量的大小和持续的时间所决定的,它反映的是流量变换的频率,其值越大反映越灵敏;q为实际队列长度。这样由于Internet数据的突发本质或者短暂拥塞导致的实际队列长度暂时的增长将不会使平均队列长度有明显的变化,从而可以过滤掉短期的队列长度变化,尽量反映长期的拥塞变化。
RED算法中有2个和队列长度相关的阈值:thmin和thmax。计算平均队列长度的目的就是为了反映拥塞状况,根据拥塞的程度来计算丢包概率,丢包概率的计算分2步:
(1)通过对2个阈值和平均队列长度的比较来动态调整丢包率p:
(2)计算上一次丢包到现在已经接收的数据包个数count1,并结合丢包率p,重新计算新的丢包概率pnew:
RED算法存在一些问题,比如:对参数的设置过于依赖;不能区分不同数据流,对数据流的公平性保护存在缺陷;针对突发数据流,没有具体的控制机制;而TCP-vegas算法最大的优点在于具有高带宽利用率和稳定的吞吐量。最大的特色是拥塞状况的判断是通过对数据往返时间(RTT)的估算来预测,但该算法也不能有效的区分突发数据流,在新的数据流加入时也被认为发生了拥塞,导致其通过牺牲自己的流量让出带宽,这样,在复杂的网络中就容易使丢包率增加,影响网络性能。如果在某个时间段内,接入的数据流较多,势必会更加严重地影响网络的性能,甚至直接导致整个网络瘫痪,将它的优势和RED算法相结合,来实现提高网络性能的目的值得我们去研究和探索。
仿真模型如图2所示,在节点0到节点4、节点1到节点5分别应用TCP-vegas和TCP Reno,节点2到节点3为瓶颈链路,带宽为5 Mbps,延时为10 ms,两侧链路带宽均为10 Mbps,延时为20 ms,路由器缓存为100,包大小为552,节点0在0 s开始,节点1在2 s时开始加入,模拟时间持续8 s。
将图2中所示的拓扑结构,进行动画仿真,效果如图3所示。数字代表节点,节点间通过有线连接,主动队列管理算法采用RED算法,ftp0和ftp1代表2种数据流,数据流通过节点2和节点3这条瓶颈链路到达指定目的节点,同时,可以观察到不同分组被对方接收后都会返回ACK帧。在某个时刻节点2处有向下的加粗箭头,它代表此刻在这个节点有数据包丢失的情况发生。
图2 仿真环境拓扑图
图3 丢包动画仿真
在瓶颈链路上设置相对小的带宽以及结合RED主动队列管理算法来观察2种数据分组在节点2处的丢包率和吞吐量,进而分析丢包原因。丢包率对比分析见图4。图中粗线代表的分组在0 s开始,但是在2.3 s时分组的丢包率陡然上升,之后逐渐降低。同时,细线代表的分组丢包率呈快速增高的趋势,直到第6 s分组传输结束后开始缓慢降低。
图4 丢包率对比分析
图5为节点2处的吞吐量,0 s时节点0和节点4之间的通信开始,中间节点2的吞吐量开始增大,直到2 s时,第二个数据流加入,吞吐量才呈现减少的过程。在4 s时,开始一个转折点,细线代表的分组数据量开始平缓增加,粗线代表的分组数据量逐渐减少。
图5 吞吐量对比分析
图5中,在2 s时加入的分组数据导致了先前分组数据量的减少,二者共享瓶颈链路时,不同的分组数据都在竞争带宽。因为TCP-vegas算法是以数据报的往返时间来标识网络拥塞的状态,当有其他数据报进来时,计算所得的RTT值会增加,从而导致在阈值上限时其拥塞窗口减小,降低了网络性能。在二者共存的环境中,TCP-vegas不具备区分拥塞的功能,其他突发数据流的加入都被认为产生了拥塞事件,此时会错误调用拥塞避免算法,牺牲自己的吞吐量,降低数据发送速率来避免拥塞发生,导致了其公平性没有Reno好。这种公平性的优劣取决于算法,改进RED算法让其与TCP-vegas算法更好地协调工作来降低丢包率,从而实现提高网络性能的目的。
为了更好地改善网络性能,降低突发数据流引起的丢包率,需要对突发数据流进行区分。突发数据流引起的丢包是因为接收缓冲区转发的速率小于接收数据包的速率,时延增加及分组被阻塞,最后导致丢包。对于突发数据流,可以通过改进RED算法来加以区分,从而降低丢包的发生。
改进后的RED算法思想描述如下:在新算法中引入负载因子k,该因子的引入可以计算当前时刻瓶颈链路的负载情况,从而能够提前监测突发流量的到来,改进式(2)中第3个表达式如下:
当 k<1时,p=0;当 k>1时,p=1-e1-k;对式(4)、式(5)分析得知:newmin取值为最大和最小阈值的中间值,而负载因子k由平均队列长度和实际队列长度决定,值越大,丢包概率越大。对于突发数据流,avg的值变化较小,q值变化较大,说明负载正在以一个非线性方式增加,而对于突发数据流的结束,avg的值变化较大,q值变化较小,负载逐渐减小,丢包概率将减小,理论上就可以避免突发数据流引起丢包率升高的问题。对改进后的RED算法进行了仿真,仿真结果如图6所示。
图6 改进后算法的丢包率
改进后的RED算法的丢包率明显降低了,vegas算法控制的流量丢包率起伏变化,在4 s时,丢包率跳高上升说明在此刻reno算法丢包率上升对其存在一定的影响,但由于改进的RED算法的协调作用,在瓶颈带宽一定时,丢包率增大,数据流量出现轮询发送的状态,保证了较好的网络性能。在6 s时丢包率有一个升高,但之后快速降低。总之,改进后的RED算法和TCP-vegas相协调能够降低突发流量引起的丢包,从而降低数据丢包率。
通过对复杂网络环境中拥塞丢包率的分析,说明了如何改进RED算法中的丢包概率边界条件,来区分突发数据流,进而减少拥塞丢包,保证在这种网络环境中TCP-vegas和RED算法更好的协调工作。实验表明:(1)合理调整TCP-vegas算法中的拥塞窗口上下门限阈值能够减少拥塞丢包。(2)TCP-vegas算法与改进的RED算法相结合,能够减少公平性差带来的拥塞丢包。
[1]胡晗.基于误码丢包率监测的无线TCP改进[J].计算机应用,2011,31(10):2657-2659.
[2]周铁军,寇小文,李阳.TCP Vegas和TCP Reno的兼容性问题及其解决办法[J].湘潭大学学报,2008,30(4):130-134.
[3]朱春,王塞云.改进的网络拥塞控制策略算法研究[J].计算机仿真,2011,28(12):141-143.
[4]闫二辉,朱敏,丁青,等.一种基于比例因子的TCP Vegas慢启动策略[J].计算机应用研究,2011,28(01):253-255.
[5]王斌,陈元琰,胡愚,等.TCP Vegas拥塞避免机制的改进算法[J].计算机应用,2010,20(9):2486-2487.
[6]李涛.改进TCP拥塞控制算法的仿真及应用研究[J].计算机仿真,2011,28(6):181-184.
[7]高鹏,戴旭初.基于NS的主动队列管理算法的仿真与分析[J].计算机仿真,2006,23(5):98-100.