TCP拥塞控制报告

上传人:jiups****uk12 文档编号:57576999 上传时间:2018-10-23 格式:PPT 页数:32 大小:296KB
返回 下载 相关 举报
TCP拥塞控制报告_第1页
第1页 / 共32页
TCP拥塞控制报告_第2页
第2页 / 共32页
TCP拥塞控制报告_第3页
第3页 / 共32页
TCP拥塞控制报告_第4页
第4页 / 共32页
TCP拥塞控制报告_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《TCP拥塞控制报告》由会员分享,可在线阅读,更多相关《TCP拥塞控制报告(32页珍藏版)》请在金锄头文库上搜索。

1、TCP拥塞控制,小组成员:罗文文,马志强孙帅一,何浩,拥塞控制的定义,当网络中存在过多报文时,网络的性能就会下降,这种现象称为拥塞。分组交换网络的性能(功率、往返时间RTT、吞吐量)与负荷的关系用下图来说明,网络中的拥塞问题必须依靠TCP层端到端控制和lP层链路控制的共同作用才能有效的解决,其中TCP层的拥塞控制仍然会起主要的、基础的作用。端到端TCP拥塞控制的本质思想是通过调整发送端的发送速率来控制网络的负荷量。具体地说,TCP不断地通过加大发送的速率来对当前网络的实际承载能力进行探测,并随时准备对网络发回的拥塞信息作出响应,即迅速减小向网络中发送信息的速率,并在新的起点上继续对网络进行试探

2、。,基本概念,拥塞窗口(cwnd ):拥塞控制的关键参数,控制源端在拥塞情况下一次最多能发送多少数据包。接收窗口(rwnd):接收端对源端发送窗口大小所做的限制,在建立连接时山接收方通过ACK确认带给源端慢启动阀值(ssthresh ):拥塞控制中用来限制发送窗口大小的门限值,它是慢启动阶段与拥塞避免阶段的分界点,初始值设为65535 bytes或awnd的大小。回路响应时间(RTT):一个数据包从源端发送到接收端直至源端收到接收端R寸该数据包确认信息所经历的时间间隔。超时重传计数器(RTO ):描述数据包从发送到失效的时间间隔,是源端用来判断数据报是否丢失和网络拥塞的重要参数,通常设为2RT

3、T或SRTT,发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即应按以下公式确定: 发送窗口的上限值 Min rwnd, cwnd 当 rwnd cwnd 时,是接收端的接收能力限制发送窗口的最大值。 当 cwnd rwnd 时,则是网络的拥塞限制发送窗口的最大值。,TCP 拥塞控制的四个阶段,慢启动阶段拥塞避免阶段快速重传阶段快速恢复阶段,1慢启动阶段,当连接刚建立或超时时,进入慢启动阶段。当新建TCP 连接时,拥塞窗口(cwnd)被初始化为一个数据包大小(缺省为512或536bytes )。实际发送窗口win取拥塞窗口与接收方提供的通告窗

4、口的较小值,即win=min(cwnd, awnd),每收到一个ACK 确认,就增加一个数据包发送量,这样慢启动阶段cwnd 随RTT呈指数级增长(1个、2个、4个、8个),优点:慢启动采用逐渐增大cwnd 的方法,可以防止TCP 在启动一个连接时向网络发送过多的数据包而造成不必要的数据丢失和网络拥塞,并且它还能够避免采用单纯的AIMD 算法造成的吞吐量增加过慢的问题 为了防止cwnd 的无限制增长引起网络拥塞,引入一个状态变量:慢启动阈值ssthresh当cwndssthresh 时,使用下面的拥塞避免算法,减缓cwnd 的增长速度。,2拥塞避免阶段,当TCP 源端发现超时或收到3 个相同的

5、ACK 确认帧时,即认为网络将发生拥塞,此时进入拥塞避免阶段。 在拥塞避免阶段,慢启动域值ssthresh 将被设置为当前cwnd 的一半,当发生超时时,cwnd 被置为初始值1。此时,如果cwnd=ssthresh,则执行拥塞避免算法,即cwnd 在每次收到一个ACK 确认时只增加1/cwnd 个数据包。拥塞避免阶段cwnd 随RTT 呈线性增长。,算法描述如下:,初始化:cwnd=1ssthresh=65535byteswin=min(cwnd, awnd)当新的ACK确认到达时,执行以下算法:for every arrived packetsif cwndssthreshcwnd+=1;

