资源描述
浅谈通信网络流量控制与拥塞控制技术张光宇内容摘要:在通信系统中,由于网络可运载的业务量是有限的,随着输入业务量增加会使得网络出现聚集现象和通过量大大下降,并引起时延大大升,从而导致网络无法正常运行,因此要求采用必要的流量和拥塞控制。 本文通过对网络流量控制与拥塞控制技术进行概念解读,并对通信网络中存在拥塞的原因和需要进行流量控制的原因进行阐释。介绍现有拥塞控制的技术和现有流量控制的技术;最后针对特定的因特网拥塞控制技术和拥塞控制技术作原理论述、分析和实际中的使用情况进行说明。关键词:通信网络 流量控制 拥塞控制 因特网第一章 什么是通信网络流量控制与拥塞控制技术第一节 什么是网络拥塞1.1.1网络拥塞现象拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。这种现象跟公路网中经常所见的交通拥挤一样,当节假日公路网中车辆大量增加时,各种走向的车流相互干扰,使每辆车到达目的地的时间都相对增加(即延迟增加),甚至有时在某段公路上车辆因堵塞而无法开动(即发生局部死锁)。 网络的吞吐量与通信子网负荷(即通信子网中正在传输的分组数)有着密切的关系。当通信子网负荷比较小时,网络的吞吐量(分组数/秒)随网络负荷(每个节点中分组的平均数)的增加而线性增加。当网络负荷增加到某一值后,若网络吞吐量反而下降,则表征网络中出现了拥塞现象。在一个出现拥塞现象的网络中,到达某个节点的分组将会遇到无缓冲区可用的情况,从而使这些分组不得不由前一节点重传,或者需要由源节点或源端系统重传。当拥塞比较严重时,通信子网中相当多的传输能力和节点缓冲器都用于这种无谓的重传,从而使通信子网的有效吞吐量下降。由此引起恶性循环,使通信子网的局部甚至全部处于死锁状态,最终导致网络有效吞吐量接近为零。简而言之就是对资源需求的总和可用资源拥塞出现表示荷载超过了资源的承受能力。 图1-1 拥塞示意图1.1.2造成网络拥塞的原因1、多条流入线路有分组到达,并需要同一输出线路,此时,如果路由器没有足够的内存来存放所有这些分组,那么有的分组就会丢失。2、路由器的慢带处理器的缘故,以至于难以完成必要的处理工作,如缓冲区排队、更新路由表等。1.1.3 网络拥塞造成的后果1、直接锁死:直接死锁即由互相占用了对方需要的资源而造成的死锁。例如两个结点都有大量的分组要发往对方,但两个结点中的缓存在发送之前就已经全部被待发分组占满了。当每个分组到达对方时,由于没有地方存放,只好被丢弃。发送分组的一方因收不到对方发来的确认信息,只能将发送过的分组依然保存在自己结点的缓存中。这两个结点就这样一直互相僵持着,谁也无法成功地发送出一个分组。 2、重装锁死:报文A、B和C经过路由器P、Q和R发往主机H。每一报文由4个分组构成。每个路由器的缓存只能容纳4个分组。路由器R已为报文A预留了4个分组的缓存。由于分组A3还未到达,所以目前还不能交付给主机H。分组A3暂存于路由器P的缓存中,它无法转发到路由器Q,因为路由器Q的缓存已全占满了。 3、对用户及运营商造成的影响极度利用峰值带宽,带宽统计复用的服务模型随之失效,运营商运营成本增高,用户无法正常使用网络,例如voIP、BT、P2P等软件和技术就极度占用正常带宽恶化网络运行环境,最终造成网络拥塞,导致的业务投诉增加,服务品质下降。图1-2 网络拥塞的影响1.1.4 网络拥塞控制的基本原理(一)根据控制论,拥塞控制方法分为两类1、开环控制:开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。拥塞控制时,不考虑网络当前状态。图1-3 开环控制可采用流程2、闭环控制:闭环控制是基于反馈机制。属于闭环控制的有以下几种措施(即工作过程):监测网络系统以便检测到拥塞在何时、何处发生。将拥塞发生的信息传送到可采取行动的地方。调整网络系统的运行以解决出现的问题。 (二)衡量网络是否拥塞缺乏缓冲区造成的丢包率; 平均队列长度; 超时重传的包的数目; 平均包延迟; 包延迟变化(Jitter)(三)反馈方法向负载发生源发送一个告警包; 包结构中保留一个位或域用来表示发生拥塞,一旦发生拥塞,路由器将所有的输出包置位,向邻居告警; 主机或路由器主动地、周期性地发送探报(probe),查询是否发生拥塞。 1.1.5拥塞控制的策略(一)、开环控制。开环控制是一种不依靠反馈信息来调整业务流,而是在拥塞发生之前来避免拥塞的一类控制策略。在开环控制中,一旦源端发送的业务流被接收,则该业务流就不会倒是网络过载。下面是集中开环控制的方法。1、接纳控制接纳控制是一种预防性开环拥塞控制方法,其最初是针对虚电路分组交换网络提出的,但是在数据报网络中也得到了研究。在连接上工作的接纳控制叫连接接纳控制(CAC,Connection Admission Control),在数据报网络上工作的接纳控制角突发接纳控制。当某个资源请求建立连接时,CAC必须确定是接受还是拒绝这个连接。如果能保证同一路径上的所有源的QoS(最大延时、丢失率、带宽、抖动等参数描述)都得到满足,则接受这个连接;否则就拒绝这个连接。为了确定QoS是否能够得到满足,CAC必须知道每个源的业务流特征,为了实现这一点,每个源应在连接建立期间用一组称为业务量描述器的参数来说明它的业务流。业务量描述器可以包括:峰值速率、平均速率、最大突发容量等,可以认为是对业务量的简洁而准确的总结。CAC必须计算它要为每个源保留多少带宽(平均速率与峰值速率之间),即有效带宽。对于有效带宽的精确计算是一个难点。2、管制一旦CAC接受连接,则只要源遵循它在连接建立期间提交的业务量描述器中的规定,源的QoS就可以得到满足。然而如果源的业务流违反了最初的合约,则网络就有可能不能保证性能。为了防止源违反它的合约,网络应该在连接期间对业务流进行监视。监视和强制业务流执行合约的过程叫流量管制。当流量违反了一致商定的合约时,对违约的流量,网络可以丢弃或标记,被标记的流量将被网络传送,但优先级较低,只要下游拥塞,就首先被丢弃。漏桶算法是管制的一个比较经典的算法。我们假设管制设备的业务流是正在流入底部有孔的桶的水流。当桶不空时,水流以恒定的速度从桶中漏出,只要桶未满,流入的水就由桶来调节;当桶满的时候,流入的水会溢出,这些溢出的水就是违约的流量,而未溢出的水为守约流量。桶的深度可以用来吸收水流的不均匀性,如果要求业务流比较平滑,则可以减小桶的深度,这样瞬时多的水流(短的突发分组)会从桶中溢出,不会影响正常的业务。漏桶一般可以用来管制峰值速率和可支持的速率。3、流量整形当某个源试图发送分组时,其可能不知道它的业务流是什么样的业务流。如果源想要保证业务流能够与漏桶管制设备中规定的参数一致,它就应该首先改变它的业务流。这种将业务流改变为另一个业务流的过程叫做流量整形。流量整形可以使流量更平滑。流量整形的实现方式主要有:漏桶流量整形器。它通过一个以固定间隔周期读出的缓存器来实现。它是一个可以储存分组的缓存器,可以调节业务流。输入的分组存在缓存器中,然后对分组进行周期性的读出,这样输出的分组就是平滑的。缓存器用来存储短时的分组突发,如果缓存器满,再输入的分组就属于非法分组而被丢弃。例图如下 图 1-4 漏桶算法令牌桶流量整形器。由于许多应用都是可变速率的或者是实时业务,这样的分组通过漏桶流量整形器会导致不必要的延时。令牌桶流量整形器只对违约分组进行调节而对守约的分组将直接通过整形器,不增加它的延时。例图如下图 1-5 令牌桶算法(二)、闭环控制闭环拥塞控制根据反馈信息来调节信源速率,反馈信息可以是隐含的信息(隐式反馈),或者是明显的信息(显式反馈)。隐式反馈中,信源可以用超时来判断网络中是否已经出现拥塞;在显式反馈中,将有某种形式的显式消息到达信源,以指示网络的拥塞状态。下图给出了重要的拥塞控制技术的一般性描述。图 1-6闭环拥塞控制机制下面是几种闭环控制方法:1、反压这种技术类似于流过管道的流体产生的反压现象。当管道末端被关闭或者受限时,流体就向源头产生压力,从而阻断或减慢流量。反压可以在链路或虚电路上实施,当下游节点变得拥挤或者缓存满溢时,就会减慢或者阻止来自上游节点的分组流量。这种流量的限制会反向传播到信源,使信源根据限制重新调节流量。反压可以有选择地应用到通信量最大的连接上。X.25支持这种方式2、阻流分组阻流分组是由拥塞节点产生控制分组,然后将这些控制分组传回源节点以限制通信的流量。ICMP就是采用这种技术。阻流分组是一种比较粗糙的拥塞控制技术。3、隐式拥塞信令当网络发生拥塞的时候,会出现从源站到目的站的个别分组的传输时延增加或者分组丢弃。如果源站能够检测到这种传输时延的增加和分组的丢失,就认为有间接的证据说明网络已经拥塞,可以减缓流量来消除网络拥塞。基于隐式信令的拥塞控制是由端系统来完成,不需要网络中间节点的参与。在数据报分组交换网络中和基于IP的互联网中,由于采用的是无连接的方式,因此隐式拥塞信令是一种有效的方法。另外,隐式信令也可以用于面向连接的网络。4、显式拥塞信令显式拥塞信令技术可以使网络容量得到充分的利用,同时,又能够以公平的方式对拥塞进行控制。在这种方法中,网络会对正在形成的拥塞向源端发出警告,而源端采取相应的措施来减低对网络的负荷。通常显式拥塞控制用于面向连接的网络中,并以单个连接将拥塞信令分为三类:二进制的、基于信用值的和基于速率的。二进制的:拥塞节点在转发数据分组时对分组中的某一比特位置位。当源站受到一条逻辑连接上的拥塞二进制指示时,就会降低该连接上的通信量。基于信用值的:该方案类似于在一条逻辑连接上对源站提供显式信用值。这个信用值表示了允许源站发送的字节数或分组数。当一个源站用完它的信用值后,必须等待更多的信用值才可以发送数据。基于速率的:该方案类似于在一条逻辑连接上提供一个明确的数据率上限。源站只能以不超过该上限的速率发送数据。无论是采取开环方法还是闭环方法,拥塞控制都只能暂时地缓解网络过载(一般在毫秒的量级)。如果过载持续更长的时间,那么只有对网络进行更新。图 1-7拥塞控制所起的作用第二节 网络流量控制1.2 .1什么是网络流量控制流量控制用于防止在端口阻塞的情况下丢帧,这种方法是当发送或接收缓冲区开始溢出时通过将阻塞信号发送回源地址实现的。流量控制可以有效的防止由于网络中瞬间的大量数据对网络带来的冲击,保证用户网络高效而稳定的运行。流量限制能限制网络上两个节点之间的数据流量,以满足接收端的承受能力,避免过载。若没有流量控制,在发生过载时将发生以下情况:队列建立分组被丢弃源重传信息拥塞增加不稳定1.2.2 流量控制的目标将流量控制能力添加到网络流量管理中,能够帮助网络管理者对网络资源和业务资源进行带宽控制和资源调度,具备流量控制能力的网络流量管理还能够对严重影响业务运营者收入的未经许可的其他业务进行抑制。还可以通过综合使用网络层、传输层和应用层检测技术,对未经许可的宽带私接用户采取中断连接、主动告警、分时控制等多种管理动作。1.2.3 谈P2P及类似应用对网络的影响P2P应用对于年轻人来说,现在基本上每天都不能离开了,我们会长期一天不关机的下载BT,EDonkey,EMule和POCO,网络上大量免费的共享资源诱惑着我们的眼球,下载速度远高于传统的FTP、HTTP下载,只要有种子供应,甚至几分钟就可以下载一部电影。 P2P应用(PeertoPeer)或点对点应用,对我们每个人来说,展现了一个全新的文件共享的世界,从音乐到视频再到各种应用程序,所有这些都是免费的并且可以通过数以百计的P2P应用来获取。但对于运营商而言,P2P应用就是一场噩梦,因为越来越多的P2P应用抢占了大量的带宽,而传统的web应用,Email受到了严重的挤压。P2P的概念是相当诱人的:一组不同的应用,它们能够充分的利用各种资源,包括存储设备,处理器周期,内容,用户的位置等等,所有这些都可以在Internet的边缘上获得。P2P用户将用户的计算机变成对等体(Peers),既是客户端同时也是服务器。 在使用了P2P应用后,网络变得不再有任何空闲。P2P应用的用户通常将很多大型的文件放在下载队列中然后离开计算机或者开始其它的工作。P2P应用工作在后台的模式下,竭尽所能的获取网络能够提供的最大带宽用以完成下载任务,而不做任何限制。在对等体计算机之间用于文件传输的带宽占用也是惊人的高,这些对等体计算机位于网络的任意位置,使用某些频繁交换信息的协议来发送类似“查询”与“定位”的消息以保持连接的状态,而这种连接将会保持一个很长的时间。假设P2P用户的计算机长时间保持这些连接,那么用于维护连接的流量总和甚至会超过用于娱乐性下载的数据量。1.2.4主流流量控制技术原理那么,到底什么样的方法能有效的检测出P2P流量并加以控制呢?下面介绍的就是一种主流的技术方式:DPI(深度数据包检测) 对P2P应用进行判定需要借助复杂的第7层识别技术,因为大多数P2P文件共享应用都使用端口跳动技术或者盗用一些常用的协议端口进行传输,所以通过端口对它们进行识别显然是远远不够的。因此,所有的数据包都必须在应用层面上进行检查,即对传输协议的载荷(payload)部分进行检查,以判断它们是否符合代表某些应用代码的样本特征。在很多情况下,对于某一种应用的识别需要检测它是否匹配多个代码样本的特征。 标准的协议头部(Header)字段例如TCP/UDP的端口号字段在每一个数据包中都存在。而第7层的协议代码样本通常只能在一次协议会话的前几个数据包中存在,并进行会话标记的请求以标识本次会话中所有的数据包。当网络中产生了一个新的会话,如P2P应用会话,那么一个唯一的协议签名(Signatrue)就必须被找到并能够与已知的协议代码样本相匹配。例如当我们使用第7层的分类方法对一个P2P应用进行了正确的识别,那么该会话中的后续数据包就能够被正确的判别为该P2P应用会话的数据流量。在一些情况下,一个P2P应用使用不止一个会话,这就需要流量管理系统能够从两个或多个会话中提取信息并进行关联以找到能够匹配的代码样本。 因为P2P应用通常使用随机的端口号或者借助一些常用的端口号来进行传输,因此在进行P2P应用样本的搜索时,就不能做任何的假设,我们需要对网络中所有的数据流进行第7层协议的探测,而不管它们是否使用了某个端口号。 使用能够识别第7层应用的流量管理解决方案,运营商能够准确的判别P2P应用并对它们进行限制。 那么DPI作为一种先进的包检测技术,是不是只能识别P2P协议呢,答案是否定的,除了P2P,DPI还可以识别包括VOIP(skype、H.323、SIP、RTP、Net2Phone、Vonage),在线游戏(Doom、Diablo、MSNGame、魔兽世界),stream(PPlive、QQlive、SopCast),web,流量封装协议等各种应用协议,主流的流控设备甚至可以通过DPI识别90以上网络中的各种协议。1.2.5 当前几种流量控制技术及比较认识了P2P,并了解了DPI技术之后,下面谈谈如何对流量进行控制目前主流的控制技术可以分为三种:1:以Packeteer为代表的基于TCP窗口整形的流控技术,我们知道TCP建立连接需要三次握手的过程,通过握手最后达成协议,确定滑动窗口的大小。基于TCP窗口整形的流控技术的核心就在于“人为调整TCP滑动窗口的大小”,达到流量控制的目的。具体过程如下:一台主机A和另一台主机B要建立一个TCP连接,那么主机A和B首先都要和Packeteer设备建立连接,即A和B不直接握手,而是都和Packeteer握手,建立连接后,Packeteer根据自身流控策略的配置,调整TCP滑动窗口的大小,然后通知A和B,要它们各自按照这个窗口的大小来发送和接收文件,从而达到流量控制的目的。这种技术的优势在于:可以对流量的控制非常精确,例如说控制流量在512K,它的误差甚至会控制在几个字节,但是如果控制流量比较大,比如说几百M甚至几个G,那么TCP窗口整形的效果就不那么好了,很多实例表明,在控制大流量的情况下,TCP窗口整形技术通常会出现较大误差,于是又出现了一种新的技术:队列技术。 2:以Allot和Cisco为代表的基于队列的流控技术。它不是通过调整TCP滑动窗口的大小来限制流量,那么它是通过什么来控流呢?它的策略的核心是建立很多管道(pipe),不同的对象对应不同的管道,然后通过调整不同管道的大小,让不同的对象有序通过。比如我要限制P2P为20M,那么我就定义一个20M大小的管道,然后指定对象是P2P协议,那么通过DPI识别出来的P2P协议就被分到这个管道里了,由于管道的容积被限制在20M,所以P2P的流量也就被限制在了20M。然后在P2P的管道里还可以嵌套小的管道,分别对应P2P里的各种协议,例如BT,EDonkey,POCO等等,就可以对协议做更为精确的控制。定义的对象不但可以是协议,也可以是IP地址,主机,网段,服务等等,那么通过建立不同的管道,实现对网络流量的精细化控制。针对TCP窗口整形技术不能很好的整形大流量的缺点,队列技术采用公平排队,按优先级区分的方法,实现了对大流量(几百M甚至几个G)的很好的控制。 3:以华为和GreenNet为代表的基于干扰的流控技术。这种技术设备是旁路在网络中的,而不是像前面两种技术是串在网络中的,因此它不需要进行逐包检测的过程,它是旁路在网络中,复制网络中的数据包,然后通过一个干扰口接入网络,根据策略的不同,发出不同的干扰信号,或者是干扰源地址,或者是干扰目的地址,强制(欺骗干扰)它们调整自己的TCP窗口大小(和Packeteer不同,这种方式不需要流控设备和主机建立握手过程),从而达到流控的效果。第二章 网络拥塞控制与网络流量控制之间的关系2.1 拥塞控制和流量控制的关系拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络性能有关的所有因素。流量控制往往是指在给定的发送端和接收端之间的点对点通信量的控制。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接受。所有两者之间既有联系又有区别。即拥塞控制是网络能够承受现有的网络负荷,是一个全局变量;而流量控制往往只是局部的点对点之间对通信量的控制。
展开阅读全文