QOS
目录
概述
QOS 模型
QOS 组件 MQC(Modular QoS Command-Line)
令牌桶算法(token bucket algorithm)
单速双色
单速三色
双速三色
分类和标记(Classification and Marking)
流(Flow)
管制和整形(Policing and Shaping)
配置管制
配置整形
接口直接开启整形
Committed Access Rate (CAR)承诺访问速率
配置基于接口的 CAR
配置基于 ACL 的 CAR
配置基于 DSCP 的 CAR
配置基于 MAC 地址的 CAR
拥塞管理(Congestion management)
FIFO Queuing (First In First Out Queuing)
Priority Queuing (PQ)
Custom Queuing (CQ)
Weighted Fair Queuing (WFQ)
Class-based WFQ (CBWFQ)
Low Latency Queuing(LLQ)
IP RTP (Real-Time Transport Protocol)
拥塞避免(Congestion avoidance)
Tail Drop
Weighted Random Early Detection (WRED)
WRED—Explicit Congestion Notification
Frame Relay Discard Dligible (DE)
链路优化(Link Efficiency Mechanisms)
Frame Relay Fragmentation(FRF)
Header Compression
Multilink PPP (MLP)
AutoQoS — VoIP
概述
配置 AutoQoS — VoIP
RSVP
概述
配置 RSVP
交换机 QOS (Switching QOS)
概述
前提配置
配置进口队列
配置出口队列
概述
在普通的网络中,当用户将数据发向网络设备后,网络设备都是尽最大努力传
输数据,直到超出自己的最大负荷为止。当设备达到最大负荷后,如果还有用户发
来的数据,那么这些数据将因为网络设备不能提供服务而被丢弃。这样的提供最大
化服务的网络被称为尽力而为服务的网络。在尽力而为服务的网络中,所有的数据
都被看成是同等重要的,用户的数据有时无法得到保证,所以在某些时候,必须让
网络通过放弃传输相对不重要的数据来保证用户的重要数据和传输。因此,就需要
在网络中实施 Quality of Service,即 QOS。实施了 QOS 的网络中,可以为特定数据
保证带宽,同时也可以限制宽带,可以避免网络拥塞和管理拥塞,甚至可以为数据
设置不同的优先级。
QOS 模型
在网络中实施 QOS 时,有三种模型可供参考,这三种模型并不是 QOS 技术,
而是用来指导在各种需求下,如何实施 QOS,分为以下三种模型:
Best-Effort Service 尽力而为服务模型
Integrated Service 综合服务模型,简称 Intserv
Differentiated Service 区分服务模型,简称 Diffserv
Best-Effort Service(尽力而为服务模型)
在尽力而为服务模型中,所有网络设备全部都是尽自己最大努力传输数据,所
有数据尽管传,不需要得到许可,有多少传多少,任何数据都不能得到保证,延迟
也无法预计,所以尽力而为服务模型,其实并没有实施任何 QOS,默认的网络都工
作在这种模型下。
Integrated Service(综合服务模型)
在实施了综合服务模型 QOS 的网络中,应用程序在发送数据之前,必须先向
网络申请带宽,例如一个视频程序在正常通信下需要100K 的带宽,那么视频程序在
连接之前,必须向网络申请自己需要100K 的带宽,当网络同意后,视频便可连接,
并且将保证能够得到100K 的带宽,而不会有任何延迟。但是如果某些程序在连接之
前没有向网络申请带宽,那么它的流量只能得到尽力而为的服务。由此可见,当某
些程序流量需要绝对保证带宽时,可以在综合服务模型的网络中通过申请带宽来保
证自己的流量,在申请带宽时,所用到的协议为 Resource Reservation Protocol
(RSVP)。在综合服务模型中,重要的数据可以通过申请带宽而得到保证,但是在传
送之前必须申请,也需要耗费额外一些时间,在现有的网络中,综合服务模型的 QOS
通常并不被采用。
Differentiated Service(区分服务模型)
在实施了区分服务模型 QOS 的网络中,网络将根据不同数据提供不同服务,
因此,所有数据都被分成不同的类别,或者设置为不同的优先级,在网络发生拥塞
时,网络总是先保证传输高优先级的数据,从而放弃传输低优先级的数据,但是在
网络没有拥塞时,所有数据全部照常传输。在实施区分服务模型的 QOS,就必须先
将数据分成不同的类别,或设置成不同的优先级。现在的网络中,实施 QOS 时通
常采用区分服务模型。
在网络中,数据从源到目的地,所有的网络设备,包括路由器、交换机、防火
墙等,每一台单一的设备对数据包做出的区分服务 QOS 行为称为 per-hop behavior.
(PHB 每跳行为),如果数据包从源到目的路径中所有设备都为某类数据执行相同
的区分服务行为,即都执行相同的 QOS 策略,那么这样的 QOS 就被称为 end-to-end
QoS(端到端 QOS)。
每一台单一的设备对数据包做出的区分服务 QOS 行为称为 per-hop behavior.(PHB
每跳行为),如果数据包从源到目的路径中所有设备都为某类数据执行相同的区分
服务行为,那么就被称为 end-to-end QoS(端到端 QOS)
注:本篇将着重介绍区分服务模型 QOS,之后再介绍综合服务模型 QOS。
QOS 组件
在实施区分服务模型 QOS 时,需要考虑四个 QOS 组件,这些组件相互组合,
可以设计出完整的 QOS 策略,而每个组件中,都会有相应的 QOS 技术提供支持,
以下是 QOS 四个组件:
分类和标记(classification and marking)
管制和整形(Policing and Shaping)
拥塞管理(Congestion management)
拥塞避免(Congestion avoidance)
分类和标记
要提供区分服务的 QOS,就必须先将数据分为不同的类别,或者将数据设置为
不同的优先级。将数据分为不同的类别,称为分类(classification),分类并不修改原
来的数据包。将数据设置为不同的优先级称为标记(marking),而标记会修改原来的
数据包。分类和标记是实施 QOS 的前提,也是基础。
管制和整形
在实施 QOS 策略时,可以将用户的数据限制在特定的带宽,当用户的流量超
过额定带宽时,超过的带宽将不能被传输,只能采取其它方式来处理,如果处理方
式为丢弃超出带宽,那么这种行为称为管制(Policing),如果是将超出的带宽缓存在
内存中,等到下一秒再传递,这种行为称为整形(Shaping)。
拥塞管理
当网络发生拥塞后,数据还是要被传递的,正因为接收到的数据远多于自
身的传输能力,所以数据被传输时就出现了先后顺序,而依照什么样的方式来传数
据,就需要队列的指导,QOS 中的队列定义了数据包被传输的先后顺序。
拥塞避免
当网络发生拥塞后,超出的流量将采取其它方式处理,如果处理方式为管制,
那么数据包就会被丢弃,通常情况下,网络设备默认丢弃后到的数据包而传输先到
的数据包,这样的丢弃方式称为尾丢弃,但也可以让网络设备在发生拥塞时,先丢
低优先级的数据包而传输高优先级的数据包。
并不是所有的 QOS 技术都适合所有网络,边缘路由器和核心路由器操作是不
一样的。
比如语音数据,边缘和核心要同时考虑。而通常情况是:
边缘路由器执行:数据包分类和标记
核心路由器执行:拥塞管理,拥塞避免
后面将详细介绍 QOS 四个组件中的各个工具。
MQC(Modular QoS Command-Line)
MQC 就是模块化 QOS 命令行,是配置 QOS 处理数据的一种方式。MQC 可以
配置对特定的数据采取特定的动作,步骤为三步:
定义流量
设置策略
应用策略
定义流量
在使用 MQC 时,只能在命令行下使用,定义流量通过创建 class-map 来匹配特定的
数据。
例:
匹配源主机10.1.1.1发出的数据
1创建 ACL 匹配主机10.1.1.1发出的数据
Router(config)#access-list 1 permit 10.1.1.1 0.0.0.0
2 创建 class-map,调用 ACL 的数据
Router(config)# class-map match-all ccie
Router(config-cmap)#match access-group 1
说明:class-map 中可以匹配多个数据,当存在多条匹配时,是不是所有条件都需要
满足,则靠创建 class-map 时的关键字来判断,关键字 match-all 表示所有条件都要
同时满足,默认为 match-all,如果关键字为 match-any,则任一条满足即可。
注:名为 class-default 的 class-map,表示匹配所有数据。
设置策略
当匹配到特定的数据之后,就需要对其设置相应的策略,通过创建 policy-map,然
后调用 class-map 匹配到的数据,从而设置相应的策略或动作。
例:
对名为 ccie 的 class-map 所匹配到的数据全部丢弃
Router(config)#policy-map cisco
Router(config-pmap)#class ccie
Router(config-pmap-c)#drop
说明:一个 policy-map 里面可以调用多个 class-map,如果调用 class-default,那么表
示之前没有匹配到的流量,全部都会被 class-default 所匹配。
应用策略
当策略设置完毕之后,就需要应用到接口上。
例:
将 policy-map 应用到接口 F0/0出方向上
Router(config)#interface f0/0
Router(config-if)#service-policy output cisco
多动作 MQC
在配置 MQC 时,可以对匹配到的流量做出多个处理动作
例:
将 class-map ccie 中超出额定带宽的流量设置 IP 优先级为4DE 为1,然后再传输
Router(config)#policy-map cisco
Router(config-pmap)#class ccie
Router(config-pmap-c)#police cir percent 10 bc 100 ms
Router(config-pmap-c-police)#conform-action transmit
Router(config-pmap-c-police)#exceed-action set-prec-transmit 4
Router(config-pmap-c-police)#exceed-action set-frde-transmit
说明:当 CIR 设置为百分比时,Bc 则为时间,单位 ms。
令牌桶算法(token bucket algorithm)
在实施 QOS 策略时,可以将用户的数据限制在特定的带宽,当用户的流量
超过额定带宽时,超过的带宽将采取其它方式来处理。要衡量流量是否超过额定的
带宽,网络设备并不是采用单纯的数字加减法来决定的,也就是说,比如带宽为
100K,而用户发来的流量为110K,网络设备并不是靠110K 减去100K 等于10K,就
认为用户超过流量10K。网络设备
衡量流量是否超过额定带宽,需要使用令牌桶算法来计算。下面详细介绍令牌桶算
法机制:
当网络设备衡量流量是否超过额定带宽时,需要查看令牌桶,而令牌桶中
会放置一定数量的令牌,一个令牌允许接口发送或接收1bit 数据(有时是1 Byty 数
据),当接口通过1bit 数据后,同时也要从桶中移除一个令牌。当桶里没有令牌的时
候,任何流量都被视为超过额定带宽,只有当桶中有令牌时,数据才可以通过接口。
令牌桶中的令牌不仅仅可以被移除,同样也可以往里添加,所以为了保证接口随时
有数据通过,就必须不停地往桶里加令牌,由此可见,往桶里加令牌的速度,就决
定了数据通过接口的速度。因此,我们通过控制往令牌桶里加令牌的速度从而控制
用户流量的带宽。而设置的这个用户传输数据的速率被称为承诺信息速率(CIR),
通常以秒为单位。比如我们设置用户的带宽为1000 bit 每秒,只要保证每秒钟往桶
里添加1000个令牌即可。
例:
将 CIR 设置为8000 bit/s,那么就必须每秒将8000个令牌放入桶中,当接口
有数据通过时,就从桶中移除相应的令牌,每通过1 bit,就从桶中移除1个令牌。当
桶里没有令牌的时候,任何流量都被视为超出额定带宽,而超出的流量就要采取额
外动作。
每秒钟往桶里加的令牌就决定了用户流量的速率,这个速率就是 CIR,但是
每秒钟需要往桶里加的令牌总数,并不是一次性加完的,一次性加进的令牌数量被
称为 Burst size(Bc),如果 Bc 只是 CIR 的一半,那么很明显每秒钟就需要往桶里
加两次令牌,每次加的数量总是 Bc 的数量。
还有就是加令牌的时间,Time interval(Tc),Tc 表示多久该往桶里加一次
令牌,而这个时间并不能手工设置,因为这个时间可以靠 CIR 和 Bc 的关系计算得
到, Bc/ CIR= Tc。
例:
如果 CIR 是8000,Bc 是4000,那就是每秒加两次,Tc 就是4000/8000=0.5,
也就是0.5秒,即500 ms。
如果 Bc 设为2000,那 Tc 就是2000/8000=0.25, 也就是250 ms。