第一部分 Qos的定义

拥塞产生的原因
* 以太网络速度不匹配:当速度不同的网络设备进行通信的时候,就可能导致网络的拥塞。例如,吉比特以太网上的服务器将数据发送给10M以太网上的服务器的时候,由于交换机的缓冲空间限制,可能导致10M以太网上的服务器出战接口发生拥塞。
* 多对一交换:当采用多对一的方式聚集交换机时,就可能导致网络的拥塞。例如,多台接入层交换机连接到同一台分布层交换机的时候,这些接入层交换机的交换矩阵的的带宽总和通常超过了分布层交换机的交换机矩阵的能力
* 聚集:当多台以太网设备通过一台以太网连接进行通信或与单台网络设备/服务器通信的时候,就可能导致网络的拥塞
* 异常行为:网络设备的硬件/软件故障可能导致广播风暴或其它类型的网络风暴,进而使多个接口发生拥塞。软件故障包括计算机蠕虫和病毒,导致数据包风暴,进而拥塞企业或ISP的网络。
以上情况下都有可能会导致数据包在传输的过程中丢失或延迟。拥塞不是唯一影响网络可用性和稳定性的因素,即使在有足够带宽的多层交换网络中,也存在延迟(Delay)、抖动(Jitter)和丢包(packet less)
,对于一些对延迟很敏感的应用(如语音)就需要有服务质量保障(Qos)。

Qos的定义
Qos可从多个不同途径来定义,将所有这些定以结合在一起将会得到所有定义中最好的一个。从技术角度而言,Qos是网络中管理数据流的可用带宽、延迟、抖动以及分组丢失的技术集合。所有的Qos机制的目的就是影响这4个特征中的至少一个,某些情况下甚至是全部。
1. 可用的带宽
带宽本身的定义是在特定的网络介质或者协议中额定的吞吐量。带宽的本身缺乏的吞吐量,在多个流量在一个受限的带宽上传送的过程时,就会产生对带宽的竞争来抢占发送自己的数据。
带宽的使用
最大的带宽:从主机到服务器所经过的所有链路带宽中最小的带宽值
如:(10M、256K、512K、100M)中最小的带宽256K,作为最大的带宽
可用的带宽:最大的带宽/流量的个数
当服务器发送一个大文件(如视频),为了保证文件的流畅型就必须保证一个大的可用的带宽来支持。

如何保证可用的带宽?
1. 增加链路的带宽(不现实)
2. 对数据帧进行压缩(compress)来增大链路的带宽,但也会增加一个延迟时间。堆栈(stacker)和预测(predidctor)是IOS软件提供的压缩方法。Payload压缩是端对端的压缩
3. 对第3层包进行头部压缩,可以将数据包变小,tcp和rtp(real-time transport protocol)的头部压缩方式,是逐跳压缩
4. Qos处理,比如WFQ、CBWFQ、LLQ

延迟
延迟是数据包到达目标所需要的时间,在Qos中延迟有几个方面:
* 处理延迟(processing delay)是指从设备接收到数据帧,将其放入到输出端口的输出队列,到该帧由输出端口转发出去的时间间隔
* 串行延迟(serialization delay)是指实际传输一个分组或数据帧所需的时间,将封装在数据帧中的数据包中的比特放到物理介质上所需的时间
* 排队延迟(queuing delay)是指数据包在接口的输出队列等待的时间
* 传播延迟(propagation delay)是指数据包通过物理介质的一端到其他一端的所需要的时间
只有排队延迟可通过使用cisco IOS中的Qos来进行控制;其它类型的延迟不受Qos的直接影响。
* 端对端延迟(end-to-end delay)是指分组从源端口发送到达目的端口所有处理延迟、串行延迟、排队延迟的总和。

抖动
抖动是指分组间到达和离开时的差异,也就是不同分组之间在延迟上的偏差。数据包在网络中传输经过每一跳设备时,这个设备可能设置了自己的处理延迟和排队延迟,这样就造成了抖动。所有终端和cisco 设备都使用抖动缓冲区来消除数据包(包含数据、语音和视频)在到达时间上的差别。然而,抖动缓冲区只能补偿数据包的细微延迟差异。如果后续数据包得到达时间超过了特定阀值,将导致抖动缓冲区欠载(undeerrun)。当抖动缓冲区为空的时候,缓冲区中没有可供处理的数据包。例如,当用户使用音频应用收听网上广播的时候,如果发生了抖动缓冲区欠载的情况,音频应用将停止播放音乐,直到其他数据包进入抖动缓冲区为止。相反,如果大量数据包以过快的速度到达,那么就可能填满抖动缓冲区,进而无法处理后续的数据包。这被称为缓冲区超载(overrun)。在这种情况下,音频应用将跳过部分音频文件:音频播放器始终有需要播放的数据包,但漏掉音频流中的一些数据包。

数据包丢失(Packet loss)
丢包(packet loss)指数据包沿转发路径转发的途中所产生的数据包丢失。导致数据包丢失的原因很多,比如缓冲器拥塞、线路出错等。
导致丢包的一种常见原因是输出队列中填满了等待传输的数据包,没有更多的空间来存储入站数据包,这种情况被称为输出队列已满。在这种情况下,对数据包进行排队的网络设备别无选择,只能丢弃数据包。


解决方法:
1. 更新链路
2. 提高带宽
3. 采用一些Qos,比如早期监测的Qos(wrd),在发生尾丢弃出现之前早期监测并提供机制。

Qos的作用
Qos能够通过cisco网络设备的支持,使用以下的组件或特性,能够解决延迟、抖动、带宽和丢包等问题
* 通过对通信流进行标记和分类,能够使得网络设备区分不同的通信流
* 通过流量调节(策略),能够使得通信流适应特定的行为和吞吐量
* 将超过特定阀值的通信流标记为优先级(策略)
* 当通信流速率达到特定阀值的时候,丢弃数据包(拥塞避免)
* 通过对数据包进行调度,输出队列中先传输优先级别高的数据包,然后再传输优先级别低的数据包(拥塞管理)
* 通过对输出队列进行管理,避免等待传输的低优先级数据包独占缓冲空间(拥塞管理)
通过启用Qos,将能够:
* 预测端到端数据包传输、I/O操作、数据操作、事务处理等的响应时间
* 正确地管理和判断对抖动敏感的应用(例如音频和视频应用)的能力
* 对延迟敏感的应用(例如VoIP)进行流处理
* 控制用塞发生时的丢包率
* 在整个网络中配置通信流的优先级
* 支持需要专用带宽的应用或网络需求
* 监控和避免网络拥塞
* 限制异常行为并维护网络稳定性(在发生恶意攻击的情况下)

具体事例:
下图是发生拥塞的一个接口没有采用任何Qos的流量发送的情况:因为缺省状态下,接口都是先进先出的策略对待接口上等待的流量,结果最紧急的报文按照先进先出的原则而在最后出队。
 
