
qos
QoS(Quality of Service,服务质量)指一个网路能够利用各种基础技术,为指定的网路通信提供更好的服务能力, 是网路的一种安全机制, 是用来解决网路延迟和阻塞等问题的一种技术。 在正常情况下,如果网路只用于特定的无时间限制的套用系统,并不需要QoS,比如Web套用,或E-mail设定等。但是对关键套用和多媒体套用就十分必要。当网路过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网路的高效运行。在RFC 3644上有对QoS的说明。
基本介绍
- 中文名:服务质量
- 外文名:Quality of Service
- 简称:QoS
- 属性:为指定的网路通信提供服务能力
定义
功能简介
而当网路发生拥塞的时候,所有的数据流都有可能被丢弃;为满足用户对不同套用不同服务质量的要求,就需要网路能根据用户的要求分配和调度资源,对不同的数据流提供不同的服务质量:对实时性强且重要的数据报文优先处理;对于实时性不强的普通数据报文,提供较低的处理优先权,网路拥塞时甚至丢弃。QoS应运而生。支持QoS功能的设备,能够提供传输品质服务;针对某种类别的数据流,可以为它赋予某个级别的传输优先权,来标识它的相对重要性,并使用设备所提供的各种优先权转发策略、拥塞避免等机制为这些数据流提供特殊的传输服务。配置了QoS的网路环境,增加了网路性能的可预知性,并能够有效地分配网路频宽,更加合理地利用网路资源。
QoS功能示意图

下面从QoS服务模型出发,对目前使用最多、最成熟的一些QoS技术逐一进行描述。在特定的环境下合理地使用这些技术,可以有效地提高服务质量。
服务模型
通常QoS提供以下三种服务模型:
l Best-Effort service(尽力而为服务模型)
l Integrated service(综合服务模型,简称Int-Serv)
l Differentiated service(区分服务模型,简称Diff-Serv)
1. Best-Effort服务模型是一个单一的服务模型,也是最简单的服务模型。对Best-Effort服务模型,网路尽最大的可能性来传送报文。但对延时、可靠性等性能不提供任何保证。
Best-Effort服务模型是网路的预设服务模型,通过FIFO(first in first out 先入先出)伫列来实现。它适用于绝大多数网路套用,如FTP、E-Mail等。
2. Int-Serv服务模型Int-Serv是一个综合服务模型,它可以满足多种QoS需求。该模型使用资源预留协定(RSVP),RSVP运行在从源端到目的端的每个设备上,可以监视每个流,以防止其消耗资源过多。这种体系能够明确区分并保证每一个业务流的服务质量,为网路提供最细粒度化的服务质量区分。
但是,Inter-Serv模型对设备的要求很高,当网路中的数据流数量很大时,设备的存储和处理能力会遇到很大的压力。Inter-Serv模型可扩展性很差,难以在Internet核心网路实施。
3. Diff-Serv服务模型Diff-Serv是一个多服务模型,它可以满足不同的QoS需求。与Int-Serv不同,它不需要通知网路为每个业务预留资源。区分服务实现简单,扩展性较好。
相关介绍
产生背景
在网际网路创建初期,没有意识到QoS套用的需要。因此,整个网际网路运作如一个“竭尽全力”的系统。每段信息都有4个“服务类别”位和3个“优先权”位,但是他们完全没有派上用场。依传送和接收者看来,数据包从起点到终点的传输过程中会发生许多事情,并产生如下有问题的结果:
·丢失数据包- 当数据包到达一个缓冲器(buffer)已满的路由器时,则代表此次的传送失败,路由器会依网路的状况决定要丢弃、不丢弃一部份或者是所有的数据包,而且这不可能在预先就知道,接收端的应用程式在这时必须请求重新传送,而这同时可能造成总体传输严重的延迟。
·延迟- 或许需要很长时间才能将数据包传送到终点,因为它会被漫长的伫列迟滞,或需要运用间接路由以避免阻塞;也许能找到快速、直接的路由。总之,延迟非常难以预料。
·传输顺序出错- 当一群相关的数据包被路由经过网际网路时,不同的数据包可能选择不同的路由器,这会导致每个数据包有不同的延迟时间。最后数据包到达目的地的顺序会和数据包从传送端传送出去的顺序不一致,这个问题必须要有特殊额外的协定负责刷新失序的数据包。
·出错- 有些时候,数据包在被运送的途中会发生跑错路径、被合併甚至是毁坏的情况,这时接收端必须要能侦测出这些情况,并将它们统统判别为已遗失的数据包,再请求传送端再送一份同样的数据包。
释义
1.国际电信联盟(ITU)在x.902标準即“信息技术开放式处理参考模型”中定义服务质量(QoS)为:定义在一个或多个对象的集体行为上的一套质量需求的集合。吞吐量、传输延迟和错误率等一些服务质量参数描述了数据传输的速度和可靠性等。
2.在ATM中定义服务质量(QoS)为“关于ATM性能参数集合的术语,这些参数描述了在一个给定虚拟连线上数据流量的特徵”。服务质量参数大多套用在较低层次的协定层上,这些参数并不直接被应用程式所观察和感觉到。这些参数包括信元丢失率、信元错误率、信元错误插入率、信元延迟变化、信元传输延迟和平均信元传输延迟。根据服务质量参数定义了五种服务级别,级别0指的是“尽最大努力”服务方式,在这种服务级别中没有特定的流量参数和绝对的服务质量保证。
3.IETF在研究ATM时就已经开始考虑服务质量的问题。即有陈述:“随着在网路上实时服务的逐步增加,在共享网路上要求提供确定的传输服务。这些确定的传输服务要求应用程式和网路基础设施有能力请求、设定和强化数据的传输。总的来说,这些服务指的是频宽预留和服务质量”。在“基于ATM的IP”中这样描述: “实时应用程式所使用的服务质量参数被假设在数据传输之前的资源预留协定中设定,或者以某种形式携带在数据之中”。“目前的工作正在重点研究服务质量参数怎样被表达出来和怎样做出本地的决定”。
处理流程
分类
Classifying即分类,其过程是根据信任策略或者根据分析每个报文的内容来确定将这些报文归类到以CoS值来表示的各个数据流中,因此分类动作的核心任务是确定输入报文的CoS值。分类发生在连线埠接收输入报文阶段,当某个连线埠关联了一个表示QoS策略的Policy-map后,分类就在该连线埠上生效,它对所有从该连线埠输入的报文起作用。
- 协定
有些协定非常“健谈”,只要它们存在就会导致业务延迟,因此根据协定对数据包进行识别和优先权处理可以降低延迟。套用可以通过它们的EtherType进行识别。譬如,AppleTalk协定採用0x809B,IPX使用0x8137。根据协定进行优先权处理是控制或阻止少数较老设备所使用的“健谈”协定的一种强有力方法。
QoS