6、慢启动else cwnd+=SMSS*SMSS/cwnd; 拥塞避免阶段当检测到丢包时,发送方执行以下操作:ssthresh=maxmin(cwnd/2,awin),2;如果检测到定时器超时,cwnd=1; 其中SMSS是发送方的最大报文段长度.,从以上算法看出:在拥塞避免阶段,当数据包超时时,cwnd 被置为1,重新进入慢启动阶段,这会导致过大地减小发送窗口尺寸,降低TCP 连接的吞吐量。因此,引入了快速重传和快速恢复机制。,3快速重传阶段,当网络发生拥塞时,如果源端等待超时之后再进行拥塞控制,那么从出现拥塞到实施控制有一定的时延。除了超时之外,源端还可以使用重复ACK作为拥塞信号。源端在接

7、收到重复ACK时并不能确定是由于分组丢失还是分组乱序产生的,通常假定如果是分组乱序,在目的端处理之前源端只可能收到一个或两个重复的ACK;如果源端连续接收到三个或更多的重复ACK,表明网络中某处已经发生了拥塞,这时,源端不等到重传定时器超时就重发这个可能丢失的分组,这就是快速重传算法。,在快速重传阶段,当源端收到3 个或3 个以上重复的ACK 时,就判定数据包丢失,同时ssthresh 设置为当前cwnd的一半,并重传丢失的包,进入快速恢复阶段。,4快速恢复阶段,当快速重传算法重传了可能丢失的分组之后,如果TCP重新进入慢启动阶段,将会使拥塞窗口减为1,重新开始探测网络带宽,从而严重影响网络吞

8、吐量,因此快速恢复算法在快速重传之后转去执行拥塞避免算法,避免了过大地减小发送窗口而导致的网络性能下降。,在快速恢复阶段,每收到重复的ACK,则cwnd 加1;收到非重复ACK 时,置cwndssthresh,转入拥塞避免阶段;如果发生超时重传,则置ssthresh 为当前cwnd 的一半,cwnd1,重新进入慢启动阶段。,算法描述如下:,step 1:if (dupacks=3)ssthresh=max( 2, cwnd/2);cwnd=ssthresh+3 * segsize;step 2:重传丢失的分组step 3:此后每收到一个重复的ACK确认时cwnd=cwnd+1step 4:当收

9、到对新发送数据的ACK确认时,cwnd=ssthresh,这个ACK能够对那些在丢失的分组之后,第一个重复ACK之前发送的所有包进行确认,经典的TCP拥塞控制算法,TCP TahoeTCP RenoTCP NewRenoTCP Vegas,TCP Tahoe 算法,Tahoe 算法是TCP 的早期版本。它的核心思想是:让cwnd以指数增长方式迅速逼进可用信道容量,然后慢慢接近均衡。Tahoe 包括3 个基本的拥塞控制算法:“慢启动”、“拥塞避免”和“快速重传”。,Tahoe 算法存在着不足之处:在收到3 个重复ACK 或在超时的情况下,Tahoe 置cwnd 为1,然后进入慢启动阶段。这一方面

10、会引起网络的激烈振荡,另一方面大大降低了网络的利用率。,TCP Reno算法,针对Tahoe算法的不足,提出了改进算法Reno。改进主要有两方面:一是对于收到连续3个重复的ACK确认,算法不经过慢启动,而直接进入拥塞避免阶段;二是增加了快速重传和快速恢复机制。Reno算法以其简单、有效和鲁棒性成为TCP源算法的主流,被广泛的采用。但它不能有效的处理多个分组从同 一数据窗口丢失的情况。,TCP New Reno,TCP New Reno修改了TCP Reno的快速恢复算法,处理一个窗口中的多个报文段同时丢失时出现的“部分确认”(Partial ACKs,它在快速恢复阶段到达并且确认新数据,但它只

11、确认进入快速重传之前发送的一部分数据)。 在这种情况下,TCP Reno会退出快速恢复状态,等待重传定时器溢出或者重复的确认ACK到达,但是TCP New Reno并不退出快速恢复状态,而是(1)重传紧接着那个部分ACK之后的报文段,拥塞窗口等于其减去部分的ACK;(2)对于得到确认的新数据,设置cwnd等于其加上SMSS:(3)对于第一个或每一个Partial ACK,重传定时器复位。,Vegas 算法,1994年,Brakmo提出了TCP Vegas算法,TCP Vegas是一种截然不同的拥塞控制算法,它采用一种更巧妙的带宽估计策略,根据期望的流量速率与实际速率的差估计网络瓶颈处的可用带宽

