浅谈QOS

向右看齐 2022-06-13 06:54 536阅读 0赞

一QOS概述
(一)QOS的作用:解决特定数据的延迟、抖动、丢包问题。
(二)QOS的两种体系:

1、集成服务:给某种特殊需保证的数据划出特定的带宽。其他数据无法占用这个带宽。像呼叫电路一样,呼能字一条电路才开始传输。RSVP带宽预留协议用在这个服务中。
2、区分服务:(diffserv)又称软QOS

  1. 1)用二层COS或三层TOSdscp区分数据流。DSCP是后来的标准。
  2. 2)以类别为基础,一些类别的通信流优于其他类别的通信流得到处理。先将通信流分类,然后将它们加入到效率不同的队列中。
  3. 3Diffserv 的应用在发送数据前不显示地通知网络设备。

二、区分服务

(一)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. 1、分类

分类是通过数据包的特定优先级或DSCP及其他预定的参数来区分数据包。分类决定数据包的内部DSCP值,交换机或路由器根据内部DSCP值进行QOS数据包的处理。
如果只启用QOS,没有做任何QOS配置,则所有通信流都被归为默认类别。 入站数据包的默认DSCP值为0,不管其原来的DSCP值为多少。
分类的方法:

  1. (1)按接口的的信任模式分类。
  2. (2)接数据包的DSCPIP优先级或COS分类
  3. (3)基于访问列表的分类
  4. (4)NBAR分类

1.1 按接口的信任模式分类

  1. 不信任接口类: 接口接收的所有数据包的DSCP值都为0
  2. 信任类: 当接口配为信任时,根据原数据的优先级映射为DSCP内部优先级。即把COSTOS值映射为内部DSCP值。指定接口接受数据包中的原有DSCPip优先级、COS值。
  3. mls qos trust \[dscp|cos|ip-precedence\] //看接把原有数据包的DSCP COS IP优先级自动映射为内部优先级。

如果原有数据包中的分类是基于DSCP,则直接修改内部DSCP值为原数据包的值;如果原有数据包中的分类是基于IP优先级或COS,则会将它们以8的倍数映射到内部DSCP;不信任时所有的原数据包的DSCP值都会被设置为0.
mls qos map cos-dscp values //用8个空格隔开的DSCP值对应COS的0—7八个级别。手动映射COS值到内部DSCP值。
mls qos map ip-prec-dscp dscp-values //用8个空格隔开的DSCP值对应ip优先级的0—7八个级别。手动映射IP优先级到内部DSCP值。

注意:QOS是以内部DSCP值为依据的。所以都要转换成内部DSCP值。