(2) TCP和UDP连线埠号码
许多套用都採用一些TCP或UDP连线埠进行通信,如HTTP採用TCP连线埠80。通过检查IP数据包的连线埠号码,智慧型网路可以确定数据包是由哪类套用产生的,这种方法也称为第四层交换,因为TCP和UDP都位于OSI模型的第四层。
(3) 源IP位址
许多套用都是通过其源IP位址进行识别的。由于伺服器有时是专门针对单一套用而配置的,如电子邮件伺服器,所以分析数据包的源IP位址可以识别该数据包是由什幺套用产生的。当识别交换机与套用伺服器不直接相连,而且许多不同伺服器的数据流都到达该交换机时,这种方法就非常有用。
(4) 物理连线埠号码
与源IP位址类似,物理连线埠号码可以指示哪个伺服器正在传送数据。这种方法取决于交换机物理连线埠和套用伺服器的映射关係。虽然这是最简单的分类形式,但是它依赖于直接与该交换机连线的伺服器。
策略
Policing 即策略,发生在数据流分类完成后,用于约束被分类的数据流所占用的传输频宽。Policing动作检查被归类的数据流中的每一个报文,如果该报文超出了作用于该数据流的Police所允许的限制频宽,那幺该报文将会被做特殊处理,它或者要被丢弃,或者要被赋予另外的DSCP 值。
在QoS 处理流程中,Policing 动作是可选的。如果没有Policing 动作,那幺被分类的数据流中的报文的DSCP 值将不会作任何修改,报文也不会在送往Marking 动作之前被丢弃。
标识
Marking即标识,经过Classifying 和Policing 动作处理之后,为了确保被分类报文对应DSCP的值能够传递给网路上的下一跳设备,需要通过Marking 动作将为报文写入QoS 信息,可以使用QoS ACLs 改变报文的QoS信息,也可以使用Trust 方式直接保留报文中QoS 信息,例如,选择Trust DSCP 从而保留IP 报文头的DSCP 信息。
伫列
Queueing即伫列,负责将数据流中报文送往连线埠的某个输出伫列中,送往连线埠的不同输出伫列的报文将获得不同等级和性质的传输服务策略。
每一个连线埠上都拥有8 个输出伫列,通过设备上配置的DSCP-to-CoS Map 和Cos-to-Queue Map 两张映射表来将报文的DSCP 值转化成输出伫列号,以便确定报文应该被送往的输出伫列。
调度
Scheduling即调度,为QoS 流程的最后一个环节。当报文被送到连线埠的不同输出伫列上之后,设备将採用WRR 或者其它算法传送8 个伫列中的报文。
可以通过设定WRR算法的权重值来配置各个输出伫列在输出报文的时候所占用的每循环传送报文个数,从而影响传输频宽。或通过设定DRR算法的权重值来配置各个输出伫列在输出报文的时候所占用的每循环传送报文位元组数,从而影响传输频宽。
相关技术
链路层QoS技术主要针对ATM(Asynchronous Transfer Mode,异步传输模式)、帧中继、令牌环等链路层协定支持QoS。作为一种面向连线的技术,ATM提供对QoS最强有力的支持,而且可以基于每个连线提供特定的QoS保证。帧中继网路确保连线的CIR(Committed Information Rate,承诺信息速率)最小,即在网路拥塞时,传输速度不能小于这个值。令牌环和更新的IEEE802.1p标準具有区分服务的机制。
链路效率机制
链路效率机制,用于改善链路的性能,间接提高网路的QoS,如降低链路发包的时延(针对特定业务)、调整有效频宽。链路效率机制有很多种,下面介绍两种比较典型的链路效率机制及其基本原理。
1. 链路分片与交叉(Link Fragment & Interleave,LFI)
对于低速链路,即使为语音等实时业务报文配置了高优先权伫列(如RTP优先伫列或LLQ),也不能够保证其时延与抖动,原因在于接口在传送其他数据报文的瞬间,语音业务报文只能等待,而对于低速接口传送较大的数据报文要花费相当的时间。採用LFI以后,数据报文(非RTP实时伫列和LLQ中的报文)在传送前被分片、逐一传送,而此时如果有语音报文到达则被优先传送,从而保证了语音等实时业务的时延与抖动。LFI主要用于低速链路。
链路效率机制的工作原理图如图11 所示:

如上图所示,套用LFI技术,在大报文出队的时候,可以将其分为定製长度的小片报文,这就使RTP优先伫列或LLQ中的报文不必等到大片报文发完后再得到调度,它等候的时间只是其中小片报文的传送时间,这样就很大程度的降低了低速链路因为传送大片报文造成的时延。
2. RTP报文头压缩(RTP Header Compression,cRTP)
cRTP主要在低速链路上使用,可将40位元组的IP/UDP/RTP头压缩到2~4个位元组(不使用校验和可到2位元组),提高链路的利用率。cRTP主要得益于同一会话的语音分组头和语音分组头之间的差别往往是不变的,因此只需传递增量。
RTP协定用于在IP网路上承载语音、视频等实时多媒体业务。RTP报文包括数据部分和头部分,RTP的数据部分相对小,而RTP的报头部分较大。12位元组的RTP头,加上20位元组的IP头和8位元组的UDP头,就是40位元组的IP/UDP/RTP头。而RTP典型的负载是20位元组到160位元组。为了避免不必要的频宽消耗,可以使用cRTP特性对报文头进行压缩。cRTP可以将IP/UDP/RTP头从40位元组压缩到2~5位元组,对于40位元组的负载,头压缩到5位元组,压缩比为(40+40)/(40+5),约为1.78,可见效果是相当可观的,可以有效的减少链路,尤其是低速链路频宽的消耗。

