电脑技术学习

Internet路由器主动式队列管理机制综述(4)

dn001

  9 AQM提供QoS以及在区分服务中的应用
  
  
  伴随着Internet的高速增长的便是IP业务的多样化和快速增长。现有的Internet所提供的"极力而为"(best-effort)服务显然不能满足不同用户、不同业务对不同服务质量的(Quality of Service QoS)的要求。因此IP QoS已成为当前的研究热点。
  
  IP QoS体系结构可以分为两种基本类型:
  
  基于资源预留:网络资源按照某个业务的QoS要求进行分配,制定资源治理策略。IETF提出的综合服务(IntServ)体系结构便是基于这种策略。
   
  图:RIO算法示意图
  
  基于优先级:对业务流进行分类、整形、标记。按照资源治理策略分配资源,对QoS要求高的业务给以优先处理。IETF提出的区分服务(DiffServ)便是基于这种策略。
  
  由于综合服务存在着扩展性等问题,使得其发展碰到了很大障碍,因此导致了区分服务的产生。区分服务的目标在于简单有效,以满足对可扩展性的要求。
  
  9.1 区分服务
  
  在区分服务网络中,边界路由器根据用户的流规格(stream profile)将用户流划分为不同的级别,再聚合成流聚集(stream aggregate),聚集信息存放在IP包头的DS标记域,称为DS标记(Differentiated Services CodePoint,DSCP)。内部节点则根据DSCP提供不同质量的调度转发服务,其外部特性称为每跳行为(Per-Hop-Behavior,PHB)。DiffServ的服务类型除了传统的极力而为的服务外,还有确保服务(Assured Service)和奖赏服务(Premium Service)。它们分别对应快速转发(EXPedited Forwarding, EF) 型PHB和确保转发(Assured Forwarding, AF)型PHB。
  
  9.1.1 确保服务
  
  奖赏服务严格保证用户的带宽,为用户提供低延迟、低抖动、低丢失率和保证带宽的所谓"三低一保证"的端到端或网络边界到边界的传输服务,是目前区分服务中服务级别最高的种类。
  
  与奖赏服务的严格保证不同,确保服务是从统计上保证用户的带宽。确保服务最具吸引力的是其实现机制较为简单,只要采用简单的标记和丢弃机制就能实现IP QoS。在发生拥塞时,确保服务通过控制丢弃优先级,提供了比"极力而为"服务更好的服务。确保服务的基本思路是:
  
  边界路由器标记包,预约带宽内的标为IN,否则标为OUT。
  
  发生拥塞时,Out包的丢弃率大于In包。
  
  9.2 RIO(RED with In and Out?/strong>?
  
  RIO的基本思想是:边界路由器监视每个进入网络的用户数据流,根据它们的服务规格对包进行标识,预约带宽以内的标为IN(in profile), 超出的标为OUT(out profile)。在拥塞的路由器上,Out包被丢弃的概率要大于In包,从而在一定程度上保护In包。RIO的算法如图所示。
  
  For each packet arrival
  If it is an In packet
  Calculate the average In queue size avg_in
  Calculate the average queue size avg_total
  If it is an In packet:
      if min_in
  
  
  RIO算法是基于RED算法的,但对RED算法进行了扩充,使其能在一个队列中治理In包和Out包,而不需要维持两个队列。因为假如维持两个队列,将会增加包的乱序,从而导致TCP性能降低或者增加延迟抖动。RIO有两套参数:一套是(min_in,max_in,max_in_p),用来计算In包的标记率;另一套是(min_out,max_out,max_out_p),用来计算Out包的标记率。可以通过选择这两套参数使得RIO增大Out包的丢包率,从而保护In包。一般来说,min_in>=max_out,max_out_p>max_in_p,并且In包的丢包率依靠于In包的平均队长avg_in,而Out包的丢包率依靠于总的平均队长avg_Q。这样,一旦RIO检测到早期拥塞,首先丢弃Out包,并且直到Out包全丢了,假如继续拥塞,才开始丢弃In包。
  
  实际上,确保服务就是RIO方法的扩充。目前,绝大部分区分丢弃机制(differentiated drop mechanism)的研究都是基于RIO方法的。RIO已成为实现区分服务的一种简单有效的方法。
  
  9.2.1 RIO性能分析
  
  对确保服务而言,根据网络是否能够满足其规格要求的带宽可以分为"充分提供"(over-prov- isioned)和"不充分提供"(under-provisioned)两种情况。
  
  保护TCP的吞吐量免受RTT影响:由于TCP的吞吐量是和RTT成反比。在网络不能充分提供的情况下,小RTT的连接能更块地增加拥塞窗口的大小,因而能更快地超过其规格要求,产生更多的Out包占用剩下的带宽。但是,这些小RTT连接的Out包并不能阻止大RTT连接的In包进入路由器队列,因而大RTT连接的吞吐量至少能在规格范围内得到保证。在网络充分提供的情况下,RIO能充分保证大RTT连接的吞吐量,但其获得的剩余带宽较少。
  
  保护TCP流的吞吐量免受非适应流影响: 在网络充分提供的情况下,RIO能在规格范围内保护TCP流的吞吐量,但所有剩余带宽都被非适应流占用。在网络不能充分提供的情况下,也只有非适应流能达到其规格要求,但其并不能占用超过规格要求的资源。另外,RIO无需每流状态信息,简单易行。
  
  基于同样的原因,Web类流也得到了较好的保护。由于在现在的Internet上,Web流已占总流量的50%,因此,部属基于RIO的确保服务也有其现实性。
  
  事实上,在网络还有剩余带宽的情况下,RTT大小、包的尺寸、聚流中单流的数量、目标速度以及是否存在非适应流都会影响TCP流对剩余带宽的使用。另外,假如其它方面都相同,用户并不能按规格要求成比例地享用剩余带宽。
  
  若网络带宽不能满足用户的规格要求,用户获得的性能也是更多的受到了TCP和RED在竞争的流之间分配带宽方式的影响而不是规格本身。但规格要求低的用户总能比规格要求高的用户更快地接近目标带宽。
  
  9.3 带权重的RED(Weighted RED )
  
  WRED是CISCO公司提出的一种支持区分服务的AQM机制。与RIO一样,WRED基本思路也是在IP包头按照某种策略进行标记,丢包优先级基于该标记。WRED能支持8个独立的丢包优先级,每个级别配置一套独立的RED参数,如下图所示:
   
  图7:WRED示意图1(交错型)
   
  图8:WRED示意图2(重叠型)
  
  WRED和RIO最主要的区别在于,WRED只使用一个平均队长来计算丢包率,而RIO需要两个。WRED计算平均队长和RED中一样,是基于队列中所有的包,而RIO除此以外还需要计算In包的平均队长。
  
  WRED的参数设置有两种方式,一种是和RIO一样,称为交错型(staggered),每个级别都有一套参数(min_th(i),max_th(i),max_p(i)),并且满足max_th(i)
  9.4 RIO和WRED性能的比较
  
  RIO和RED都是基于RED的变种。事实上,根据RED阈值的套数、计算平均队列的机制可以将RED变种分为四类,如图5所示:
  
  图9:RED变种
  
  像WRED和RIO这类有多套阈值的RED变种可以统称为MRED(Multi-Level RED)。最常用实现区分服务的AF PHB的两种MRED便是RIO和WRED了。虽然这两种算法很相似,但在性能上还是有差别:
  
  对ON-OFF突发流,RIO在保护低丢弃优先级的包方面优于WRED。
  
  对短时(short lived)流,RIO的处理速度高于WRED。
  
  在保护低丢弃优先级的包方面要达到同样的效果,WRED比RIO需要更大的阈值,这样就意味着延时的增加。
  
  9.5 基于分类的阈值(Class-Based Thresholds CBT)
  
  除了RIO和WRED,另一种可以来实现区分服务的AQM就是CBT。CBT的基本思想是基于一定的策略对业务进行分类,每一类都有一个阈值。CBT,和RED一样,通过平均队长来控制标记包的概率;不同之处在于,当一个包进入路由器时,首先要计算该类业务的平均队长,计算方法和RED中计算平均队长一样,假如平均队长大于该阈值,则丢弃包;否则,再按照RED算法进行丢包。
  
  CBT实际上是一种资源预留机制,通过对不同的业务提供不同的阈值,就达到了为不同业务、不同用户提供不同服务质量的目的。CBT最大的缺陷在于,静态的资源预留机制不能适应动态的业务组成的变化。假如某类业务的组成成分发生急剧变化时,CBT的性能就会大大下降。改进的方法就是动态地设置每类业务地阈值,这个算法称为动态的CBT(Dynamic CBT)。DCBT需要维持每类业务的状态信息和跟踪其活跃流的数量,从而动态地调整阈值。
  
  10 结束语
  
  主动式队列治理AQM技术是IETF推荐的基于路由器拥塞控制的要害技术,它和TCP端到端的拥塞控制相结合,是解决目前Internet拥塞控制问题的一个主要途径。
  
  不仅如此,在对IP QoS 呼声越来越高的今天,AQM也是实现QoS的重要机制。AQM不仅可以通过减小丢包率、端到端延迟、提高吞吐量等支持QoS,而且还可通过对不同业务实施不同的AQM机制来达到区分服务的目的。因此,AQM已经成为目前的研究热点之一。
  
  公平性是AQM需要解决的一个重要问题。如何使路由器不增加过多的额外负担,又能够提高公平性,一直是困绕广大研究人员的一个难题。参数设置问题是AQM需要解决的另一主要问题。虽然目前也提出了一些解决方法,如ARED等,但并没有完全解决这类问题。
  
  另外,目前的AQM机制研究基本上都是基于仿真,然后根据经验进行改进,缺乏有效的理论来指导。因此,还需要建立一套系统的理论体系来指导AQM技术的研究。