基于TCP的崩溃抑制策略
来源:小侦探旅游网
维普资讯 http://www.cqvip.com 基于TCP的崩溃抑制策略 陈语林刘卫国梁建武 (中南大学铁道校区计算中心,长沙410075) E-mail:cyl@csru.edu.cn 摘 要 网络的拥塞甚至崩渍是经常遇到的问题,它将严重影响网络的通信以至网络的应用 文章分析了在Internet上 rCP/IP报文拥塞的原理,根据拥塞形成原理提出了通过拥塞控制抑制崩溃的策略,并提出了进一步的研究方向 关键词 Internet TCP/IP协议 拥塞控制 崩溃 策略 文章编号1002—833l一(2002)16—0124—03 文献标识码A 中图分类号TP393 Paralysis Control Policy 0f TCP Chen Yulin Liu Weiguo Liang Jianwu (Computer Center,Railway Institute,Southeentral University,Changsha 410075) Abstract:The problem of network congestion or even network paralysis that frequently encountered will seriously affect the communication and applications of network.Having analyzed the principle of TCP/IP package congestion at Internet, this paper puts forward the policy of paralysis restraining by congestion control according to the principle of congestion formation.and further advancs the orientation of study&research、 Keywords:In*emet,TCP/IP,Congestion control,Paralysis,Policy l 前言 计算机网络在过去的十几年中经历了爆炸式的增长,网上 因此,Internet主要瓦连协议TCP/IP的拥寒 制(congestion contro1)机制埘拥1制崩溃具有重要意义。 业务变得}{益繁忙。通信量的迅猛增长使得主干网日益拥塞, 拥塞将导致网络吞吐量下降,甚至导致死锁,而死锁又表现为 网络的全局或局部崩溃,这都是网络用户所不愿看到的。 产生这种情况的根本原因在于用户提供给网络的负载大 于网络资源容量和处理能力,由于网络上的各主机足相瓦独立 2拥塞成因分析 拥塞产q一的直接原 除前述外,主要有: (1)存储卒M不足几个输入数据流共同 ^ 要同一个输出 窗u,在这个端¨就会建立排队。如果没有足够的存储卒『HJ存 的、其产q 的请求也是互小相关的,所以它们很可能在某一时 划同时将大于网络容量的报文分组量投入网络。但网络的资源 足有限的,为了争夺这些资源,各个报文分组可能会互相竞争, 储,数据包就会王弃,对突发数据流更是如此。增加 储空间住 定程度卜可以缓解这一矛盾、但如 蹄南器有无限 储 日I『,拥塞只会变得更坏、I斫不足更好,因为在网络 数据包经过 K时间排队完成转发时,他 j 已趟时,源端认为它仃j已经被 丢弃,而这 数据包还会继续向下一路南器转发,从而浪费网 从而使网络效率下降。当有些分组 得不到它想得到的资源而 导致超时晕发时,网内拥塞程度的加剧将导致拥塞。如果仍小 加限制,网络效率就会急剧下降,资源就会被占满,从而使所有 络资源,加重网络拥寒 (21带宽容 不足。低速链路对高速数据流的输入也会产生 的分组都尢法流动,出现死锁甚至网络崩溃,其主要表现为报 文分组时延增加、丢弃概率增大、上层应用系统性能下降以至 网络瘫痪等。网l表明了拥塞的效应及其受控后的情况。 拥塞。根据香农理论,任何信道带宽最大值 【J信道 量C=Blog (1+S/N)(N为信道白噪声的平均功书,S为信源的平均功率, 为信道带宽)。所有信源发送的速率尺必须小于或等于估道容 量C,如果R>C,则存理论上l尢差错传输就足不日r能的,所以存 成 功 传 网络低速链路处就会形成带宽瓶颈,当其满足小1r它的所有源 端带宽要求时,网络就会发生拥塞。 (3)处理器处理能力弱、速度慢也能引起拥窄。如果路由器 送 数 的CPU在执行排队缓 ,更新路由表等功能时,处理速度跟不 承载的负荷(发出的分组数) 图l拥塞的效应及控制 七高速链路,也会产q三拥塞。同样,低速链路对高速CPU也会 产生拥寒。 拥塞一日形成往往会形成一个不断加重的过徉。如果路山 据统计,Internet上95%的数据流使用的是TCP/IP协议 器没有空余的缓存,它就必须丢弃新到数据包。当数据包丢弃 作者简介:陈语林,男,学士,工程师,主要研究方向为计算机网络与应用、网络安全。刘卫国,男,副教授,在职博士研究叶 ,丰要研究,J’向为汁算机 高速网、网络安全。梁建武,男,硕士,高级工程师,主要从事网络安全理论与应用的研究。 124 2002.I6计算机工程与应用 维普资讯 http://www.cqvip.com 时,源端会超时,重传该包。由于没有得到确认,源端只能保留 数据包,结果缓仃会进一步消耗,加重拥塞。 末应答数据量为流量控制和拥塞控制参数的较小值,即rain fwnd,cwnd}。若发送方获得一个对新数据的应答,则cwnd指数 增加,即cwnd+=mss,也就是如果第一个R rr(回路响应时间) 3拥塞控制和崩溃抑制 对于网络拥塞,在不同的时间范围有不同的控制方法。常 累月的网络拥塞只能依靠重新设计或规划,如添加新的链路 发送方能获得发出分组的应答,则第二个R rf能发出2个最 大 I1cP分组,如这2个分组被正确应答,下一个R rr将能发出 4个最大TCP分组。依此类推每过1个RTI",cwnd将增加一 倍。指数增长的缓慢启动(这里缓慢的含义是针对苴接依据 或增加原有带宽。每天随时 波动的网络拥塞,可通过不同的 计价策略避免应用过度集中在工作时 。会话级的拥塞现象 (几秒或rL十沙),应根据资源管理进行会话接纳控制,如果某 个要求建立的会话将会导致其它会话出现拥塞,就应拒绝其进 入网络。在R 时间范围(如几百毫秒),采用发送方、接收方 及中继结点的反馈信息避免和控制拥塞。更小的时间范围就超 出反馈控制的能力,将需要分组调度支持。 wnd发送数据而言),能使会话尽快从区域I进入区域I1。cwnd 指数增长一直持续到cwnd超过某个门限值(ssthresh,慢启动 阈值,初始为64K字节),此后cwnd将根据拥塞避免算法线性 增长。事实上,缓慢启动并不仅在会话初始阶段使用,只要 cwnd<ssthresh,cwnd就会指数增长。 (2)拥塞避免。如果cwnd>ssthresh,发送方收到对新数据的 依据拚j塞控制算法,可划分成基于速率(rate)和信用 应答后,线性地增长cwnd。若发送方收到对当前cwnd对应数 据的应答后(通常是一个R rr),cwnd比原来增加一个最大 (credit)两类.fi{『苦通常用数据突发的大小、速率或持续时间的 任两个作为控制参数,后者给出发送方注入网络未经应答数据 的最大值。根据控制策略与数据传输的关系,又可分为显式 (explicit)和隐式(implicit)两类,前者具有独立的拥塞控制过 TCP分组所对应的字节数,即ewnd线性增长。拥寒避免的线性 增长使得会话能够尽量保持在区域Ⅱ,增长的最终结果使会话 进入区域Ⅲ(进入Ⅲ是合理估计ssthresh所必须的)。 (3)快速重发。无论缓慢启动或拥塞避免,cwnd总是增长, 使得会话迅速从区域I进入区域Ⅱ后又不可避免地进入区域 程,可再细分为定性或定量控制两种;后者的拥塞控制依赖对 数据传输的观察以获悉控制信息。通常拥塞控制有控制监测、 反馈和动作 个过程。数据源或宿或中继结点可根据队列和链 路状态、吞吐和延时变化及定时溢出获悉(或判定)拥塞的出 现=获得的拥塞信息要以前向或反向方式最终反馈到进行控制 Ⅲ,即负载增大最终导致网络拥塞。一旦数据分组丢失,发送方 只能在定时器溢出之后,启动数据重发过程。通常二进制后退 的溢出定时总是颗粒度较大,不能及时反映数据丢失。所幸的 是因数据丢失,接收方将返回对相同数据的重复应答。发送方 获得多个重复应答就能获悉应答之后的下一个分组丢失,不必 动作的结点。无论是源或宿或中继结点都可能依据拥塞信息进 行主动或被动的动作以避免或控制拥塞。 图2描述会话负载和网络效率问的关系。若处于负载较小 的区域l,随着负载的增加,效率也相应提高;一旦负载进入某 个合适的区域Ⅱ,效率不再随着负载的增加而显著提高;若负 载进一步加重到Ⅲ,效率将迅速下降,也就是通常观察到的“拥 塞崩溃”现象。人们总是希望网络能稳定运行在区域Ⅱ,既能避 免负载过低造成效率下降(I),又避免负载过高造成拥塞崩溃 后的效率低下(Ⅲ),以优化整个网络性能。 等待定时溢出,提前进行数据重发。大多数BSD系统TCP/IP 协议在收到3个重复应答(即第4个应答)后,发送方将进入快 速重发阶段。通过ssthresh=max f2mss,min fwnd,cwnd}/2l和 cwnd=mss,会话被强制返回区域I,会话重新进入缓慢启动阶 段(因mss=cwnd<ssthresh=2mss)。这里可以理解为只有进入区 域Ⅲ后,才能适应性地调整ssthresh到合适的数值。 (4)快速恢复。快速恢复与快速重发类似,在发送方获得多 个重复应答后提前重发应答之后的分组;不同的是,cwnd= ssthresh=max{2mss,min{wnd,cwnd}/2l,即快速恢复进入拥塞避 免阶段,而不是快速重发的缓慢启动。快速恢复能减少快速重 发造成cwnd急剧振荡,使得会话尽量能从区域Ⅲ后退到区域 I和Ⅱ相邻的位置,而不是区域I的最左端。 缓慢启动、拥塞避免、快速重发和恢复都成为TCP标准实 图2负载和网络效率的关系 现所必须具备的拥塞避免和控制算法,但快速重发和恢复通常 只能检测某个R rr范围单个分组的丢失,对于多个分组丢失, TCP协议规范仅定义基于可变滑动窗口的流量控制,数据 流接收方显式地给出发送方未应答数据注入网络的最大值,可 或发送窗口过小,发送方不可能获得进行快速重发和恢复所需 的重复应答,也就是TCP的拥塞控制最终要依赖定时溢出(虽 然快速重发和恢复能解决大多数的分组丢失)。除了通过 根据其可用缓存的大小调整窗口数值。接收方无法准确获悉分 组丢失、延时增大或吞吐较少等现象,所以需要发送方主动的 拥塞避免和控制。 (1)缓慢启动。在会话初始阶段,除了接收方依据其缓存大 ssthresh=max{2mss,min{wnd,cwnd}/2l和cwnd=mss强制会话进 入区域I的最左端,发送方还二进制增加定时溢出数值并重新 设置定时器。通常超时重发阶段发送方已不再能发送新的数据 小设置的窗口(wnd),发送方无法获悉使其合理运行在区域Ⅱ 的拥塞控制参数(cwnd,拥塞窗口),因此只能将其设置到初始 值(cwnd ̄--mss),即一个TCP段的最大字节数,也就是初始时 TCP最多发出一个最大的TCP分组。这样发送方最大注入的 而处于停滞等待状态直到获得新的应答以前移窗口。 4 TCP拥塞控制的实现和改进:SACK(Selective AC— Knowledgment选择确认)TC P【 ] 计算机工程与应用2002.16 125 维普资讯 http://www.cqvip.com 简单的SACK TCP实现,算法如下: (I)如粜接收到1F币复ACK,则有(类似 Fahoe): if wnd<ssthresh.set wnd=wnd+1;Slow Start过榉 可采用一种前馈控制的方式米改进Vegas算法,也就是时 刎监视穿越网络的数据流 ,每当检测到拥塞发乍的前兆就开 始采取预防措施,力冈把网络拥塞扼杀住萌芽状念 这种前馈 控制方』℃足监 报文分身l的排队长度及数据流量的变化率(即 J, else set wn({-I+l/[wnd1;Congestion Awfidance过榉 (2)如收刨的重复ACK数>teprexmtthresh(快速重传闽伉, 缺省值为3).则 retransmit“next expected”packet: set ssthresh=wn(I/2,then set wnd=ssthresh: resume congestion avoidance using new windows once re— transmission is acknowledged. 长度I 埘时I'HJ t的微分) (zf 。一日.发现捌摩迫近,或出现分 流 突发.就按一定的概半丢弃进入网络的数据分组,这样就 可以及 通知源端减小拥塞窗口,以减少进入网络的数据量 住拥塞避免阶段,cwnd的值由以下公式决定: r 1I I(:wnd(t)+l,dif<(et/base rtt+ l d, ) (3)如计时器计时值到,!J!】J进入Slow Start(类似Tahoe): set sslhresh=wnd/2 set wnd=l cwnd(t+At)={cwnd(t), ( ̄/base—rtt)≤dif<(1-3/t,ase—n1) 『cwnd(t)一1.(13/base_rtt一 )<dif L at 存TCP巾增加SACK 不改变拥求 制的 夺算法,存 报文失f 的健壮性疗而,使朋重发计时等待来进’ 恢复。SACK 实现时.采取措施改善多个报文从一个数据窗1 f丢失时的性 能 当数据发送端收到tcprexmtthresh个苇复的ACK时就进入 Fast l/e(!melw.发送端苇发报文.并把拥塞窗口减小一、 Fast l/ecru eiw中.SACK保持'r一个变 pipe.用它来表示… 现征路由卜的报义的估计数 。当pipe小于拥塞窗口大小时 发送端只发送新的或己再发过的数据。当发送端发送一个新报 其中dif-cwnd(t)/base—r¨一cwnd(,)/rtt.rtt是观察到的心 路响应时间,base—rtt是所观察到所有nl的最小值. 和13是 两个常数。卜式表明如粜所有分组的R1 r稳定 变,拥塞窗口 cwnd将小变 m于改进的Vegas算法没有采用分组丢火术判 断网络可用带宽,而以 ’J1的改变来判断.所以能较好地预测 网络带宽使}.rj情况,并H.埘小缓存(small buffer)的适应性较 强,其公平性、效率都较好.改进的Vegas算法使得存Intemet L普遍采用成为 T能。 文或重发一个老报文时.pipe伉增l;m】 发送端接收了一一个 带SACK选项的重复ACK报文, 叫新数据已被接收青接收 6 结语 TCP的崩溃抑制首免受解决的是删采拄制,[ni删术 制不 足一个孤立的问题,解决这一问题存结构上涉及用户端系统、 时.pipe值减l 朋pipe变 他何时发送报文和发送咧5个报文 分离外来一 如粜有一个币发的报义丢夫,SACK 现可以佳币发等待 时间内察觉 从而苇发丢失的报文,然后冉慢启动。丽 收到一 个“恢复ACK”.确认r住进入Fast Recovery时 现的所有数 据后.发送端就退 Fast Recto ery。 SACK I'CP实现时小必等待 发计时器超时就可恢复,增 强了健壮性,尤其足当拥塞窗rI较大且丢失报文较多时,性能 大大改善:另外,如果发送端在恢复时期受接收者通知的窗I] 限制.不管丢失报文数蛀多少,SACK发送端都具有较好的恢 网络内部传输 (例如路山器)的协同 作,存算法策略上涉 及剑数据流的调度算法、缓存管珲技术等网络资源的分 现有的拥塞控制思路、方法和I技术住多目标的 环境中更是 临着挑战.他们还有许多要改进的地方? 住给…拥塞控制的 形式定义和简单分类后.深入分析和 研究rrCP拥塞算法 f论研究新的网络和也用环境、ATM传输 服务、多点投递应Ⅲ衙求对传统算法的影响.以及存XTt 制 相父的l办议机制和控制策略方而的研究是今后的任务和^向: 复性能,日_不论足每个报文的端一端延迟还是总延迟 SACK TCP解决了报文失序问题,提高了重发效率和信道利用率。fH SACK的最大缺点是要修改TCP协议.所以这种方法仍然具有 局限性= (收稿¨期:2001年6月) 参考文献 1.Mo J.La R J.Anantharam V et a1.Analysis and comparison of FCP reno and vegas[C1.In:Pmc INFOCOMO9,New York,l999 2 胡晓峰.戴长华.计算机网络原理[MI.国防科技大学出版社,l995 5改进的Vegas算法 Vegas算法是利用R rr来控制拥塞的一种方法』 。Vegas 通过观察以前的TCP连接中R rr值改变情况来控制拥塞窗口 cwnd。如果发现R rr变大,Vegas就认为网络发生拥塞,并开始 减小cwnd;另一方面,如果R ITr变小,Vegas就解除拥塞,再次 3 Mathis M,Mahdavi J.TCt’Selective Ackn0wIedgment Options[S].R}、C 2018,t996 4.Stevents W.TCP Slow Start,Congestion Avoidance,Fast Retransmit. and Fast Recovery Algorithms[S].RFC2001,l997 5.1awrence S.Brak M,Larry I .TCP Vegas:End to end congestion 增加ewnd:这样,cwnd在理想情况下就会稳定在一个合适的 值上。这样做的最大好处在于拥寒机制的触发只与R1Tr的改 avoidance on a global lnternet[J].1EEE Journal on Selected Areas in Communications.1995;13(8) 变有灭,而 分组的具体传输时延无关。 6.罗万明,林闯,阎保平.TCP拥塞控制研究【Jl’计算机学报,24;(1) 126 2002.16计算机工程与应用