ATM QoS
ATM是一种大小固定的信元交换和多路复用技术,它是面向连线的,任何用户数据在两个或更多ATM连线设备之间传输之前,都必须建立虚电路(VC,Virtual Circuit)。ATM有两种主要的连线方式(或VC):永久虚电路(PVC,Permanent Virtual Circuit)和交换虚电路(SVC,Switched Virtual Circuit)。PVC通常是静态的,需要手工或外部配置来建立;而SVC是动态,根据需要创建。它们的创建需要在ATM端点和ATM交换机之间运行信令协定。
ATM通过使ATM端系统显示流量契约来提供QoS保证,流量契约描述了希望的通信流指标。流描述符包括QoS参数,例如峰值信元速率(PCR,Peak Cell Rate)、持续信元速率(SCR,Sustained Cell Rate)以及突发量。
ATM端系统负责确保传输的流量符合QoS契约。ATM端系统通过缓冲数据来对流量进行整形,并按约定的QoS参数传输通信。ATM交换机控制每个用户的通信指标,并将其与QoS契约进行比较。对于超过了QoS契约的通信,交换机可以设定不顺从通信的CLP位。在网路拥塞时,CLP位被设定的信元被丢弃的可能性更大。
FR QoS
FR(Frame Relay,帧中继)是一种流行的适用于数据通信的广域网(WAN)分组技术。它是一种较简单的协定,消除了X.25网路中链路层流控和纠错功能,这些功能被留给端点站的应用程式处理。这种协定最适合于数据通信,因为它可以传送偶然的突发。
帧中继使用VC(Virtual Circuit)运行,VC提供了帧中继网路上两个端点之间的逻辑连线,网路可以使用帧中继VC代替私有的租用线。PVC是网路操作员在网路管理站创建的,而SVC是基于呼叫动态建立的。
帧中继报头中的3个位提供了帧中继网路中的拥塞控制机制,这3个位分别叫做向前显式拥塞通知(FECN,Forward Explicit Congestion Notification)位、向后显式拥塞通知(BECN,Backward Explicit Congestion Notification)位和丢弃合格(DE,Discard Eligible)位。可以通过交换机将FECN位置1来告知诸如路由器等目标数据终端设备(DTE,Data Terminal Equipment),在帧从源传送到目的地的方向发生了拥塞。交换机将BECN位置1则告知目标路由器,在帧从源传送到目的地的反方向上发生了拥塞。DE位由路由器或其他DTE设备设定,指出被标记的帧没有传输的其他帧那幺重要,它在帧中继网路中提供了一种基本的优先权机制,如果发生拥塞时,DE位被设定的帧将在DE位没有被设定的帧之前被丢弃。
帧中继流量整形(FRTS,Frame Relay Traffic Shaping)对从帧中继VC输出的通信进行整形,使之与配置速率一致,它将超出平均速率的分组放到缓冲区来使突发通信变得平滑。根据配置的排队机制,当有足够的可用资源时,这些缓冲的分组出队并等候被传输。排队算法是基于单个VC配置的,它只能针对接口的出站通信进行设定。FRTS可对每个VC的流量进行整形,将其峰值速率整形为承诺信息速率(CIR,Committed Information Rate)或其他定义的值,如超额信息速率(EIR,Excess Information Rate)。自适应模式的FRTS还能够根据收到的网路BECN拥塞指示符降低帧中继VC的输出量,将PVC的输出流量整形为与网路的可用频宽一致
MPLS QoS
于MPLS标籤交换路由器(LSR)在标籤交换的转发过程中并不检查IP头,所以MPLS标籤交换路由器利用MPLS标籤中的EXP比特来配置QoS策略。因此,在MPLS网路中可以利用MPLS标籤中的EXP比特来设定MPLS报文的优先权别,从而实现区分服务。类似对IP报文实施的区分服务一样,我们可以利用class-map命令将MPLS报文分成一个类或者多个类别,可以利用policy-map命令对已经分好的类进行QoS策略设定。最后利用service-policy命令将已经配置好的QoS策略套用于接口上。
MPLS QoS即在MPLS网路上套用QoS。MPLS QoS并没有定义专门的QoS结构。在实际的MPLS网路中,MPLS QoS通常使用区分服务(Differentiated Services)结构(又称分类服务),区分服务结构是为IP QoS而专门定义的。MPLS QoS结构就是在区分服务结构基础上增加了MPLS对区分服务的支持。
区分服务的基本原理是:在网路边缘,根据业务的QoS要求将该业务映射到一定的业务类别中,如果是IP报文,可以通过6比特的区分服务代码点栏位(DSCP)来设定报文的优先权别,从而唯一的标记该类业务,然后,骨干网路中的各节点根据该栏位对各种业务採取预先设定的服务策略,保证相应的服务质量。与传统的IP QoS的不同在于,MPLS QoS是以MPLS标籤中的EXP比特来设定MPLS报文的优先权别从而实现区分服务。
下面对MPLS QoS的部分专业术语进行介绍:
n <EXP>
EXP比特指的是MPLS标籤中第20到第22比特,这3位比特称为实验(EXP)比特,目前专用于服务质量(QoS)。EXP栏位在MPLS标籤中的位置,请参见图-2。与IP传输中可以按照IP报文中的IP优先权或者DSCP比特来分类并标记类似,在MPLS网路中,可以按照MPLS报文的EXP比特来分类并标记。
MPLS标籤结构