例:

  1. \#interface fast0/1
  2. \#mls qos trust dscp
  3. \#mls qos trust cos
  4. \#mls qos trust ip-precedence //此接口信任原数据包的ip优先级,即原来的优先级是多少都转换为同级别的内部DSCP值。
  5. \#mls qos map cos-dscp 0 8 16 26 34 46 48 56 // 即把原数据包的值的COS值,转换为对应的DSCP内部值。
  6. \#mls qos map ip=prec-dscp 0 8 16 24 32 40 48 56 //即把原数据包值的IP优先值,转换为对应的DSCP内部值。
  7. 1.2基于NBAR(基于应用)的分类
  8. 定义一个分类映射表
  9. 在分类映射表子句下定义一个匹配条件。
  10. 再定义一个策略映射表并把类别映射表与策略映射表相关联
  11. 定义这些匹配数据流的QOS特性,如带宽,COSip
  12. 把策略射表应用于接口的入站或出站上
  13. 配置接口信任状态。
  14. 分步配置的命令:
  15. (1) 定义分类映射表 class map
  16. (config)\#class-map \[match-any|match-all\] classname
  17. match-any :匹配其中一个就可以执行。
  18. match-all:必须全部匹配才可以执行
  19. classname:映射表名
  20. (2) class map 的匹配
  21. (config-cmap)\# match access-group \{ACL\} //基于访问列表的分类
  22. (config-cmap)\# match protocol \{protocol\} //匹配协议,NBAR分类
  23. (config-cmap)\# match ip \{dscp dscp\} //匹配IP DSCP值。
  24. (config-cmap)\# match ip \{precedence precedence\} //匹配IP 优先级
  25. (config-cmap)\# match input-interface \{interface\} //匹配进站接口
  26. (config-cmap)\# match destination-address \{mac mac-address\} //匹配目标MAC地址
  27. (config-cmap)\# match dsource-address \{mac mac-address\} //匹配源MAC地址
  28. (config-cmap)\# match qos-group \{group ID\} //匹配组ID
  29. (config-cmap)\# match class-map \{map-name\} //匹配CLASS MAP ,用于CLASS嵌套
  30. (config-cmap)\# match vlan \{vlan-id\} //匹配VLAN
  31. 3 设置 policy map (定义策略映射表,并把分类映射表与之关联)
  32. (config)\# policy-map \{policyname\} //定义一个策略映表
  33. (config-pmap)\# class \{class-map\} //把分类列表与之关联
  34. 4)配置优先级和DSCP,即重新标记(在策略映射表下)
  35. config-pmap-c)\#set ip \{precedence precedence\}
  36. config-pmap-c)\#set ip \{dscp dscp\}
  37. config-pmap-c)\#set cos \{cos\}
  38. config-pmap-c)\#set qos-group \{GROUP ID\}
  39. config-pmap-c)\#bandwidth \{kbps\}
  40. config-pmap-c)\#priority \{kbps\} \[BC\]
  41. config-pmap-c)\#police \{CIR BC BE\} conform-action \{action\} exceed-action \{action\} violiate-action \{action\}
  42. (5)将策略应用到接口的出或入口方向
  43. (config-if) service-policy \[input|output\] policy-name

1.3 按数据包的DSCP\IP优先级或COS分类

1.4 基于访问列表的分类

  1. 定义一个分类映射表
  2. 在分类映射表子句下用访问控制列表配置匹配条件。(使用ACL ip地址,入站接口指定匹配条件)
  3. 再定义一个策略映射表并把类别映射表与策略映射表相关联
  4. 定义这些匹配数据流的QOS特性,如带宽,COSip
  5. 把策略射表应用于接口的入站或出站上
  6. 配置接口信任状态。

实例1:按访问列表控制分类

  1. \#class-map match-all manager //定义一个名为manager的分类映射表
  2. \#match access-group 101 //在分类映射表下定义一个访问控制列表,以定义匹配的条件
  3. \#policy-map hight //定义一个名为hight的策略映射表
  4. \#calss manager //把名叫manager的分类映射表与策略映射表相关联
  5. \#trust dscp //匹配的数据信任DSCP
  6. \#trust cos //匹配的数据信任COS
  7. \#set ip dscp 5 //设置DSCP值
  8. \#bandwith 36000 //匹配的数据的带宽为36000
  9. \#interface fast 0/1 //进入接口
  10. \#service-policy input hight //把hight策略应用于接口的入方向
  11. \#mls trust dscp //此接口信任dscp
  12. \#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策略应用于接口的入方向

2、标记

  1. QOS标记指的是修改入站帧的DSCPCOSIP precedence ,即把入站的数据流标记为新的内部DSCP值。

直接接口上配置标记:
修改数据包的DSCP值,进而影响内部DSCP值。因为交换机将根据新的而不是原来的DSCP值或COS值来决定内部DSCP值,所以这些命令的执行结果相当于分类
mls qos dscp dscp-value //修改DSCP值
mls qos cos cos-value //修怍COS值
mls qos ip precedence ip-precedence-value //修改IP 优先级

在映射表中标记:

  1. 即分类中定义的方式,在策略映射表中重标记。

用路由策略标记:

(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)解决的问题:

  1. 解决链路两边接口速率不匹配
  2. 对报文流量进行限制,对超出流量约定的报文进行缓冲
  3. 流量整形可能会增 加延迟
  4. 3.1策略
  5. (1)令牌桶算法:
  6. 令牌桶按用户设定的速度向桶中放置令牌(承诺速率)。且令牌桶有用户设定的容量,当桶中充满令牌时,令牌量将不再增加(令牌量是设限的,固定的)。
  7. 当令牌桶中没有令牌时,报文不能被发送,只有桶中生成新的令牌时,报文才可发送。这可以限制报文的流量只能等于小于令牌生成的速度达到限制流量的目的。
  8. 当令牌桶中有足够的令牌处理报文时,被认为conform。即报文已进入令牌桶,而令牌桶还没有充满。
  9. 当令牌桶中的令牌不够时,认为是exceed。像公交车上,只有三个座位,而上来五个人,则这五个人都不能上车,令牌桶中令牌不减少。
  10. 2)几个参数
  11. CIR:承诺速率:即平均速率。实际的策略速率。
  12. BC:常规突发量:超过令牌桶流量,仍能发出去的流量大小。即超过承诺速率,仍能发送出去的流量大小。
  13. BE:扩展突发量:支持BE的一般是:be=bc\*2。一般标准的是be=bc,即不支持扩展突发量。
  14. TC:时间间隔 TC=BC/CIR
  15. (3)三种类型的策略
  16. 单一策略:应用于单个接口的策略。将指定的策略用于接口
  17. 聚合策略:将策略应用于一组接口。如将一个限量流量不超过75MBIT/S的策略应用于一组接口时,这些接口的总流量不超过75M。是总流量。
  18. 微流策略:针对单个流的策略。将策略参数应用于策略映射表中的每种类别。
  19. 4)微流策略,即应用于policy-map中的方法:
  20. policy \{cir bc be\} \{conform-action action\} \{exceed-action action\} \{violate-altion action\}
  21. conform-action:令牌足够时的处理方式
  22. exceed-action:当令牌不足够时对数据流的处理方式。超过BC之后的处理方式
  23. violate-altion:对违规数据流的处理方式。超过BE流量后的处理方式
  24. (5)单一策略,即应用于接口的配置方法
  25. rate-limit \{input|output\} \[access-group \[rate-limit\] acl-index\] \{CIR Bc Be \} \{conform-action action\} \{exceed-action action\}

例:

[route-config]interface serial1
[route-interface-serial1]ip address 192.168.9.1 255.255.255.0
[route-interface-serial1]rate-limit output access-group rate-limit 1 20000000 24000 32000 conform-action transmit exceed-action drop
//对IP优先级为3的出站流量进行限速。对超过BC的数据包丢弃。
[route-config]access-list rate-limit 1 3 //访问控制列表 为rate-limit类型,序号为1, 值为3

  1. (6)聚合策略配置方法
  2. mls qos aggregate-policer policername \{cir bc be \} \{conform-action action\} \{exceed-action action\} \{violate-altion action\}
  3. 再把此聚合策略应用于接口
  4. 3.2 整型(GTS)
  5. (1)基本整型: traffic-shape rate CIR BC BE buffer-limit
  6. 2ACL整型: traffic-shape group access-list CIR BC BE
  7. (3)基于策略整型:
  8. shape \{average|peak\} cir bc be //average:指的是平均值,peak指的是峰值
  9. shape max-buffers \{number-of-buffers\} //定义缓冲区上限,默认值为1000
  10. 把策略应用于接口

4、队列

任何分类,必须有队列才有效。不然就无效。即哪个数据或哪个优先级进入哪个队列。

队列的种类:先进先出队列;WFQ加权公平队列;PQ优先级队列;CQ自定义队列;CBWFQ基于类别的加权公平队列;LLQ低延迟队列;WRR加权轮询队列;

(1)FIFO先进先出队列
不对报文进行分类,当报文进入接口的速度大于接口能发送的速度时,报文按照先后顺序进入队列传输。除带宽小于2.048Mbps的串行接口以外(如E1接口或更小带宽的接口默认队列方式是WFQ)的接口,默认队列方式都是FIFO。
因是默认的,所以不用进行配置。如果想在带宽小于2.048Mbps的接口中用FIFO队列的话:

  1. config-if)\#no fair-queue //禁用WFQ,即可变成FIFO队列。

