七种IP拥塞控制算法需改进 CIO俱乐部-计世网

来源:百度文库 编辑:神马文学网 时间:2024/04/29 01:13:21
七种IP拥塞控制算法需改进
2006-09-25 10:45:50

DDoS攻击引起的网络拥塞,是由恶意主机控制大量傀儡机所造成的,并非传统意义上的端到端拥塞,所以只能在路由器上进行控制,即基于IP拥塞控制来实现的。而目前主流的
七种IP拥塞控制算法都需要在改进后,才能有效地应用于防范DDoS攻击。
分布式拒绝服务DDoS(Distributed Denial of Service)攻击被认为是目前Internet所面临的最大威胁之一。
目前有一些常用的DDoS攻击防护机制和方法包括: 通过修改配置和协议预防攻击、反向查找攻击源头、攻击检测和过滤、分布式攻击检测和过滤(主机端/路由器端)等。
DDoS攻击与网络拥塞
网络产生拥塞的根本原因在于用户提供给网络的负载超过了网络的存储和处理能力,表现为无效数据包增加、报文时延增加与丢失、服务质量降低等。如果此时不能采取有效的检测和控制手段,就会导致拥塞逐渐加重,甚至造成系统崩溃,在一般情况下形成网络拥塞的三个直接原因是:
● 路由器存储空间不足。几个输入数据流需要同一个输出端口,如果入口速率之和大于出口速率,就会在这个端口上建立队列。如果没有足够的存储空间,数据包就会被丢弃,对突发数据流更是如此。增加存储空间在表面上似乎能解决这个矛盾,但根据Nagel的研究,如果路由器有无限存储量时,拥塞只会变得更坏。
● 带宽容量相对不足。直观地说,当数据总的输入带宽大于输出带宽时,在网络低速链路处就会形成带宽瓶颈,网络就会发生拥塞,相关证明可参考香农信息理论。
● 处理器处理能力较弱。如果路由器的CPU在执行排队缓存、更新路由表等操作时,处理速度跟不上高速链路,会产生拥塞。同理,低速链路对高速处理器也会产生拥塞。
以上是早期Internet网络发生拥塞的三个主要原因。对此,TCP拥塞控制给出了较好的解决方案。在实际应用中,如果所有的端用户均遵守或兼容TCP拥塞控制机制,网络的拥塞能得到很好的控制。但是,当DDoS攻击造成网络拥塞时,TCP基于窗口的拥塞控制机制对此无法加以解决。原因是攻击带来的拥塞是由大量恶意主机发送数据所造成的,这些主机不但不会完成TCP拥塞控制机制所规定的配合工作,甚至本身就可能包含了伪造源地址、加大数据发送量、增加连接数等攻击方式。在此情况下,对DDoS攻击所造成的网络拥塞就必须在路由器上进行处理,这只能是基于IP拥塞控制来实现的。
需要注意的是,DDoS攻击所造成的网络拥塞不同于上面所分析的普通情况,它们之间存在着本质差异。相比之下,DDoS攻击所造成的拥塞,其攻击数据常常在分组大小、到达时间、协议类型等诸多方面具有一定相关性,这是由分布式拒绝服务自身特点所决定的。而普通情况下的网络拥塞,其数据并非由多个受控攻击者发送,因而不具有类似的相关性。对攻击所造成的拥塞进行防护,就应首先找到这个相关性,在此基础上引入传统拥塞控制机制并加以完善,才能进行高效、准确的检测和控制工作。
七种主流IP拥塞控制算法及评价
根据DDoS攻击的原理和机制,对各种机制的防护能力做评价时应参照以下标准: 条件一,是否能按一定规则进行特征设定; 条件二,是否能根据一定规则对流经的数据加以区分; 条件三,针对不同类型的数据包,是否能提供不同优先级的服务。如果一个拥塞控制机制满足了以上三个条件,就基本上具备了防护DDoS攻击的能力。
下面将简略地分析当前一些主流IP拥塞控制算法,并对其防护DDoS攻击的可行性进行评价:
● 先进先出FIFO(First In First Out)
传统的先进先出策略是目前Internet上使用最广泛的一种服务模型。它的最大优点是便于实施,但由于FIFO本质上是一种“去尾”(Drop-tail)的算法,所以当突发性数据到达时容易出现包丢失现象,其公平性较差,对上层的TCP快速恢复的效率也较低。
对照评价标准可知,该算法没有满足任何一个条件,过于简单且缺乏智能性,完全不能用于DDoS攻击防护。
● 随机早期检测算法RED(Random Early Detection)
RED算法是按一定概率丢弃进入路由器的数据包。RED的早期设计思路是避免丢弃属于同一连接的连续数据包,从而提高连接的吞吐量。通过分摊包丢失率,RED可以在各连接之间获得较好的公平性,对突发业务的适应性较强。RED也存在一些不足,例如可能会引起网络的不稳定,而且选择合适的配置参数也不是一件容易的事。近年来,研究者提出了许多RED的改进算法,这些算法都在一定程度上,从不同方面改善了RED的性能。
对照评价标准可知,该方法对DDoS攻击的防护作用不大,由于其思路是分摊包丢失率,对正常业务和攻击数据“过分公平”,不能做到有所区分,从而使得大量正常业务在攻击发生时无法得到服务。
● 显示拥塞指示算法ECN(Explicit Congestion Notification)
前面两种拥塞控制算法都是通过包丢失来告诉端系统,网络已经发生拥塞。而显示拥塞指示算法通过明确的拥塞提示(RFC2481)来实现拥塞控制,对一次性大批量数据传输的效果比较理想,但对时延有一定要求。
该算法在源端数据包中嵌入ECN,由路由器根据网络情况设置CE(Congestion Experienced)比特位。源端接收到从网络中反馈回来的这种CE置位数据包后,将随后发出的数据包标记为可丢弃的数据包。ECN的优势在于不需要超时重传,也不依赖于粗粒度的TCP定时,所以在对时延有一定要求的应用场合性能较好。在此基础上还提出了另一种改进算法,它通过调整拥塞窗口CWND的大小,纠正有长时间RTT的TCP连接的偏差,来改进共享瓶颈处带宽的公平性。
对照评价标准可知,该方法对防护DDoS攻击效果不大,原因在于无攻击特征识别和区分功能,在攻击发生时智能性较差。
● 公平排队算法FQ(Fair Queuing)
在FQ算法中路由器对每个输出线路都建有一个排队队列。当一条线路空闲时,路由器就来回扫描所有队列,依次将每队的第一个包发出。FQ的带宽分配独立于数据包大小,各种服务在队列中几乎同时开始。因此在没有牺牲统计复用的情况下提供了另外的公平性,与端到端的拥塞控制机制可以较好地协同。它的缺点在于实现起来很复杂,需要每个数据流的排队处理、每个流的状态统计、数据包的分类以及包调度的额外开销等。
对照评价标准可知,该方法对防护DDoS攻击效果不大,原因同ECN法。

 
● 加权公平排队算法WFQ(Weighted Fair Queuing)
加权公平排队算法是FQ的改进算法。根据不同数据流的不同带宽要求,对每个排队队列采用加权方法分配缓存资源,从而增加FQ对不同应用的适应性,该算法还有其他一些改进算法。
对照评价标准可知,该方法通过改进后可用于防护DDoS攻击,思路是首先对攻击进行检测和分类,然后将入口数据按攻击数据、正常数据、可疑数据三种类型分别排队处理,对攻击数据直接丢弃,而通过对可疑和正常数据赋予一定权值,来提供不同质量的服务。在路由器性能良好、处理能力强的情况下,甚至可以采取更复杂、智能的处理策略,例如多优先级队列。
● 加权随机先期检测WRED(Weighted Random Early Detection)
是将随机先期检测与优先级排队结合起来,这种结合为高优先级分组提供了优先通信服务能力。当某个接口开始出现拥塞时,它有选择丢弃优先级较低的分组,而不是简单地随机丢弃分组。
对照评价标准可知,该方法通过改进后可用于防护DDoS攻击,思路与WFQ类似,它们都符合评价标准的条件三,改进应从增加条件一和条件二着手。
● 定制排队
定制排队是为允许具有不同最低带宽和延迟要求的应用程序共享网络而设计的。定制排队为不同协议分配不同的队列空间,并以循环方式处理队列,当特定协议的数据流被分配了较大的队列空间,也就获得了较优先的服务,定制排队比优先级队列更为公平。定制排队可以保证每一个特定的通信类型得到固定的可用带宽,同时在链路紧张的情况下,避免了数据流企图超出预分配量限制的可能。
对照评价标准可知,该方法通过改进后可用于防护DDoS攻击,都是在资源分配和使用时为不同业务提供优先级加权,改进思路与WFQ和WRED类似。
除了以上7种方法以外,还有其他一些方法。如将FQ与RED算法结合起来的Flow RED算法,它将缓存分成若干排队队列,再在每个数据流使用RED算法,仿真实验证明它的公平性较好; 又如核心无状态公平排队算法CSFQ(Core-Stateless Fair Queuing)在网络边界路由器执行数据流管理,而在核心并不做处理等等。
可以看出,这些算法的防护能力存在着较大差异,其中的任何一种都需要在改进后,才能有效地应用于控制DDoS攻击所造成的网络拥塞。 (ccw)