MPLS标籤结构
- <PHB>
每跳行为PHB(Per-hop Behavior)指在转发报文时,路由器对报文是如何处理的。"每跳"是强调这里所说的行为只涉及到本路由器转发的这一跳的行为,而下一个路由器再怎样处理则与本路由器的处理无关。 通常我们把基于IP报文中的IP Precedence/DSCP的转发行为称为IP PHB,基于MPLS报文中的EXP的转发行为称为MPLS PHB。
- <E-LSP>
由EXP 比特决定PHB 的LSP。在转发过程中,LSP 决定转发路径,但是EXP比特决定在每一跳LSR 上的调度和丢弃优先权,因此同一条LSP 可以承载8 类不同PHB 的流(3比特的EXP栏位的取值範围为0-7),通过MPLS头部的EXP 比特来进行区分。
- <LER>
LER(Label Switching Edge Router)位于MPLS的网路边缘,负责将进入到MPLS网路的流量压入对应的MPLS标籤。负责将离开MPLS网路的流量弹出标籤还原为原始的报文。LER通常又称作Provider Edge(PE)Router。
- <LSR>
LSR(Label Switching Router)是MPLS网路的核心设备,它提供标籤交换和标籤分发功能。LSR通常又称作Provider(P)Router。
IP QoS
对于Ip QoS,QoS是由流量标记、拥塞管理、拥塞避免和流量整形构成,可以对IP报文实施WRR(带权重的伫列轮转),DRR,SP等调度方式,实施加权随机早期检测(WRED),流量监管,以及流量整形。在为MPLS报文实施QoS的时候可以根据EXP比特来使用相同的特性。
QoS的关键指标
QoS的关键指标主要包括:可用性、吞吐量、时延、时延变化(包括抖动和漂移)和丢失。下面详细叙述。
QoS in Internet

可用性
可用性是当用户需要时网路即能工作的时间百分比。可用性主要是设备可靠性和网路存活性相结合的结果。对它起作用的还有一些其他因素,包括软体稳定性以及网路演进或升级时不中断服务的能力。
吞吐量
吞吐量是在一定时间段内对网上流量(或频宽)的度量。对IP网而言可以从帧中继网借用一些概念。根据套用和服务类型,服务水平协定(SLA)可以规定承诺信息速率(CIR)、突发信息速率(BIR)和最大突发信号长度。承诺信息速率是应该予以严格保证的,对突发信息速率可以有所限定,以在容纳预定长度突发信号的同时容纳从话音到视像以及一般数据的各种服务。一般讲,吞吐量越大越好。
时延
时延指一项服务从网路入口到出口的平均经过时间。许多服务,特别是话音和视像等实时服务都是高度不能容忍时延的。当时延超过200-250毫秒时,互动式会话是非常麻烦的。为了提供高质量话音和会议电视,网路设备必须能保证低的时延。
产生时延的因素很多,包括分组时延、排队时延、交换时延和传播时延。传播时延是信息通过铜线、光纤或无线链路所需的时间,它是光速的函式。在任何系统中,包括同步数字系列(SDH)、异步传输模式(ATM)和弹性分组环路(RPR),传播时延总是存在的。
时延变化
时延变化是指同一业务流中不同分组所呈现的时延不同。高频率的时延变化称作抖动,而低频率的时延变化称作漂移。抖动主要是由于业务流中相继分组的排队等候时间不同引起的,是对服务质量影响最大的一个问题。某些业务类型,特别是话音和视像等实时业务是极不容忍抖动的。分组到达时间的差异将在话音或视像中造成断续。所有传送系统都有抖动,只要抖动落在规定容差之内就不会影响服务质量。利用快取可以克服过量的抖动,但这将增加时延,造成其他问题。
QoS流程

漂移是任何同步传输系统都有的一个问题。在SDH系统中是通过严格的全网分级定时来克服漂移的。在异步系统中,漂移一般不是问题。漂移会造成基群失帧,使服务质量的要求不能满足。
丢包
不管是比特丢失还是分组丢失,对分组数据业务的影响比对实时业务的影响都大。在通话期间,丢失一个比特或一个分组的信息往往用户注意不到。在视像广播期间,这在萤幕上可能造成瞬间的波形干扰,然后视像很快恢复如初。即便是用传输控制协定(TCP)传送数据也能处理丢失,因为传输控制协定允许丢失的信息重发。事实上,一种叫做随机早丢(RED)的拥塞控制机制在故意丢失分组,其目的是在流量达到设定门限时抑制TCP传输速率,减少拥塞,同时还使TCP流失去同步,以防止因速率视窗的闭合引起吞吐量摆动。但分组丢失多了,会影响传输质量。所以,要保持统计数字,当超过预定门限时就向网路管理人员告警。
QoS套用
QoS是网路与用户之间以及网路上互相通信的用户之间关于信息传输与共享的质的约定,例如,传输延迟允许时间、最小传输画面失真度以及声像同步等,是用来解决网路延迟和阻塞等问题的一种技术。现在的路由器一般均支持QoS。QoS 是网路的一种安全机制,是用来解决网路延迟和阻塞等问题的一种技术。在正常情况下,如果网路只用于特定的无时间限制的套用系统,并不需要QoS,比如 Web套用,或E-mail设定等。但是对关键套用和多媒体套用就十分必要。当网路过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网路的高效运行。
QoS套用示意图