而下图中,采用了Qos机制,在报文发送时,按照优先级总是在所有优先级较高的队列中的报文,发送完毕后再发送低优先级队列中的报文。这样在每次发送报文时总是将优先级高的报文先发出去。保证了属于较高优先级队列的报文有较低的时延报文的丢失率和时延。这两个性能指标在网络拥塞时也可以有一定的保障。将紧急的报文优先级提高,使得其能够最先被发送出去。
 
Qos的执行
1. 鉴别流量和它的需求:了解网络确定现行传输流量的不同类型,并且确定针对不同类型的网络流量对Qos的需求,那些是语音流量,那些是关键的数据流量,那些是尽力而为的数据流量
2. 将不同类型的流量根据对Qos的不同需求进行分类
3. 针对流量的不同分类,定义响应的策略来保障

第二部分  Qos服务模型

网络应用是端到端的通讯结构,比如两个不同网络的主机进行通讯,中间可能跨越各种 router 和核心switch,那么想整体的实现所谓的QOS,就必须全局考虑,QOS的服务模型的概念就是采用通过什么模式全局实现服务质量保证,一共分成三种。  
* Best-Effort service    尽力而为服务模型  
* Integrated service    综合服务模型 简称Intserv  
* Differentiated service    区分服务模型 简称Diffserv 

1.尽力而为的服务模式
Best-Effort 是一个单一的服务模型,也是最简单的服务模型,应用程序可以在任何时候,发出任意数量的报文,而且不需要事先获得批准,也不需要通知网络,对 Best-Effort 服务,网络尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证 Best-Effort服务是现在Internet的缺省服务模型,它适用于绝大多数网络应用,如 FTP、 E-Mail 等。其实 best-effort 并非是什么 QOS,就是互联网的简单数据传输方式而已,有什么传什么,阻塞也就阻塞了,丢且也就丢弃了。 

2.集成服务模式(Intserv)
集成服务模型,它可以满足多种 QoS 需求。这种服务模型在发送报文前,需要向网络申请特定的服务。应用程序首先通知网络它自己的流量参数和需要的特定服务质量请求:包括带宽、时延等。应用程序一般在收到网络的确认信息,即确认网络已经为这个应用程序的报文预留了资源后,才开始发送报文,同时应用程序发出的报文应该控制在流量参数描述的范围以内。  
IntServ是一种多服务模式以适应不同的Qos需求,每个通信
通知网络它自己的流量参数和需要的特定服务质量请求。比如某个视
频工作站希望与距离自己有若干网络跳数的多媒体服务器交流,为了
确保这个多媒体流量具有可接受的质量,这个对话需要300Kbit/s
的带宽,需要100ms的延迟;另一个对话是IP电话用户handset
1与距离自己比较远的handset2通话,为了保证这个语音流量的质
量,需要保障500Kbit/s,需要50ms的延迟。
在IntServ服务模型中,负责传送QoS请求的信令是RSVP
(Resource Reservation Protocol)资源预留协议,它通知路
由器应用程序的 QoS 需求。RSVP 是在应用程序开始发送报文
之前来为该应用申请网络资源的。 Intserv实际上是一种对服务的
预定机制,通过申请来获取相应得服务,这里面主要依靠的就是RSVP
资源预留协议。 
IntSev模式下,需要在沿路上的路由器或者交换机作如下的几个工作:网络在收到应用程序的资源请求后,执行资源分配检查 Admission control 即基于应用程序的资源申请和网络现有的资源情况,判断是否为应用程序分配资源,一旦网络确认为应用程序的报文分配了资源,则只要应用程序的报文控制在流量参数描述的范围内,网络将承诺满足应用程序的 QoS 需求。而网络将为每个流 flow 由两端的 IP 地址、端口号、协议号确定、维护一个状态,并基于这个状态执行报文的分类、流量监管、policing、排队及其调度来实现对应用程序的承诺。 

RSVP
RSVP是第一个标准的 QoS信令协议,它用来动态地建立端到端的QoS,它允许应用程序动态地申请网络带宽等。它是IP协议,IP的ID是46,tcp和UDP端口是3455。RSVP协议不是一个路由协议,相反,它按照路由协议规定的报文流的路径为报文申请预留资源,在路由发生变化后,它会按照新路由进行调整,并在新的路径上申请预留资源。RSVP 只是在网络节点之间传递 QoS 请求,它本身不完成这些QoS 的要求实现,而是通过其他技术来完成这些要求的实现。(RSVP只是一种用来预定的协议)
RSVP 的处理是接收方发出资源请求,按照报文发送的反向路径发送资源请求,所以它可以满足非常大的多播组,多播组的成员也可以动态变化,RSVP 协议是针对多播设计的 单播可以看作是多播的一个特例。  
由于 RSVP 在 Internet 上还没有得到广泛的推广,在主机不支持 RSVP 的情况下,我们可以通过配
置 RSVP 代理,即代替不支持 RSVP 的主机发送 RSVP 报文来获得这种服务,对报文流路径上不支持 RSVP的路由器,它只需要简单的转发RSVP报文 所以对RSVP协议不会有太大影响,但这些节点不会对报文提供所要求的QoS 。(这是RSVP 的一个缺点) 
IP电话1要与IP电话2进行语音的数据传递,IP电话1发送一个路径消息给接收方IP电话2,这个消息还收集了中间节点的Qos能力的信息,当接收方IP电话2收到这个消息后开始处理这个消息,产生一个预留(reservation)请求,要求带宽为20Kbps、200ms的延迟,预留请求再逆向传输给发送方,以确保真正的预留资源的请求,当发送方收到该预留请求后,开始按照预留的要求分配相应的网络资源发送数据。 
RSVP 信令在网络节点之间传送资源请求,而网络节点在收到这些请求后,需要为这些请求分配资源,这就是资源预留。网络节点比较资源请求和网络现有的资源,确定是否接受请求,在资源不够的情况下,这个请求可以被拒绝,可以对每个资源请求设置不同的优先级。这样,优先级较高的资源请求可以在网络资源不够的情况下,抢占较低优先级的预留资源,来优先满足高优先级的资源请求。  
资源预留判断是否接受资源请求,并承诺对接受了的资源请求提供请求的服务,但资源预留本身不实现承诺的服务,需要通过队列等其他技术来实现。  
Intserv 有它的好处,但是也有严重缺点,首先就是 RSVP 协议数据太多,而且不断刷新,并且这种
给单一数据流的路径进行带宽预留的解决思路在浩瀚的Internet上实现简直是不可能的,而且RSVP的
部署,厂商之间设备的互联,业务管理方面 等存在着种种问题,所以这么模型在 1994 年推出之后就没
有获得任何规模的商业应用。 

