摘要:在高带宽时延乘积网络中,现有TCP协议由于其使用的拥塞控制机制使得数据流长时间以低速率发送数据,不能有效利用网络带宽,造成带宽利用率随着带宽的增大而下降。对高带宽时延乘积网络中TCP的性能进行仿真,结果表明在该网络环境中使用TCP传输数据不能有效利用网络带宽。最后详细分析拥塞控制机制造成TCP使用带宽利用率低的原因。
关键词:高带宽时延乘积网络;TCP;拥塞控制;AIMD
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)04-0721-03
The Simulation and Analysis of TCP’s Performance in High Bandwidth-Delay-Product Networks
LU Li-qiong, WU Dong
(School of Information Science and Technology, Zhanjiang Normal College, Zhanjiang 524048,China)
Abstract: Because of the congestion control, TCP will send the small data for a long time in High Bandwidth-Delay-Product Networks. So, TCP cannot use the bandwidth efficiently. And, the utilization rate will be decrease with the bandwidth increased. The simulation of the performance of TCP in High Bandwidth-Delay-Product Networks has show that TCP cannot use network bandwidth effectively. We analyze why congestion control influence TCP to use the bandwidth in the end.
Key words: high bandwidth-delay-product networks; TCP; congestion control; AIMD
TCP是目前Internet上使用最广泛的一种传输协议,根据MCI的统计,Internet上总字节数的95%及总数据包数的90%使用TCP协议传输。TCP的目的是为了解决Internet的稳定性、异质性(接受端缓冲区大小、网络带宽及延迟等)、各流之间享用带宽的公平性、使用效率及拥塞控制等问题,从而为Internet提供可靠、健壮(robust)的端到端通讯。Internet近十年来的迅猛发展证明TCP协议在设计上是成功的。
目前,随着吉比特网络走出实验室,进入实际应用阶段,其技术得到进一步发展。技术的发展促使吉比特网络在主干网中使用,逐步形成高带宽时延乘积网络。高带宽时延乘积网络表现出许多不同的特征,除了带宽高、时延长外,最明显的是网络不能满足某些TCP连接达到稳定状态时需要的最小丢包率。例如,对一个标准的包的大小为1500bytes、RTT为100ms的TCP连接,若要在带宽为10gbps的网络中达到稳定的状态,则平均需要一个83333 segments的拥塞窗口,并且在5,000,000,000个包中只能有一个包丢失,或者说,平均1.6个小时中至多只能产生一次拥塞[1]。对当前的高带宽时延乘积网络,这个要求显然很难满足。
毫无疑问,计算机和通信技术的不断进步将推动网络的发展,但如何有效的利用现有网络也是目前面临的难题。类似网格计算等应用如要在科学研究中发挥巨大的作用,就要求其使用的网络能高效的进行远距离超大数据集传输[2]。可实践统计数据表明,在已有的高带宽时延乘积网络中,需要大量数据的应用往往使用带宽的效率很低,只能获得很小的可用带宽,无法满足其传输超大数据集的要求。造成这种现象的根本原因是当前网络中使用的传输协议依然是TCP协议。这个针对过去每秒几K字节的网络而设计的协议,虽然在高带宽时延乘积网络中显示了它诸多的缺点,但由于它比较容易实施以及一些涉及网络经营商的经济问题,TCP协议仍被广泛应用,因此由它带来的影响不可避免的存在于当今的高带宽时延乘积网络中。
本文首先使用NS2[3]仿真平台仿真高带宽时延乘积网络中TCP的带宽使用效率。结果表明在这种环境中使用TCP不能有效利用可用带宽来传输数据,绝大部分带宽被浪费。然后详细分析拥塞控制机制造成TCP带宽利用率低的原因。
1 性能仿真
1.1 仿真环境设置
文献[4]指出,网络仿真研究中的参数设置都存在一些隐含假设,由此得到的仿真结果可能影响对问题的研究。为此,在进行仿真研究时,必须正确设置所用的仿真参数。该文研究的是在高带宽时延乘积网络中TCP带宽的使用效率。由于真实的Internet网络结构是十分庞大复杂的,为了使仿真的网络能够尽可能的反映真实网络的物理性能,我们选择图1所示的网络结构进行仿真。S表示源端,D表示目的端,仿真时使用了15个源端和15个目的端,它们与路由器连接的链路带宽是1Gbps。路由器R1和R2使用去尾(Drop Tail)丢弃策略,它们之间的链路L带宽为10Gbps,其利用率是本文主要关心的对象。为了跟其它网络中TCP使用带宽效率相比,我们还对链路L的带宽分别为100Mbps、622Mbps、2.5Gbps等进行了仿真。
在图1中,所有的TCP流都经过链路L ,那么在a处会形成网络瓶颈,有可能发生网络拥塞。为了避免产生全局同步现象,设置每个TCP流有不同的起始时间、终止时间和不同的数据传输量。该文在仿真中设置了三种类型的TCP数据流:1)10个源端和目的端之间产生长时间的FTP流,整个仿真过程中持续不断的发送数据。2)3个源端和目的端之间产生短暂的FTP流,在较短时间内传输大量的数据。3)2个源端和目的端之间随机产生小型的WEB流。后两种数据流的出现将有可能引起链路L发生拥塞。该文还关注第一种数据流的传输过程,并在后面小节对其进行分析。整个仿真过程持续1小时。
图1 仿真拓扑结构
1.2 仿真结果
图2显示了不同带宽的链路L的带宽利用率。当链路带宽为100Mbps,利用率为88%;当链路带宽为622Mbps,利用率为83%;当链路带宽为10Gbps,利用率为40%。可以看出链路L的带宽在增大,但其利用率却在减小。图3 显示了10Gbps链路的利用率随时间变化情况。可以看出,建立连接后,随着时间的增加,利用率增大,但其最大仅为40%。说明在高带宽时延乘积网络中,绝大部分带宽被浪费,没能得到利用。
图2 不同带宽链路的利用率 图3 10Gbps链路的利用率变化情况
图4和图5是仿真过程中一个长时间的FTP流的拥塞窗口及其吞吐量的变化图。拥塞窗口的几次突变是由单个或多个丢包引起的,间接导致发送速率的变化,吞吐量也因此受到影响。该流的RTT时间是114ms。图6是该数据流前50秒拥塞窗口变化情况,可以清楚的看出慢启动阶段拥塞窗口的增长速度比在拥塞避免阶段要快,但数据流很快结束慢启动进入拥塞避免阶段。图7是该数据流前50秒内发送的数据包个数和收到的ACK个数随时间变化情况。两个数不相等,说明目的端并不是对收到的每个数据包都发ACK,而是使用延迟ACK对数据包进行确认。
图4 单个TCP流CW的变化 图5 单个TCP流的吞吐量变化
图6 前50秒的CW变化情况 图7 前50秒发送的数据包和收到的ACK个数
2 结果分析
上述图2显示的链路利用率的变化并不是因为仿真过程中传输数据量的设置引起的,而是由所使用的TCP协议造成的。TCP协议使用了两种影响带宽利用的控制技术:流量控制和拥塞控制。流量控制使目的端可以限制源端发送的数据量,防止源端发送的数据使目的端过载。拥塞控制是为了避免网络过载影响端系统使用网络而采取的调节数据流量的手段。如今,目的端、源端具有几乎相同的处理能力,流量控制影响不大,因此拥塞控制成为造成高带宽时延乘积网络带宽利用率低的主要因素。TCP协议使用一种基于窗口的和式增加积式减少(Additive Increase Multiplicative Decrease,AIMD)的拥塞控制机制,其通过调整拥塞窗口(Congestion Window,CW)来限制每次能够发送的最大分组数,控制发送速率,达到调节数据流量的目的。TCP协议的拥塞窗口调整机制如下[5]:
拥塞避免阶段,收到一个新的Ack:[CW=CW+aCW] (1)
发现丢包:[CW=CW-b×CW] (2)
慢启动阶段,收到一个新的Ack:[CW=CW+c] (3)
如果a、b、c都以最大段长度(Maximum Segment Size,MSS)为单位,则加性因子a=1,乘性因子b=0.5,慢启动加性因子c=1。下面分析这种控制机制对TCP使用带宽的影响。
2.1 达到高发送速率需要时间长
一个新建立的TCP连接,假设没有收到重复的ACK和重传时钟超时信号,其发送速率将在慢启动和拥塞避免阶段随着CW的增加不断增大。CW的增加速度影响着发送速率增大的速度。从CW的调整公式(3)和(1)得知,慢启动阶段CW呈指数增加,拥塞避免阶段CW呈线性增加。虽然CW在慢启动阶段增加的速度比拥塞避免阶段要快,但因为慢启动域值设得太小,TCP连接很快结束慢启动进入拥塞避免阶段,从而减慢了CW的增加速度,限制发送速率的增大。拥塞避免阶段中CW的增加方式让TCP连接需要很长时间才使发送速率达到最大。如图6所示,在1.455秒连接结束慢启动进入拥塞避免阶段,CW增加速度减慢。如图4所示,CW经过26分54秒才达到最大,这时发送速率也相应的达到最大。
2.2丢包时发送速率减得太快
虽然现有的TCP协议使用了快速重传机制,能够通过收到几个相同的ACK判断发生丢包,减少等待超时重传丢包的时间。但其检测到丢包时使用公式(2)的窗口调整方式将CW减半,并在重传丢失的数据包之后进入拥塞避免阶段,导致发送速率恢复时间过长。这种不考虑网络实际状况而盲目执行积式减少CW的调整方式使TCP流不能长时间使用高发送速率。如图4显示,在1728秒后由于发生多次丢包,CW多次减半,到3420秒时CW才恢复原值,恢复时间为28分12秒。
2.3延迟ACK减慢发送速率增大的速度
无论是在慢启动还是拥塞避免阶段,CW都是在源端收到ACK时增加的,ACK的发送方式将影响发送速率的增大。公式(1)成立的条件是目的端对收到的每个数据包都发ACK。根据公式(1),可以推导出公式(4),用于计算TCP连接在拥塞避免阶段CW到达某个值所需要的时间。
[] [T=(CW2-CW1)×RTTa] (4)
其中,T是所需时间; CW1是CW增加前的值,CW2是要增加到的值,单位都是字节; a是在拥塞避免阶段每个RTT时间内CW增加的值,和公式(1)中的a相等,是一个MSS的大小。在高带宽时延乘积网络中,MSS等于1460字节。根据公式(4),计算得到上述的TCP流从65535字节(慢启动和拥塞避免分界点)增加到377410字节需要时间为24.35秒。但如图6显示,该增加过程需要时间为48.54秒,大于计算值。这是因为目的端不是对收到的每个数据包都发ACK(可从图7得知),即延迟ACK造成的。由此可见,虽然延迟ACK能够减少ACK数量,但延迟确认减慢了CW的增加速度,延长了发送速率增大的时间。
2.4 对丢包过于敏感
网络中存在两种类型的丢包:随机丢包和拥塞丢包。第一种丢包本不会对网络的使用造成太大的影响,可TCP只是简单使用丢
(下转第748页)
(上接第723页)
包作为网络拥塞的判断依据,没有关心丢包的原因,造成TCP连接对丢包不加区分的采取公式(2)调整CW,带来一些与网络实际情况不符的控制结果。因此对随机丢包和拥塞丢包都十分敏感的TCP连接,采用CW积式减少方式加剧了对发送速率的影响。并且,这种敏感特性造成TCP流不稳定。图5显示了TCP流吞吐量振荡的情况。
在高带宽时延乘积网络中,一个流如要最大的利用带宽,必须要有高的发送速率和小的丢失率[6]。从上面的分析得知,TCP协议使用一种基于窗口的AIMD拥塞控制机制调整CW,间接控制发送速率。但这种机制对CW的调整存在上述四个问题,使流长时间以低发送速率发送数据,从而影响带宽的使用。
3 结束语
通过对高带宽时延乘积网络中TCP的性能进行仿真,说明在该网络环境中使用TCP传输数据不能有效利用网络带宽。并详细分析了TCP协议影响带宽使用的原因是,TCP使用的拥塞控制机制对丢包过于敏感、使用延迟ACK、丢包时发送速率减得太快等策略,使流长时间以低速率发送数据。已有的理论分析指出,TCP不适合在高带宽时延乘积网络中使用。随着新应用新需求的发展,人们期望在高带宽时延乘积网络中能有好的并且易于推广的协议出现,从而引发了基于速率的拥塞控制和在应用层进行拥塞控制两类研究热潮[6][7]。我们下一步的工作是要研究如何更好的使用基于速率的方式进行拥塞控制。
参考文献:
[1] Mascolo, S,Casetti C, Gerla, et al. TCP Westwood: End-to-End Bandwidth Estimation for Efficient Transport over Wired and Wireless Networks[J]. MOBICOM 2002.
[2] Julian J, Bunn John C, Doyle Steven H, et al . Ultrascale Network Protocols for Computing and Science in the 21st Century[DB/OL].
[3] The Network Simulator,ns-2[EB/OL]. http://www.isi.edu/nsnam/ns/index.html.
[4] Sally Floyd, Eddie Kohler. Internet Research Needs Better Models[Z]. HotNets-I, 2002.
[5] 谢希仁,计算机网络[M]. 5版.北京:电子工业出版社,2010:205-212.
[6] 胡忠胜, TFRC拥塞控制研究[D].桂林:广西师范大学,2012.
[7] 汤伟.基于通信网络的物联网系统研究[D].北京:北京邮电大学,2012.