马素刚
(西安邮电大学 计算机学院,陕西 西安 710121)
随着人们对网络应用的需求不断提高,除了传统的WWW、E-mail、FTP等数据应用外,Internet还必须能够承载一些非传统数据业务,如远程教学、可视电话、视频会议等。不同的应用,要求网络提供的服务质量 (Quality of Service,QoS)也不同。例如文件传输服务要求网络提供准确的传输,任何一位数据都不允许被错误递交,但是对网络延迟并不敏感,而视频会议有非常严格的延迟要求,如果在传输过程中出现少量错误却可以接受。因此,针对网络传输中的不同应用,应该为它们提供相应级别的服务质量保证。
即使在整个多层交换网络中都有足够的带宽,多种网络设计属性也可能影响网络性能,即存在QoS问题[1]。不同的服务质量通常体现在带宽、延迟、延迟抖动、丢包率等方面[2]。
网络带宽用于衡量网络的吞吐能力,如果网络上存在多个数据流,它们将互相竞争带宽。网络带宽取决于物理链路的速率,但通过QoS技术可以提高网络带宽的利用效率。也就是说,QoS并不能增加网络的带宽资源,只是根据业务的需求和网络管理配置来管理带宽。
网络延迟用于衡量数据包在网络中传输时间的长短,一些实时应用(如视频会议)比较关心延迟的大小。
抖动用于衡量网络延时的稳定性。同一个数据流的不同数据包,在网络中经历的延迟可能不同,从而产生抖动。抖动对实时应用的影响较大,会造成失真。
网络丢包率用于衡量网络的可靠性。网络发生拥塞时,由于缓冲队列被占满,必然导致部分数据包被丢弃。
传统的IP网络没有使用QoS机制,提供 “尽力而为”(Best-Effort)服务。所有的报文都被无区别地同等对待,每个路由器对所有的报文均采用先进先出 (First In First Out,FIFO)的策略进行处理,尽最大努力将报文送到目的地,但对报文传送的可靠性、稳定性等不提供任何保证。采用QoS技术能够缓解延迟、抖动、数据包丢失等问题,其实现模型主要有 综 合 服 务 (Integrated Service,IntServ)和 区 分 服 务(Differentiated Service,DiffServ)[3]两种。
IntServ模型通过信令向网络申请特定的QoS服务,网络在流量参数描述的范围内,预留资源以承诺满足该请求。IntServ模型采用基于流的策略,传输路径上的所有网络元素(交换机、路由器等)都要显式地为流提供预定的服务。IntServ模型使用RSVP(Resource reSerVation Protocol,资源预留协议)作为网络中预留资源的控制协议。RSVP是一种信号机制,并不用于传递业务数据,可以实现基于每条流的资源预留。
在通过RSVP建立端到端通信的过程中,每个节点都要保存每个报文流的状态信息,在某一时间会占用非常大的系统资源。尽管RSVP的控制粒度很细,但可扩展性很差,因此IntServ模型并没有在流量汇集的Internet核心网上得以广泛实施。
与IntServ模型不同,DiffServ模型不需要信令,根据每个报文指定的QoS来提供特定的服务。在应用程序发出报文之前,不需要通知网络为其预留资源,网络也不需要为每个流维护状态。DiffServ模型是一种基于类的QoS技术,它在网络边界将数据流按QoS要求进行简单分类,并根据业务的不同服务等级约定,有差别地进行流量控制和转发,以解决拥塞问题。区分服务还是基于逐跳行为(Per-Hop Behavior,PHB)的服务质量模型,它不是在转发路径上实施统一的资源预留,而是在每一跳上对不同标记的包实施不同的行为。
DiffServ模型的服务粒度不再是每个流,从而大大地缓解了可扩展性问题。另外,DiffServ模型可以将其大部分实现复杂度转移到网络的边缘上,而在网络核心只需实现最简单的服务保证机制,因而降低了其实现复杂度。
DiffServ模型由多个组件组成,具有较复杂的体系结构,如图1所示。在输入端,需要对入站数据包进行分类、流量控制以及标记操作,在输出端,需要确定标记后的数据包加入哪个传输队列,以及如何调度这些队列。
图1 DiffServ模型体系结构Fig.1 Architecture of DiffServ model
1)分类。网络设备可以使用第二层帧中CoS(Class of Service,服务类别)位,也可以使用第三层数据包中的IP优先级/DSCP(Differentiated Services Code Point,差异化服务编码点)位来进行分类。在第二层,使用802.1Q或ISL(Inter-Switch Link,交换机间链路)帧中的 3位(CoS位)来分类,可以表示8个不同的服务级别,即0~7。在第三层,将IP报头中的ToS(Type of Service,服务类型)字段的6个最高有效位作为DSCP字段,可以表示的服务级别范围为0~63。CoS与DSCP值之间的映射关系分别如表1、表2所示。
表1 CoS到DSCP的映射Tab.1 The CoS to DSCP mapping
表2 DSCP到CoS的映射Tab.2 The DSCP to CoS mapping
2)流量控制。流量控制用于约束被分类的数据流所占用的传输带宽,从而控制通信流通过交换机传输的速度。
3)标记。修改入站帧的CoS、IP优先级或DSCP值,确保被分类后的报文对应的标记值能够传递给网络上的下一跳设备。
4)入队列。负责将数据流中的报文送往端口的某个输出队列中,进入不同输出队列的报文将获得不同等级和性质的传输服务策略。
5)队列调度。确定以什么样的方式来处理被送到端口各个输出队列中的报文。每一种队列调度技术都用来解决特定的问题,会对网络性能产生特定的影响。常见的队列调度算法包括 FIFO、PQ (Priority Queue, 优先级队列)、CQ(Custom Queue,自定义队列)、WFQ(Weighted Fair Queue,加权公平队列)、WRR(Weighted Round Robin,加权轮询)等[4]。
WRR将每个端口分为多个输出队列,在队列之间进行轮流调度,保证每个队列都能得到一定的服务时间。以Catalyst 3550交换机[5]为例,对一个100 Mb/s的端口使用了4个出站队列,如果配置队列1~4的加权值分别为50、30、10、10,这样可以保证最低优先级队列也能获得至少10 Mb/s的带宽。虽然多个队列的调度是轮询进行,但对每个队列不是固定地分配服务时间片。如果某个队列为空,那么马上换到下一个队列调度,这样带宽资源可以得到充分利用。
使用 Catalyst 3550 交换机 1 台、PC 机 4 台(S1、S2、S3、PC)搭建如图2所示网络。正确配置PC机的网络参数,确保4台PC处于同一个局域网中。
1)启用 QoS
S3550(config)#mls qos!----在交换机 S3550 上全局启用QoS
图2 网络连接示意图Fig.2 Structure of the network
2)配置访问控制列表
S3550 (config)#access-list 100 permit ip any any!----配置访问控制列表(ACL)
3)配置分类映射表
S3550 (config)#class-map match-all ANYIP1!----配置分类映射表ANYIP1
S3550 (config-cmap)#match access-group 100!----匹配编号为100的ACL
S3550 (config)#class-map match-all ANYIP2!----配置分类映射表ANYIP2
S3550 (config-cmap)#match access-group 100
4)配置策略映射表
S3550 (config)#policy-map POLICY1!----配置策略映射表POLICY1
S3550 (config-pmap)#class ANYIP1!----匹配分类映射表ANYIP1
S3550 (config-pmap-c)#set ip dscp 32!----设置 DSCP值为32
S3550 (config)#policy-map POLICY2!----配置策略映射表POLICY2
S3550 (config-pmap)#class ANYIP2!----匹配分类映射表ANYIP2
S3550 (config-pmap-c)#set ip dscp 40!----设置 DSCP值为40
5)在端口上应用策略
S3550 (config)#interface f0/2!----入口 f0/2
S3550 (config-if)#service-policy input POLICY1!----在端口f0/2上应用策略POLICY1
S3550 (config)#interface f0/3!----入口 f0/3
S3550 (config-if)#service-policy input POLICY1!----在端口f0/3上应用策略POLICY1
S3550 (config)#interface f0/4!----入口 f0/4
S3550 (config-if)#service-policy input POLICY2!----在端口f0/4上应用策略POLICY2
6)在端口上配置CoS映射关系
S3550 (config)#interface f0/1!----出口 f0/1
S3550 (config-if)#wrr-queue cos-map 1 0 1!----队列1
S3550 (config-if)#wrr-queue cos-map 2 2 3!----队列2
S3550 (config-if)#wrr-queue cos-map 3 4!----队列 3
S3550 (config-if)#wrr-queue cos-map 4 5 6 7!----队列4
7)配置WRR权重
S3550 (config)#interface f0/1!----出口 f0/1
S3550 (config-if)#wrr-queue bandwidth 5 5 5 85!----配置4个队列的WRR权重[6]
分别把 S1、S2、S3配置为 FTP服务器[7],在客户端 PC上用FTP命令同时从S1、S2、S3上下载文件。为了保证从S1、S2、S3下载同样大小的文件所花费的时间具有可比性,3台FTP服务器应该采用相同的实现方法。实验中使用的文件大小约为1.18 GB(准确大小为1269432320 B),4台PC的配置均为:Intel Pentium CPU G630 2.70GHz (双核)、2GB 内存、500GB硬盘、Windows XP(SP3)系统。记录连续5次文件传输所用的时间及传输速率,如表3所示。
表3 未使用QoS策略Tab.3 Not applying the QoS policy
在Catalyst 3550交换机上,按照上述步骤启用并配置QoS,从3台FTP服务器上同时下载文件,记录连续5次传输所用的时间与速率,如表4所示。可以看出,由于在端口f0/2、f0/3上应用了策略POLICY1,而在端口f0/4上应用了策略POLICY2,故从S3上下载同样大小的文件所用时间最短,速率最大。
表4 在端口f0/4上应用策略POLICY2Tab.4 Applying the policy (POLICY2)in the interface f0/4
在Catalyst 3550交换机上,启用并配置QoS,此时在端口f0/2、f0/4上应用策略POLICY1,而在端口f0/3上应用策略POLICY2,重新测试下载时间,如表5所示,从S2上下载同样大小的文件所用时间最短,速率最大。
在Catalyst 3 550交换机上,启用并配置QoS,此时在端口f0/3、f0/4上应用策略POLICY1,而在端口f0/2上应用策略POLICY2,重新测试下载时间,如表6所示,从S1上下载同样大小的文件所用时间最短,速率最大。
表5 在端口f0/3上应用策略POLICY2Tab.5 Applying the policy (POLICY2)in the interface f0/3
表6 在端口f0/2上应用策略POLICY2Tab.6 Applying the policy (POLICY2)in the interface f0/2
未使用QoS策略时,从3台FTP服务器下载文件所用的时间总体上相差不多。在交换机上启用QoS,并把某个端口(如f0/4)优先级设置为最高时,则从该端口连接的FTP服务器(S3)上下载文件最快。测试结果表明,通过合理配置QoS机制,能够为不同类别的数据流提供不同的传输优先级,从而提供不用级别的服务质量。文中设计的实验,能够帮助初学者更深刻地理解QoS的工作过程,从而更好地掌握计算机网络相关原理。搭建的网络拓扑及配置过程比较简单,但是对于QoS技术在网络中的部署具有一定的现实指导意义。
[1]刘大伟,张芳,译.(美)Richard Froom,Balaji Sivasubramanian,Erum Frahim,著.CCNP自学指南:组建Cisco多层交换网络(BCMSN)[M].3版.北京:人民邮电出版社,2006.
[2]张国清.QoS在IOS中的实现与应用[M].2版.北京:电子工业出版社,2012.
[3](美)Michael Flannagan,Richard Froom,Kevin Turek,著.Cisco Catalyst QoS—园区网中的服务质量 [M].尹敏,张卫,译.北京:人民邮电出版社,2004.
[4]梅创社.平面网络中QOS多播路由算法研究与设计[J].电子设计工程,2012,20(6):71-73.
[5](美)David Hucaby,Steve McQuerry, 著.Cisco现场手册:Catalyst交换机配置[M].张辉,译.北京:人民邮电出版社,2004.
[6]蒋峥峥,王丹丹,陈晓红.基于DiffServ技术的园区网QoS控制与实现[J].科技信息,2013(22):16-17.
[7]何波,崔贯勋.计算机网络实验教程[M].北京:清华大学出版社,2013.