(2)WFQ加权公平队列

  1. 带小于2.048Mbps的接口,都以WFQ为默认队列方式。
  2. A:自动根据数据报文的源、目的地、端口号、协议、优先级把数据划分到不同的队列,该过程称为散列,用HASH算法完成。
  3. B:根据优先级自动划分带宽。算法是:32768/(ip优先级+1)=权重。 再根据所有数据流队列的总权重,按比例划分带宽。
  4. C:循环发送队列数据。保证高优先级比低优先级先传;小数据包比大数据包先传。
  5. CQWFQ队列的区别:
  6. CQ要手工分配比例及队列所属,而WFQ是自动划分队列及带宽。
  7. 配置WFQ:
  8. (CONFIG-IF)\#fair-queue //启用WFQ
  9. (CONFIG-IF)\#fair-queue \{1-4096\} //设定每个队列中允许数据包的数量

(3)PQ优先级队列

  1. A:根据IP报文的优先级和DSCP等条件把数据报最多划分到4个个等级(高\\\\正常\\低)的队列中.
  2. B:PQ优先级队列先传完高等级队列中的所有数据后才会传次低等级的数据。如想传低等级队列中的数据,只有等到高等级队列、中等级队列、正常等级队列中的所有数据都传完,才轮到低等级队列中的数据的传输。当带宽较低,而高等级队列中的数据较多时,低等级队列中的数据可能永远得不到传送。

配置PQ:

  1. (3.1)分配队列:
  2. (3.1.1):基于协议:
  3. (config)\#priority-list \{listnumber\} protocol \{protocol-name \[size|acl|tcp port|udp port|fragment\]\} \{high|medium|normal|low\} //定义队列号及队列优先级
  4. (3.1.2) :基于默认优先级队列:
  5. (config)\#priority-list \{listnumber\} default \{high|medium|normal|low\} //定义默认的优先级队列,未分类的流量默认被分配到该队列,优先级默认为normal
  6. (3.1.3):基于接口:
  7. (config)\#priority-list \{listnumber\} interface \{high|medium|normal|low\} //基于进站接口进行队列分配
  8. (3.2)定义每个队列中数据包的最大个数:
  9. (config)\#priority-list \{listnumber\} \{high\_limit|medium\_limit|normal\_limit|low\_limit\} //定义每个队列最多的数据包个数,默认为 20 40 60 80 ,可自行更改
  10. 即每个队列最多只能有多少个数据包
  11. (3.3)把定义的优先级列表应用于接口上:
  12. config-if)\#priority-group \{listnumber\}
  13. 实例:

(4)CQ自定义队列

  1. 报文最多可分成16个队列的流量分类。实际上队列号是0--16,共17个队列。
  2. 0号队列是超级优先队列,只有0号队列中的数据传输完才传输其他16个队列中的数据。以保证高优先级业务数据。
  3. 1-16号队列按用户给其分配的带宽比例以循环的方式传送。不像PQ队列,高一级的传完才能传一下个等级的数据。
  4. 默认每个队列一次处理1500字节数据,依次传输。可手工指定一个队列一次处理的字节数,以改变带宽利用。
  5. 也可按比例分配各队列的带宽。这些都是在拥塞的情况下,在没有拥塞的情况下,其他队列可以使用剩余的带宽。
  6. CQ适用于WAN接口。
  7. (4.1) 分配队列:
  8. 4.1.1)基于协议分配:
  9. (config)\#queue-list \{listnumber\} protocol \{protocol-name \[size|acl|tcp port|udp port|fragment\]\} \{queue-number\} //按协议进行队列分配
  10. (4.1.2)基于接口:
  11. (config)\#queue-list \{listnumber\} interface \{queue-number\} //基于进站接口进行队列分配
  12. (4.1.3)定义默认队列:
  13. (config)\#queue-list \{listnumber\} default \{queue-number\} //定义默熟认队列
  14. (4.2)给各队列划分带宽:
  15. config)\#queue-list \{listnumber\} queue \{queue-number\} byte-count \{size\}
  16. (4.3)给各队列设定最大数据包数:
  17. config)\#queue-list \{listnumber\} queue \{queue-number\} limit \{limit-number\}
  18. 4.4)把列表应用于接口:
  19. config-if)\#custom-queue-list \{listnumber\}