3.DiffServ区分服务模式
DiffServ 是一个多服务模型,它可以满足不同的 QoS 需求,与 IntServ 不同,它不需要使用 RSVP即应用程序在发出报文前,不需要通知路由器为其预留资源,对 DiffServ 服务模型,网络不需要为每个流维护状态 ,它根据每个报文指定的 QoS 来提供特定的服务,可以用不同的方法来指定报文的 QoS,如IP报文的优先级位 IP Precedence) ,报文的源地址和目的地址等,网络通过这些信息来进行报文的分类、流量×××、流量监管和队列调度。
DiffSev是一个有多个组件组成的复杂的体系结构。每个组件在网络中都具有不同的作用,因此每个组件的操作都是不同的。DiffSev体系结构的主要组件完成以下任务:
* 分组分类(Packet Classification):针对第2层或第3层信息简单进行分类,它可以区分不同类型分组的机制。一个简单的分组分类机制的例子是,对照寻找特定源IP地址和目的IP地址分组的访问列表进行匹配。分组分类也可以更加复杂,比如检查分组以区分其目的类型是URL还是MIME类型。在Cisco路由器中一种可用的复杂分组分类的机制是基于网络的应用识别(Network-Based Application Recongnition,NBAR)。NBAR可以适应前面所列出的第4层到第7层各层的特性。NBAR也能够进行有状态分组的检查,很明显地增加了潜在功能。无论一种特定机制的实际分类能力如何,分组分类典型的实现应尽可能靠近数据流的源端,而且通常与分组标记一同使用。
* 分组标记(Packet Marking)是一种允许网络设备根据分组类型进行不同标记的功能,所以在未来的网络设备中,它们更容易被区分。当分组在第一跳的路由器中分类后,标记就完成了,所有后继的路由器仅仅察看标记,就知道如何处理该分组。分组标记通过与分组分类一起尽可能在靠近源端出完成。DiffSe模型如此科变化的一个原因是,复合的分组分类和分组标记都推荐仅在第一跳的具有第3层能力的设备中实现。然后在整个网络中分组都携带此标记,这样网络核心的责任就限制在简单地分组分类(可以基于在网络边界所实现的标记值),以及将这些分组交换到相应的出口端。
* 拥塞管理(Congestion Management)有许多子组件(比如FIFO、PQ等),但拥塞管理基本的功能是将各种类型的数据流隔离(依据第一跳中的复合分类,抑或依据非边缘设备的分组标记),保护每一类数据流不受其他类的影响,然后分配各类数据流访问各种网络资源的优先级。通常拥塞管理主要关心的是对传输分组的重排。会影响每个类所获得的总带宽,也会影响器延迟和抖动特征。由于队列长度的限制,一个特定类型的数据流分组的延迟会影响该类型数据流的分组丢失。换句话说,如果一个特定类型数据流的延迟时间很长,而且队列已满,那么这类分组的后面部分将被丢弃。Cisco路哟器的拥塞管理是一种出口功能,还包括如CBWFQ和LLQ机制。在实时环境中,拥塞管理通常在所有的网络层(访问、分布、核心层)中采用,但并没有严格的规则指明在网络中那个部分必须使用拥塞管理。
* 拥塞避免(Congestion Avoidance):专门设计用于丢弃分组,以达到避免拥塞的目的。拥塞避免的概念是基于TCP操作的。简单的例子,一个人问了另一个人一个问题,但没有得到回答,经过了一段合理的时间后,发问方会假设对方没有听到这个问题,他会再次发问。TCP操作基本相似,当TCP数据流发送后,发送方期待接收方发送一个ACK确认消息来确定对方已收到该数据包。如果在一定时间内,发送方未收到此ACK,它假设接收方为收到这些传输。这样发送方将减少其TCP窗口的大小(实际上是减少发送速率),并在此发送未收到ACK的数据包,注意到所有者都是在发送方未真正从接收方处获悉并未接收到数据包发生的。Cisco设备中拥塞避免是通过加权早期随机监测(Weighted Random Early Detection,WRED)来实现的,拥塞避免是一个监视队列深度,并随机丢弃各种数据流的分组的进程。随机丢弃各种数据流的分组,要避免两件事:第一,防止队列完全装满,如果允许全部装满,尾部丢弃(tail drop)将会发生。尾部丢弃并不是一个好的方法,因为同一个数据流的大量分组被丢弃后,将导致TCP多次减少其窗口的大小,因此造成链路利用率很低;第二,可以在决定标记的进程中增加一个功能,以决定那些分组可以被随机的丢弃。
* 流量调节(Traffic Conditioning):流量调节包括两个组件,一是监控组件,监控组件负责流量监控,也就是说,数据流通过监控组件的速率超过限定速率时丢弃分组。Cisco中所实现的监控组件的粒子是允许访问速率(Committed Access Rate,CAR)监控和基于类的监控。监控的目的是调节极限流量,实际应用中监控的例子是限制通过特定接口的FTP流量总量为1Mbit/s。超过这个限定的数据流将会被丢弃。TCP会重传被丢弃的分组,而UDP不会;第二是×××组件,负责对流量的×××,在cisco设备中,有多种格式:通用流量×××(Generic Traffic Shaping,GTS)、帧中继流量×××(Frame Relay Traffic Shaping,FRTC)和基于类的流量×××等等。×××的目的是限制分组的速率,它将那些通过×××组件的超出限定速率的分组放在缓冲区中,稍后再发送这些分组。这样经过一段时间后发送速率可以平滑低过渡到给定的速率,这一点和监控组件的操作正好相反,在监控组件中,超过限定速率的流量将被丢弃。监控组件和×××组件各有利弊。

第三部分 DiffSev服务
用来在网络中提供 QoS 的 Diffserv 方法应用了一组合理定义的小型基本部件,使用这些部件可以构筑一系列的服务。其目标是在IPv4报头中定义区分服务(DS)字节和服务类型(ToS)字节,在IPv6中定义通信类(TrafficClass)字节,并标记分组中的标准化DS字节,使分组在每一个网络节点得到特定的转发处理或单中继段行为(PHB)。 
区分服务体系结构提供了一个框架,在这个框架下,服务提供商们可以为客户提供各种网络服务,并根据性能来区分每一种服务。客户只需将分组的区分服务码点(DSCP)标记为特定值,便可以选择每个分组的性能等级,这个值指定了分组在服务提供商网络中的单中继段行为(PHB)。通常,服务提供商和客户可以共同协商一个配置文件(profile),它描述了各种服务等级通信的提交速率。如果提交的分组速率超过了规定,则可能无法获得规定的服务等级。 
Diffserv体系结构只规定处理分组的基本机制,将这些机制作为基本部件可以构建各种服务。服务定义了一些重要的分组传输特征,例如,网络小一条路径某个方向上的吞吐量、延迟、抖动以及分组丢失率等。另外,还可以使用访问网络资源的相对优先级米表征服务。服务被定义后,提供这种服务的网络上的所有节点都将被指定一个 PHB,并给 PHB 分配一个 DSCP。PHB 是网络节点提供给所有带特定DSCP值的分绍的转发行为,需要特定服务等级的通信,其分组的DSCP 字段将被指定为相应的值。

