一、QoS服务模型
QoS在网络中的服务模型分为三种:
1.Best-Effort Service :尽力而为的服务模型
一种单一的、最简单的服务模型,应用程序可以任何时候发送任意数量的报文;
网络尽最大可能发送这些报文,但是对于延时、可靠性不做保证;
是现在互联网中默认的服务模型,遵循先进先出的转发规则。
2.Integrated Service:综合服务模型,简称IntServ
3.Differentiated Service:区分服务模型,简称DiffServ
可以满足不同的QoS需求;
不需要预留资源,网络不需要为每个端到端的流量进行维护;
可以使用不同的方法来指定报文的QoS,如报文的优先级、MAC地址、源IP地址、目的IP地址等。
二、流量管理
1.流分类
是进行区别服务的基础,可以使用报文的优先级来识别,也可以使用源地址、目的地址、MAC地址、协议或端口等信息来识别不同的流量。
2流量监控.
三个参数:
承诺平均速率(CIR):允许流量通过的平均速率。
突发量(Committed Burst size,Bc):允许突发产生流量的大小。
额外突发量(Excess Burst size,Be):表示流量超出突发量后还可以转发的流量大小。
流量策略:
转发:对于合规流量和违规流量都可以设置策略为转发。
丢弃:对于合规流量和违规流量都可以设置策略为丢弃。
标记:标记报文的优先级。例如:将合规流量的报文的IP优先级设定为5,将违规流量报文的IP优先级设定为0。
进入下一级流量策略:流量策略可以多级处理,可以将流量提交给下一级流量策略来进行控制。
主要的流量管理技术是流量整形(GTS)和承诺访问速率(CAR)。
(1)流量整形(Generic Traffic Shaping,GTS)
是一种调节输出速率的措施,使用缓冲区使流量均匀地进行转发;
不需要进行整形的流量直接通过设备转发,需要进行整形的流量分为合规流量和违规流量;
当流量速率超过设定时,设备将多余的流量缓存到GTS队列,然后按照配置的CIR,将报文均匀地转发出去,保证网络流量平稳。
缓存导致数据转发增加时延,但是减少了丢包率。
基本流量整形配置
格式:router(config-if)# traffic-shape rate CIR [ Bc [Be]] [buffer-limit]
CIR必须配置,buffer-limit表示缓存区的使用限制,默认为1000(报文数)。
基于ACL的流量整形配置
首先,配置ACL定义需要整形的流量
router(config)#access-list 100 permit udp any any
然后,进入接口进行流量整形
格式:router(config-if)#traffic-sharp group access-group CIR [Bc [Be]]
查看网络整形配置信息
格式:
router#show traffic-sharp 接口信息 //查看GTS配置信息
router#show traffic-sharp statistics 接口信息 //查看GTS流量统计信息
router#show traffic-sharp queue //查看GTS队列信息
(2)承诺访问速率(Committed Access Rate,CAR)
是一种流量控制策略;
使用三个参数CIR、Bc、Be,其中Bc+Be的大小是允许突发的最大流量的大小;
CAR技术限制流量速率时,违规流量会直接丢弃而不缓存,保证了数据的时延,但是增加了丢包率。
基本承诺访问速率配置
格式:router(config-if)# rate-limit {input | output} CIR burst-normal burst-max conform-action action exceed-action action
各参数的含义:
input/output:针对端口入/出方向的流量。
CIR burst-normal burst-max:burst-normal表示普通突发量,burst-max表示最大突发量。最大突发量包含普通突发量。
CIR:范围8000~2000000000,单位b/s
burst-normal:范围1000~512000000,单位为字节
burst-max:范围2000~1024000000,单位为字节
conform-action:表示对合规流量进行的操作
exceed-action:表示对违规流量进行的操作
action:表示对相应流量进行的操作,主要有:
drop:丢弃数据包
transmit:转发数据包
设置优先级,例如:
router(config-if)# rate-limit input 8000000 2000 4000 conform-action set-prec-transmit 5 exceed-acction set-prec-transmit 0
扩展的承诺访问速率
首先,配置ACL,定义需要整形的流量
然后,在接口模式进行流量整形
格式:router(config-if)# rate-limit {input | output} access-group access-group CIR burst-normal burst-max conform-action action exceed-action action
查看CAR配置信息
格式:router# show interfaces 接口信息 rate-limit
(3)承诺访问速率与流量整形的第二种配置
这种配置在端口应用一种策略实施多种流量控制,并且这种策略可以和拥塞管理技术中的CBWFQ相结合。配置主要分为三个步骤:
定义匹配策略
首先,定义class-map
格式:router(config)# class-map [match-all | match-any] class-map-name
各参数含义:
class-map-name:为创建的class-map的名称
match-all:表示匹配class-map定义的所有条件,是默认配置。
match-any:表示至少匹配class-map定义的一个条件。
然后,进入class-map模式,配置匹配的条件
格式:router(config-cmap)# match access-group access-group //匹配ACL
router(config-cmap)# match protocol protocol //匹配协议
router(config-cmap)# math input-interface 接口信息 //匹配端口进入的流量
router(config-cmap)# match any //匹配任意数据包
router(config-cmap)# match {source-address | destination-address} mac mac-address
//匹配源或目的的MAC地址
定义流量的控制策略
首先,定义policy-map,调用class-map
格式:router(config)# policy-map police-map-name
router(config-pmap)# class class-map-name
然后,调用的class-map中配置策略,配置的策略包括流量、GTS、CAR等。
·标记流量
router(config-pmap-c)# set ip dscp dscp
router(config-pmap-c)# set ip precedence precedence
·配置CAR
router(config-pmap-c)#police CIR burst-normal burst-max conform-action action exceed-action action violate-action action
注意:violate-action:对大于Bc+Be的流量采取的动作,默认丢弃。
·配置GTS
router(config-pmap-c)# shape average CIR [Bc [Be]]
注意:average表示平均值,配置万average形式的GTS后,整形后的速率为CIR
·配置缓冲上线
router(config-pmap-c)# shape max-buffers buffer-limit
注意:buffer-limit的范围为1~4096,默认为1000,为单位报文个数。
在接口上应用策略
格式:router(config-if)# service-policy {input | output} policy-map-name
注意:GTS只能应用在output方向,CAR可以应用在两个方向。
查看配置
格式:router# show policy-map [policy-map-name] //查看策略配置
router# show policy-map interface [接口信息] //查看端口策略应用及流量信息
三、拥塞管理和拥塞避免
1.拥塞管理
拥塞管理一般采用队列调度技术,通过队列调度技术的算法使得不同的数据流量拥有不同的优先级和贷款信息等,从而确定不同的数据流被转发的顺序和带宽。
拥塞管理技术有五种,这里介绍WFQ(加权公平队列)和CBWFQ(基于类的加权公平队列)。
WFQ
WRQ按照流的优先级来分配出口的带宽,优先级越小得到的带宽越小,优先级越大得到的带宽越大。
每个流所占用的带宽比例为:
(自身流优先级加1)/(所有流优先级分别加1的和)
CBWFQ
CBWFQ扩展了WFQ的功能,CBWFQ可以根据数据的优先级、源IP地址和目标IP地址、协议等进行分类,并让不同的报文进入不同的队列。
LLQ(低延时队列)是一个优先类队列,首先转发次队列中的数据(可以设定一个最大带宽的参数,来限制在网络发生拥塞时优先类队列的转发速率。当网络发生拥塞时,优先类队列中超过配置的流量将被丢弃。)
BQ(Bandwidth Queuing)采用WFQ方式进行调度。
CBWFQ的配置
(1)定义匹配策略,与GTS、CAR的第二种配置步骤相同
(2)配置CBWFQ策略
首先,定义policy-map并调用class-map,在每一个class-map中设置策略
格式:router(config-pmap-c)# bandwidth {bandwidth-kbps | percent percentage}
各参数的含义:
bandwidth:保证最小宽带
bandwidth-kbps:最小宽带的速率,默认情况不不能超过接口带宽的75%,可以通过接口模式下的max-reserved-bandwidth命令进行修改。
percent percentage:最小带宽占端口的百分比
然后,配置队列中数据包的个数,范围是1~4096
格式:router(config-pmap-c)# queue-limit packets
如果,要配置默认类,命令是
格式:router(config-pmap)# class class-default
router(config-pmap-c)#fair-queue //启用公平队列
如果,要配置LLQ的最大宽带,命令是
格式:router(config-pmap-c)# priority {bandwidth-kbps | percent percentage}
注意:priority表示LLQ的最大宽带
(3)在端口实施策略。与GTS、CAR的第二种配置相同,但是需要注意的是CBWFQ只能配置在端口的output方向。
2.拥塞避免
(1)尾丢弃
传统的丢包策略,即当队列达到最大长度后,将所有后续来到的报文全部丢弃
使用queue-limit命令
(2)WRED
为了避免出现尾丢弃的现象,随机预检测(RED)为每个队列设定两个值,分别为低阈值和高阈值,采用如下算法:
·小于低阈值时,不进行丢弃
·大于高阈值时,完全丢弃报文
·在低阈值和高阈值之间时,WRED开始进行随机丢弃报文。队列越长,丢弃的概论越高。
可以直接在接口配置,也可以通过policy-map配置
WRED配置
(1)在接口配置
基于DSCP的配置
Router(config-if)#random-detect dscp-based
Router(config-if)#random-detect dscp dscp {min max } [mark]
基于IP优先级的配置
Router(config-if)#random-detect
Router(config-if)#random-detect precedence precedence {min max } [mark]
(2)通过policy-map配置WRED
在CBWFQ中配置WRED命令如下:
Router(config-pmap-c)#random-detect
Router(config-pmap-c)#random-detect precedence precedence {min max } [mark]
(3)查看
查看WRED信息
Router#show queueing random-detect
查看端口队列信息
Router#show queue [ interface-type interface-number ]