(5)CBWFQ基于类别的加权公平队列

  1. 可定制64个队列
  2. 可根据各种条件为数据流分类,同一分类占用一个队列。然后再对每个队列设定权重、带宽、传输限制等。
  3. 分类时,要指明每个队列的长度,即该队列的最大数据存放量。一个队列超过最大数量限制后,默认将使用尾丢弃的方法把超量的数据丢弃。也可配置为WRED
  4. 当数据不匹配任何类时,会被划分到默认类中。默认类中的数据使作WFQ队列共享带宽。
  5. CBWFQ不支持子接口
  6. CBWFQ可用接口带宽不超过接口的75%,另外25%用于负载控制和路由流量
  7. 配置CBWFQ
  8. (5.1.1)定义数据的分类策略,并设置匹配语句
  9. (config)\# class-map \[match all |match-any\] \{map-name\} //定义分类映射表
  10. (config-cmap)\# match access-group \{ACL\} //基于访问列表的分类
  11. (config-cmap)\# match protocol \{protocol\} //匹配协议,NBAR分类
  12. (config-cmap)\# match ip \{dscp dscp\} //匹配IP DSCP值。
  13. (config-cmap)\# match ip \{precedence precedence\} //匹配IP 优先级
  14. (config-cmap)\# match input-interface \{interface\} //匹配进站接口
  15. (config-cmap)\# match destination-address \{mac mac-address\} //匹配目标MAC地址
  16. (config-cmap)\# match dsource-address \{mac mac-address\} //匹配源MAC地址
  17. (config-cmap)\# match qos-group \{group ID\} //匹配组ID
  18. (config-cmap)\# match class-map \{map-name\} //匹配CLASS MAP ,用于CLASS嵌套
  19. (config-cmap)\# match vlan \{vlan-id\} //匹配VLAN
  20. 5.1.2)为每类数据定义处理策略。通过policy map来定义。
  21. (config)\#policy-map \{plicymap-name\} //定义一个策略名
  22. (config-pmap)\#class\[class-map |class-default\] // 把分类映射表与策略表相关联。
  23. config-pmap-c)\#bandwidth\[kbps| percent percent\] //设置策略,即为匹配的队列设置策略。这里是分配带宽。
  24. config-pmap-c)\#queue-limit \{packets\} //设置每个队列的最大数据包个数。超过的将实现尾丢弃
  25. config-pmap-c)\#random-detect //丢弃方法使用WRED,而不是尾丢弃
  26. config-pmap-c)\#shape xxx //令牌桶参数,即整形流量控制,详见上面的策略与整形
  27. config-pmap-c)\#policy xxx //car限速,即策略流量控制。详见上面的策略与整形
  28. config-pmap-c)\#priority \{bandwidth\} //优先级,低延迟队列LLQ
  29. (5.1.3)把定义的策略应用于接口
  30. (config-if) server-policy output \{policcymap-name\}
  31. (config-if)\#max-reserved-bandwidth \{percent\} //设定占用接口的最大带宽,默认是占用75%,这里可更改默认值。

(6)LLQ低延迟队列

  1. 低延迟队是一个有较高优先级的队列。仅次于二层协义队列,如CQ中的0号队列。
  2. 一个或多个分类的报文可以被设定进LLQ队列中。即LLQ队列中,可以拥有不同分类的报文。
  3. 只有LLQ队列中的报文传完,才会传输其他普通队列中的报文。与CQ中的0队列相同。

(7)WRR加权轮询队列

  1. 交换机每个队列配置权重值,根据权重值按比例给队列分配带宽。(交换机支持4个队列)
  2. 各队列之间进行轮流调度,保证每个队列都得到传递。当然每个队列的数据传递量是按比例分配的。
  3. 仅当发生拥塞的时候,才使用WRR来调度队列中的数据包。

HQ-WRR:这个调度算法是加以改进了,即把队列3定义为高优先级队列,只有 队列3中的数据传输完了,其他队列才轮流调度。

  1. 配置WRR:
  2. A:进入接口
  3. B:给队列指定出站cos
  4. config-if)\#wrr-queue cos-map \{queue-id\} \{cos1 cos2........cos8\} //COS 有8个值,即将不同的COS值映射到相应的队列中。
  5. 例:(config-if)\#wrr-queue cos-map 1 2 3
  6. config-if)\#wrr-queue cos-map 3 4 6 //即把COS值为 2和3的数据包放入队列1,把COS值为4和6的数据包放入队列3
  7. C:配置严格优先级队列,交换机默认是队列4
  8. (config-if)\#priority-queue out //3550交换机通过此命令,把队列4配为严格优先级
  9. D:配置WRR队列的WRR权重:
  10. config-if)\# wrr-queue bandwidth weight1 weight2 weight3 weight4 //根据权重值来分配队列的带宽比。
  11. E:定义传输队列长度比例,取值1-100%
  12. 队列长度即排队列的长度。优先级高的排队短,级别越低,排队就越长

