一、引言 目前,网格的发展越来越受到大家的重视,它们可以在不同国家甚至不同州的机器之间传输甚至到达几千G字节的大文件,将大规模的数据处理分散到世界范围的各个组织中。网格的应用需要高速远距离网络的支持,这可能需要网络速度达到622Mbit/s或是更高。在这种情况下,传统的
TCP拥塞控制算法就不太适用了。这主要有以下三方面的原因:
(1)传统的
TCP拥塞控制机制在高速网络中反应性比较差,这是因为
TCP在高速网络中对分组丢失的反应要敏感得多。这主要是由于它的拥塞避免算法是基于AIMD(Additive Increase Multiplicative Decrease,和式增加积式减少)的。所以一个分组的丢失在高速网络中所造成的后果是很严重的:一个分组丢失被检测出来之后,
TCP连接就会将带宽减半(积式减少),这样就会不止花上几百毫秒或是多达几秒钟,甚至花上几分钟或是几个小时来恢复所有的可用带宽(和式增加)。另外,慢启动也会造成
TCP在高速网络中性能的下降,但是它的影响要比拥塞避免小点。因为通过三个重复的ACK来判断分组丢失的情况要比超时经常得多,因此
TCP连接会花费大多数时间在拥塞避免算法上。
(2)传统的
TCP总是把分组丢失解释为拥塞,而假定链路错误造成的分组丢失是可以忽略的,但是在高速网络中,这种假设是不成立的。当数据传输速率比较高时,链路错误是不能忽略的。由链路错误引起的分组丢失和由网络拥塞引起的分组丢失的可能性是相同的。因此,不能笼统地认为分组丢失都是由网络拥塞引起的。因此,当一个
TCP分组丢失后我们不应该认为就是出现了网络拥塞,拥塞的判断需要两个连续的分组丢失。
(3)传统的
TCP不能使用网络链路的所有容量。这主要是由于在AIMD算法中,
TCP从一个分组丢失到带宽的恢复所用的时间比较长。这是目前所有
TCP版本(
TCPTahoe、
TCPReno、New-Reno、SACK、Vegas等)的一个固有的问题。而高速远距离网络的造价是比较高的,所以对容量的浪费是不可原谅的。
针对以上
TCP传统算法的缺陷,网格计算中的
TCP拥塞控制提出了一个新的带宽使用的公平性原则和增减算法,对于克服传统
TCP在快速远距离网络中的不足起到了很好的作用。
二、带宽减少算法 在适用于网格应用的快速远距离网络中,可以假设连接的可用带宽在相当长的时间(大致是10min到1h)内是保持不变的,这个假设对与其他类型的网络基本上也是成立的。根据这个假设,可以做如下的近似:对于一个长时间的
TCP连接,可用带宽ABW可以看作是一些分段表示的常数。
根据以上的简化模型,我们可以对
TCP和式增加积式减少的带宽增减算法进行修改。在用于网格计算的
TCP拥塞控制中,当一个
TCP连接检测到网络拥塞时(用于网格计算的
TCP拥塞控制,对于拥塞的判断标准是在一个相同的拥塞窗口中至少有两个连续的分组丢失,只有一个分组丢失被认为是链路错误),并不是将带宽减半,而是减少ABWi-ABWi+1,ABWi+1由式(1)得出 =-1
(1)
式中 ABWi- 在阶段i的可用带宽;
C- 链路容量的估计值; ABWi在较长时间(一般式10min到1h)内是常数。由于 ABWi是C的一部分,所以
A i,E αi,(0≤αi≤1)∧(ABWi=αiC) (2)
由式(1)和式(2)可以得到
αi+1= (3)
ABWi-ABWi+1= (4)
式(4)就是用于网格计算的
TCP拥塞控制,采用新的减少带宽的算法,相应传统
TCP的减少算法可以由以下表示
ABWJi-ABWJi+1== (5)
由式(5)可以得出
αi+1=αi /2 (6)
当αi=5%时,由(3)式可得αi+1=4.76%,而由(6)式得到αi+1=2.5%,如果C=622Mbit/s,那么新的算法可以节省14Mbit/s的带宽;当αi=20%时,由(3)式可得αi+1=16.7%,而由(6)式得到αi+1=10%,如果C=622Mbit/s,那么新的算法可以节省41Mbit/s的带宽。所以,当拥塞发生后,新的算法减少的带宽比较少,这样恢复起来也比较快。当αi=0或αi=100%时,也就是当链路中只有一个或有无限多
TCP流时,两种算法取得一致。但是,在网格应用的网络中,这两种情况出现的比较少。
三、带宽增加算法 用于网格计算的
TCP拥塞控制所使用的带宽增加算法有些复杂,它可以分为五种情况来分析:
(1)当链路刚刚经历了拥塞,并且我们假定这个拥塞现象是暂时的,我们首先根据式(4)来减少带宽,然后再通过二分检索法增加带宽到以前的稳定状态:ABWi。如果在这个过程中没有新的分组丢失,那么
TCP连接就应该保持在阶段i,然后根据情况(3)来处理;如果我们检测到同一个拥塞窗口中至少有两个分组丢失,那么
TCP连接就应该从阶段过渡i到阶段i+1,并且根据情况(2)来处理。
(2)当网络出现新的拥塞问题时,我们来得到一个新的带宽稳定值ABWi+1,ABWi+1要比ABWi小。在这种方法中,增加和减少带宽都使用二分检索法,一旦有分组丢失我们就减少带宽,否则就增加带宽。这种方法能比较迅速地使可用带宽稳定到ABWi+1。网络稳定在阶段i+1后,在根据情况(3)来处理。
(3)在这种情况下,
TCP连接以速率ABWi传输数据。当检测到拥塞发生时,就根据情况(1)来处理;如果直到
TCP占用计时器(它的值由经验获得,但一般希望是10min到1h)关闭仍没有拥塞发生,就根据情况(4)来处理。
(4)
TCP已经以速率ABWi传输数据很长时间而没有检测到拥塞,因此我们希望可用带宽增加,进入一个新的阶段i+1,在这个阶段ABWi+1应该比现在的ABWi大。所以,一旦
TCP占用计时器关闭,我们就开始增加带宽到ABWi+1,ABWi+1可以根据式(7)获得=+1 (7)
如果在这个过程中检测到拥塞,就根据情况(1)来处理。
(5)建立一个新的
TCP连接,并且为可用带宽ABW0赋初始值为链路的容量C,然后再根据第(2)种情况来分析。
四、结束语 以上是用于网格计算的
TCP拥塞控制所使用的新的带宽增减的算法,它克服了传统的AIMD算法的保守性,可以较充分地使用链路容量,所以在高速远距离网络中,它的效率比较好。但是这种算法还存在着一些缺陷:链路容量C的估计总是近似的,而且精确度也未知;容量的估计需要花费时间,对于短时存在的
TCP连接,有可能用于容量估计的时间比连接存在的时间还要长;实际的网络中,
路由是会改变的,所以发送端计算出的容量有可能和实际
TCP连接使用的容量不一致。