文献标识码:A
文章编号: 0258-7998(2013)06-0100-03
目前在Internet中广泛使用且较为成熟的算法是TCP Reno,它通过观测发送端数据包的丢失来估计当前网络的可用带宽,调整拥塞控制窗口以调节发送速率。TCP Vegas是TCP Reno的改进算法,其在发生丢包之前就可以根据往返时间RTT(Round Trip Time)来调整窗口大小。TCP Vegas比TCP Reno能够更好地利用带宽,且吞吐量稳定[1]。但是其自身也存在一些无法解决的问题,如公平性、响应不及时以及为保持吞吐量的稳定而不能最大限度地利用带宽等问题,从而很大程度地限制了它的实际应用性。
以往的研究中,大多只对TCP Vegas的某一方面进行了改进[2-3],虽然效果有所提升,但不能从根本上改变TCP Vegas存在的问题。本文通过建立TCP Vegas网络的数学模型,从理论上分析了TCP Vegas在拥塞避免阶段的竞争能力处于明显劣势的原因,并提出一种TCP Vegas拥塞避免机制的改进算法,分别从数学模型分析与网络状况仿真等两个方面验证了改进算法,该算法可以改变TCP Vegas拥塞避免机制所带来的固有问题。
TCP Vegas根据预期传送率和实际传送率之间的差异值来调整cwnd的大小。当diff的值大于β时,意味着传送速率太快,应该减小cwnd的值以减缓传送的速率。反之,当diff的值小于α时,则表明传送速率较慢,应该加大cwnd的值,以增加传送的速率。
2 TCP Vegas存在的不足及原因分析
(1)路径变更问题。由于Base_rtt是最小的回路响应延时。当文件传输过程中路径发生变化时,如果新的路径有一个较长的延时,TCP Vegas连接不能推断这个长的rtt是由拥塞还是变更路径造成的。由于TCP Vegas把rtt的增大都视为拥塞造成的,因此减少了拥塞窗口,进而导致吞吐量退化。
(2)不公平性问题。 由于期望吞吐量的计算是基于
Base_rtt的测量。当新的连接开始发送数据而其他的连接仍然存在时,其Base_rtt必定会大于其他连接的Base_rtt,因此它比其他的连接更容易增加拥塞窗口。新的连接能够获得更高的带宽,从而导致在TCP Vegas连接中带宽的不公平分配。
(3)带宽利用问题。由于TCP Vegas为了保证其发送速率的稳定性,将rtt中的最小值作为Base_rtt来计算期望吞吐量,在很大程度上限制了发送窗口的增大,从而不能最大限度地利用有效带宽,在保持稳定性的同时,牺牲了带宽利用率。
(4)响应不及时问题。由于TCP Vegas拥塞避免阶段所使用的rtt为所有rtt的平均值,因此rtt的变化不能随着实时rtt的变化而及时变化,导致TCP Vegas对现有网络拥塞状况感知比较迟缓,不能对网络变化及时做出响应。
(5)不兼容性问题。当TCP Vegas和TCP Reno共享一个瓶颈连接的时候,TCP Reno持续地增加窗口大小直到检测到一个包的丢失。随着TCP Reno窗口的不断增大,链路中rtt的值会迅速增大,而TCP Vegas则认为这是拥塞信号,减少拥塞窗口,因此,TCP Reno会窃取TCP Vegas的带宽,这种不兼容性限制了Vegas的采用。
3 TCP Vegas拥塞避免机制的算法改进
在TCP Vegas-N中,对Base_rtt和rtt的值选取方式做了改进,使其能够与网络情况动态联系起来,并改进了diff的计算方法,使其更能及时准确地反应网络状况,从而较好地弥补了上述缺点,改进部分的代码如下:
将rtt的取值由平均值改为实时值:
rtt = currentTime - v_begtime_;
将Base_rtt由最小值改为rtt的加权值,使Base_rtt随着rtt变化而及时变化:
if (rttLen ≤ 1)
Base_rtt = rtt;
else
Base_rtt = Base_rtt*a+rtt*(1-a);
其中a为0~1的加权因子,a值越小,Base_rtt随rtt的变化越及时(本文实验中a的取值为0.3)。
用新的计算公式来计算diff值:
b= Base_rtt/rtt;
diff=(1-b*b*b)*cwnd(t)+c;
其中c为常数,本文实验中取值为0.999 999 999。α取1, β取3。
4 仿真实验和性能分析
为了验证改进算法的有效性,本文利用网络仿真软件NS2基于图1中的拓扑结构对原始拥塞控制算法和改进算法进行了仿真实验对比。
实验2:验证公平性问题。建立两条链路,两条链路相隔5 s开始,时间设为100 s。
图4为TCP Vegas两条链路相隔5 s后出发的拥塞窗口情况,后开始的链路的Base_rtt大于先前的Base_rtt,从而将会更大地增加发送窗口,导致了不公平性的发生。图5为改进后的TCP Vegas拥塞窗口情况,保持了良好的公平性。
实验3:验证响应不及时问题。建立三条链路,两条链路在0秒同时开始,第三条链路在第100秒开始,第200秒结束,总时间设为300秒。
在图6中,当第三条链路在第100 s开始时,TCP Vegas只有第一条链路感知到了网络拥塞变化,并降低了发送窗口。在第200秒时,当第三条链路结束发送,前两条链路仍然保持原来发送窗口不变。而在图7中,TCP Vegas-N可以根据网络拥塞情况及时做出反应,既保证了各条链路的公平性,同时又充分利用了有效带宽。
本文从Base_rtt和rtt的值选取方式入手,通过改进TCP Vegas拥塞避免算法,立足于解决TCP Vegas的固有问题。仿真实验表明,改进后的算法有效地解决了TCP Vegas本身所存在的公平性、路由更换、带宽利用和响应不及时等问题。本文给出了详细的算法描述,该算法只需在发送端进行修改,不需要修改中间路由器,易于网络实施。
参考文献
[1] Chan Yicheng, LIN C L,CHAN C T,et al. Improving performance of TCP Vegas for high bandwidth-delay product networks[C]. Proc of the 8th International Conference on Advanced Communication Technology.2006:464.
[2] 李鹏,陈元琰,罗晓署.无线异构网络环境中基于拥塞状态区分的TCP Vegas改进算法[J].计算机应用,2010,30(2):309-311.
[3] 王云涛,方建安,张晓辉.基于TCP Vegas的网络拥塞控制改进算法[J].计算机应用研究,2009,26(12):4645-4647.
[4] BRAKMO L S, O′MALLEY S W, PETERSON L. TCP Vegas:New techniques for congestion detection and avoidance[J].IEEE/ACM Transactions on Networking,1994,24(4):1024-1035.