5、拥塞管理

通过监视网络通信流负载,拥塞避免能够预测和避免常见的网络瓶颈点发生拥塞。通过复杂算法来丢弃数据包可避免拥塞。

拥塞避免的种类:尾丢弃;RED随机预检测;WRED加权随机早检测

5.1尾丢弃

  1. 1)即数据包到达交换机或路由器速率超过了路由器、交换机的缓存通信能力时,路由器将丢弃数据包。即路由器没有能力缓和存数据包了,就把超过的数据包全丢弃,直到有能力有空间储存数据包。
  2. 2)尾丢弃平等对待所有通信流。而不管内部DSCP值的大小。
  3. 3)多个TCP会话并行时,当多个TCP流的总量超过缓存能力时,这些TCP会话将同时进入TCP慢启动。其结果是所有的TCP会话都降低了速度。当缓存空出时,所有的TCP会话又都传送数据到缓存,又会造成缓存缺失。又进入慢启动,形成锯齿状流量,而不能对单个TCP会话进行管理。

5.2 RED

  1. 当输出缓冲器达到配置的阈值时,RED将随机丢弃数据包。随着输出队列中的数据包增多,交换机将随机丢弃数据包来避免拥塞。
  2. 仅当输出队列未满时,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的数据包。

过程:

  1. 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. 1)发送者(主机)发送rsvp path消息描述要发的数据
  2. 2)在到达目的地(接收者)路径中的每一台RSVP路由器读取RSVP消息。存储关于前一跳的IP地址信息,并把自已的地址添加到消息中作为前一跳,并把消息传到下一跳路由。
  3. 3)接收者收到PATH消息
  4. 4)接收者收到PATH消息后,反向向发送者主机请求预留资源,使用RSVP RESV消息
  5. 5)途径的路由器有资源且有权限则同意RSVP预留,否则就拒绝。
  6. 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} :最大突发量

本文出自 “ 网行天下 ” 博客,请务必保留此出处 http://kuangkuang.blog.51cto.com/838/284644

发表评论

表情:
评论列表 (有 0 条评论,536人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java

    java与c语言 java是一门面向对象编程的强类型语言,一切东西都要抽象为对象,具有封装、继承、多态三个特性。这门语言常用于开发网站,与c语言不同,c语言是面向

    相关 ETL

    ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一

    相关 NoSQL

    如今我们需要处理的数据越来越多,必须以商用的服务器集群来构建大型的硬件平台。NoSQL就应运而生了。它主张使用无模式的数据,可以运行在集群中。 NoSQL优点 1.

    相关 QOS

    一QOS概述 (一)QOS的作用:解决特定数据的延迟、抖动、丢包问题。 (二)QOS的两种体系:    1、集成服务:给某种特殊需保证的数据划出特定的带宽。其

    相关 HTTP

    HTTP协议 http是网络上传输HTML的协议,用于浏览器和服务器之间的一种通信工具。 (google浏览器提供了一套web应用调试工具,适合web开发。ctrl+s

    相关 Fiddler

    最近同事推荐了一个工具-Fiddler,感觉很好用,我也推荐下. 首先了解下Fiddler,网上是这样介绍的,它是一个http协议调试代理工具,能够记录并检查所有你的电脑和互

    相关 RPC

    RPC——Remote Procedure Call Protocol,这是广义上的解释,远程过程调用。但是,我接下俩要说的是应用层面的,而不是所谓协议层面的。 上一篇文章讲

    相关 GC

    什么是GC? ØGC: Generational garbage collection垃圾回收,是.net中对内存管理的一种功能; Ø垃圾回收器跟踪并回收托管内存中分配的对