TCP拥塞控制与方法改进.docx
- 文档编号:6532008
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:7
- 大小:33.63KB
TCP拥塞控制与方法改进.docx
《TCP拥塞控制与方法改进.docx》由会员分享,可在线阅读,更多相关《TCP拥塞控制与方法改进.docx(7页珍藏版)》请在冰豆网上搜索。
TCP拥塞控制与方法改进
题目:
TCP拥塞控制与方法改进
摘要
如今网络已经离不开人们的生活,发展势头迅猛,网络的终端设备不仅在数量上,种类也越来越多,在此发展之下,保证大量的网络数据传输与网络性能相协调是极其重要的,经典的TCP拥塞控制机制是网络发展历史中人们想出的一种解决网络拥塞的方法,但如何适应当今网络发展的需求相信还是靠人们不断的探索来寻找合适的答案。
本文致力于对经典TCP拥塞控制机制的讨论并提出相应的改进思路。
关键字:
拥塞控制;慢启动;阈值;TCP拥塞窗口;数据包
一、概述
1.1TCP网络拥塞控制
TCP是因特网中使用最广泛的一种传输协议,它是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transportlayer)通信协议,之所以应用广泛一大部分是由于它的可靠性、稳定性,它为通信的双方提供了可靠的端到端的服务,而实现这一可靠服务的便是TCP所具有的可靠传输机制,其中包括重传、序号、确认号、定时、流量控制及拥塞控制。
当网络中存在过多的数据包时,网络的性能就会下降,这种现象称为拥塞。
拥塞导致的直接后果是分组丢失率增加,端到端延迟加大,甚至有可能使整个系统发生崩溃。
1986年10月,由于拥塞崩溃的发生,美国LBL到UCBerkeley的数据吞吐量从32Kbps跌落到4obps(Jacobsonv,1958)。
当网络处于拥塞崩溃状态时,微小的负载增量都将使网络的有效吞吐量(Goodput)急剧下降。
图1-1吞吐量和负载的关系图
图1.1描述了网络负载和吞吐量之间的关系。
当负载较小时,吞吐量的增长和负载相比基本成线性关系,延迟增长缓慢;在负载超过Knee点后,吞吐量增长缓慢,延迟增长较快;当负载超过Cliff点之后,吞吐量急剧下降,延迟急剧上升。
通常将Knee点附近称为拥塞避免区间;Knee到Cliff之间是拥塞恢复区间;Cliff之外是拥塞崩溃区间。
可以看出,负载在肠ee附近时网络的使用效率最高。
拥塞控制就是由网络节点来采取措施避免拥塞的发生或者对拥塞的发生作出反应,使得网络能够传输较大的有效吞吐量,在图1.1中就是使负载保持在知ee附近。
拥塞现象的发生和TCP八P网络的设计机制有着密切都联系。
TCP/IP网络具有如下几个特点:
(1)分组交换(packet-switched)网络。
与电路交换(circul-switched)相比,分组交换通过共享提高了资源的利用效率,但这会引起分组在网络中滞留,造成分组数据可能出现“乱序”现象,增加了端系统处理乱序分组的复杂性。
(2)无连接(onneetionless)网络。
TCP/IP网络中,从网络层的角度来看,节点之间在发送数据之前不需要建立连接。
无连接模型简化了网络的设计,在网络的中间节点上不需要保存与连接到有关信息。
但是无连接模型难以引入“接纳控制”(admissioncontrol)机制,在用户需求大于网络资源时,难以保证服务质量(QOS);无连接也是网络中出现分组乱序的一个主要原因。
(3)“尽力而为”的服务模型。
所谓“尽力而为”的服务,是指网络不对数据传输的服务质量提供保证。
这与网络早期的应用有关,传统的网络应用主要是数据业务,它们对网络性能(带宽、延迟、丢失率等)的变化不敏感,“尽力而为”服务能够满足需要。
但“尽力而为”服务不能很好地满足新出现的多媒体应用的要求,这些应用对延迟、速率等性能的变化比较敏感。
虽然随着科技的发展,网络设备的处理速度不断加快、网络带宽持续增长,但是硬件的建设的速度有时赶不上应用需求的增长。
而且,很多时候,即使局部的网络资源很充足,仍然会出现网络拥塞、分组数据丢失,从而导致性能下降。
这是因为由于互连网络是一个及其复杂的分散系统,网络中总是存在资源“相对”短缺的位置,成为网络性能提高的瓶颈。
网络中拥塞现象发生的原因是“需求”大于“供给”。
网络中有限的资源由多个用户共享使用。
由于没有“接纳控制”策略,网络无法根据资源的情况限制用户的数量;同时,互连网络是一个分散控制系统,由于缺乏中央集成控制,网络无法控制用户使用资源的数量。
目前,因特网上不断增长的用户和应用的数量,必然会导致网络发生拥塞。
虽然拥塞源于资源短缺,但增加资源并不能避免拥塞现象的发生,有时甚至会加重拥塞程度。
例如,增加路由器的队列缓存会增大分组通过路由器的延迟,如果总延迟超过端系统重传时钟的设定值,就会导致分组重传,反而加重了网络拥塞。
图1-2网络的不均衡性示意图
拥塞总是发生在网络中资源“相对”短缺的地方,这反映了互连网络的不均衡性。
这个不均衡性一方面表现在资源的不均衡,如图1.2(a)中带宽分布不均衡:
当s以1MbPs的速率向D发送数据时,在路由器R处会发生拥塞。
另一方面是由于流量的不均衡,如图1.2(b)中带宽分布是均衡的,但当Sl和S2都以1MbPs的速率向C发送数据时,在路由器R也会发生拥塞。
因特网中资源和流量分布的不均衡是广泛存在的,由此导致的拥塞不能通过增加资源的方法解决。
1.2拥塞控制及其研究意义
拥塞控制策略包括拥塞避免(congestionavoidance)和拥塞控制(congestioncontrol)这两种不同的机制。
拥塞避免是“预防机制”,它的目标是避免网络进入拥塞状态,使网络运行在高吞吐量、低延迟的状态下。
拥塞控制是“恢复”机制,它用于把网络从拥塞状态中恢复出来。
在网络控制的研究中,拥塞控制和流量控制是网络的经典问题,但它们两个的概念比较容易混淆。
拥塞控制必须确保网络能进行数据传输,这是全局性的问题,涉及到所有主机、路由器以及所有其他将导致削弱网络负荷能力的因素。
而流量控制只与发送者和接受者之间的点到点的数据传输有关,它的任务是确保一个快速发送方的发送速第一章绪论率不超过接收方的最大接受速度。
可以看到,流量控制的功能实现位于网络的传输层,实现比较简单;而拥塞控制从广义上讲,涉及网络的所有层次,在具体的实现中,拥塞控制一般通过网络层和传输层相互协调来完成。
从不同的角度,拥塞控制可以被分为很多类。
对目前网络拥塞控制研究现状的分类我们将在下一小节中进行介绍。
拥塞控制的研究目的不是要完全避免拥塞,而是研究怎样的拥塞程度是合适的。
这是因为:
TCP/IP网络采用分组交换技术来提高网络链路的利用率,造成路由器的队列缓存经常被占;如果路由器的队列缓存总是空的,虽然传输延迟小,但是网络的利用率也低;如果路由器队列缓存总是被占,传输延迟变大,但是网络利用效率也高。
拥塞控制的目标是实现网络利用率和传输延迟等综合性能指标的最优化。
由此可以看到,通过网络的拥塞控制,可以提高网络的总体性能,保证网络系统长期的稳定性和鲁棒性。
二、经典TCP拥塞机制
2.1网络拥塞的原因及所产生的开销
一般网络之所以会产生拥塞,大致有三个原因:
(1)带宽不足:
当输入带宽大于输出带宽,较低的一方就会出现瓶颈,使数据包在其外堆积,形成拥塞。
(2)路由器缓存空间不足:
几个输入链路同时向一个路由器传送数据包,当路由器输出链路速度较小,使得数据包在路由器缓存队列中排队,时间长了则会超时,发送方会重传,若队列已满再过来的数据包会被丢掉,也会造成重传。
(3)处理器处理能力较弱:
处理器不能及时处理接收缓存中的数据包,TCP有相应的流量控制机制来应对,但是造成的结果也是重传数据包。
拥塞控制更倾向于整个网络的拓扑结构,其规模大,影响广,相应所产生的问题也是巨大的,会影响到整个网络的传输效率,网络拥塞开销有如下几点:
(1)过多的数据包在路由器的队列中产生巨大的排队延时。
(2)数据包延时过长导致不必要的重传。
(3)某个路由器缓存溢出导致的丢包将浪费掉整个上游路由器的工作。
2.2经典TCP拥塞控制机制
2.2.1Tahoe算法
1988年V.Jacobson首先提出了基于“慢启动”和“拥塞避免”的Tahoe算法,这也是最早的TCP拥塞控制算法。
慢启动:
由于发送端不知道网络当前状况,所以在开始发送时如果直接向网络中发送大量数据包,很可能会使网络变得拥塞,这里的慢启动的解决办法是发送方首先发送一个数据包使拥塞窗口(congestionwindow,cwnd)大小初始化为1,每收到一个确认,发送方发送窗口就增加1,像这样发送速率以指数形式增长。
拥塞避免:
在早期的Tahoe算法中,当发送方收到三个重复的ACK或者超时事件发生时所采取的动作都是现将拥塞窗口大小调整为1,将慢启动阈值(ssthresh)设置为当前拥塞窗口大小一半,之后进入慢启动阶段,当cwnd>=ssthresh后进入拥塞避免阶段,此阶段在每次收到一个ACK时只增加1/cwnd个数据包,这样,在一个RTT内,cwnd将增加1,呈线性增长趋势。
2.2.2Reno算法
TCP的Reno算法在Tahoe算法的基础之上采取了对不同丢包情况的不同策略,在发生超时事件后,TCP所采取的动作和Tahoe算法一样。
而发送方收到三个重复的ACK后所采取的动作却与超时事件发生不同。
早期收到三个重复的ACK后所采取的是快速重传算法,算法所采取的策略是把ssthresh设置为cwnd的一半,将cwnd再设置为ssthresh的值(具体实现有些为ssthresh+3)再次直接进入拥塞避免阶段。
而后提出的快速恢复算法是在快速重传算法上添加了一些东西,具体来说快速恢复的主要步骤是:
(1)当收到3个重复ACK时,把ssthresh设置为cwnd的一半,把cwnd设置为ssthresh的值加3,然后重传丢失的报文段,加3的原因是因为收到3个重复的ACK。
(2)收到重复的ACK时,拥塞窗口增加1。
(3)当收到新的数据包的ACK时,把cwnd设置为第一步中的ssthresh的值。
原因是因为该ACK确认了新的数据,说明从重复ACK时的数据都已收到,该恢复过程已经结束,可以回到恢复之前的状态了,也即再次进入拥塞避免状态。
2.2.3其他算法
在1994年,L.S.Brakmo等人提出了一种新的拥塞控制策略:
TCPVegas算法,该算法是通过观察TCP连接中网络的RTT的变化来判断网络的拥塞情况,从而改变拥塞窗口的大小,如果RTT很大,证明网络正在拥塞,这样会减小拥塞窗口的大小,如果RTT的值变小,证明网络逐渐从拥塞中恢复,可适当增大拥塞窗口的大小。
在Reno算法推出后又相继有很多种Reno算法的变种,可见TCP拥塞控制一直是网络研究的重要问题,拥塞控制技术的不断改进将影响着网络未来的发展。
三、对经典TCP拥塞控制机制的改进思路
3.1经典TCP拥塞控制算法中的一些假设情况及所涉及到的问题
在经典TCP拥塞控制算法中,当出现丢包事件发生时(以下泛指收到三个重复的ACK或者超时事件发生为丢包事件),会将阈值设置为当前拥塞窗口大小的一半,之后进入拥塞避免阶段或者将拥塞窗口大小变为1进入慢启动阶段,到达阈值后再进入拥塞避免阶段。
实际上到达拥塞避免阶段,由于要尽量避免网络拥塞事件的发生,此时拥塞窗口大小再以指数形式增长已经不可行了,相比慢启动阶段的增长速度,拥塞避免阶段拥塞窗口增长耗时要多许多。
在这里我们假设一次慢启动阈值为s,发生丢包事件时拥塞窗口大小为w,来进行讨论。
(1)当s>>(w-s),既慢启动阈值远大于拥塞避免阶段所增加的拥塞窗口大小,假设数据包最大长度为1000B,在高速网络环境中假设某一次s=100M,再假设达到阈值后的拥塞避免阶段只经历一个回合,既w=100M+1000B,此时可以看到,慢启动阶段所增加的拥塞窗口大小远大于拥塞避免阶段增加拥塞窗口数量,这时候发生丢包事件,慢启动阈值变为w/2。
上述情况可以看出:
在慢启动阶段过后,仅经历了很小的一段时间的拥塞避免阶段,这样的情况下很有可能在未进入拥塞避免阶段网络就已经拥塞,造成大量的数据包的重传,降低了网络资源的利用率,所以适当的减小新一轮的慢启动阈值,增大拥塞避免阶段的回合数,尽量避免网络在慢启动阶段就发生丢包事件有一定的必要性。
(2)当s<<(w-s),既慢启动阶段阈值远小于拥塞避免阶段所增加的拥塞窗口大小,假设数据包最大长度为1000B,设s=65KB,w=10MB,当发生丢包事件时,也就是拥塞窗口大小为10MB时,阈值将变为w/2。
上述情况的问题在于:
TCP经历了一次相对较长时间的拥塞避免,所以当发生丢包事件时,阈值的大小设定将以拥塞避免阶段为主导因素。
在此,适当的增大新一回合中的慢启动阈值,加大慢启动回合数可以提高网络发送速率,给用户带来更加快捷的服务质量。
3.2对经典TCP拥塞控制算法中慢启动阈值设定的改进方法
为了尽量避免2.1节的这些情况的发生,在这里提出一种对慢启动阈值大小设定的新方法:
步骤如下:
(1)初始化TCP的ssthresh为65KB,cwnd大小为1,发送方开始发送数据;
(2)cwnd>=ssthresh时进入拥塞避免阶段,直至发生丢包事件,此时记录当前cwnd值,定义当前拥塞窗口大小为w,令w=cwnd;
(3)定义变量I=w/ssthresh;
(4)由于I的值在两次测量中相等的概率近似为0,所以可以定义I在区间I的最大值和最小值内的百分比,定义方法如下:
在二维函数图像上用描点记录的方法得出一个网络中的最大I值和最小I值(采样要多,尽量覆盖网络最繁忙时段,及较为空闲时段,图像上的特殊情况点除外),定义Imax=最大I值,Imin=最小I值,定义区间[Imin,Imax],定义I的百分比X,令Xn=In/Imax
表3-1基于I值定义百分比区间
I
I0(Imin)
I2
I3
......
In(Imax)
I值
测量值
测量值
测量值
......
测量值
定义百分比
0%
X1%
X2%
......
100%
表3-1中的测量值不是直接测量I,是由每次测量w与ssthresh的值的商得出来的;
(5)规定新的慢启动阈值区间:
由于Xn可能接近1或者0,所以必须规定百分比的上限和下限,在此规定上限为75%,下限为25%,既当拥塞避免阶段拥塞窗口增大数远大于慢启动阶段拥塞窗口增大数,发生丢包事件后新的阈值设置也不能超过当前的拥塞窗口大小的75%,此做法是尽量保证网络不会在第二次慢启动阶段就发生拥塞,或者直接进入拥塞避免阶段,导致初始拥塞窗口值过大,很少回合内就导致网络拥塞。
设置下限的目的是让新的阈值不会太小,在让网络快速缓解拥塞的同时保证传输速率不会过小。
上下限的大小个根据当前网络的状况适当调整,但上限值不易调整过大,原因也是尽量避免网络过早拥塞,下限值可以适度下调,这两个值的具体调整方法在2.3节作说明。
在此规定下,可设置当发生丢包事件后的阈值:
nst(newssthresh)=(In/Imax)*w当In/Imax大于75%设为75%,小于25%设为25%,所以nst>=w*25%&&nst<=w*75%;
至此就是对慢启动的阈值的一种新的改进思路。
3.3对于改进后的慢启动阈值规定范围的调整思路
在新的慢启动阈值大小改进思路中可以看到其中规定了发生丢包事件时拥塞窗口大小与慢启动阈值之比的上限(75%)和下限(25%),具体的设定可根据具体设定可根据网络状况适当调整。
假设一个网络的状况逐渐趋于良好,此时网络拥塞的可能性较小,这样对于2.2节改进思路中的w的值可能会逐渐增大,也就是每次发生丢包事件时的拥塞窗口大小都比上一次的要增大,这个顶点成一个上升型的趋势,可根据相邻的两顶点的比例,来适当扩大所规定的上限值,同理,当这些丢包事件的顶点成一个下降趋势,就可以适当减小上限值。
由于下限值只是为了保证发送方的发送速率,所以对下限值的适度改变不作要求。
四、结束语
通过对经典TCP拥塞控制机制的改进,与改进中需要设定的参数的调整使得新的改进思路比经典TCP拥塞控制机制更加高效,不仅提高了网络资源的利用率,更提高了发送方的传输速率。
本文提出的改进思路其目的是为了使得新的拥塞控制机制更适应当今的网络,也为拥塞控制机制的更新与发展提供更广阔的思路。
参考文献
[1]陈尚兵,王彬,钱积新.TCP拥塞控制综述[J].计算机科学,2002,29(5):
32-35.
[2]JWalrand,PVaraiya,韩毅刚.高性能通信网络[M].电子工业出版社,2000.
[3]王彬.TCP/IP网络拥塞控制策略研究[D].杭州:
浙江大学,2004.
[4]李秀妮.浅析TCP拥塞控制机制[J].科技传播,2010,19:
181.
[5]葛一楠,周驰岷,易勇.一种改进的高速TCP拥塞控制算法[J].2008
[6]黄延.浅谈TCP拥塞控制与其改进思路[J].计算机光盘软件与应用,2012,2:
040.
[7]杨晓萍.TCP拥塞控制和区分服务队列管理研究[D][D].吉林大学,2007.
[8]包骏杰,王刚,李波.TCP拥塞控制综述[J].重庆教育学院学报,2003,6(6).
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCP 拥塞 控制 方法 改进