1. DS区分服务字段
区别服务是用来对分组进行标记,允许服务区别。分组在网络的边缘处进行标记(与IP优先权非常相似),这些标记在分组通过的每一台路由器(跳)都能读取。根据在该跳中已经定义的特殊规则,分组分配给一个数据流泪,该数据流类将会被分配一定的权限访问调度和其他资源。
 
如图,对于IP优先权,只有最左边的3位拥来表示IP优先权,而紧跟的3位很少使用。DSCP则利用最左边的6位(第0-5位)进行分组标记,这样做将可能的分组标记的位数从8个增加到64个,而且消除了“浪费”位,剩下的2个有效位称为显式拥塞通知(Explicit Congestion Notification,ECN)

2. PHB每跳行为
在每一个节点或每一跳中对分组的处理称为每跳行为(Per-Hop Behavior,PHB)。RFC2475中解释:每跳行为是一种对DS节点的外部可观察转发行为的描述,大体上该DS节点实现了一个特定DS行为集合,PHB的可观察行为可能依靠与行为集合相关联的数据流特征或其他行为集合的特征的特定约束。
PHB 描述了Diffserv节点对具有相同DSCP的分组采用的外部可见的转发行为。可以用资源优先级来定义PHB,也可以用一些可见的通信服务特征如分组延迟、分组丢失率或分组抖动来定义。可以将 PHB 看做一个黑盒子,因为它定义了一些外部可见的转发行为,但没有指定特定的实现方式。 
为了后向兼容的目的,注意:理解IP优先权但不理解区别服务的路由器只能看到Tos字段的3个有效的位(最左位),然而具有区别服务能力的路由器可以看到6个有效位。因此,标记000000在RFC2474中被定义为尽力服务。这意味只能理解IP优先级的路由器应该是000,也就是在IP优先权环境中尽力服务的定义。同样的,RFC2474预留了所有格式为xxx000的标记,以提供与IP优先权值的后向兼容。如下表:
位 优先权含义
001000 类选择1:无区别服务的节点读做001,按优先级1(优先priority)处理
010000 类选择2:无区别服务的节点读做010,按优先级2(快速immediate)处理
011000 类选择3:无区别服务的节点读做011,按优先级3(火速flash)处理
100000 类选择4:无区别服务的节点读做100,按优先级4(最优先flash override)处理
101000 类选择5:无区别服务的节点读做101,按优先级5(CRITIC/ECP)处理
110000 类选择6:无区别服务的节点读做110,按优先级6(互连网络控制)处理
111000 类选择7:无区别服务的节点读做111,按优先级7(网络控制)处理

3.保证转发(Assured Forwarding)
AF保证转发根据DSCP值来定义类别,它对于理解DSCP AF术语和DSCP值之间的对应关系至关重要。AF定义了4种AF类型:AF1x-AF4x,每个类之间都彼此完全独立,其中类别AF4比类别AF1更重要。在每种类别中,有3种丢弃概率。根据要求的吞吐量、延迟、抖动和丢包率,用户可以配置数据报的PHB,或者根据访问网络服务的优先权配置PHB,这取决于网络的策略。AF PHB定义了一种给通信流类别提供不同转发保证的方法。

DSCP中前3位用来指定AF PHB的类别,接下来2位指定丢弃概率,最后一位总是为0
表:
类别 丢弃概率 DSCP值
类别1:AF1x AF11(丢弃概率低) LOW 00 001010    10
         AF12(丢弃概率中) MEDIUM 00 001100    12
         AF13(丢弃概率高) HIGH 00 001110    14
类别2:AF2x AF21(丢弃概率低) LOW 00 010010    18
         AF22(丢弃概率中) MEDIUM 00 010100    20
         AF23(丢弃概率高) HIGH 00 010110    22
类别3:AF3x AF31(丢弃概率低) LOW 00 011010    26
         AF32(丢弃概率中) MEDIUM 00 011100    28
         AF33(丢弃概率高) HIGH 00 011110    30
类别4:AF4x AF41(丢弃概率低) LOW 00 100010    34
         AF42(丢弃概率中) MEDIUM 00 100100    36
         AF43(丢弃概率高) HIGH 00 100110    38
假设有4个分公司集合到一台路由器。每个分公司都被告知,他们不能发送超过256Kbit/s的FTP数据流,但有时他们可随意发送。事实上,有时他们会发送超过1Mbit/s的FTP数据流。问题是当一个分公司发送了大量的FTP数据流时,有时它会干涉到某个其他分公司的FTP数据流,即使这些分公司按照256kbit/s甚至更低速率在发送。利用AF PHB是这个问题的一个可能解决方法,我们在每个入口接口上设置一个监控程序,该程序监测入站的FTP的速率,如果速率小于等于256Kbit/s,分组被标记为AF11,如果速率在256Kbit/s到1Mbit/s之间,分组被标记为AF12,如果速率超过1Mbit/s的分组标记为AF13,在出口接口上,在AF1类中,基于DSCP的加权RED接口上使用。必要时WRED根据分组的DSCP标记丢弃该类分组。首先丢弃AF13分组,AF12分组和AF11分组就会在最后被丢弃
 
4.EF(Expedited Forwarding,快速转发)
快速转发PHB(Expedited Forwarding PHB)可以用来实现的丢失率,低延迟,低抖动,确定带宽,端到端服务.EF PHB针对VoIP和视频会议这样的应用. 导致分组延迟和分组抖动的主要原因是如果一个接口接收到的待转发流量超过其负载能力时,会形成排队延迟, 排队延迟通常是在拥塞时,队列过长引起的,EF PHB确保通信不需要排队或队列足够短。
路由器可以通过使用不同的EF功能实现方法, 为某个端口上特定的离开速率分配资源。 当EF通信可以在高度加权的队列上传送,例如CBWFQ,WRR,DRR等分组调度技术提供了这个功能。对于网络中的 EF通讯,推荐使用DSCP 101110(46)。RFC建议在多数cisco 设备中使用监控程序对EF数据报进行速率限定。特别地,如果配置要求为所有标记DSCP46的分组提供EF,而且如果为具有EF PHB权限的数据流配置128Kbit/s的出口速率,同时带有DSCP46标记的数据流达到129Kbit/s的速率,有1kbit/s带有DSCP46标记的数据流将被丢弃,以确保接收EF队列的速率不超过发送速率。但是如果没有发生拥塞,队列也不会被激活,监控机制也不会被激活。

第四部分 Qos的执行方法

