mls qos dscp dscp-value // mls qos cos cos-value //
mls qos ip precedence ip-precedence-value //
在映射表中标记:
即分类中定义的方式,在策略映射表中标记。
用路由策略标记:
(config)# route-map mark 10 //创建路由策略
(config-route-map)# match ip address 99 //设置匹配数据
(config-route-map)# set ip precedence 5 //设置匹配数据的IP优先级
(config) interface Ethernet 0 //进入接口
(config-if) ip policy route-map mark //把策略应用于接口
(config)access-list 99 permit host 10.1.4.1 //定义匹配数据的访问控制列表
3、策略和整型
(1)概念:
整型和策略都是控制通信流通过路由或交换机等网络设备时传输的速度。使用分类来区分通信流。
整型是测量通信流的频率并缓存超额通信流的传输,确保通信速率不超过指定值,待空闲时再传输超额数据流
策略是直接丢弃超额的数据流,不缓存。
(2)解决的问题:
解决链路两边接口速率不匹配
对报文流量进行限制,对超出流量约定的报文进行缓冲 流量整形可能会增 加延迟
3.1策略
(1)令牌桶算法:
令牌桶按用户设定的速度向桶中放置令牌(承诺速率)。且令牌桶有用户设定的容量,当桶中充满令牌时,令牌量将不再增加(令牌量是设限的,固定的)。
当令牌桶中没有令牌时,报文不能被发送,只有桶中生成新的令牌时,报文才可发送。这可以限制报文的流量只能等于小于令牌生成的速度达到限制流量的目的。
当令牌桶中有足够的令牌处理报文时,被认为conform。即报文已进入令牌桶,而令牌桶还没有充满。
当令牌桶中的令牌不够时,认为是exceed。像公交车上,只有三个座位,而上来五个人,则这五个人都不能上车,令牌桶中令牌不减少。
(2)几个参数
CIR:承诺速率:即平均速率。实际的策略速率。
BC:常规突发量:超过令牌桶流量,仍能发出去的流量大小。即超过承诺速率,仍能发送出去的流量大小。
BE:扩展突发量:支持BE的一般是:be=bc*2。一般标准的是be=bc,即不支持扩展突发量。
TC:时间间隔 TC=BC/CIR
(3)三种类型的策略
单一策略:应用于单个接口的策略。将指定的策略用于接口
聚合策略:将策略应用于一组接口。如将一个限量流量不超过75MBIT/S的策略应用于一组接口时,这些接口的总流量不超过75M。是总流量。
微流策略:针对单个流的策略。将策略参数应用于策略映射表中的每种类别。
(4)微流策略,即应用于policy-map中的方法:
policy {cir bc be} {conform-action action} {exceed-action action} {violate-altion action}
conform-action:令牌足够时的处理方式
exceed-action:当令牌不足够时对数据流的处理方式。超过BC之后的处理方式 violate-altion:对违规数据流的处理方式。超过BE流量后的处理方式
(5)单一策略,即应用于接口的配置方法
rate-limit {input|output} {CIR Bc Be } {conform-action action} {exceed-action action}
(6)聚合策略配置方法
mls qos aggregate-policer policername {cir bc be } {conform-action action} {exceed-action action} {violate-altion action} 再把此聚合策略应用于接口
3.2 整型(GTS)
(1)基本整型: traffic-shape rate CIR BC BE buffer-limit
(2)ACL整型: traffic-shape group access-list CIR BC BE
(3)基于策略整型:
shape {average|peak} cir bc be //average:指的是平均值,peak指的是峰值 shape max-buffers {number-of-buffers} //定义缓冲区上限,默认值为1000 把策略应用于接口 4、队列
任何分类,必须有队列才有效。不然就无效。即哪个数据或哪个优先级进入哪个队列。
队列的种类:先进先出队列;WFQ加权公平队列;PQ优先级队列;CQ自定义队列;CBWFQ基于类别的加权公平队列;LLQ低延迟队列;WRR加权轮询队列;
(1)FIFO先进先出队列
不对报文进行分类,当报文进入接口的速度大于接口能发送的速度时,报文按照先后顺序进入队列传输。除带宽小于2.048Mbps的串行接口以外(如E1接口或更小带宽的接口默认队列方式是WFQ)的接口,默认队列方式都是FIFO。
因是默认的,所以不用进行配置。如果想在带宽小于2.048Mbps的接口中用FIFO队列的话:
(config-if)#no fair-queue //禁用WFQ,即可变成FIFO队列。
(2)WFQ加权公平队列
带小于2.048Mbps的接口,都以WFQ为默认队列方式。
A:自动根据数据报文的源、目的地、端口号、协议、优先级把数据划分到不同的队列,该过程称为散列,用HASH算法完成。
B:根据优先级自动划分带宽。算法是:32768/(ip优先级+1)=权重。 再根据所有数据流队列的总权重,按比例划分带宽。
C:循环发送队列数据。保证高优先级比低优先级先传;小数据包比大数据包先传。
CQ与WFQ队列的区别:
CQ要手工分配比例及队列所属,而WFQ是自动划分队列及带宽。
配置WFQ:
(CONFIG-IF)#fair-queue //启用WFQ
(CONFIG-IF)#fair-queue {1-4096} //设定每个队列中允许数据包的数量
(3)PQ优先级队列
A:根据IP报文的优先级和DSCP等条件把数据报最多划分到4个个等级(高\\中\\正常\\低)的队列中.
B:PQ优先级队列先传完高等级队列中的所有数据后才会传次低等级的数据。如想传低等级队列中的数据,只有等到高等级队列、中等级队列、正常等级队列中的所有数据都传完,才轮到低等级队列中的数据的传输。当带宽较低,而高等级队列中的数据较多时,低等级队列中的数据可能永远得不到传送。
配置PQ:
(3.1)分配队列: (3.1.1):基于协议:
(config)#priority-list {listnumber} protocol {protocol-name [size|acl|tcp port|udp port|fragment]} {high|medium|normal|low} //定义队列号及队列优先级
(3.1.2) :基于默认优先级队列:
(config)#priority-list {listnumber} default {high|medium|normal|low} //定义默认的优先级队列,未分类的流量默认被分配到该队列,优先级默认为normal
(3.1.3):基于接口:
(config)#priority-list {listnumber} interface {high|medium|normal|low} //基于进站接口进行队列分配
(3.2)定义每个队列中数据包的最大个数:
(config)#priority-list {listnumber} {high_limit|medium_limit|normal_limit|low_limit} //定义每个队列最多的数据包个数,默认为 20 40 60 80 ,可自行更改
即每个队列最多只能有多少个数据包
(3.3)把定义的优先级列表应用于接口上:
(config-if)#priority-group {listnumber}
实例:
(4)CQ自定义队列
报文最多可分成16个队列的流量分类。实际上队列号是0--16,共17个队列。 0号队列是超级优先队列,只有0号队列中的数据传输完才传输其他16个队列中的数据。以保证高优先级业务数据。
1-16号队列按用户给其分配的带宽比例以循环的方式传送。不像PQ队列,高一级的传完才能传一下个等级的数据。
默认每个队列一次处理1500字节数据,依次传输。可手工指定一个队列一次处理的字节数,以改变带宽利用。
也可按比例分配各队列的带宽。这些都是在拥塞的情况下,在没有拥塞的情况下,其他队列可以使用剩余的带宽。 CQ适用于WAN接口。
(4.1) 分配队列:
(4.1.1)基于协议分配:
(config)#queue-list {listnumber} protocol {protocol-name [size|acl|tcp port|udp port|fragment]} {queue-number} //按协议进行队列分配
(4.1.2)基于接口:
(config)#queue-list {listnumber} interface {queue-number} //基于进站接口进行队列分配
(4.1.3)定义默认队列:
(config)#queue-list {listnumber} default {queue-number} //定义默熟认队列
(4.2)给各队列划分带宽:
(config)#queue-list {listnumber} queue {queue-number} byte-count {size}
(4.3)给各队列设定最大数据包数:
(config)#queue-list {listnumber} queue {queue-number} limit {limit-number}

