随着 Internet 的在全球的高速增长, IP 技术渐渐地已成为一种广泛、通用的网络平台。它的经济性、灵活性和支持多业务的能力是原来的电路交换网络所无法比拟的。但是传统的 IP 技术只能采用尽力而为的 (Best Effort) 的方式进行包的转发,它只在能力范围内尽可能快地传送,但对吞吐量、延迟、延迟抖动和丢包率没有任何保障,而把传输损失都留给终端系统来处理。


这种采用尽力而为的发送模式曾经是合适的,因为大多数基于 IP 的传统应用 ( Telnet, FTP ) 可忍受较大的延迟和延迟抖动。但是,情况正在迅速改变。电话、视频、 WEB 等新型业务正在大量普及;新型多媒体业务需要大量的带宽和严格的时限;而且,因特网用户呈指数级的增加,也会导致更加严重地网络延迟和阻塞。


虽然扩大网络节点和链路的容量确实是解决方案的一部分,然而,简单地在发生问题的地方投入带宽是远远不够的,因为因特网上暂时性和突发性的网络阻塞并不能被消除。新一代因特网必须能够向某些应用和用户提供不同级别的保障,实现 IP 网络的服务质量( QoS );同时结合 SLA (服务等级协议)的执行,向他们提供差分化的服务, IP 服务提供商才能真正盈利。


IP QoS
模型


目前, IETF 为了实现 IP 上的 QoS 而定义了许多模型和机制,主要的模型如下:


一. 相对优先级标记模型( Relative Priority Marking [1]


相对标记模型是最早的 QoS 模型,它的机制是通过终端应用或代理对其数据流设置一个相对的优先级,并对相应的包头进行标记,然后网络节点就会根据包头的标记进行相应的转发处理。这种模型实现起来非常简单,但是颗粒度较粗并且缺少高级 QoS 处理流程(如 Remarking Policy Shaping 等),无法实现细致多样的 QoS 保证。目前采用这种模型的技术有 IPv4 Precedence RFC791 )。另外还有令牌环优先级( IEEE 802.5 )和以太网流量等级( 802.1p )也是采用这种架构。


二. 集成业务模型( Inter-Serv [2]


其设计思想是在 Best Effort 服务模式的基础上定义了一系列的扩展特性,可以为每一个的网络连接提供基于应用的 QoS ,并且使用信令协议在网络中的每个路由器中创建和维护特定流的状态,以满足相应网络服务的需求。


这种体系能够明确区分并保证每一个业务流的服务质量,为网络提供最细粒度化的服务质量区分。但是在 IP 核心网络中的实施存在问题,因为 Inter-Serv 的实施要求在每个网络节点为每个流提供相当的计算处理量。这包括端到端的信令和相关信息来区分每个流,跟踪、统计资源占用,策略控制,调度业务流量。随着 Inter-Serv 流数量的增加, Inter-Serv 信令的处理和存储对路由器的资源消耗也在飞速地增加,而且也极大地增加网络管理地复杂性,所以这种模型的可扩展性较差。目前采用这种模型的技术有: MPLS-TE RSVP ),另外较为典型的还有 ATM 和帧中继。


三. 差分业务模型( Diff-Serv [3]


与作用于每个流的 IntServ 相比,在 DiffServ 体系结构中,业务流被划分成不同的差分服务类(最多 64 种)。一个业务流的差分服务类由其 IP 包头中的差分服务标记字段( DiffServ CodePoint DSCP )来标示。在实施 DiffServ 的网络中,每一个路由器都会根据数据包的 DSCP 字段进行相应的转发处理,也就是 PHB(Per Hop Behavior)


虽然 DiffServ 不能对每一个业务流都进行不同服务质量保证。但由于采用了业务流分类技术,也就不需要采用信令协议来在每个路由器上建立和维护流的状态,节省了路由器的资源,因此网络的可扩展性要高的多。另外 DiffServ 技术不仅能够在纯 IP 的网络中使用,也能通过 DSCP MPLS 标签以及标签头部的 EXP 字段的映射应用在多协议标签交换技术 MPLS 的网络中。



DiffServ
的主要架构分为两层:边缘层与核心层。


边缘层完成如下工作:


-
流量识别和过滤:当用户流量进入网络的时候,边缘层设备会先对流量进行识别,根据预先定义的规则过滤掉非法的流量,然后再根据数据包中所包含的信息,如源 / 目的地址、端口号、 DSCP 等,将流量映射到不同的服务等级。


-
流量策略和×××:当用户的业务流量被映射到不同的服务等级之后,边缘层设备会根据和用户所签订的 SLA 中的 QoS 参数,如 CIR(Commit Information Rate) PIR Peak Information Rate ),来对流量进行×××,以确保进入网络的流量不会超过 SLA 中所设定的范围。


-
流量的重新标记:经过×××后的流量会由边缘层设备根据其服务等级来设定其数据包中服务等级标记,如 IP 包头中的 DSCP 字段或是 MPLS 包头中的 EXP 字段等,以便核心层设备进行识别和处理。