1.Qos组件
对于Cisco IOS软件的设备,其排队机制包含下列主要的组件:分类、标记、流量调节、拥塞管理和拥塞避免。
对于入站的数据包的DSCP、Cos、IP优先级、端口配置或ACL配置和映射表进行分类,定义内部DSCP值。当数据帧穿过并离开出口的过程中,流量控制决定是否要丢弃数据包或降低其优先级,确定出站标记和策略来决定数据帧应该加入那个传输的队列(可能会修改内部的DSCP值)。数据帧进入到传输队列时,拥塞避免决定在队列的填满程度达到指定的值或完全填满时丢弃数据包,拥塞管理决定设备何时传输队列中的数据包。
 
2. 传统的CLI
传统的Qos配置方法是通过一个命令行界面(CLI)来完成,用户通过控制台或远程登陆为每个接口配置相应的Qos。这意味着,如果用户希望配置流量×××和拥塞的管理,用户必须理解两种完全不同的CLI结构,而且所支持的Qos特性也比较少,也容易出现错误,这样使得精通所有可用的Qos方法的配置变得很困难。

3. 模块化CLI(moduel)
模块化CLI允许用户建立一个流量策略然后匹配这些策略到接口上。一个Qos策略可以包含一个或多个分类和一个或多个Qos的特性,流量分类被用来分类不同的流量,并应用Qos的特性到策略上来确定分类流量如何去处理。
模块化CLI利用传统的CLI方法有效的来执行Qos。网络管理员可以通过MQC,在相当大的程度上一个相对复杂的网络上减少时间和努力去配置Qos,管理员可以对所有的Qos组件采用一个通用的配置结构,配置所有Qos组件的基本配置不周是相同的,仅仅在实际应用时根据特殊的配置很小的差异来达到多功能性。而不需要对每个接口做配置。

通过3个步骤来配置所有的方法:

步骤1:类映射配置,通过命令class-map来配置
在MQC中配置任何Qos方法的第一个步骤是配置类映射。简单地说,类映射定义了希望路有器映射那个数据流。这是允许路由器对不同数据流类型区别处理的基本步骤。
为了区分数据流,可能映射数据流的一个特征或多个特征。例如,需要区分10.1.1.0和10.1.2.0的数据流,源端IP地址是唯一需要配置的特征。然而,如果有多个来自10.1.1.1的数据流需要区分,同时需要区分来自10.1.1.2的多个数据流,你可能需要多个原则,比如TCP或UDP端口等来对数据流分类。
类映射的配置:
* 映射名称
* 一系列match命令
* 有两个选项来创建类映射match-any和match-all,默认为匹配所有
配置:
class-map 名称  [match-any|many-all]
many-any:是一个逻辑或(or)操作。在此操作中只要有一个匹配条件和分组所属的特定类匹配
many-all:是一个逻辑与(and)操作,在操作中必须所有的匹配条件和分组所属的特定类匹配。

步骤2:策略映射配置,通过命令policy-map来管理
类映射的功能仅仅是在类映射中根据给定的特征来识别数据流,而数据流的实际处理是由策略映射来定义,针对类映射应用不同的Qos特性。
策略映射配置:
* 映射名称
* 应用某个类映射,并应用相应的策略
* 一个策略映射中可以匹配256种不同的类映射
* 多个策略映射可以嵌套
配置:
     policy-map 名称
        class 类映射

步骤3:应用服务策略到接口上,通过命令service-policy来应用
即使你配置了类映射和策略映射,但没有在接口上应用这个策略映射,这些策略是没有任何作用的。
配置:
     service-policy [input|output] 策略映射名称
     input:策略映射在通过该接口进入路由器的数据流实现
     output:策略映射在通过该接口离开路由器的数据流实现。在特定接口实现策略映射输入或输出依赖在策略映射中使用何种Qos方法。有些行为仅仅在输出策略中使用。

第五部分  分组分类和标记

1. 分类是能够以特定优先级或预定的参数来区分帧或数据包。路由器或交换机根据分类指定的内部DSCP值进行Qos数据包处理,包括策略和调度。分类的依据
* 第1层:物理接口、子接口、PVI、端口
* 第2层:MAC地址、802.Q/p的Cos位、vlan标志、MPLS EXP、ATM的信元丢失优先(CLP)、帧中继的可丢弃位
* 第3层:IP优先级、DSCP值、源/目标IP地址
* 第4层:TCP/UDP端口号
* 第7层:应用程序特征、URL
分类方法:
* 按接口的信任模式
* 按接口的手工分类(使用DSCP、IP优先级或COS值)
* 按数据包(基于ACL访问列表)
* NBAR,基于网络的应用识别
Qos策略的首要任务是识别需要进行分类的通信。在所有CISCO路由器和交换机上,如果只启用Qos,而没有做其他Qos配置,则所有通信流都被归为默认类别。入站帧的默认DSCP值为0。

2. 第3层分类和标记
 
IP优先权
TOS 整个字段一共 8 位,下图中是 ip precedence 的标识方法,使用前三位,也就是 P0、P1、
P2 一共三位,共 8个 bit 位,也就是 8 个优先级,分别是0-7,其中 6 和7一般保留,常用的0-5,
图中下面部分介绍的事 IP 优先级的含义,提供这个表格的意义在于 进行更改数据包优先级等配置时,
我们既可以使用数字,也可以使用名称。紧跟的3个有效的位分别定义了延迟、吞吐量和可靠性,但由于多种原因并没有广泛被接受。
位 数 IP优先级
000 0 例程routine(优先级0)
001 1 优先priority(优先级1)
010 2 立即immediate(优先级2)
011 3 闪速flash(优选级3)
100 4 最优先信号flash-overrid(优先级4)
101 5 CRITIC/ECP(优先级5)
110 6 网间控制internat(优先级6)
111 7 网络控制network(优先级7)

DSCP值
IP优先权只使用了TOS子段的前3位,后3位很少使用,DSCP值使用了TOS的前6位进行标记,这样用作分组标记的位数就从8位增加到64位,而且消除了“浪费的”位。
PHB 类别 丢弃概率 DSCP值
default                           00 000000     0
AF 类别1:AF1x AF11(丢弃概率低) LOW 00 001010    10
          AF12(丢弃概率中) MEDIUM 00 001100    12
          AF13(丢弃概率高) HIGH 00 001110    14
AF 类别2:AF2x AF21(丢弃概率低) LOW 00 010010    18
          AF22(丢弃概率中) MEDIUM 00 010100    20
          AF23(丢弃概率高) HIGH 00 010110    22
AF 类别3:AF3x AF31(丢弃概率低) LOW 00 011010    26
          AF32(丢弃概率中) MEDIUM 00 011100    28
          AF33(丢弃概率高) HIGH 00 011110    30
AF 类别4:AF4x AF41(丢弃概率低) LOW 00 100010    34
          AF42(丢弃概率中) MEDIUM 00 100100    36
          AF43(丢弃概率高) HIGH 00 100110    38
EF                           00 101110    46
                                        48-55
                                        56