12、。 TCP Vegas对TCP Reno主要做了三个方面的改进,分别是快速重传机制、拥塞避免阶段和慢启动阶段,这三个方面改进的具体情况如下:,对快速重传机制的改进,TCP Vegas主要在两个方面对快速重传进行了改进,使得探测丢包现象变得更及时,且能进一步减少超时情况的发生。 第一个改进措施是,当TCP Vegas收到重复的确认包时,计算从发送该数据包时刻到当前时刻的时问间隔,比较是否大于RTO,如果是,Vegas就重传该数掘包而不用等到第2、3个重复确认包的到达,如下图所示。而且在TCP Vegas中使用了比TCP Reno更为精确的计时器,可以测得更加准确的RTT以及其他的一些时间数据,对

13、RTT的估计将更加准确,同样也能得到更加精确的超时时间。,第二个改进措施是当检测到超时并重传数据包后,收到第1个或第2个非重复确认包时,检查从重传该数据包到收到非重复确认包的时间间隔,时间间隔若大于超时时间,就认为发生了丢包,并重传该数据包。这样能够不用等到重复的确认包到达,就准确的传送在重传前发生丢包的那些数据,这在发生多个丢包的时候尤为重要,否则发送端会一直等待直到超时,其过程如下图所示:,拥塞避免机制的改进,Reno是把丢包情况作为拥塞发生的信号,而Vegas则是通过计算期望值的吞吐量与实际吞吐量之间的差来估计网络瓶颈处的可用带宽。由于Vegas不需要等到丢包才认为发生了拥塞,所以能更有

14、效的利用带宽。其基本思想是期望的吞吐量与实际的吞吐量相差超过一定值时,就认为网络拥塞程度严重,应该减小发送窗口;另一方面,当两者之间的差距小于一定值时,则认为连接没有完全有效的利用带宽,应该要增大发送窗口。,TCP Vegas在拥塞避免阶段的具体算法为: 1、计算期望的吞吐量与实际吞吐量之间的差值其中 代表传输延时,也是当缓存中数据包为空时的RTT值(BaseRTT), cwnd代表源端在每个往返时间(RTT)中允许发送窗口的大小,期望的吞吐量为cwnd/T,设r代表实际网络中的RTT,实际的吞吐量为cwnd /r,2、由(1)式得到路由器缓存中的数据包个数为(1)3、塞窗口的调整策略:,TC

15、P Vegas线性增大或减小窗口是基于d(k)的大小,d(k)代表数据包在路由器中的数量,当d(k)小于 时,说明网络资源还没有充分利用,需要进一步的增大发送窗口,当d (k)大于 时,则减小发送窗口,防止发生拥塞。如果在 , 之间,则窗口不变。可用下面的公式来说明:,慢启动阶段的改进,TCP Reno在慢启动阶段的每个RTT内窗口都会增大一倍,TCP Vegas修改为每隔一个RTT才将窗口增大一倍,在这之间,窗口固定不变。这样是为了保证能够正确的比较吞吐量的差值,Vegas还在慢启动中加入了拥塞检测。在初始的慢启动阶段,TCP Vegas通过计算期望的吞吐量估计出可用的网络带宽,当实际的吞吐量变得比期望的吞吐量小于一定门限值y时,窗口将会减小18,并且从慢启动阶段进入拥塞避免阶段。为慢启动加入拥塞检测是十分重要的,当网络带宽变大时,其作用尤为明显,改进的慢启动算法对改善丢包情况和超时现象十分有效。,谢谢!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号