相对于边缘层,核心层所要完成的工作就简单地多,核心层设备主要是根据预先设定的 QoS 策略对数据包中的相关的 QoS 字段进行识别并进行相应的 QoS 处理。通过这种分层次的结构形成了 智能化边缘+简单核心 QoS 网络架构,这种架构不但提高了网络的可扩展性,而且大大提高了 QoS 处理的灵活性。


IP
网络设备对 DiffServ 的实现


由于 DiffServ 的灵活性和可扩展性,目前几乎所有的 IP 网络设备都支持 DiffServ 架构。


而在网络设备上支持 DiffServ 架构一般需要实现如下功能:


-
多条件流量区分


多条件流量区分是指根据所接受到的客户流量中包含的不同条件信息和预先定义的区分规则来划分流量的转发等级。区分规则的格式类似于访问控制列表( ACL ),每条规则包含不同的匹配条件和相应的转发等级,当客户流量符合某条区分规则的匹配条件时,此流量就被划分为相应的转发等级。这里所指匹配条件可以是物理端口、 VLAN 、各种 IP 字段或是各种 MAC 字段等。


-
流量标记和转发等级映射( Forwarding Class


经过区分规则区分后的流量会被映射到不同的转发等级, DiffServ 定义了几种标准的转发等级:


-
加速转发等级( Expedited Forwarding Class


加速转发等级拥有最高的转发优先级,设备必须保证其他转发等级的流量无法影响加速转发等级流量的延时和抖动,因此加速转发等级往往用于网络控制流量和对于抖动敏感的流量如 VOIP


-
保证转发等级( Assured Forwarding Class


保证转发等级非常类似于帧中继的 QoS ,为业务流量提供了 PIR Peak Information Rate )和 CIR Commit Information Rate )的参数设置。当客户流量小于 CIR 时,被标示为 “in-profile” ,而当客户流量超过了 CIR ,则被标示为 “out-profile” 。通过这样的区分当网络中发生拥塞的时候, “out-profile” 的流量会比 “in-profile” 的流量先丢弃。


-
尽力而为转发等级( Best-Effort Forwarding Class


尽力而为是最低优先级的转发等级,只有当加速转发等级和保证转发等级的流量转发完之后,才处理尽力而为转发等级流量。


当流量的转发等级确定之后,设备会对流量进行相应的标记,以便下游网络设备进行同样的识别和处理,实现统一的 QoS 策略。 DiffServ 标准中定义的标记字段分别为 IP 包头中的 DSCP 字段和 MPLS 包头中的 EXP 字段。


-
队列和调度


各个 DiffServ 等级的转发处理都是通过队列和调度实现的。队列是一个逻辑概念,它实际上是设备高速内存中的一段缓存,遵循 先进先出 的规则。系统中往往有多个队列,以对于多个转发等级,当数据包被确定为某个转发等级之后,就会存储在相应的队列中,然后系统根据不同转发等级和不同的参数设置( PIR CIR )进行调度。不同的转发等级往往采用不同的调度算法,比如对于加速转发等级采用的是 严格优先级 调度,也就是说加速转发等级队列中的数据包永远都是获得最先调度以保证其最高优先级。而对于保证转发等级则采用权重轮回调度算法,先轮回调度所有 “in-profile” 的流量,再调度所有 “out-profile” 的流量,以保证每个保证转发等级队列都能够根据其 CIR PIR 来进行调度。


-
拥塞控制


当某个队列缓存被占满之后,系统会发生拥塞,这时开始大量丢弃新收到的数据包,直到数据源通过 TCP 的流量控制机制(滑动窗口协议),监测到丢包,降低发送速率,才能消除拥塞,重新开始转发。但是随着数据源的速率不断增加,系统又会发生拥塞和丢弃,这样周而复始,对于整体网络性能影响很大。因此 DiffServ 架构中往往会引入拥塞控制机制,常用的算法有 RED WRED ,所谓 RED 是指随机早期检测算法( Random Early Detection ),它通过在拥塞发生之前随机丢弃一些数据包使得 TCP 发送源来降低其发送速率,数据包的丢弃可能性随着队列缓存的占有率而不断增加,这样就可以避免大量丢弃数据包现象的发生。


- MPLS DiffServ


随着 MPLS 技术的广泛应用, IETF MPLS 工作组定义了两种将 IP DiffServ 等级映射到 MPLS LSP 上的方法:


- E-LSP


使用 MPLS 包头中的 EXP 字段来映射 IP DiffServ 等级,这种方式较为简单,但是由于 EXP 字段只有 3 比特长,因此能够表达的等级只有 8 种。


- L-LSP


这种方法不但使用 EXP 字段,还使用 MPLS 标签来映射,这样就大大扩展了能够表达的等级数量,但缺点是要消耗大量有限的 MPLS 标签资源。


值得一提的是在 MPLS 技术中还有一种支持 QoS 方式就是采用流量工程技术,也就是 RSVP-TE RSVP-TE 可以在建立 LSP 的过程中在沿途的节点上预留带宽,这种技术是作为 InterServ 架构的一种,通常会和 DiffServ 架构结合使用,提供业务的中继链路带宽。