分类是没有范围限制的,也就是说我们可以对数据进行灵活的分类,比如说把某一个源 ip 到目的 ip 的流量优先级进行更改 IP 优先级或者 DSCP 的操作。也可以定义去更改某一个特定的流量(扩展控制列表)的优先级。
通常于网络边界处对报文进行分类时,同时标记IP优先级或 DSCP。这样,在网络的内部就可以简单的使用 IP 优先级或 DSCP 作为分类的标准,而队列技术如 WFQ 等 CBWFQ 就可以使用这个优先级来对报文进行不同的处理。 
什么是标识,实际上就是通过更改这些优先级字段将这些数据分出种类来,即便是上面的图标中有所谓的什么 0-7 优先级,好似 7 要比 0 就会优先级大一些,但是一定要清楚这只 是区分,执行的策略要靠后面的队列机制来解决,实际上之所以这样定义优先级我认为只是 为了制定一个共同遵守的类别优先标准,没有实际的意义,真正的操作是在配置上针对于不 同优先级采用的措施 例如在队列里面使用什么标识的数据包属于什么队列等等。

3. 第2层的分类和标记 

第2层标记帧的方法是根据帧的特征来区分,那些帧当它们沿交换的基础设施移动时应当接受该特征。然而,在第2层唯一的标记帧的方法是在ISL或802.1Q的头部。
 
正常的以太网 frame中是不存在标记的,但是 ISL和 dot1q的 frame 中有三个 bit 定义服务级别,一共有6个服务级别可以使用。
802.1Q/p中用户优先级字段称为服务类别COS,不同类型的通信流被赋予不同的COS值:
值 优先级
7 保留
6 保留
5 语音传输
4 视频会议
3 呼叫信令
2 高优先级数据
1 中优先级数据
0 尽力而为的数据

4. 第2层和第3层的映射
当帧/分组从第2层环境传到第3层环境时,ISL和802.1Q头部被丢弃。为了保持端对端的Qos,丢弃造成将第2层Cos值映射到第3层Tos值能力的需要。当帧/分组从路由的网络返回到交换网络时,ISL或802.1Q的头部将再次使用携带第2层Qos标记。当网络中包含不具备第3层能力的第2层设备时,这点尤为重要,因为他们可能理解Cos标记,但不理解Tos标记。而且,为保持端对端Qos,必须利用第3层标记在这些下行分组中标记第2层的Cos值。
默认的Cos到DSCP的映射
Cos 0 1 2 3 4 5 6 7
DSCP 0-7 8-15 16-23 24-31 32-39 40-47 48-55 56
默认IP优先权和DSCP的映射
IP优先 0 1 2 3 4 5 6 7
DSCP 0 8 16 24 32 40 48 56
IP优先权到DSCP映射是可以配置的,2950和3550系列交换机都支持用户配置的Cos到DSCP的映射。通过配置命令:
Mls qos map cos-dscp 对应列表
Mls qos map ip-prec-dscp 对应表
案例:
switch(config)#mls qos map cos-dscp 0 8 16 30 30 46 50 50
switch#show mls qos map cos-dscp
   cos-dscp map :
cos:   0   1   2   3    4    5   6   7
   -----------------------------------------
dscp:  0    8   16  30   30  46  50  50

5. 可信任边界
可信任边界是所有支持Qos分类的交换机支持的一种分类配置的选项。交换端口和接口的可信任状态定义了如何对入口分组进行分类、标记和随后的调度。对于仅仅依靠cos值保证Qos的交换机而言,被设置为不可信任的端口将任何cos值重新分类为0或一个静态配置的cos值。分组的cos值到达不可信任的端口时,被假设为不能验证,而且交换机系统管理员认为该值没有必要,根据不同的平台,不可信任端口可能被配置为根据802.1Q标记或访问列表对任何入口帧重新分类或标记IP优先权、DSCP或cos值。信任配置指定信任数据包中原有的分类。例如,当交换机配置为信任DSCP的时候,如果它接收到DSCP值为46的数据包后,那么它接受原来的DSCP值,并将其内部DSCP值设置为46。尽管有入站分类配置,但交换机仍然可以通过策略和出站标记灯方法修改出站帧的DSCP和COS值。
可信任入站帧的DSCP、IP优先级或COS值。在信任COS或IP优先级的时候,交换机将入站数据包的COS或IP优先权映射到一个内部DSCP值。
 
如图,与交换机相连的工作站发送802.1q标记的帧给交换机,该帧的Cos值为5。如果该端口被配置为不可信任,交换机设置一个与帧相联的内部DSCP值为0。帧被发送前交换机并不真正修改帧的Cos值。所有不可信任的端口默认设置内部DSCP值为0。然而,内部DSCP值的替换由不同的平台来配置。如果交换机端口被配置为可信任COS,此COS值在入口处并不改变,COS值为5对应为DSCP值为40。
假设可信任端口接收的入口分组的IP优先权、DSCP或COS值是有效的,不可信任端口认为,接收到的入口帧的IP优先权、DSCP或COS值被认为无效的。
配置:
1) 信任COS配置
a) 进入全局模式   configure terminal
b) 进入接口模式   interface 接口
c) 配置信任cos
mls qos trust cos
d) 指定cos值(可选)
mls qos cos 值
cos值:表示分配给无标记帧的cos值
e) 配置无标记帧或标记帧的替换
mls qos cos override
override表示在mls qos cos 值命令中覆盖标记帧的cos值。
案例:
switch(config)#interface f0/10
switch(config-if)#mls qos trust cos
switch#show mls qos interface f0/10
----------------------------------------------
FastEthernet0/10
trust state: trust cos
trust mode: trust cos
COS override: dis
default COS: 0
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none
Switch(config)#interface f0/10
Switch(config-if)#mls qos cos 5
Switch(config-if)#mls qos cos override  //将取消信任cos
Switch#show mls qos interface f0/10
--------------------------------------------------
FastEthernet0/10
trust state: not trusted
trust mode: not trusted
COS override: ena
default COS: 5
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none

2) 可信任DSCP
可信任DSCP直接将入口分组的DSCP值映射到内部DSCP值。可信任DSCP是直接与实现分类和在入口标记的交换机连接的推荐信任配置。由于分类和标记在内部连接交换机端口的入口发生,只有可信任DSCP允许当前交换机实现最初的入口分类和连接交换机的标记。可信任DSCP也是与CISCO IP电话连接的借口的可选配置。CISCO IP电话标记具有DSCP和COS值的帧,CISCO IP电话的可信任帧是一种常用的应用。
a) 进入全局模式   configure terminal
b) 进入接口模式   interface 接口
c) 配置信任dscp
       mls qos trust dscp
案例:
switch(config)#mls qos
switch(config)#interface f0/10
switch(config-if)#mls qos trust dscp
switch#show mls qos interface f0/10
sw2#show mls qos int f0/10
FastEthernet0/10
trust state: trust dscp
trust mode: trust dscp
COS override: dis
default COS: 0
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none

