1. 引言
1.1. 集成服务(IntServ)
集成服务[1] (Integrated Service, IntServ)是IETF针对服务质量(Quality of Service, QoS)提出的一种模型。该模型是一种基于流的、状态相关的结构。集成服务体系的核心协议是资源预留协议(resource reservation protocol, RSVP),RSVP通过信令[2] 在应用程序和网络节点间进行QoS协商。源端按照选定的路径向接收端发送PATH消息和业务特性信息,并在所经过的链路上搜集各个节点的信息,这些信息包括最小的可用带宽和最小的路径延迟等。
这些消息传送到接收端后,接收端按照应用的延迟要求,计算沿途允许的排队延迟。然后选择满足要求所需要的带宽。此时,接收端可发出RESV消息申请资源预留。RESV消息沿原路返回,并在沿途路由器申请资源预留,包括带宽和延迟预留。中间路由器安装每个流的资源预留软状态(soft state),如果资源预留信息成功返回源端,源端可以在这条预留的路径发送数据流,否则无法发送。
集成服务模型的主要缺点是,中间的路由器必须是RSVP路由器,只要一个路由器不是RSVP路由器,资源预留无法实现,对中间路由器要求高。面对单流进行资源预留,使路由器计算处理和内存消耗大大增加,所以此模型不适合用在大型网络中。
1.2. 区分服务[3](DiffServ)
集成服务可扩展性很差,并没有获得广泛的应用,难以在Internet核心网络实施,DiffServ主要解决网络的扩展性问题,用于骨干网。
DiffServ把复杂性放在网络的边界,网络的边界路由器按照QoS的要求进行分类,Internet服务供应商提供给每个用户不同等级和质量的服务。网络边界路由器把每个Ipv6分组中的通信类(Traffic Class)字段标记为区分服务(DS),DS字段被称为区分服务码点(DSCP)。边界路由器把DS映射到类转发行为PHB((Per-Hop Behavior,每跳行为)中去。核心路由器查看DSCP,并根据PHB值进行转发。
DiffServ是聚集后的每一类Ipv6分组进行的QoS控制,而不是像IntServ那样针对单个流,因此,DiffServ是粗粒度的QoS控制系统。容易出现拥塞。但具有扩展性,可在大型网站中使用。
1.3. 多协议标记交换[3](MPLS)
MPLS在网络的入口路由器为每个Ipv6分组加上一个固定长度的标签,核心路由器根据标签直接转发,在出口的边缘路由器再恢复到原来的Ipv6分组。实现路由选择和数据转发相分离。
MPLS域的边界路由器(LER)根据一定的路由协议选择路径,选好路径后,使用标签分发协议(LDP)为每个端口分发标签,建立标签交换路径(LSP),核心路由器按照标签沿路径进行转发。这样提高转发的速度。
其主要优点是减少了网络复杂性,能降低网络成本,在提供Ipv6业务时能确保QoS和安全性,具有流量工程[4] 能力。但它不能选择路由,因此需要和CBR合作,以便根据网络的流量特性和网络容量限制选择路由。
以上三种模型都是实现QoS的方法。IntServ模型实现复杂,成本高,适用在小型网络中,扩展性差。DiffServ模型实现粗粒度的Ipv6分组汇聚的数据流,容易出现拥塞。MPLS[5] 不能选择路由。因此,本文从网络的可扩展性,减少网络拥塞[6] ,可选择路由等方面提出了一种新型Ipv6QoS的实现方法。
本文的系统在边界路由器将同一子网发向同一目的子网的所有数据流聚集[7] 成一个类,以类为单位进行资源申请,申请到资源后,该类中所有Ipv6分组按照一定调度方法调度发送,直到该类中所有Ipv6分组都发送完以后才取消预留的资源。
该系统以类为单位进行资源申请,减少了资源申请的次数,通过在系统中安装一个专用路由服务器[8] 来控制资源的预留。
2. 实现QoS系统的结构
该系统的组成:由边界路由器(入口路由器或出口路由器)、内部路由器和专用路由服务器组成。如图1所示。
2.1. 入口路由器(或出口路由器)
入口路由器的功能主要有以下三方面:
1) 把单个的流按照源地址的子网号和目的地址的子网号,映射[9] 到类。如图2所示。
当Ipv6分组到达入口路由器时,入口路由器先判断Ipv6分组是QoS分组还是非QoS分组,如果是非QoS分组[10] 按尽力而为的方式发送,如果是QoS分组,从该分组的源地址中提取出源地址的子网号(如果没有划分子网就提取出网络号),从该分组的目的地址中提取出目的地址的子网号。根据源地址的子网号和目的地址的子网号划分类。源地址的子网号和目的地址的子网号相同的分组为一类。这样入口路由器就把单个的Ipv6分组汇聚成一个流聚集[11] 。
Figure 1. QoS system structure
图1. QoS系统的结构
Figure 2. Ipv6 packets are mapped to the classes
图2. Ipv6分组映射到类
2) 资源申请,入口路由器照数据流QoS要求,对链路[12] 进行资源申请。
3) 接入控制,只有当链路的资源满足QoS要求时,入口路由器才能接收发送来数据流。
2.2. 专用路由服务器
在路由器服务器上动态地维护两个数据库。链路带宽利用率[13] 数据库(LUDB)和链路延迟[14] 数据库(LDDB)。
在图1中,当Ipv6分组到达入口路由器A,先归入某一类(比如K1),在发送之前,入口路由器A为类K1进行资源申请[15] ,入口路由器A向专用路由服务器发送资源申请信息request[16] (请求),request中包括入口路由器[17] 地址,出口路由器地址以及类K1中Ipv6分组QoS要求(包括链路带宽r和延迟d)。
如果类K1中各个Ipv6分组QoS要求链路带宽分别为r1, r2, r3, r4, r5,
, rn,那么r是r1, r2, r3, r4, r5,
, rn中最大的带宽;如果类K1中各个Ipv6[18] 分组QoS要求延迟分别为d1, d2, d3, d4, d5,
, dn,那么d是d1, d2, d3, d4, d5,
, dn中最小的延迟。
专用路由服务器收到request后,计算从入口路由器A到出口路由器B之间所有路径的带宽和延迟。从入口路由器A到出口路由器B之间共有三条路径。分别是路径1:A→E→B,路径2:A→D→B,路径3:A→C→B。路径1的带宽和延迟分别为:r1和d1;路径2带宽和延迟分别为:r2和d2;路径3带宽和延迟分别为:r3和d3。
如何选择合适的路径?一条路径符合QoS要求必须具备的条件:链路实际带宽大于或等于分组QoS要求带宽,链路的实际延迟小于或等于QoS要求带宽的延迟。如表1所示。
当有多条链路都满足QoS要求时,如图1、图2,那么就选择带宽最大,延迟最小的那一条链路。如表1、表2实际链路带宽、延迟的计算结果,选择路径根据表1~3路径的选择。
表1、表2中,如果选择路径1:A→E→B,专用路由服务器就在路径A→E→B上建立一条虚电路,同时向入口路由器A发送一个answer[19] (应答)消息,其中,answer消息中包括路径A→E→B,以及路径的带宽的数值r1和延迟的数值d1,入口路由器A收到answer消息后,就开始发送类K1中的数据分组。
当入口路由器A发送完类K1中的Ipv6分组后,就向专用路由服务器发送一个穿上结束的end信息。专用路由服务器收到end信息后,释放A→E→B虚电路[20] 。
如果计算实际带宽和延迟的结果是没有符合要求的路径,如表4所示,就按表3的方法选择路径。
此时,入口路由器A收到answer消息时,只发送类K1中带宽 < r1,延迟 > d1的Ipv6分组,带宽 > r1,延迟 < d1的Ipv6分组无法发送。
3. 系统的优势与改进
该系统中的内部路由器的功能比较简单,当专用路由服务器选好路径,建立虚拟电路以后,按照虚拟电路发送数据就可以了。所以内部路由器是一般的路由器,不需要是RSVP路由器,这样减低了网络
Table 1. Calculating the actual link bandwidth and the delay (1)
表1. 计算实际链路带宽、延迟的结果(1)
Table 2. Calculating the actual link bandwidth and the delay (2)
表2. 计算实际链路带宽、延迟的结果(2)
Table 3. Choosing the path
表3. 路径的选择
Table 4. Calculating the actual link bandwidth and the delay (3)
表4. 计算实际链路带宽、延迟的结果(3)
的成本;以类为单位申请资源,减少了资源申请的次数。
改进之处:1) 如果当网络的规模比较大的时候,组成多个不同的域。在每个域中安装专用路由服务器。2) 当类K中的Ipv6分组比较多时,可以把类K再细分二级类,每一类和一条链路绑定。