tcp拥塞控制机制定量性能分析大学生毕业设计(编辑修改稿)内容摘要:

能保留数据包,结果缓存会进一步消耗,加重拥塞。 因此,拥塞控制是一个动态的、全局性的 复杂 过程,涉及到所有的主机、所有的路由器 , 以及与降低网络传输性能有关的所有因素。 拥塞控制 为了最大限度地利用资源,使网络工作在轻度拥塞状态是最为理想的,但这增加了滑向拥塞崩溃的风险,因此需要一定的拥塞控制机制来加以约束和限制。 为了便于阐述拥塞控制机制的内涵, 我们 首先 用图 12来描述拥塞现象。 当网络负载较小时,吞吐量基本上随着负载的增长而增长,呈线性关系,响应时间增长缓慢。 当负载达到网络容量时,吞吐量呈 现出缓慢增长,而响应时间急剧增加,这一点称为 Knee。 如果负载继续增加,路由器就开始丢包,当负载超过一TCP 拥塞控制 机制 定量性能分析 3 定量时,吞吐量开始急剧下降,这一点称为 Cliff。 拥塞控制机制包含拥塞避免 (Congestion Avoidance) 和拥塞控制(Congestion Control)两种策略。 前者的目的是使网络运行在 Knee 附近,避免拥塞的发生 ; 而后者则是使得网络运行在 Cliff的左侧区域。 前者是一种“预防”措施,维持网络的高吞吐量、低延迟状态,避免进入拥塞;后者是一种“恢复”措施,使网络从拥塞中恢复过来,进入正 常的运行状态。 拥塞控制能够有效地预防死锁的发生,提高网络的性能,其作用不言而喻。 在下一章节,我们将详细介绍 TCP 拥塞控制机制。 2. TCP 拥塞控制 TCP 协议简介 TCP(Transmission Control Protocol)协议是完成端到端信息传输的传输层协议,是 TCP/IP协议 族的重要成员。 TCP协议主要由差错控制机制和拥塞控制机制组成,它能够自动适应网络状况的变化。 TCP协议引入差错控制机制的目的是保障端到端传输的可靠性,为无连接的IP网络提供基于连接的传输服务。 TCP拥塞控制机制的 意义更为重大,它可以根据网络状况对发送速率进行调节,避免拥塞的扩大,这使得互联网络的正常运行成为可能。 它所采用的拥塞控制算法本质上是一种窗口上限可变的滑窗 (SlidingWindow)式流量控制方法,是对滑窗流控算法的继承和发展。 传统的滑窗式流控算法的窗口上限是固定的, 发送端 每发送一个报文其发送窗口减小一个单位 , 而每接收到一个报文的确认 , 发送窗口增加一个单位,这样终端 在 一个轮次中能够发送报文的最大个数是确定的,因此,在链路带宽充足的情况下, 发送端 的传输能力将受到发送窗口上限的限制。 TCP流控算法对 传统的 滑 窗算法进行 了 扩展,根据网络状况对窗口上限进行调节。 在 TCP算法中,窗口上限由发送端的发送窗口和接收端的通知窗口共同决定 (取两者中的最小值 )。 这样,在网络正常工作时, TCP发送端 可以通过增大窗口上限尽可能多地占用网络空闲带宽;而当网络发生拥塞时, TCP发送端 可以通过减小发送窗口上限的方式降低发送速率 , 从而起到缓解拥塞的作用。 TCP 拥塞控制 机制 定量性能分析 4 TCP 拥塞控制所要解决的主要问题 要改善 TCP传输的稳定性,减少拥塞的发生,或者要与非标准 TCP应用在同一网络中共存 , 采取一定的 TCP拥塞控制机制 是必要的。 TCP拥塞控制需要解决 的主要问题有 : 第一、满足低的报文丢弃率的要求,提高带宽利用率。 第二、高 TCP传输的稳定性,减少网络状态的振荡。 第三、保证 TCP公平,即 TCP友好特性。 TCP 拥塞控制涉及到的参数 TCP拥塞控制 机制 是通过控制一些重要参数的改变来实现的。 用于 TCP拥塞控制的参数主要有 : (1)拥塞窗口 (cwnd):是拥塞控制的关键参数。 它描述发送端在拥塞控制情况下一次最多能发送 的 数据包数量。 (2)通知窗口 (awnd):是接收端给发送端预设的发送窗口大小,它只在 TCP连接建立的初始阶段起作用。 (3)发送窗口 (win):是发送端每次实际发送数据的窗口大小。 (4)慢启动门限 (ssthresh):是拥塞控制中用来限制发送窗口大小的门限值,它是慢启动阶段和拥塞避免阶段的分界点,初始值设为 65535字节或 awnd的大小。 (5)回路响应时间 (RTT):一个 TCP数据包从发送端发送直至发送端收到确认的时间间隔。 (6)重传超时 时长 (RTO):描述数据包从发送到失效的时间间隔,是判断数据包丢失与否、网络是否拥塞的重要参数,通常设为 2RTT或 5RTT。 下面将介绍 TCP拥塞控制机制是如何改变上述参数以达到控制网络拥塞、提高网 络性能的目的的。 TCP 拥塞控制机制 TCP 的拥塞控制机制是由慢启动、拥塞避免、快速重传和快速恢复四个核心算法组成的。 慢启动阶段用于快速探测并占有网络可用带宽;拥塞避免阶段是数据传输的主要时段;快速重传则完成了丢失报文的重传;而快速恢复避免了由于过 度 地减小发送窗口而导致网络性能下降的发生,使得网络迅速从拥塞状态中恢复。 图 21描述了 TCP拥塞控制中慢启动 和 拥塞避免两个阶段的动态情况。 有关它们的具体 实现 将在下一节 详细 阐述。 TCP 拥塞控制 机制 定量性能分析 5 TCP 拥塞控制算法 TCP协议经过多年的发展,有了多种具体的实现, 其中包括 Tahoe、 Reno、NewReno、 SACK和 Vegas TCP。 运行在主机中的这些实现使得 TCP连接在网络发生拥塞时回退,并对网络中的拥塞信号进行响应,正是这些改进的 TCP实现的拥塞避免和拥塞控制算法防止了今天网络的拥塞崩溃。 下面详细介绍这些 TCP实现以及运用于这些实现中的拥塞避免和拥塞控制算法。 Tahoe Tahoe算法是最早被提出来的 TCP拥塞控制算法,虽然已历经近二十年,但至今仍被大多数 TCP实现所采用。 它的一些经典理论也被后来的大多数 TCP拥塞控制算法所沿用,为后继算法奠定 了基础。 其核心思想是让 cwnd以指数型增长方式迅速逼进可用信道容量,然后慢慢接近均衡。 Tahoe包括慢启动、拥塞避免和快速重传三个部分。 (1)慢启动 初始时, cwnd值 设置 为 1,每收到一个成功的 ACK,则: cwnd = cwnd + 1 理想情况下,在一个 RTT内,发送端会收到 cwnd个成功的 ACK。 这样,每隔一个 RTT: cwnd = 2*cwnd 即在慢启动阶段, cwnd以指数型增长,直到 cwnd超过 ssthresh值。 当cwnd=ssthresh时, Tahoe进入拥塞避免阶段。 慢启动的 目的是避免连接建立时大量突发数据流可能造成的拥塞。 (2)拥塞避免 TCP 拥塞控制 机制 定量性能分析 6 在拥塞避免阶段,每收到一个成功的 ACK,则: cwnd = cwnd + 1 / cwnd 因此,每隔一个 RTT, cwnd增 1。 即在拥塞避免阶段, cwnd线性增加。 如果发生超时或者连续收到 3个重复的 ACK(简称 dup ACK) , Tahoe就认为网络发生了拥塞。 对于超时, ssthresh = max(cwnd/2, 2) cwnd =1 然后转入慢启动。 若是收到连续 3个 dup ACK,则 Tahoe进入快速重传阶段。 可以看到,当 算法进入拥塞避免阶段后,拥塞窗口的增长趋于平缓,避免了拥塞窗口持续快速增长可能导致的拥塞。 (3)快速重传 在此阶段,首先立即重发丢失的分组,而不必等待重传定时器超时,同时设置 : ssthresh=max(cwnd/2, 2) cwnd =1 然后,转入慢启动阶段。 快速重传加快了算法的响应速度,减少了重传超时的发生。 Tahoe核心算法可简单描述为 : for every ack {if cwnd ssthresh then cwnd++ //慢速启动 else cwnd +=1/cwnd //拥塞避免 } for every loss //快速重传 {ssthresh =max(cwnd/2, 2) cwnd=1 } Tahoe算法的提出使得 TCP由以前的单纯流量控制转向拥塞控制,它明确地将TCP数据流的发送过程划分为三个阶段,慢启动避免了连接建立时突发数据流对网络的冲击;拥塞避免限制了在传输过程中无限制的速率增长,避免了由此可能导致的拥塞;快速重传则加快了发送端对拥塞的响应速度,使得拥塞能快速 地 消除。 Reno Reno算法是对 Tahoe的改进, 从上一小节我们可以看到,在收到连续 3个 dup ACK或在超时的情况下, Tahoe设置 cwnd为 l,然后进入慢启动阶段。 这一方面会引起网络的激烈振荡,另一方面大大降低了网络的利用率。 针对这个问题, 1990年 Jacobson在 Tahoe的基础上提出了 Reno算法。 Reno算法对 Tahoe的改进主要在两个方面。 第一,收到连续 3个 dup ACK后,算法不经过慢启动,而直接进入拥塞避免阶段。 第二,增加了快速重传 /快速恢复 (FR/FR)机制。 事实上,每一个 dup ACK表明已经有一个数据包离开了网络,不管它是不是我们 所期望的。 根据 Jacobson的数据守恒理论 (见 ),发送端这时可以向网络发送下一个数据包。 快速重传 /快速恢复机制就是这样做的。 TCP 拥塞控制 机制 定量性能分析 7 具体过程为 : (1)收到 3个 dup ACK进入 FR/FR ssthresh =max(cwnd/2, 2) (2)重发丢失的数据包 (3)窗口膨胀 cwnd =ssthresh + ndup ndup为收到的 dup ACK数。 (4)当 min(awnd, cwnd)足够大时,发送新的数据包 (5)当收到非重复的 ACK时 cwnd =ssthresh (6)转入拥塞避免阶段 经过分析,可以看出: Reno在收到 3个 dup ACK后,就转入 FR/FR,而遇到超时 后, Reno和 Tahoe一样进入慢启动阶段。 可以从 Reno状态转换图直观地看到 Reno的整个数据传输过程。 Reno 目前被广泛采用,以其算法的简单、有效和鲁棒性成为 TCP 拥塞控制算法的主流。 针对 Reno 的局限性,一些新算法如: NewReno, SACK 等对其进行了改进。 NewReno Reno TCP提出的快速恢复算法提高了报文丢失后 TCP的吞吐量和顽健性,但是它仅考虑了每次 拥塞发生 时 只丢失一个报文的情形。 然而在实际网络中,一旦发生拥塞,路由器会丢弃大量的报文 (对于采用 Drop Tail的路由器而言,丢弃尤为严重 ), TCP在一次拥塞中丢失多个报文的情形非常普遍。 在这种情况下,采用Reno TCP算法的发送端多次将 cwnd和 ssthresh减半,其结果是 TCP的发送速率呈指数降低,系统吞吐量急剧下降,更有甚者,当发送窗口小于 4 时无法有效地触发快速重传, Reno TCP发送端会陷入仅通过传输超时来发现报文丢失的困境中。 NewReno 在 Reno 的基础上对快速恢复算法进行了修改,添 加了恢复应答(Recovery ACK)判断功能,以增强 TCP 发送端通过 ACK报文信息分析报文传输状况的能力。 NewReno 使 TCP 发送端可以把一次拥塞丢失多个报文的情形与多次拥塞的情形区分开来,进而在每一次拥塞发生后拥塞窗口仅减半一次,从而提高了TCP的顽健性和吞吐量。 恢复应答 (Recovery ACK)— 改进的快速恢复算法 为了介绍 NewReno中改进的快速恢复算法,首先定义部分应答 (Partial ACK,TCP 拥塞控制 机制 定量性能分析 8 简称 PACK)和恢复应答 (Recovery ACK,简称 RACK)报文。 把 TCP发送端恢 复阶段中接收到的 ACK报文(非 dup ACK)记 为 ACKx,在接收到ACKx时 TCP终端己发出的序列号 (SN)最大的报文 记 为 PKTy,如果 ACKx不是 PKTy的应答报文则称报文 ACKx为部分应答,即 PACK报文 ; 反之 , 若 ACKx恰好是 PKTy的应答报文,则报文 ACKx被称为恢复应答,即 RACK报文。 TCP发送端 接收到恢复应答表明:经过重传, TCP发送端 发送的所有报文都己经被接收端正确接收,网络已经从拥塞中恢复。 经过 NewReno改进的快速恢复算法可以描述为以下几个步骤 : 1. 重新定义“恢复阶段”,这里把 从快速重传算法发现丢失报文到 TCP发送端 接收到 RACK报文的时段称为恢复阶段。 2. 进入恢复阶段后, TCP发送端 重传被认定为丢失的报文,并分别设置ssthresh和 cwnd如下: ssthresh =max(cwnd/2, 2) cwnd = ssthresh + 3*SMSS 3. 当接收到 dup ACK后, TCP发送端 按照式子 cwnd =ssthresh + ndup对 cwnd进行设定 (与 Reno TCP的设定方式相似 )。 4. 当接收到 PACK后, TCP发送端 立即重传 PACK所确认报文的 下一个报文,拥塞窗口不受影响。 5. 当接收到 RACK后, TCP发送端 认为拥塞中所有被丢弃的报文均。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。