3) 可信任IP优先权
可信任IP优先权是只能在交换机3550系列交换机中可用的特性。可信任IP优先权利用IP优先权映射表来将入口分组的IP优先权值映射到一个内部的DSCP值。
a) 进入全局模式  configure terminal
b) 进入接口模式  interface 接口
c) 配置IP优先权
   mls qos trust ip-precedence
sw2#conf t
sw2(config)#interface f0/10
sw2(config-if)#mls qos trust ip-precedence
sw2#show mls qos int f0/10
FastEthernet0/10
trust state: trust ip-precedence
trust mode: trust ip-precedence
COS override: dis
default COS: 0
DSCP Mutation Map: Default DSCP Mutation Map
Trust device: none

6.流量分类和标记
数据报标记就是修改IP优先级或者DSCP,但是由于IP优先级和DSCP都是占用TOS字段,后者相当于前者的扩展,所以不能同时设置这两种值,如果同时设置了这两个值,那么只有IP DSCP  的值生效。
分类技术:
1) access-list分类:可以根据协议、源地址、目标地址、源端口、目标地址等来对流量分类
配置命令:扩展访问控制列表
access-list 序号 [dynamic 动态名称 [timeout minutes]] {deny | permit} 
协议 源地址 源地址反掩码 目标地址 目标地址反掩码 [precedence 优先权] 
[tos tos值] [log | log-input] [time-range 时间名称] [fragments]
配合调用:CAR、队列技术、route-map、class-map
2) route-map基于路由的分类:可以根据流量的来源和包的大小分类
配置命令:
route-map 名称 [permit | deny] [序列号] 
分类:在路由图配置模式下
(config-route-map)# match length min max       匹配数据包的长度大小
(config-route-map)# match ip address 访控列表   匹配访问控制列表的数据
配合调用:PBR(基于路由的策略)
3) class map类映射
配置:
A) class-map match-all|match-any 名称
match-all:是一个逻辑与操作,在此操作中必须所有的匹配条件和分组所属的特定类匹配
match-any:是一个逻辑或操作,在此操作中只要一个匹配条件和分组所属的特定类匹配
默认为match-all,配置其他类映射参数前必须选择两个选项之一。
B)定义匹配语句 
match 匹配选项
          匹配选项:
* access-group:允许对一个访问控制列表ACL配置
* any:允许对所有分组进行映射。
* Class-map:可以嵌套class map
* Cos:允许对802.1Q或ISL,头部的第2层COS值的匹配
            Match cos 0-7级别
* Destination-address:允许对目的端MAC地址匹配
            Match destination-address mac mac地址
* Dscp:允许对dscp值匹配
  Match dscp dscp值
  <0-63>   Differentiated services codepoint value
  af11     Match packets with AF11 dscp (001010)
  af12     Match packets with AF12 dscp (001100)
  af13     Match packets with AF13 dscp (001110)
  af21     Match packets with AF21 dscp (010010)
  af22     Match packets with AF22 dscp (010100)
  af23     Match packets with AF23 dscp (010110)
  af31     Match packets with AF31 dscp (011010)
  af32     Match packets with AF32 dscp (011100)
  af33     Match packets with AF33 dscp (011110)
  af41     Match packets with AF41 dscp (100010)
  af42     Match packets with AF42 dscp (100100)
  af43     Match packets with AF43 dscp (100110)
  cs1      Match packets with CS1(precedence 1) dscp (001000)
  cs2      Match packets with CS2(precedence 2) dscp (010000)
  cs3      Match packets with CS3(precedence 3) dscp (011000)
  cs4      Match packets with CS4(precedence 4) dscp (100000)
  cs5      Match packets with CS5(precedence 5) dscp (101000)
  cs6      Match packets with CS6(precedence 6) dscp (110000)
  cs7      Match packets with CS7(precedence 7) dscp (111000)
  default  Match packets with default dscp (000000)
  ef       Match packets with EF dscp (101110)
* Fr-de:允许对设置了帧中继可丢弃指示符(DE)位分组的匹配
* Fr-dlci:允许对设置帧中继dlci号匹配
8 Input-interface:允许根据分组进入路有器的接口对分组匹配。这一点在多个远程站点通过帧中继与端点路由器连接的环境中很有用。在这种情况下,若能提供具有子接口的点对点帧中继的配置,那么来自给定远程站点的所有数据流就可以根据数据流到达时的子接口来匹配。
* Ip:允许基于IP优先权、DSCP和RTP端口号来匹配
          Match ip ip优先权|dscp|rtp
* Mpls:允许根据多协议标签交换mpls实验位对分组进行匹配
* Not:除了匹配内容之外的分组
* Packet:对数据包进行匹配
          Match packet length min 最小值 max 最大值
* Port-type:对端口的类型进行匹配,路由接口还是交换接口
          Match port-type routed|switched
* Precedence:允许对优先权对分组进行匹配
          Match precedence 值
<0-7>   Enter up to 4 precedence values separated by white-spaces
critical        Match packets with critical precedence (5)
flash           Match packets with flash precedence (3)
flash-override  Match packets with flash override precedence (4)
immediate       Match packets with immediate precedence (2)
internet   Match packets with internetwork control precedence (6)
network    Match packets with network control precedence (7)
priority      Match packets with priority precedence (1)
routine       Match packets with routine precedence (0)
* Protocol:允许与预先定义的特定协议进行匹配。基于网络的应用识别(NBAR)识以中心的分类技术,它可根据静态和动态分配的短口号对大量应用进行识别。
* Qos-group:允许对分组按照器qos-group标记进行匹配。
* Source-address:源端IP地址的匹配
* Vlan:vlan号(交换机)
案例:
r1(config)#access-list 101 permit tcp any any eq www
r1(config)#access-list 102 permit tcp any any eq ftp
r1(config)#access-list 103 permit ip host 10.1.1.1 any
r1(config)#access-list 104 permit ip host 10.1.1.2 any
r1(config)#class-map HTTP                    //match-all为默认配置)
r1(config-cmap)#match access-group 101
r1(config-cmap)#match access-group 103
r1(config)#class-map FTP                    //match-all为默认配置)
r1(config-cmap)#match access-group 102
r1(config-cmap)#match access-group 104
----------------------------------------------------------------
r1#show class-map 
 Class Map match-all HTTP (id 1)
   Match access-group  101 
   Match access-group  103 
Class Map match-all FTP (id 2)
   Match access-group  102 
   Match access-group  104
 Class Map match-any class-default (id 0)  
   Match any
------------------------------------------------------------------------
Class-default:无论何时建立了其他什么类,该命令自动建立,是对所有不属于任何类的数据流给出一个匹配
3) 流量策略映射:
配置:
     Policy-map 名称
  进入config-pmap配置模式
* Class:指定你希望配置的策略的类名称
* Description:描述性语句
* rename:重命名策略
     可进行策略配置的内容:
