QOS
一QOS概述
(一)QOS的作用:解决特定数据的延迟、抖动、丢包问题。
(二)QOS的两种体系:
1、集成服务:给某种特殊需保证的数据划出特定的带宽。其他数据无法占用这个带宽。像呼叫电路一样,呼能字一条电路才开始传输。RSVP带宽预留协议用在 这个服务中。
2、区分服务:(diffserv)又称软QOS
(1)用二层COS或三层TOS、dscp区分数据流。DSCP是后来的标准。
(2)以类别为基础,一些类别的通信流优于其他类别的通信流得到处理。先将通信流分类,然后将它们加入到效率不同的队列中。
(3)Diffserv 的应用在发送数据前不显示地通知网络设备。
二、区分服务
(一)cos tos dscp的概念及区别:
1、COS是在第二层ISL或802.1Q数据帧中的ISL或802。1Q的报头中的3位用于COS,即优先标识。3bit,0--7个级别。
2、TOS是在第三层IP数据包中的8位TOS数据位,以来标识优先级。这8位中前3位表示优先级,后4位表示服务类型(分别为:最小延迟、最大吞吐量、 最高可靠性、最小费用。只能其中一位为1,即生效。如果全为0就表示一般服务)。最后一位一般不用,置0
3、DSCP也是三层IP中的8位TOS字段表示优先级。不同的是用了前6位表示优先级,可设0--63,共64个等级。(把前6位中的前3位设为优先 级,后3位设为0,就可以实现DSCP和TOS互相映射兼容)。 最后两位为早期拥塞通知。
因为COS二层标记中也是3位用于优先级,所以也可以把COS和TOS和DSCP中的优先级映射。
(二)保证转发和快速转发
dscp用8位TOS字段中的前6位表示优先级,其中前6位中的最后一位为0(xxxxx0),为IANA所管理的标准保留。 最后两位为11(xxxx11),为实验性或本地使用保留。 最后两位为01(xxxx01),为实验性或本地或将来扩展保留。
主要讲第 一种,IANA所管理的标准保留。
1、AF:保证转发:用DSCP值来定义类别。用6位优先级的前3位定义4种等优先等级,用4、5两位 表示各类中的三种丢弃概率。最后一位始终为0。
例: DSCP值的前六位为: 001 01 0 ,前三位001是优先级类为1, 4、5两位的丢弃概率为01,即表示低丢弃率。DSCP值换成十进制为10。
2、EF:快速转发:通过快速转发EF PHB提供区分服务所定义的最高级别的服务质量。 DSCP值为: 101110, 换算为十进制为46。 这种服务一般提代给需要低丢弃率,低延迟,低抖动,带宽有保障的高保障服务。如点到点连接的端点,VOIP通信流等。
(三) 区分服务的基本过程:
入站数据包---> 分类--->标记--->流量整型控制--->决定把某类数据包加入哪个传输队列--->加入某个队列--->再基于队列 做拥塞避免--->出站
边缘路由器对入站数据包根据各种方法进行分类。对数据包进行重新标记。并对分类的数据包进行流量和整型控制,以免超过入站流量限制,并对超过流量的数据包 进行多种方式处理,可以重新标记。然后送到不同的队列中,不同的队列带宽或优先级不同,以进行拥塞管理,然后基于不同的队列做拥塞避免。
(四) 分别讲解QOS各个过程的详解处理方式:
1、分类
分类是通过数据包的特定优先级或DSCP及其他预定的参数来区分数据包。分类决定数据包的内部DSCP值,交换机或路由器根据内部DSCP值进行QOS数 据包的处理。
如果只启用QOS,没有做任何QOS配置,则所有通信流都被归为默认类别。 入站数据包的默认DSCP值为0,不管其原来的DSCP值为多少。
分类的方法:
(1)按接口的的信任模式分类。
(2)接数据包的DSCP、IP优先级或COS分类
(3)基于访问列表的分类
(4)NBAR分类
1.1 按接口的信任模式分类
不信任接口类: 接口接收的所有数据包的DSCP值都为0
信任类: 当接口配为信任时,根据原数据的优先级映射为DSCP内部优先级。即把COS和TOS值映射为内部DSCP值。指定接口接受数据包中的原有DSCP、ip 优先级、COS值。
mls qos trust [dscp|cos|ip-precedence]
mls qos map cos-dscp values //用8个空格隔开的DSCP值对应COS的0--7八个级别
mls qos map ip-prec-dscp dscp-values //用8个空格隔开的DSCP值对应ip优先级的0--7八个级别
例:
#interface fast0/1
#mls qos trust dscp
#mls qos trust cos
#mls qos trust ip-precedence //此接口信任原数据包的ip优先级,即原来的优先级是多少都转换为同级别的内部DSCP值。
#mls qos map cos-dscp 0 8 16 26 34 46 48 56 // 即把原数据包的值的COS值,转换为对应的DSCP内部值。
#mls qos map ip=prec-dscp 0 8 16 24 32 40 48 56 //即把原数据包值的IP优先值,转换为对应的DSCP内部值。
1.2基于NBAR(基于应用)的分类
定义一个分类映射表
在分类映射表子句下定义一个匹配条件。
再定义一个策略映射表并把类别映射表与策略映射表相关联
定义这些匹配数据流的QOS特性,如带宽,COS,ip等
把策略射表应用于接口的入站或出站上
配置接口信任状态。
分步配置的命令:
(1) 定义分类映射表 class map
(config)#class-map [match-any|match-all] classname
match-any :匹配其中一个就可以执行。
match-all:必须全部匹配才可以执行
classname:映射表名
(2) class map 的匹配
(config-cmap)# match access-group {ACL} //基于访问列表的分类
(config-cmap)# match protocol {protocol} //匹配协议,NBAR分类
(config-cmap)# match ip {dscp dscp} //匹配IP DSCP值。
(config-cmap)# match ip {precedence precedence} //匹配IP 优先级
(config-cmap)# match input-interface {interface} //匹配进站接口
(config-cmap)# match destination-address {mac mac-address} //匹配目标MAC地址
(config-cmap)# match dsource-address {mac mac-address} //匹配源MAC地址
(config-cmap)# match qos-group {group ID} //匹配组ID
(config-cmap)# match class-map {map-name} //匹配CLASS MAP ,用于CLASS嵌套
(config-cmap)# match vlan {vlan-id} //匹配VLAN
(3) 设置 policy map (定义策略映射表,并把分类映射表与之关联)
(config)# policy-map {policyname} //定义一个策略映表
(config-pmap)# class {class-map} //把分类列表与之关联
(4)配置优先级和DSCP,即重新标记(在策略映射表下)
(config-pmap-c)#set ip {precedence precedence}
(config-pmap-c)#set ip {dscp dscp}
(config-pmap-c)#set cos {cos}
(config-pmap-c)#set qos-group {GROUP ID}
(config-pmap-c)#bandwidth {kbps}
(config-pmap-c)#priority {kbps} [BC]
(5)将策略应用到接口的出或入口方向
(config-if) service-policy [input|output] policy-name
1.3 按数据包的DSCP\IP优先级或COS分类
1.4 基于访问列表的分类
定义一个分类映射表
在分类映射表子句下用访问控制列表配置匹配条件。(使用ACL ip地址,入站接口指定匹配条件)
再定义一个策略映射表并把类别映射表与策略映射表相关联
定义这些匹配数据流的QOS特性,如带宽,COS,ip等
把策略射表应用于接口的入站或出站上
配置接口信任状态。
1.5用路由策略进行分类
实例1:按访问列表控制分类
#class-map match-all manager //定义一个名为manager的分类映射表
#match access-group 101 //在分类映射表下定义一个访问控制列表,以定义匹配的条件
#policy-map hight //定义一个名为hight的策略映射表
#calss manager //把名叫manager的分类映射表与策略映射表相关联
#trust dscp //匹配的数据信任DSCP
#trust cos //匹配的数据信任COS
#set ip dscp 5 //设置DSCP值
#bandwith 36000 //匹配的数据的带宽为36000
#interface fast 0/1 //进入接口
#service-policy input hight //把hight策略应用于接口的入方向
#mls trust dscp //此接口信任dscp
#access-list 101 permit tcp any 192.168.9.0 0.0.0.255 //定义访问控制列表,以定义匹配的数据流
实例2:按NBAR分类:
#class-map match-all manager //定义一个名为manager的分类映射表
#match protocol ip //匹配IP协议
#policy-map hight //定义一个名为hight的策略映射表
#calss manager //把名叫manager的分类映射表与策略映射表相关联
#set ip dscp 5 //设置DSCP值。
#bandwith 36000 //匹配的数据的带宽为36000
#interface fast 0/1 //进入接口
#service-policy input hight //把hight策略应用于接口的入方向
实例3:路由策略
#route-map test permit 10
2、标记
QOS标记指的是修改入站帧的DSCP,COS,IP precedence ,即把入站的数据流标记为新的内部DSCP值。
直接接口上配置标记:
mls qos dscp dscp-value //
mls qos cos cos-value //
mls qos ip precedence ip-precedence-value //
在映射表中标记:
即分类中定义的方式,在策略映射表中标记。
用路由策略标记:
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}
(4.4)把列表应用于接口:
(config-if)#custom-queue-list {listnumber}
(5)CBWFQ基于类别的加权公平队列
可定制64个队列
可根据各种条件为数据流分类,同一分类占用一个队列。然后再对每个队列设定权重、带宽、传输限制等。
分类时,要指明每个队列的长度,即该队列的最大数据存放量。一个队列超过最大数量限制后,默认将使用尾丢弃的方法把超量的数据丢弃。也可配置为WRED。
当数据不匹配任何类时,会被划分到默认类中。默认类中的数据使作WFQ队列共享带宽。
CBWFQ不支持子接口
CBWFQ可用接口带宽不超过接口的75%,另外25%用于负载控制和路由流量
配置CBWFQ:
(5.1.1)定义数据的分类策略,并设置匹配语句
(config)# class-map [match all |match-any] {map-name} //定义分类映射表
(config-cmap)# match access-group {ACL} //基于访问列表的分类
(config-cmap)# match protocol {protocol} //匹配协议,NBAR分类
(config-cmap)# match ip {dscp dscp} //匹配IP DSCP值。
(config-cmap)# match ip {precedence precedence} //匹配IP 优先级
(config-cmap)# match input-interface {interface} //匹配进站接口
(config-cmap)# match destination-address {mac mac-address} //匹配目标MAC地址
(config-cmap)# match dsource-address {mac mac-address} //匹配源MAC地址
(config-cmap)# match qos-group {group ID} //匹配组ID
(config-cmap)# match class-map {map-name} //匹配CLASS MAP ,用于CLASS嵌套
(config-cmap)# match vlan {vlan-id} //匹配VLAN
(5.1.2)为每类数据定义处理策略。通过policy map来定义。
(config)#policy-map {plicymap-name} //定义一个策略名
(config-pmap)#class[class-map |class-default] // 把分类映射表与策略表相关联。
(config-pmap-c)#bandwidth[kbps| percent percent] //设置策略,即为匹配的队列设置策略。这里是分配带宽。
(config-pmap-c)#queue-limit {packets} //设置每个队列的最大数据包个数。超过的将实现尾丢弃
(config-pmap-c)#random-detect //丢弃方法使用WRED,而不是尾丢弃
(config-pmap-c)#shape xxx //令牌桶参数,即×××流量控制,详见上面的策略与×××
(config-pmap-c)#policy xxx //car限速,即策略流量控制。详见上面的策略与×××
(config-pmap-c)#priority {bandwidth} //优先级,低延迟队列LLQ
(5.1.3)把定义的策略应用于接口
(config-if) server-policy output {policcymap-name}
(config-if)#max-reserved-bandwidth {percent} //设定占用接口的最大带宽,默认是占用75%,这里可更改默认值。
(6)LLQ低延迟队列
低延迟队是一个有较高优先级的队列。仅次于二层协义队列,如CQ中的0号队列。
一个或多个分类的报文可以被设定进LLQ队列中。即LLQ队列中,可以拥有不同分类的报文。
只有LLQ队列中的报文传完,才会传输其他普通队列中的报文。与CQ中的0队列相同。
(7)WRR加权轮询队列
交换机每个队列配置权重值,根据权重值按比例给队列分配带宽。(交换机支持4个队列)
各队列之间进行轮流调度,保证每个队列都得到传递。当然每个队列的数据传递量是按比例分配的。
仅当发生拥塞的时候,才使用WRR来调度队列中的数据包。
HQ-WRR:这个调度算法是加以改进了,即把队列3定义为高优先级队列,只有 队列3中的数据传输完了,其他队列才轮流调度。
配置WRR:
A:进入接口
B:给队列指定出站cos值
(config-if)#wrr-queue cos-map {queue-id} {cos1 cos2........cos8} //COS 有8个值,即将不同的COS值映射到相应的队列中。
例:(config-if)#wrr-queue cos-map 1 2 3
(config-if)#wrr-queue cos-map 3 4 6 //即把COS值为 2和3的数据包放入队列1,把COS值为4和6的数据包放入队列3
C:配置严格优先级队列,交换机默认是队列4
(config-if)#priority-queue out //3550交换机通过此命令,把队列4配为严格优先级
D:配置WRR队列的WRR权重:
(config-if)# wrr-queue bandwidth weight1 weight2 weight3 weight4 //根据权重值来分配队列的带宽比。
E:定义传输队列长度比例,取值1-100%
队列长度即排队列的长度。优先级高的排队短,级别越低,排队就越长
5、拥塞管理
通过监视网络通信流负载,拥塞避免能够预测和避免常见的网络瓶颈点发生拥塞。通过复杂算法来丢弃数据包可避免拥塞。
拥塞避免的种类:尾丢弃;RED随机预检测;WRED加权随机早检测
5.1尾丢弃
(1)即数据包到达交换机或路由器速率超过了路由器、交换机的缓存通信能力时,路由器将丢弃数据包。即路由器没有能力缓和存数据包了,就把超过的数据包全 丢弃,直到有能力有空间储存数据包。
(2)尾丢弃平等对待所有通信流。而不管内部DSCP值的大小。
(3)多个TCP会话并行时,当多个TCP流的总量超过缓存能力时,这些TCP会话将同时进入TCP慢启动。其结果是所有的TCP会话都降低了速度。当缓 存空出时,所有的TCP会话又都传送数据到缓存,又会造成缓存缺失。又进入慢启动,形成锯齿状流量,而不能对单个TCP会话进行管理。
5.2 RED
当输出缓冲器达到配置的阈值时,RED将随机丢弃数据包。随着输出队列中的数据包增多,交换机将随机丢弃数据包来避免拥塞。
仅当输出队列未满时,RED才发挥作用。输出队列填满程度超过RED的阈值后,数据包的丢弃概率将呈线性增加。当输出队列被填满后,RED失效,将使用尾 丢弃方式丢弃数据包。
(config-if)#random-detect //启用随机早期检测
5.3 WRED
WRED与RED的区别是,WRED用ip优先级\DSCP值来区别丢弃策略,可以为不同ip优先级\DSCP值设定不同的队列长度,队列阈值,丢弃概 率。从而对不同优先级的报文提供不同的丢弃特性。
如:DSCP值不超过20的尽力而为的WRED丢弃阈值设为50%,而DSCP值为20--30的报文的阈值设为80%。当队列流满到50%时,路由器将 随机丢弃DSCP值为0--20的数据包。队列填充程度到80% 后,交换机才开始丢弃DSCP为20--30的数据包。
过程:
ip数据包根据DSCP值分类-->通过WRED设定DSCP数据流的阈值-->当达到阈值时,对应的DSCP数据流将随机丢弃数据包 -->当队列充满时用尾丢弃。
(config-if)#random-detect
(config-if)#random-detect [precednce|dscp] [min max mark] //设置丢弃数据包的最小值,最大值和丢弃数据包的轮循间隔。
三、集成服务(RSVP)
1、提供端到端服务质量预留,支持组播、单播的IP流。是发起主机到目的主机单向的。
2、RSVP也定期发送刷新消息维护RSVP状态。如果在一定时间内没收到消息,将删除预留。需要发起者到目的之间的所有路由器都配置有RSVP预留。
3、RSVP用flowspec和filter spec形成一个流描述,称流标准。flowspec定义请求主机的质量要求。filter spec定义主机的数据包分类需求。
4、RSVP有两种流预留的分类:独立预留和共享预留
独立预留只有一个发送者发起流量;共享预留至少一个或多个发送者发起流量。通常这些流不同时操作。
5、发送者分为:显示发送者和通配符发送者。
显示发送者用filter spec定义发送者,它定义单个发送者。
通配符发送者:使用相同的filterspec,相同的质量。
(1)显示发送者对独立预留使用固定过滤器FF。被一个流所有数据包共享。
(2)显示发送者对共享预留使用SE过滤器。来自多个源的组播应用程序使用。
(3)通配符发送者对共享预留使用WF过滤。被多个流共享。对独立预留没有定义
6、端到端:经过的每台路由器都必须满足两个条件才能提供RSVP服务。
(1)是否有足够的资源供请求使用。
(2)请求主机是否有权限申请这个服务
7、RSVP发送者:是发起RSVP预留的主机
RSVP接收者:是指资源被预留的主机
RSVP启用路由器:任何在发送者和接收者之间配置这个RSVP协议的路由器
8、 发送者到接收者预留RSVP的过程:
(1)发送者(主机)发送rsvp path消息描述要发的数据
(2)在到达目的地(接收者)路径中的每一台RSVP路由器读取RSVP消息。存储关于前一跳的IP地址信息,并把自已的地址添加到消息中作为前一跳,并 把消息传到下一跳路由。
(3)接收者收到PATH消息
(4)接收者收到PATH消息后,反向向发送者主机请求预留资源,使用RSVP RESV消息
(5)途径的路由器有资源且有权限则同意RSVP预留,否则就拒绝。
(6)发送者主机从最近的下一跳路由器,即从哪个接收到消息的路由器接收请求,并开始使用预留路径。当发送者发送完数据后,将发出teardown消息。 路由器收到此消息清除RSVP预留。
9、 配置共享RSVP预留
(config-if)#fair-queue //开启RSVP预留的所有路由器的接口都必须配为加权公平队列。WFQ
(COFNIG-IF)#ip rsvp bandwidth {bandwidth} {largest-flower}
bandwidth:设为预留出的接口带宽,不超过总带宽的75%。即总带宽。
largest-flower:设置经过的数据包的最大尺寸,不超过接口每秒可通过流量的75%。即单个RSVP的带宽。
(config)#ip rsvp neighbor {acl} //只接收符合条件的邻居路由器的RSVP请求。
(config-if)#ip rsvp precedence [conform|exceed] {precedence} //配置数据流当遵循前面定义的带宽时和超出带宽时的优先级和为多少。
(config-if)#ip rsvp tos [conform|exceed] {tos_value} //配置数据流遵循定义的带宽和超出带宽时的TOS值。
10、静态预留
(config-if)#ip rsvp reservation {destination-address} {source-address} [ip-protocol-number|tcp|udp] {destination-port} {source-port} {next-hop-address} {interface-name} {interface-namber} [ff|se|wf] [load|rate] {average-bit-rate} {maximum-burst}
destination-address:目标IP地址,即接收者地址
source- address:源地址,即发起者地址
[ip-protocol-number|tcp|udp] :协议号,或者TCP,UDP协议
{destination-port} {source-port} :目标端口,源端口
{next-hop-address} :下一跳地址,如果是接收者发起的预留,则这里就是上一跳地址
[ff|se|wf]:三种过滤器
[load|rate]:load:可控 负荷服务; rate:代表确保速率。
{average-bit-rate}:平均速率
{maximum-burst} :最大突发量
一QOS概述
(一)QOS的作用:解决特定数据的延迟、抖动、丢包问题。
(二)QOS的两种体系:
1、集成服务:给某种特殊需保证的数据划出特定的带宽。其他数据无法占用这个带宽。像呼叫电路一样,呼能字一条电路才开始传输。RSVP带宽预留协议用在 这个服务中。
2、区分服务:(diffserv)又称软QOS
(1)用二层COS或三层TOS、dscp区分数据流。DSCP是后来的标准。
(2)以类别为基础,一些类别的通信流优于其他类别的通信流得到处理。先将通信流分类,然后将它们加入到效率不同的队列中。
(3)Diffserv 的应用在发送数据前不显示地通知网络设备。
二、区分服务
(一)cos tos dscp的概念及区别:
1、COS是在第二层ISL或802.1Q数据帧中的ISL或802。1Q的报头中的3位用于COS,即优先标识。3bit,0--7个级别。
2、TOS是在第三层IP数据包中的8位TOS数据位,以来标识优先级。这8位中前3位表示优先级,后4位表示服务类型(分别为:最小延迟、最大吞吐量、 最高可靠性、最小费用。只能其中一位为1,即生效。如果全为0就表示一般服务)。最后一位一般不用,置0
3、DSCP也是三层IP中的8位TOS字段表示优先级。不同的是用了前6位表示优先级,可设0--63,共64个等级。(把前6位中的前3位设为优先 级,后3位设为0,就可以实现DSCP和TOS互相映射兼容)。 最后两位为早期拥塞通知。
因为COS二层标记中也是3位用于优先级,所以也可以把COS和TOS和DSCP中的优先级映射。
(二)保证转发和快速转发
dscp用8位TOS字段中的前6位表示优先级,其中前6位中的最后一位为0(xxxxx0),为IANA所管理的标准保留。 最后两位为11(xxxx11),为实验性或本地使用保留。 最后两位为01(xxxx01),为实验性或本地或将来扩展保留。
主要讲第 一种,IANA所管理的标准保留。
1、AF:保证转发:用DSCP值来定义类别。用6位优先级的前3位定义4种等优先等级,用4、5两位 表示各类中的三种丢弃概率。最后一位始终为0。
例: DSCP值的前六位为: 001 01 0 ,前三位001是优先级类为1, 4、5两位的丢弃概率为01,即表示低丢弃率。DSCP值换成十进制为10。
2、EF:快速转发:通过快速转发EF PHB提供区分服务所定义的最高级别的服务质量。 DSCP值为: 101110, 换算为十进制为46。 这种服务一般提代给需要低丢弃率,低延迟,低抖动,带宽有保障的高保障服务。如点到点连接的端点,VOIP通信流等。
(三) 区分服务的基本过程:
入站数据包---> 分类--->标记--->流量整型控制--->决定把某类数据包加入哪个传输队列--->加入某个队列--->再基于队列 做拥塞避免--->出站
边缘路由器对入站数据包根据各种方法进行分类。对数据包进行重新标记。并对分类的数据包进行流量和整型控制,以免超过入站流量限制,并对超过流量的数据包 进行多种方式处理,可以重新标记。然后送到不同的队列中,不同的队列带宽或优先级不同,以进行拥塞管理,然后基于不同的队列做拥塞避免。
(四) 分别讲解QOS各个过程的详解处理方式:
1、分类
分类是通过数据包的特定优先级或DSCP及其他预定的参数来区分数据包。分类决定数据包的内部DSCP值,交换机或路由器根据内部DSCP值进行QOS数 据包的处理。
如果只启用QOS,没有做任何QOS配置,则所有通信流都被归为默认类别。 入站数据包的默认DSCP值为0,不管其原来的DSCP值为多少。
分类的方法:
(1)按接口的的信任模式分类。
(2)接数据包的DSCP、IP优先级或COS分类
(3)基于访问列表的分类
(4)NBAR分类
1.1 按接口的信任模式分类
不信任接口类: 接口接收的所有数据包的DSCP值都为0
信任类: 当接口配为信任时,根据原数据的优先级映射为DSCP内部优先级。即把COS和TOS值映射为内部DSCP值。指定接口接受数据包中的原有DSCP、ip 优先级、COS值。
mls qos trust [dscp|cos|ip-precedence]
mls qos map cos-dscp values //用8个空格隔开的DSCP值对应COS的0--7八个级别
mls qos map ip-prec-dscp dscp-values //用8个空格隔开的DSCP值对应ip优先级的0--7八个级别
例:
#interface fast0/1
#mls qos trust dscp
#mls qos trust cos
#mls qos trust ip-precedence //此接口信任原数据包的ip优先级,即原来的优先级是多少都转换为同级别的内部DSCP值。
#mls qos map cos-dscp 0 8 16 26 34 46 48 56 // 即把原数据包的值的COS值,转换为对应的DSCP内部值。
#mls qos map ip=prec-dscp 0 8 16 24 32 40 48 56 //即把原数据包值的IP优先值,转换为对应的DSCP内部值。
1.2基于NBAR(基于应用)的分类
定义一个分类映射表
在分类映射表子句下定义一个匹配条件。
再定义一个策略映射表并把类别映射表与策略映射表相关联
定义这些匹配数据流的QOS特性,如带宽,COS,ip等
把策略射表应用于接口的入站或出站上
配置接口信任状态。
分步配置的命令:
(1) 定义分类映射表 class map
(config)#class-map [match-any|match-all] classname
match-any :匹配其中一个就可以执行。
match-all:必须全部匹配才可以执行
classname:映射表名
(2) class map 的匹配
(config-cmap)# match access-group {ACL} //基于访问列表的分类
(config-cmap)# match protocol {protocol} //匹配协议,NBAR分类
(config-cmap)# match ip {dscp dscp} //匹配IP DSCP值。
(config-cmap)# match ip {precedence precedence} //匹配IP 优先级
(config-cmap)# match input-interface {interface} //匹配进站接口
(config-cmap)# match destination-address {mac mac-address} //匹配目标MAC地址
(config-cmap)# match dsource-address {mac mac-address} //匹配源MAC地址
(config-cmap)# match qos-group {group ID} //匹配组ID
(config-cmap)# match class-map {map-name} //匹配CLASS MAP ,用于CLASS嵌套
(config-cmap)# match vlan {vlan-id} //匹配VLAN
(3) 设置 policy map (定义策略映射表,并把分类映射表与之关联)
(config)# policy-map {policyname} //定义一个策略映表
(config-pmap)# class {class-map} //把分类列表与之关联
(4)配置优先级和DSCP,即重新标记(在策略映射表下)
(config-pmap-c)#set ip {precedence precedence}
(config-pmap-c)#set ip {dscp dscp}
(config-pmap-c)#set cos {cos}
(config-pmap-c)#set qos-group {GROUP ID}
(config-pmap-c)#bandwidth {kbps}
(config-pmap-c)#priority {kbps} [BC]
(5)将策略应用到接口的出或入口方向
(config-if) service-policy [input|output] policy-name
1.3 按数据包的DSCP\IP优先级或COS分类
1.4 基于访问列表的分类
定义一个分类映射表
在分类映射表子句下用访问控制列表配置匹配条件。(使用ACL ip地址,入站接口指定匹配条件)
再定义一个策略映射表并把类别映射表与策略映射表相关联
定义这些匹配数据流的QOS特性,如带宽,COS,ip等
把策略射表应用于接口的入站或出站上
配置接口信任状态。
1.5用路由策略进行分类
实例1:按访问列表控制分类
#class-map match-all manager //定义一个名为manager的分类映射表
#match access-group 101 //在分类映射表下定义一个访问控制列表,以定义匹配的条件
#policy-map hight //定义一个名为hight的策略映射表
#calss manager //把名叫manager的分类映射表与策略映射表相关联
#trust dscp //匹配的数据信任DSCP
#trust cos //匹配的数据信任COS
#set ip dscp 5 //设置DSCP值
#bandwith 36000 //匹配的数据的带宽为36000
#interface fast 0/1 //进入接口
#service-policy input hight //把hight策略应用于接口的入方向
#mls trust dscp //此接口信任dscp
#access-list 101 permit tcp any 192.168.9.0 0.0.0.255 //定义访问控制列表,以定义匹配的数据流
实例2:按NBAR分类:
#class-map match-all manager //定义一个名为manager的分类映射表
#match protocol ip //匹配IP协议
#policy-map hight //定义一个名为hight的策略映射表
#calss manager //把名叫manager的分类映射表与策略映射表相关联
#set ip dscp 5 //设置DSCP值。
#bandwith 36000 //匹配的数据的带宽为36000
#interface fast 0/1 //进入接口
#service-policy input hight //把hight策略应用于接口的入方向
实例3:路由策略
#route-map test permit 10
2、标记
QOS标记指的是修改入站帧的DSCP,COS,IP precedence ,即把入站的数据流标记为新的内部DSCP值。
直接接口上配置标记:
mls qos dscp dscp-value //
mls qos cos cos-value //
mls qos ip precedence ip-precedence-value //
在映射表中标记:
即分类中定义的方式,在策略映射表中标记。
用路由策略标记:
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}
(4.4)把列表应用于接口:
(config-if)#custom-queue-list {listnumber}
(5)CBWFQ基于类别的加权公平队列
可定制64个队列
可根据各种条件为数据流分类,同一分类占用一个队列。然后再对每个队列设定权重、带宽、传输限制等。
分类时,要指明每个队列的长度,即该队列的最大数据存放量。一个队列超过最大数量限制后,默认将使用尾丢弃的方法把超量的数据丢弃。也可配置为WRED。
当数据不匹配任何类时,会被划分到默认类中。默认类中的数据使作WFQ队列共享带宽。
CBWFQ不支持子接口
CBWFQ可用接口带宽不超过接口的75%,另外25%用于负载控制和路由流量
配置CBWFQ:
(5.1.1)定义数据的分类策略,并设置匹配语句
(config)# class-map [match all |match-any] {map-name} //定义分类映射表
(config-cmap)# match access-group {ACL} //基于访问列表的分类
(config-cmap)# match protocol {protocol} //匹配协议,NBAR分类
(config-cmap)# match ip {dscp dscp} //匹配IP DSCP值。
(config-cmap)# match ip {precedence precedence} //匹配IP 优先级
(config-cmap)# match input-interface {interface} //匹配进站接口
(config-cmap)# match destination-address {mac mac-address} //匹配目标MAC地址
(config-cmap)# match dsource-address {mac mac-address} //匹配源MAC地址
(config-cmap)# match qos-group {group ID} //匹配组ID
(config-cmap)# match class-map {map-name} //匹配CLASS MAP ,用于CLASS嵌套
(config-cmap)# match vlan {vlan-id} //匹配VLAN
(5.1.2)为每类数据定义处理策略。通过policy map来定义。
(config)#policy-map {plicymap-name} //定义一个策略名
(config-pmap)#class[class-map |class-default] // 把分类映射表与策略表相关联。
(config-pmap-c)#bandwidth[kbps| percent percent] //设置策略,即为匹配的队列设置策略。这里是分配带宽。
(config-pmap-c)#queue-limit {packets} //设置每个队列的最大数据包个数。超过的将实现尾丢弃
(config-pmap-c)#random-detect //丢弃方法使用WRED,而不是尾丢弃
(config-pmap-c)#shape xxx //令牌桶参数,即×××流量控制,详见上面的策略与×××
(config-pmap-c)#policy xxx //car限速,即策略流量控制。详见上面的策略与×××
(config-pmap-c)#priority {bandwidth} //优先级,低延迟队列LLQ
(5.1.3)把定义的策略应用于接口
(config-if) server-policy output {policcymap-name}
(config-if)#max-reserved-bandwidth {percent} //设定占用接口的最大带宽,默认是占用75%,这里可更改默认值。
(6)LLQ低延迟队列
低延迟队是一个有较高优先级的队列。仅次于二层协义队列,如CQ中的0号队列。
一个或多个分类的报文可以被设定进LLQ队列中。即LLQ队列中,可以拥有不同分类的报文。
只有LLQ队列中的报文传完,才会传输其他普通队列中的报文。与CQ中的0队列相同。
(7)WRR加权轮询队列
交换机每个队列配置权重值,根据权重值按比例给队列分配带宽。(交换机支持4个队列)
各队列之间进行轮流调度,保证每个队列都得到传递。当然每个队列的数据传递量是按比例分配的。
仅当发生拥塞的时候,才使用WRR来调度队列中的数据包。
HQ-WRR:这个调度算法是加以改进了,即把队列3定义为高优先级队列,只有 队列3中的数据传输完了,其他队列才轮流调度。
配置WRR:
A:进入接口
B:给队列指定出站cos值
(config-if)#wrr-queue cos-map {queue-id} {cos1 cos2........cos8} //COS 有8个值,即将不同的COS值映射到相应的队列中。
例:(config-if)#wrr-queue cos-map 1 2 3
(config-if)#wrr-queue cos-map 3 4 6 //即把COS值为 2和3的数据包放入队列1,把COS值为4和6的数据包放入队列3
C:配置严格优先级队列,交换机默认是队列4
(config-if)#priority-queue out //3550交换机通过此命令,把队列4配为严格优先级
D:配置WRR队列的WRR权重:
(config-if)# wrr-queue bandwidth weight1 weight2 weight3 weight4 //根据权重值来分配队列的带宽比。
E:定义传输队列长度比例,取值1-100%
队列长度即排队列的长度。优先级高的排队短,级别越低,排队就越长
5、拥塞管理
通过监视网络通信流负载,拥塞避免能够预测和避免常见的网络瓶颈点发生拥塞。通过复杂算法来丢弃数据包可避免拥塞。
拥塞避免的种类:尾丢弃;RED随机预检测;WRED加权随机早检测
5.1尾丢弃
(1)即数据包到达交换机或路由器速率超过了路由器、交换机的缓存通信能力时,路由器将丢弃数据包。即路由器没有能力缓和存数据包了,就把超过的数据包全 丢弃,直到有能力有空间储存数据包。
(2)尾丢弃平等对待所有通信流。而不管内部DSCP值的大小。
(3)多个TCP会话并行时,当多个TCP流的总量超过缓存能力时,这些TCP会话将同时进入TCP慢启动。其结果是所有的TCP会话都降低了速度。当缓 存空出时,所有的TCP会话又都传送数据到缓存,又会造成缓存缺失。又进入慢启动,形成锯齿状流量,而不能对单个TCP会话进行管理。
5.2 RED
当输出缓冲器达到配置的阈值时,RED将随机丢弃数据包。随着输出队列中的数据包增多,交换机将随机丢弃数据包来避免拥塞。
仅当输出队列未满时,RED才发挥作用。输出队列填满程度超过RED的阈值后,数据包的丢弃概率将呈线性增加。当输出队列被填满后,RED失效,将使用尾 丢弃方式丢弃数据包。
(config-if)#random-detect //启用随机早期检测
5.3 WRED
WRED与RED的区别是,WRED用ip优先级\DSCP值来区别丢弃策略,可以为不同ip优先级\DSCP值设定不同的队列长度,队列阈值,丢弃概 率。从而对不同优先级的报文提供不同的丢弃特性。
如:DSCP值不超过20的尽力而为的WRED丢弃阈值设为50%,而DSCP值为20--30的报文的阈值设为80%。当队列流满到50%时,路由器将 随机丢弃DSCP值为0--20的数据包。队列填充程度到80% 后,交换机才开始丢弃DSCP为20--30的数据包。
过程:
ip数据包根据DSCP值分类-->通过WRED设定DSCP数据流的阈值-->当达到阈值时,对应的DSCP数据流将随机丢弃数据包 -->当队列充满时用尾丢弃。
(config-if)#random-detect
(config-if)#random-detect [precednce|dscp] [min max mark] //设置丢弃数据包的最小值,最大值和丢弃数据包的轮循间隔。
三、集成服务(RSVP)
1、提供端到端服务质量预留,支持组播、单播的IP流。是发起主机到目的主机单向的。
2、RSVP也定期发送刷新消息维护RSVP状态。如果在一定时间内没收到消息,将删除预留。需要发起者到目的之间的所有路由器都配置有RSVP预留。
3、RSVP用flowspec和filter spec形成一个流描述,称流标准。flowspec定义请求主机的质量要求。filter spec定义主机的数据包分类需求。
4、RSVP有两种流预留的分类:独立预留和共享预留
独立预留只有一个发送者发起流量;共享预留至少一个或多个发送者发起流量。通常这些流不同时操作。
5、发送者分为:显示发送者和通配符发送者。
显示发送者用filter spec定义发送者,它定义单个发送者。
通配符发送者:使用相同的filterspec,相同的质量。
(1)显示发送者对独立预留使用固定过滤器FF。被一个流所有数据包共享。
(2)显示发送者对共享预留使用SE过滤器。来自多个源的组播应用程序使用。
(3)通配符发送者对共享预留使用WF过滤。被多个流共享。对独立预留没有定义
6、端到端:经过的每台路由器都必须满足两个条件才能提供RSVP服务。
(1)是否有足够的资源供请求使用。
(2)请求主机是否有权限申请这个服务
7、RSVP发送者:是发起RSVP预留的主机
RSVP接收者:是指资源被预留的主机
RSVP启用路由器:任何在发送者和接收者之间配置这个RSVP协议的路由器
8、 发送者到接收者预留RSVP的过程:
(1)发送者(主机)发送rsvp path消息描述要发的数据
(2)在到达目的地(接收者)路径中的每一台RSVP路由器读取RSVP消息。存储关于前一跳的IP地址信息,并把自已的地址添加到消息中作为前一跳,并 把消息传到下一跳路由。
(3)接收者收到PATH消息
(4)接收者收到PATH消息后,反向向发送者主机请求预留资源,使用RSVP RESV消息
(5)途径的路由器有资源且有权限则同意RSVP预留,否则就拒绝。
(6)发送者主机从最近的下一跳路由器,即从哪个接收到消息的路由器接收请求,并开始使用预留路径。当发送者发送完数据后,将发出teardown消息。 路由器收到此消息清除RSVP预留。
9、 配置共享RSVP预留
(config-if)#fair-queue //开启RSVP预留的所有路由器的接口都必须配为加权公平队列。WFQ
(COFNIG-IF)#ip rsvp bandwidth {bandwidth} {largest-flower}
bandwidth:设为预留出的接口带宽,不超过总带宽的75%。即总带宽。
largest-flower:设置经过的数据包的最大尺寸,不超过接口每秒可通过流量的75%。即单个RSVP的带宽。
(config)#ip rsvp neighbor {acl} //只接收符合条件的邻居路由器的RSVP请求。
(config-if)#ip rsvp precedence [conform|exceed] {precedence} //配置数据流当遵循前面定义的带宽时和超出带宽时的优先级和为多少。
(config-if)#ip rsvp tos [conform|exceed] {tos_value} //配置数据流遵循定义的带宽和超出带宽时的TOS值。
10、静态预留
(config-if)#ip rsvp reservation {destination-address} {source-address} [ip-protocol-number|tcp|udp] {destination-port} {source-port} {next-hop-address} {interface-name} {interface-namber} [ff|se|wf] [load|rate] {average-bit-rate} {maximum-burst}
destination-address:目标IP地址,即接收者地址
source- address:源地址,即发起者地址
[ip-protocol-number|tcp|udp] :协议号,或者TCP,UDP协议
{destination-port} {source-port} :目标端口,源端口
{next-hop-address} :下一跳地址,如果是接收者发起的预留,则这里就是上一跳地址
[ff|se|wf]:三种过滤器
[load|rate]:load:可控 负荷服务; rate:代表确保速率。
{average-bit-rate}:平均速率
{maximum-burst} :最大突发量
转载于:https://blog.51cto.com/yuxin/331755