TCP拥塞控制报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cwnd r
2、由(1)式得到路由器缓存中的数据包个数为
d (
cwnd
cwnd ) r
(1)
3、塞窗口的调整策略:
cwnd (k ) 1, cwnd (k 1) cwnd (k ), cwnd (k ) 1,
TCP Vegas线性增大或减小窗口是基于d(k)的 大小,d(k)代表数据包在路由器中的数量,当 d(k)小于 时,说明网络资源还没有充分利用, 需要进一步的增大发送窗口,当d (k)大于 时, 则减小发送窗口,防止发生拥塞。如果在 , 之间,则窗口不变。可用下面的公式来说明:
TCP New Reno
TCP New Reno修改了TCP Reno的快速恢复算 法,处理一个窗口中的多个报文段同时丢失时出 现的“部分确认”(Partial ACKs,它在快速恢复 阶段到达并且确认新数据,但它只确认进入快速 重传之前发送的一部分数据)。 在这种情况下,TCP Reno会退出快速恢复状态, 等待重传定时器溢出或者重复的确认ACK到达, 但是TCP New Reno并不退出快速恢复状态,而 是(1)重传紧接着那个部分ACK之后的报文段,拥 塞窗口等于其减去部分的ACK;(2)对于得到确认 的新数据,设置cwnd等于其加上SMSS:(3)对 于第一个或每一个Partial ACK,重传定时器复位。
从以上算法看出:在拥塞避免阶段,当数 据包超时时,cwnd 被置为1,重新进入慢 启动阶段,这会导致过大地减小发送窗口 尺寸,降低TCP 连接的吞吐量。因此,引 入了快速重传和快速恢复机制。
3快速重传阶段
当网络发生拥塞时,如果源端等待超时之后再 进行拥塞控制,那么从出现拥塞到实施控制有 一定的时延。除了超时之外,源端还可以使用 重复ACK作为拥塞信号。源端在接收到重复 ACK时并不能确定是由于分组丢失还是分组乱 序产生的,通常假定如果是分组乱序,在目的 端处理之前源端只可能收到一个或两个重复的 ACK;如果源端连续接收到三个或更多的重复 ACK,表明网络中某处已经发生了拥塞,这时, 源端不等到重传定时器超时就重发这个可能丢 失的分组,这就是快速重传算法。
第二个改进措施是当检测到超时并重传数 据包后,收到第1个或第2个非重复确认包 时,检查从重传该数据包到收到非重复确 认包的时间间隔,时间间隔若大于超时时 间,就认为发生了丢包,并重传该数据包。 这样能够不用等到重复的确认包到达,就 准确的传送在重传前发生丢包的那些数据, 这在发生多个丢包的时候尤为重要,否则 发送端会一直等待直到超时,其过程如下 图所示:
发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个, 即应按以下公式确定:
发送窗口的上限值 Min [rwnd, cwnd]
当 rwnd < cwnd 时,是接收端的接收能力限制发 送窗口的最大值。
当 cwnd < rwnd 时,则是网络的拥塞限制发送窗 口的最大值。
经典的TCP拥塞控制算法
TCP Tahoe
TCP Reno TCP NewReno TCP Vegas
TCP Tahoe 算法
Tahoe 算法是TCP 的早期版本。它的核心 思想是:让cwnd以指数增长方式迅速逼进 可用信道容量,然后慢慢接近均衡。 Tahoe 包括3 个基本的拥塞控制算法: “慢启动”、“拥塞避免”和“快速重 传”。
基本概念
拥塞窗口(cwnd ):拥塞控制的关键参数,控制源端在 拥塞情况下一次最多能发送多少数据包。 接收窗口(rwnd):接收端对源端发送窗口大小所做的 限制,在建立连接时山接收方通过ACK确认带给源端 慢启动阀值(ssthresh ):拥塞控制中用来限制发送窗 口大小的门限值,它是慢启动阶段与拥塞避免阶段的 分界点,初始值设为65535 bytes或awnd的大小。 回路响应时间(RTT):一个数据包从源端发送到接收 端直至源端收到接收端R寸该数据包确认信息所经历 的时间间隔。 超时重传计数器(RTO ):描述数据包从发送到失效的 时间间隔,是源端用来判断数据报是否丢失和网络拥 塞的重要参数,通常设为2RTT或SRTT
Vegas 算法
1994年,Brakmo提出了TCP Vegas算法, TCP Vegas是一种截然不同的拥塞控制算 法,它采用一种更巧妙的带宽估计策略, 根据期望的流量速率与实际速率的差估计 网络瓶颈处的可用带宽。 TCP Vegas对TCP Reno主要做了三个方 面的改进,分别是快速重传机制、拥塞避 免阶段和慢启动阶段,这三个方面改进的 具体情况如下:
拥塞避免机制的改进
Reno是把丢包情况作为拥塞发生的信号,而 Vegas则是通过计算期望值的吞吐量与实际吞吐 量之间的差来估计网络瓶颈处的可用带宽。由于 Vegas不需要等到丢包才认为发生了拥塞,所以 能更有效的利用带宽。其基本思想是期望的吞吐 量与实际的吞吐量相差超过一定值时,就认为网 络拥塞程度严重,应该减小发送窗口;另一方面, 当两者之间的差距小于一定值时,则认为连接没 有完全有效的利用带宽,应该要增大发送窗口。
算法描述如下:
初始化:cwnd=1 ssthresh=65535bytes win=min(cwnd, awnd) 当新的ACK确认到达时,执行以下算法: for every arrived packets if cwnd<ssthresh cwnd+=1;慢启动 else cwnd+=SMSS*SMSS/cwnd; 拥塞避免 阶段 当检测到丢包时,发送方执行以下操作: ssthresh=max[min(cwnd/2,awin),2]; 如果检测到定时器超时,cwnd=1; 其中SMSS是发送方的最大报文段长度.
Tahoe 算法存在着不足之处:在收到3 个 重复ACK 或在超时的情况下,Tahoe 置 cwnd 为1,然后进入慢启动阶段。这一方 面会引起网络的激烈振荡,另一方面大大 降低了网络的利用率。
TCP Reno算法
针对Tahoe算法的不足,提出了改进算 法Reno。改进主要有两方面:一是对于收 到连续3个重复的ACK确认,算法不经过慢 启动,而直接进入拥塞避免阶段;二是增 加了快速重传和快速恢复机制。Reno算法 以其简单、有效和鲁棒性成为TCP源算法的 主流,被广泛的采用。但它不能有效的处 理多个分组从同 一数据窗口丢失的情况。
TCP Vegas在拥塞避免阶段的具体算法为: 1、计算期望的吞吐量与实际吞吐量之间的差值
cwnd
其中 代表传输延时,也是当缓存中数据包为空时的RTT值 (BaseRTT), cwnd代表源端在每个往返时间(RTT)中允许发 送窗口的大小,期望的吞吐量为cwnd/T,设r代表实际网络 中的RTT,实际的吞吐量为cwnd /r
TCP 拥塞控制的四个阶段
慢启动阶段
拥塞避免阶段 快速重传阶段 快速恢复阶段
1慢启动阶段
当连接刚建立或超时时,进入慢启动阶段。
当新建TCP 连接时,拥塞窗口(cwnd)被初始化 为一个数据包大小(缺省为512或536bytes )。 实际发送窗口win取拥塞窗口与接收方提供的通 告窗口的较小值,即win=min(cwnd, awnd), 每收到一个ACK 确认,就增加一个数据包发送量, 这样慢启动阶段cwnd 随RTT呈指数级增长(1个、 2个、4个、8个…)
优点:
慢启动采用逐渐增大cwnd 的方法,可以防止 TCP 在启动一个连接时向网络发送过多的数据包 而造成不必要的数据丢失和网络拥塞,并且它还 能够避免采用单纯的AIMD 算法造成的吞吐量增 加过慢的问题 为了防止cwnd 的无限制增长引起网络拥塞,引 入一个状态变量:慢启动阈值ssthresh 当cwnd<ssthresh 时,使用上述的慢启动算法, cwnd 随 RTT 呈指数增长。 当cwnd>ssthresh 时,使用下面的拥塞避免 算法,减缓cwnd 的增长速度。
对快速重传机制的改进
TCP Vegas主要在两个方面对快速重传进行了改 进,使得探测丢包现象变得更及时,且能进一步 减少超时情况的发生。 第一个改进措施是,当TCP Vegas收到重复的确 认包时,计算从发送该数据包时刻到当前时刻的 时问间隔,比较是否大于RTO,如果是,Vegas 就重传该数掘包而不用等到第2、3个重复确认包 的到达,如下图所示。而且在TCP Vegas中使用 了比TCP Reno更为精确的计时器,可以测得更 加准确的RTT以及其他的一些时间数据,对RTT 的估计将更加准确,同样也能得到更加精确的超 时时间。
2拥塞避免阶段
当TCP 源端发现超时或收到3 个相同的ACK 确 认帧时,即认为网络将发生拥塞,此时进入拥塞 避免阶段。 在拥塞避免阶段,慢启动域值ssthresh 将被设置 为当前cwnd 的一半,当发生超时时,cwnd 被 置为初始值1。此时,如果cwnd<ssthresh, TCP 重新进入慢启动过程;如果 cwnd>=ssthresh,则执行拥塞避免算法,即 cwnd 在每次收到一个ACK 确认时只增加 1/cwnd 个数据包。拥塞避免阶段cwnd 随RTT 呈线性增长。
d (k )
wenku.baidu.com
cwnd (k ) 1, cwnd (k 1) cwnd (k ), cwnd (k ) 1,
d (k )
d (k )
慢启动阶段的改进
TCP Reno在慢启动阶段的每个RTT内窗口都会 增大一倍,TCP Vegas修改为每隔一个RTT才将 窗口增大一倍,在这之间,窗口固定不变。这样 是为了保证能够正确的比较吞吐量的差值, Vegas还在慢启动中加入了拥塞检测。在初始的 慢启动阶段,TCP Vegas通过计算期望的吞吐量 估计出可用的网络带宽,当实际的吞吐量变得比 期望的吞吐量小于一定门限值y时,窗口将会减小 1/8,并且从慢启动阶段进入拥塞避免阶段。为 慢启动加入拥塞检测是十分重要的,当网络带宽 变大时,其作用尤为明显,改进的慢启动算法对 改善丢包情况和超时现象十分有效。
在快速恢复阶段,每收到重复的ACK,则 cwnd 加1;收到非重复ACK 时,置cwnd =ssthresh,转入拥塞避免阶段;如果发 生超时重传,则置ssthresh 为当前cwnd 的一半,cwnd=1,重新进入慢启动阶段。
算法描述如下:
step 1: if (dupacks=3){ ssthresh=max( 2, cwnd/2); cwnd=ssthresh+3 * segsize; } step 2:重传丢失的分组 step 3:此后每收到一个重复的ACK确认时 cwnd=cwnd+1 step 4:当收到对新发送数据的ACK确认时, cwnd=ssthresh,这个ACK能够对那些在丢失的分组 之后,第一个重复ACK之前发送的所有包进行确认
在快速重传阶段,当源端收到3 个或3 个 以上重复的ACK 时,就判定数据包丢失, 同时ssthresh 设置为当前cwnd的一半, 并重传丢失的包,进入快速恢复阶段。
4快速恢复阶段
当快速重传算法重传了可能丢失的分组之 后,如果TCP重新进入慢启动阶段,将会使 拥塞窗口减为1,重新开始探测网络带宽, 从而严重影响网络吞吐量,因此快速恢复 算法在快速重传之后转去执行拥塞避免算 法,避免了过大地减小发送窗口而导致的 网络性能下降。
TCP拥塞控制
小组成员:罗文文,马志强 孙帅一,何浩
拥塞控制的定义
当网络中存在过多报文时,网络的性能就会下降,这 种现象称为拥塞。 分组交换网络的性能(功率、往返时间RTT、吞吐量) 与负荷的关系用下图来说明
网络中的拥塞问题必须依靠TCP层端到端控 制和lP层链路控制的共同作用才能有效的解决, 其中TCP层的拥塞控制仍然会起主要的、基础的 作用。端到端TCP拥塞控制的本质思想是通过调 整发送端的发送速率来控制网络的负荷量。具体 地说,TCP不断地通过加大发送的速率来对当前 网络的实际承载能力进行探测,并随时准备对网 络发回的拥塞信息作出响应,即迅速减小向网络 中发送信息的速率,并在新的起点上继续对网络 进行试探。