* bandwidth:允许对CBWFQ配置,指定数据流的最小带宽保证。
      * <8-2000000>:kbit/s
      * percent:占总带宽的百分比
      * remaining:剩余带宽的百分比
* drop:丢弃该类数据流
* fair-queue:实现在此类中基于流的加权公平队列
* police:允许对监控器配置,也成为速率限制。当在类中使用中,police命令被称基于类的监控
      * <8000-2000000000>:bit/s  Bits per second
      * cir:承诺速率
* priority:指定该类为LLQ类,该类应该获得严格的调度优先权以获得最小的延迟、抖动和分组丢失。也规范了此类的带宽总量
          <8-2000000>:kbit/s
          percent:占总带宽百分比
* queue-limit:指定在此队列分组可获得的最大号码
           <1-4096>:报数
* random-detect:利用WRED来实现拥塞避免。默认的,IP优先权用来进行加权判断,但该命令的额外选项允许WRED算法参考DSCP。此命令也提供了一个选项用来在此类中实现显示地拥塞通知(ECN)
      * discard-class:设置被丢弃类
      * discard-class-based:使能基于丢弃类的WRED丢弃的策略
      * dscp:dscp值
      * dscp-based:使能基于dscp类的丢弃策略
      * ecn:ecn显示地拥塞通知值
      * exponential-weighting-constant:指数加权因子
      * prec-based:使能基于优选权类的WRED策略
      * precedence:优先权值
      * <cr>
* service-policy:允许对层分级策略(在策略内套策略)的配置,他可以用来实现可能在一个策略中完成的功能。例如,一条T1链路通过最高层策略×××为512k,然后在第2层策略内利用CBWFQ/LLQ将这个512k平分。最高策略有时称为父亲策略,第2层策略有时称为孩子策略。
* shape:允许对基于类的×××进行配置,基于类的×××功能是在每个类机和中使用普通的流量×××方法。在这种情况下,只有在此类中的数据流将被×××。而基于接口的×××不同,它对于整个接口的所有数据流进行×××
      * adaptive:Enable Traffic Shaping adaptation to BECN
      * average:配置令牌桶值: CIR (bps) [Bc (bits) [Be (bits)]],
send out Bc only per interval
      * fecn-adapt:Enable Traffic Shaping reflection of FECN as BECN
      * fr-voice-adapt:Enable rate adjustment depending on voice presence
      * max-buffers:Set Maximum Buffer Limit
      * peak:configure token bucket: CIR (bps) [Bc (bits) [Be (bits)]],                             send out Bc+Be per interval
* set:允许对分组标记。通过使用set命令可以标记多个字段,包括IP优先权、IP DSCP、MPLS实验位,第2层cos、atm的信元丢弃优先权和Qos组
      * atm-clp:设置ATM的CLP位到1
      * cos:设置IEEE 802.1Q/ISL的cos优先级
      * discard-class:设置Discard
      * dscp:设置ipv4和ipv6的DSCP值
      * fr-de:设置帧中继的DE位为1
      * ip:设置IP值
      * mpls:设置MPLS的values
      * precedence:设置优先权
      * qos-group:设置QoS Group
案例:
         router(config)#access 101 permit tcp host 192.168.1.1 any eq 80
         router(config)#access 102 permit tcp host 192.168.1.1 any eq 21
         router(config)#access 103 permit tcp any any eq 80
         router(config)#access 104 permit tcp any any eq 21
         router(config)#class-map A_HTTP
         router(config-cmap)#match access-group 101
         router(config)#class-map A_FTP
         router(config-cmap)#match acess-group 102
         router(config)#class-map B_HTTP
         router(config-cmap)#match acess-group 103
         router(config)#class-map B_FTP
         router(config-cmap)#match acess-group 104
         router(config)#policy-map A_policy
         router(config-pmap)#class A_HTTP
         router(config-pmap-c)#bandwidth 128
         router(config-pmap)#class A_FTP
         router(config-pmap-c)#bandwidth 128
         router(config-pmap)#class B_HTTP
         router(config-pmap-c)#bandwidth 64
         router(config-pmap)#class B_FTP
         router(config-pmap-c)#bandwidth 32
         router#show policy-map
         ----------------------------------------------------------
         Policy Map A_policy
            Class A_HTTP
                bandwidth 128 (kbps) Max Threshold 64 (packets)
            Class A_FTP
                bandwidth 128 (kbps) Max Threshold 64 (packets)
            Class B_HTTP
                bandwidth 64 (kbps) Max Threshold 64 (packets)
            Class B_FTP
                bandwidth 32 (kbps) Max Threshold 64 (packets)
            Class class-default

4) 应用策略到接口
配置:
service-policy 名称 input|output
案例:
CCIE-LAB
题目要求:Allocate 10Mbps in the Fastethernet 0/0 interface on RackYYR6 for traffic coming from Backbone 2, Your solution should apply to all possible traffic from Backbone 2(CBWFD)
配置:
R6
ip cef
class-map match-all fromBB2
       match input-interface f0/1.1
policy-map CBWFQ
      class fromBB2
        bandwidth 10000
interface f0/0
      service-policy output CBWFQ
案例:
CCIE-LAB
题目要求:
在R1 上作配置,使从VLAN_A 的user 进入的www traffic 的 ip pre 为3,其他所有traffic 是ip pre 1。要求不能使用CAR和PBR。
VLAN_A    VLAN 11     YY.YY.15.0/24
配置:
R1
conf t
ip cef
access 101 permit tcp 1.1.15.0 0.0.0.255 any eq 80
class-map YY
   match access-group 101
policy-map YY
   class yy
     set ip precedence 3
   class class-default
     set ip precedence 1
interface f0/0
   service-policy input YY
案例:
CCIE-LAB
题目要求:
On R6 从vlanC来的路由分类Class1:match  cs5  size200-1500
                            Class2:match  cs5  size=500
第一个class要求:当dscp为cs5及包的大小在200-1000之间时,ip precedence为immediate;第二个class要求:当dscp为某值且包的大小为500时,ip precedence为priority
VLAN C是VLAN 56 连接R6的E0口  yy.yy.56.0/24,这里要注意匹配的顺序,因为500在200-1500范围内,所以要注意区分
配置:
R6
   config term
   ip cef
   access 10 permit 1.1.56.0 0.0.0.255      //区分从vlan c来的数据
   class-map SIZE500                           //针对dscp和包大小分类
      match access-group 10
match dscp cs5
match packet length min 200 max 1500
   class-map SIZE1500                         //针对dscp和包大小分类
match access-group 10
match dscp cs5
match packet length min 500 max 500
   policy-map CCIE                            //制定相应的策略
class SIZE500                            //注意要先匹配包大小为500的
   set ip precedence 1
class SIZE1500
   set ip precedence 2
   interface e0 
service-policy input CCIE            //应用到接口
show policy-map interface e0             //查看和验证配置结果