在Internet等计算机网路上为用户提供高质量的QoS必须解决以下问题:
1. QoS的分类与定义。对QoS进行分类和定义的目的是使网路可以根据不同类型的QoS进行管理和分配资源。例如 ,给实时服务分配较大的频宽和较多的CPU处理时间等,另一方面,对QoS进行分类定义也方便用户根据不同的套用提出QoS需求。
2. 準入控制和协商。即根据网路中资源的使用情况,允许用户进入网路进行多媒体信息传输并协商其QoS。
3. 资源预约。为了给用户提供满意的QoS,必须对端系统、路由器以及传输频宽等相应的资源进行预约,以确保这些资源不被其他套用所强用。
4. 资源调度与管理。对资源进行预约之后,是否能得到这些资源,还依赖于相应的资源调度与管理系统。
目前的Internet仅提供尽力而为(best-effort service)的传送服务,业务量儘快传送,没有明确的时间和可靠性保障。随着网路多媒体技术的飞速发展,Internet上的多媒体套用层出不穷,如IP电话、视频会议、视频点播(VOD)、远程教育等多媒体实时业务、电子商务在Internet上传送等。Internet已逐步从单一的数据传送网向数据、语音、图像等多媒体信息的综合传输网演化。这些不同的套用需要有不同的Qos(quality of service)要求,Qos通常用频宽、时延、时延抖动和分组丢失率来衡量。各种套用对服务质量的需求在迅速增长。
显然,现有的尽力传送服务已无法满足各种套用对网路传输质量的不同要求,需要Internet提供多种服务质量类型的业务。而尽力而为的服务仍将提供给那些只需要连通性的套用。
服务质量Qos系指用来表示服务性能之属性的任何组合。为了使其具有价值,这些属性必须是可提供的、可管理的、可验证和计费的,而且在使用时它们必须是始终如一的、可预测的、有的属性甚至是起决定性作用的。为了满足各种用户套用的需要,构建对IP最优并具备各种服务质量机制的网路是完全必要的。专线服务、语音、档案传递、存储转发、互动式视频和广播视频是现有套用的一些例子。
分类标準
优先权分类根据各种网路所关注的业务类型已经出现多种不同的标準,相关标準可以参考:
RFC 791
根据各IP套用的特点,将业务分为Network Control、Internetwork Control、CRITIC/ECP、Flash Override、Flash、Immediate、Priority、Routine共8类优先权。其中,Routine优先权最低,Network Control优先权最高。
RFC 1349
将业务按照TOS的定义分为16类优先权,TOS使用4个bit位分别表示:minimize delay、maximize throughput、minimize monetary cost、maximize reliability,并建议了各IP套用应该如何取TOS值,例如,FTP CONTROL报文建议其TOS取值为minimize delay。
RFC 1490
将业务按照Frame Relay Discard Eligibility bit的定义分为2类丢弃优先权。
RFC 1483
Multiprotocol Encapsulation over ATM Adaptation Layer 5
将业务按照ATM Cell Loss Priority bit的定义分为2类丢弃优先权。
RFC 2474
Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Header
DiffServ网路定义了四类PHB:EF(Expedited Forwarding)PHB适用于低时延、低丢失、低抖动、确保频宽的优先业务;AF(Assured Forwarding)PHB分为四类,每个AF类又分为三个丢弃优先权,可以对相应业务进行等级细分,QoS性能参数低于EF类型;CS(class selector)PHB是从IP TOS栏位演变而来,共8类;BE PHB是CS中特殊一类,没有任何保证,现有IP网路流量也都默认为此类。
IEEE 802.5
Token ring access method and Physical Layer specifications
令牌环网的优先权,可以将业务根据Access Priority的定义为8类优先权 。
IEEE 802.1p,Class of Service
乙太网优先权,可以将业务根据802.1P Priority的定义分为8类优先权,0类至7类优先权相应递增,0类是BE业务,尽力传输)。
QoS配置
预设QOS设定
用户在进行QoS配置之前,需要清楚和QoS有关的几点信息,如下:
一个接口最多关联1个Policy-map
一个Policy-map可以拥有多个Class-map
一个Class-map最多关联1个ACL,该ACL的所有ACE必须具有相同过滤域模板
一个接口上关联的ACE的个数服从“配置安全ACL”章节的限制
预设情况下,QoS 功能是关闭的,即设备对所有的报文同等处理。但当您将一个Policy Map 关联到某一个接口上,并设定了接口的信任模式时,该接口的QoS 功能即被打开。要关闭该接口的QoS 功能,您可以通过解除该接口的Policy Map 设定,并将接口的信任模式设为Off 即可。以下为QOS的预设配置:
预设CoS值 | 0 |
伫列个数 | 8 |
伫列轮转算法 | WRR |
QueueWeight | 1:1:1:1:1:1:1:1 |
WRR Weight Range | 1:15 |
DRR Weight Range | 1:15 |
信任模式 | No Trust |
Cos值到伫列的默认映射表
CoS值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
伫列 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
CoS to DSCP默认映射表
CoS值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
DSCP值 | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 |
IP-Precedence to DSCP默认映射表
IP-Precedence | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
DSCP | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 |
DSCP to CoS的默认映射表
DSCP | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 |
CoS | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
信任模式
预设情况下,接口的Qos信任模式是不信任
命令 | 作用 |
SW# configure terminal | 进入配置模式 |
SW(config)# interfaceinterface | 进入接口配置模式 |
SW(config-if)# mls qos trust {cos | ip-precedence | dscp} | 配置接口的Qos 信任模式 cos,dscp或 ip-precedence |
SW(config-if)# no mls qos trust | 恢复接口默认Qos 信任模式 |
以下命令将连线埠interface GigabitEthernet 0/4信任模式设定为DSCP:
SW(config)# interface gigabitEthernet 0/4
SW(config-if)# mls qos trust dscp
SW(config-if)# end
SW# show mls qos interface g0/4
Interface: GigabitEthernet 0/4
Attached input policy-map:
Default trust: trust dscp
Default COS: 0
预设CoS值
您可以通过下面的设定步骤来配置每一个接口的预设CoS值
预设情况下,接口的预设CoS值为0
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# interface interface | 进入接口配置模式 |
R(config-if)# mls qos cos default-cos | 配置接口的预设CoS值, default-cos为要设定的预设CoS值, 取值範围为0~7 |
R(config-if)# no mls qos cos | 默认的预设CoS值 |
下面的例子将接口Interface g0/4预设CoS值设定为6
R# configure terminal
R(config)#interface g 0/4
R(config-if)# mls qos cos 6
R(config-if)# end
R# show mls qos interface g 0/4
Interface: GigabitEthernet 0/4
Attached input policy-map:
Default trust: trust dscp
Default COS: 6
连线埠组
在接口配置模式下,请按如下步骤将连线埠加入逻辑连线埠组:
命令 | 作用 |
R(config-if)# [no] virtual-group virtual-group-number | 将该接口加入一个逻辑连线埠组或退出一个逻辑连线埠组。virtual-group-number表示逻辑连线埠组成员连线埠组的编号,即逻辑连线埠组号。 |
在接口配置模式下使用no virtual-group virtual-group-number命令将一个物理连线埠退出逻辑连线埠组。
下面的例子是将乙太网接口0/1配置成逻辑连线埠组 5的成员:
R# configure terminal
R(config)# interface gigabitEthernet 0/1
R(config-if-range)# virtual-group5
R(config-if-range)# end
配置Class Maps
您可以通过下面的设定步骤来创建并配置Class Maps
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# ip access-list extended {id | name} … R(config)# ip access-list standard {id | name} … R(config)# mac access-list extended {id | name} … R(config)# expert access-list extended {id |name} … R(config)# ipv6 access-list extended name … R(config)# access-list id […] | 创建ACL |
R(config)# [no] class-map class-map-name | 创建并进入class map配置模式,class-map-name是要创建的class map的名字 no选项 删除一个已经存在的class map |
R(config-cmap)# [no] match access-group {acl-num | acl-name } | 设定匹配ACL, acl-name 为已经创建的ACL 名字, acl-num为已经创建的ACL id,no选项删除该匹配 |
R(config-cmap)# [no] match ip dscp dscp-value1 [dscp-value2 [dscp-valueN] ] | 设定要匹配的报文的ip dscp值,dscp-valueN为要匹配的DSCP值,一次最多可以匹配8个不同的值。 |
R(config-cmap)# [no] match ip precedence ip-pre-value1 [ip-pre-value2 [ip-pre-valueN] ] | 设定要匹配的报文的ip precedence值,ip-pre-valueN为要匹配的EXP值,一次最多可以匹配8个不同的值。 |
例如,以下设定步骤创建了一个名为Class1的Class-map,它关联一个ACL:acl_1。这个Class-map将分类所有连线埠号为80的TCP报文
R(config)# ip access-list extended acl_1
R(config-ext-nacl)# permit tcp any any eq 80
R(config-ext-nacl)# exit
R(config)# class-map class1
R(config-cmap)# match access-group acl_1
R(config-cmap)# end
配置Policy Maps
您可以通过下面的设定步骤来创建并配置Policy Maps
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# [no] policy-map policy-map-name | 创建并进入policymap配置模式,policy-map-name是要创建的policymap的名字 no选项 删除一个已经存在的policy map |
R(config-pmap)# [no] class class-map-name | 创建并进入数据分类配置模式,class-map-name 是已经创建的class map名字 no选项 删除该数据分类 |
R(config-pmap-c)# [no] set {ip dscpnew-dscp | cosnew-cos [none-tos]} | 为该数据流中的IP报文设定新的 ip dscp值或者设定新的cos值;对于非IP报文,设定新的ip dscp不起作用; new-dscp 是要设定的新DSCP值,取值範围依产品不同而不同; new-cos 是要设定的新CoS值,取值範围为0-7; none-tos 是代表设定新的CoS值,同时不修改报文的DSCP值,仅S8600,S12000系列设备支持none-tos选项 |
R(config-pmap-c)# policerate-bps burst-byte [exceed-action {drop | dscp dscp-value | cos cos-value [none-tos]}] | 限制该数据流的频宽和为频宽超限部分指定处理动作,rate-bps是每秒钟频宽限制量(kbps),burst-byte猝发流量限制值(Kbyte),drop来丢弃频宽超限部分的报文,dscp dscp-value改写频宽超限部分报文的DSCP值,dscp-value取值範围依产品不同而不同,cos cos-value改写频宽超限部分的报文的CoS值,cos-vlaue取值範围为0-7,none-tos选项代表改写报文的CoS值时,不修改报文的DSCP值,仅S8600,S12000系列设备支持改写频宽超限部分的报文的CoS值,且仅作用于输入方向; 对于S2900系列,rate-bps的有效範围是1-10000000; burst-byte的有效範围是4-2097152 |
R(config-pmap-c)# no police | 取消限制该数据流的频宽和为频宽超限部分指定处理动作 |
例如,以下的设定步骤创建了一个名为Policy1的Policy-map,并将该Policy-map关联接口Gigabitethernet 1/1
R(config)# policy-map policy1
R(config-pmap)# class class1
R(config-pmap-c)# set ip dscp 48
R(config-pmap-c)# exit
R(config-pmap)# exit
R(config)# interface gigabitethernet 1/1
R(config-if)# switchport mode trunk
R(config-if)# mls qos trust cos
R(config-if)# service-policy input policy1
套用Policy Maps
可以通过下面的设定步骤将Policy Maps套用到连线埠上:
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# interfaceinterface | 进入接口配置模式 |
R(config-if)# [no] service-policy {input | output} policy-map-name | 将创建的Policy Map套用到接口上;policy-map-name是已经创建的policy map的名字,input 为输入,output 为输出 |
套用Policy Maps
可以通过下面的设定步骤将Policy Maps套用到逻辑连线埠组上
命令 | 作用 |
configure terminal | 进入配置模式 |
virtual-group-number | 进入逻辑连线埠组配置模式 |
[no] service-policy {input | output} policy-map-name | 将创建的Policy Map套用到逻辑连线埠组上;policy-map-name是已经创建的policy map的名字,input 为输入限速,output 为输出限速 |
调度算法
您可以为连线埠的输出伫列调度算法:WRR,SP,RR和DRR,预设情况下,输出伫列算法为WRR(带权重的伫列轮转)
您可以通过以下步骤对连线埠优先权伫列调度方式进行设定。
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# mls qos scheduler {sp | rr | wrr | drr | wfq} | 连线埠优先权伫列调度方式,sp为绝对优先权调度,rr为 轮转调度,wrr为带帧数量权重轮转调度,drr为带帧长度权重轮转调度 |
R(config)#no mls qos scheduler | 恢复为预设wrr调度 |
例如,以下的设定步骤将连线埠的输出轮转算法设定成SP:
R# configure terminal
R(config)# mls qos scheduler sp
R(config)# end
R# show mls qos scheduler
Global Multi-Layer Switching scheduling
Strict Priority
输出轮转权重
可以通过以下步骤设定连线埠的输出轮转权重
命令 | 作用 |
R#configure terminal | 进入配置模式 |
R(config)# {wrr-queue | drr-queue}bandwidth weight1...weightn | weight1...weightn 为指定的输出伫列的权重值,个数及取值範围见预设QOS设定 |
R(config)#no {wrr-queue | drr-queue} bandwidth | no 选项恢复权重的预设值 |
下面的例子将wrr调度权重设定为1:2:3:4:5:6:7:8
R# configure terminal
R(config)# wrr-queue bandwidth1 2 3 4 5 6 7 8
R(config)#end
R# show mls qos queueing
Cos-queue map:
cos qid
--- ---
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
wrr bandwidth weights:
qid weights
--- -------
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
R(config)#
Cos-Map
您可以通过设定Cos-Map来选择报文输出时进入哪个输出伫列,Cos-Map的预设设定见预设QOS配置
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)#priority-queue Cos-Map qid cos0 [cos1 [cos2 [cos3 [cos4 [cos5 [cos6 [cos7]]]]]]] | qid 为伫列id,cos0..cos7 为指定和这个伫列关联的CoS 值。 |
R(config)# no priority-queue cos-map | Cos-Map恢复成预设值 |
下面是设定CoS Map的例子
R# configure terminal
R(config)#priority-queue Cos-Map 1 2 4 6 7 5
R(config)# end
R#show mls qos queueing
Cos-queue map:
cos qid
--- ---
0 1
1 2
2 1
3 4
4 1
5 1
6 1
7 1
wrr bandwidth weights:
qid weights
--- -------
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
CoS-to-DSCP Map
CoS-to-DSCP Map 用于将报文的CoS 值映射到内部DSCP 值,您可以通过以下步骤对CoS-to-DSCP Map 进行设定 ,CoS-to-DSCP Map的预设设定见预设QOS配置
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# mls qos map cos-dscp dscp1...dscp8 | 修改CoS-to-DSCP Map 的设定,dscp1...dscp8 是对应于CoS 值0~7 的DSCP 值,DSCP 取值範围依产品不同而不同 |
R(config)# no mls qos map cos-dscp | 恢复预设值 |
例如如下配置:
R#configure terminal
R(config)# mls qos map cos-dscp 56 48 46 40 34 32 26 24
R(config)# end
R# show mls qos maps cos-dscp
cos dscp
--- ----
0 56
1 48
2 46
3 40
4 34
5 32
6 26
7 24
配置DSCP-to-CoS Map
DSCP-to-CoS 用于将报文的内部DSCP 值映射到CoS 值,以便为报文选择输出伫列
DSCP-to-CoS Map的预设设定见预设QOS配置, 您可以通过以下步骤对DSCP-to-CoS Map 进行设定:
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# mls qos map dscp-cos dscp-list to cos | 设定DSCP to COS Map, dscp-list :要设定的DSCP 值的列表,DSCP 值之间用空格分隔,取值範围依产品不同而不同,cos :对应DSCP 值的CoS 值,取值範围为:0~7; |
R(config)#no mls qos map dscp-cos | 设定为默认值 |
例如,以下的设定步骤将DSCP值0、32、56设定对应成6:
R# configure terminal
R(config)#mls qos map dscp-cos 0 32 56 to 6
R(config)# show mls qos maps dscp-cos
dscp cos dscp cos dscp cos dscp cos
---- --- ---- --- ---- --- ---- ---
0 6 1 0 2 0 3 0
4 0 5 0 6 0 7 0
8 1 9 1 10 1 11 1
12 1 13 1 14 1 15 1
16 2 17 2 18 2 19 2
20 2 21 2 22 2 23 2
24 3 25 3 26 3 27 3
28 3 29 3 30 3 31 3
32 6 33 4 34 4 35 4
36 4 37 4 38 4 39 4
40 5 41 5 42 5 43 5
44 5 45 5 46 5 47 5
48 6 49 6 50 6 51 6
52 6 53 6 54 6 55 6
56 6 57 7 58 7 59 7
60 7 61 7 62 7 63 7
配置连线埠速率限制
可以通过以下步骤对连线埠速率限制进行设定
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# interfaceinterface | 进入接口配置模式 |
R(config-if)# rate-limit {input | output } bps burst-size | 连线埠速率限制,input 为输入限速,output 为输出限速,bps 是每秒钟的频宽限制量(kbps), burst-size猝发流量限制值(Kbyte) |
R(config-if)# no rate-limit | 取消连线埠限速 |
R# configure terminal
R(config)# interface gigabitEthernet 0/4
R(config-if)# rate-limit input 100 100
R(config-if)# end
配置IPpre to DSCP Map
IPpre-to-Dscp用于将报文的IPpre值映射到内部DSCP值, IPpre-to-DSCP Map的预设设定见预设QOS配置,您可以通过以下步骤对IPpre-to-Dscp Map进行设定:
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# mls qos map ip-prec-dscp dscp1...dscp8 | 修改IP-Precedence-to-Dscp Map的设定,dscp1...dscp8 是对应于IP-Precedence值0~7 的DSCP 值 |
R(config)# no mls qos map ip-prec-dscp | 恢复预设配置。 |
例如如下配置:
R# configure terminal
R(config)# mls qos map ip-precedence-dscp 56 48 46 40 34 32 26 24
R(config)# end
R# show mls qos maps ip-prec-dscp
ip-precedence dscp
------------- ----
0 56
1 48
2 46
3 40
4 34
5 32
6 26
7 24
配置交换机buffer
可以配置交换机buffer管理处于802.3x flow-control状态或处于QoS状态。
命令 | 作用 |
R# configure terminal | 进入配置模式 |
R(config)# buffer management { fc | qos } | 配置交换机的buffer管理模式 FC:802.3xflow-control QoS:QoS模式 |
R(config)# no buffer management | 取消交换机的Buffer管理 |
例如如下配置交换机处于qos模式:
R# configure terminal
R(config)#buffer management qos
R(config)# end
R# show buffer management
%current port's buffer management mode: qos
QoS显示命令
显示class-map
您可以通过以下步骤显示class-map内容
命令 | 作用 |
show class-map [class-name] | 显示class map实体的内容 |
例如:
R# show class-map
Class Map cc
Match access-group 1
R#
显示policy-map
您可以通过以下步骤显示Policy-map内容
命令 | 作用 |
show policy-map [policy-name [class class-name]] | 显示QoS policy map, policy-name为选定的policy map名,指定class class-name时显示相应policy map绑定的class map。 |
例如:
R# show policy-map
Policy Map pp
Class cc
R#
显示mls qos interface
您可以通过以下步骤显示所有连线埠qos信息
命令 | 作用 |
show mls qos interface [interface | policers] | 显示接口的QoS信息, Policers选项显示接口套用的Policy map |
例如:
R# show mls qos interface gigabitEthernet 0/4
Interface: GigabitEthernet 0/4
Attached input policy-map: pp
Default trust: trust dscp
Default COS: 6
R# show mls qos interface policers
Interface: GigabitEthernet 0/4
Attached input policy-map: pp
R#
显示mls qos virtual-group
您可以通过以下步骤显示所有连线埠qos信息
命令 | 作用 |
show mls qos virtual-group [virtual-group-number | policers] | 显示逻辑连线埠组关联的police信息 Policers选项显示逻辑连线埠组关联的police |
例如:
R# show mls qos virtual-group 1
Virtual-group: 1
Attached input policy-map: pp
R#show mls qos virtual-group policers
Virtual-group: 1
Attached input policy-map: pp
R#
显示mls qos queueing
您可以通过以下步骤显示qos伫列信息
命令 | 作用 |
show mls qos queueing | 显示QoS伫列信息, CoS-to-queue map,wrr weight及drr weight; |
举例如下:
R# show mls qos queueing
Cos-queue map:
cos qid
--- ---
0 1
1 2
2 1
3 4
4 1
5 1
6 1
7 1
wrr bandwidth weights:
qid weights
--- -------
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
显示mls qos scheduler
您可以通过以下步骤显示QOS调度方式
命令 | 作用 |
show mls qos scheduler | 显示连线埠优先权伫列调度方式 |
举例如下:
R# show mls qos scheduler
Global Multi-Layer Switching scheduling
Strict Priority
R#
显示mls qos maps
您可以通过以下步骤显示mls qos maps对应表
命令 | 作用 |
show mls qos maps [cos-dscp | dscp-cos | ip-prec-dscp] | 显示cos-dscp maps dscp-cos maps ip-prec-dscp maps |
举例如下:
R# show mls qos maps cos-dscp
cos dscp
--- ----
0 0
1 8
2 16
3 24
4 32
5 40
6 48
7 56
R# show mls qos maps dscp-cos
dscp cos dscp cos dscp cos dscp cos
---- --- ---- --- ---- --- ---- ---
0 6 1 0 2 0 3 0
4 0 5 0 6 0 7 0
8 1 9 1 10 1 11 1
12 1 13 1 14 1 15 1
16 2 17 2 18 2 19 2
20 2 21 2 22 2 23 2
24 3 25 3 26 3 27 3
28 3 29 3 30 3 31 3
32 6 33 4 34 4 35 4
36 4 37 4 38 4 39 4
40 5 41 5 42 5 43 5
44 5 45 5 46 5 47 5
48 6 49 6 50 6 51 6
52 6 53 6 54 6 55 6
56 6 57 7 58 7 59 7
60 7 61 7 62 7 63 7
R# show mls qos maps ip-prec-dscp
ip-precedence dscp
------------- ----
0 56
1 48
2 46
3 40
4 34
5 32
6 26
7 24
显示mls qos rate-limit
您可以通过以下步骤显示连线埠速率限制信息
命令 | 作用 |
show mls qos rate-limit [interface interface] | 显示[连线埠] 速率限制 |
举例:
R# show mls qos rate-limit
Interface: GigabitEthernet 0/4
rate limit input bps = 100 burst = 100
显示show policy-map interface
您可以通过以下步骤显示连线埠policymap的配置
命令 | 作用 |
show policy-map interfaceinterface | 显示[连线埠] policymap配置 |
举例:
R# show policy-map interface f0/1
FastEthernet 0/1 input (tc policy): pp
Class cc
set ip dscp 22
mark count 0
显示交换机buffer管理模式
您可以通过以下步骤显示交换机buffer管理模式
命令 | 作用 |
show buffer management | 显示交换机buffer管理模式 |
举例:
R# show buffer management
%current port's buffer management mode: qos
显示virtual-group
在特权模式下,请按如下步骤显示virtual-group设定。
命令 | 作用 |
show virtual-group [virtual-group-number | summary] | 显示逻辑连线埠组信息。 |
R#show virtual-group 1
virtual-group member
------------- -------------------------
1 Gi0/2 Gi0/3 Gi0/4 Gi0/5
Gi0/6 Gi0/7 Gi0/8 Gi0/9 Gi0/10
R#show virtual-group summary
virtual-group member
------------- -------------------------
1 Gi0/1 Gi0/2 Gi0/3 Gi0/4
Gi0/5 Gi0/6 Gi0/7 Gi0/8 Gi0/9
2 Gi0/11 Gi0/12 Gi0/13 Gi0/14
Gi0/15 Gi0/16 Gi0/17 Gi0/18 Gi0/19