服务质量_QOS【标记和队列】

1.1 为什么会出现QOS

  • 带宽不足时
  • 端到端有延迟时
  • 链路有抖动时
  • 数据包丢失时

1.2 带宽可用性

  • 升级带宽
  • 尽可能的使用已有带宽高速转发报文
  • 压缩2层数据帧(语音流量压缩:G.711和G.729)
  • 压缩IP数据头

抖动:抖动指的是端到端传输时,传输的数据包的延迟不一致导致的;

丢包:“尾丢弃”,使用WRED定义队列阈值,对报文进行分类。

 

二、部署QOS

2.1 部署顺序

  1. 定义流量分类
  2. 给流量打上相应的标识:ip流量(TOS)、二层数据帧(COS)、MPLS(exp)、帧中继(DE)
  3. 定义QOS策略

2.2 QOS架构

  1. 尽力而为(Best-effort):没有QOS
  2. 集成服务模型(IntServ):对于端到端的流量,路径的所有路由器对这条流量都提供相同的服务(协议:RSVP)
  3. 区分服务模型(DiffServ):

2.3 区分服务模型实现方法:

  • Legacy CLI:早期QOS命令
  • MQC:class-map和policy-map,嵌套比较强
  • Cisco AutoQOS:自动QOS,接口下:auto discovery qos trust和auto qos voip,尽量不要使用
  • Cisco SDM QOS wizard:应用于简单的QOS配置;

2.4区分服务模型配置步骤:

  • 分类classfication/标记Marking
  • 管制Policing/整形Shaping            限速
  • 拥塞避免机制RED WRED       防止尾丢弃
  • 队列Queuing:PQ、CQ、WFQ、FIFO、CB、WFQ、LLQ、WRRQ、SRRQ、DRRQ

三、分类和标记

3.1流量分类方式:分类classfication

  • 入接口
  • IP Precedence(tos字段:Voip默认为5,其他流量默认0)
  • DSCP
  • 源目地址
  • 应用层载荷

3.2 标记Marking

  • 二层:
    • Cos(ISL,802.1P)
    • MPLS EXP bits
    • Frame Relay
  • 三层:(Tos)
    • DSCP
    • IP precedence

3.2.1 Tos字段(三层):

3.2.1.1 IP Precedence:

 

 

 1  <  0  <  2  <  3  <  4(video)  <  5(voip)  <  6(Network control)  <  7(保留)

 IP precedence只有前三个字段可用,0-7

RP/0/RP0/CPU0:DCI-HZ4-PE1-test(config-cmap)#match precedence ?
<0-7> Precedence value
critical Critical precedence (5)
flash Flash precedence (3)
flash-override Flash override precedence (4)
immediate Immediate precedence (2)
internet Internetwork control precedence (6)
ipv4 IPV4 precedence
ipv6 IPV6 precedence
network Network control precedence (7)
priority Priority precedence (1)
routine Routine precedence (0)

 

3.2.1.2 DSCP:

 

 

前三位定义为X,后三位定义为Y,Y最后位恒为0(dscp计算时只算前5位)

  • Default PHB:全为0
  • CS类(IP Precedence):Y必须为0,兼容IP Precedence,CS0---CS7
  • AF:X位为001,010,011,100;AF12,X位:001,Y位100,X位越高优先级越高,Y位越高优先级越低
  • EF:X位为101,Y位为110

af11 AF11 dscp (001010)
af12 AF12 dscp (001100)
af13 AF13 dscp (001110)
af21 AF21 dscp (010010)
af22 AF22 dscp (010100)
af23 AF23 dscp (010110)
af31 AF31 dscp (011010)
af32 AF32 dscp (011100)
af33 AF33 dscp (011110)
af41 AF41 dscp (100010)
af42 AF42 dscp (100100)
af43 AF43 dscp (100110)
cs1 CS1(precedence 1) dscp (001000)
cs2 CS2(precedence 2) dscp (010000)
cs3 CS3(precedence 3) dscp (011000)
cs4 CS4(precedence 4) dscp (100000)
cs5 CS5(precedence 5) dscp (101000)
cs6 CS6(precedence 6) dscp (110000)
cs7 CS7(precedence 7) dscp (111000)
default Default dscp (000000)
ef EF dscp (101110)

 

3.2.2:PRI(COS):二层   Class Of Service

 

3.2.3 MPLS报文

experimental位,3bit,取值0-7,6和7保留;

 

3.2.4 基于NBAR分类

可以识别应用层和协议层(4--7层):

 

 class-map NBMR -FTP
   match  protocol  FTP

支持NAMR,需要在接口开启NABR功能:

interface fastEthernet 0/1
 ip nbar protocol-discovery 

 Cisco官网下载特征库,调用特征库文件:

ip nbar pdlm flash://citrix.pdlm 

 

 

通过NBAR自定义协议的端口号:

ip nbar port-map $protocol-name [tcp|udp] port-number

 

四、队列

4.1基础队列

  • First in,first out(FIFO):先进先出
  • Priority queuing(PQ):优先级队列
  • Round robin:CQ:通用队列
  • Weighted round robin(WRR):WFQ(加权公平队列)FBWFQ

4.2 FIFO队列

  1. 不支持分类
  2. 一个队列
  3. 尾丢机制:尾丢弃
int serial 1/0
 no fair-queue                     //设置为fifo
 hold-queue 100 in              //修改入站队列长度
 hold-queue 100 out             //修改出站队列长度

 

4.3 PQ队列(Priority Queuing)

  1. 支持分类(划分为4个逻辑的子队列):最高、较高、高、低
  2. 优先级从高到底,优先处理高优先级队列的流量,当处理完后,才会处理低优先级的流量,可能会导致低优先级流量永远发不出来,称为“流量饿死”现象。
priority-list 15 protocol ip high tcp telnet
priority-list 15 protocol ip low list 100
priority-list 15 protocol ip medium
priority-list 15 interface FastEthernet0/1 medium
priority-list 15 default low
!
interface FastEthernet 0/0
 priority-group 15
!
priority-list 15 queue-limit 50 50 50 50           //修改各个优先级的队列长度

 

4.4 CQ队列(Round Robin)

  1. 可以分类(一共17个子队列),队列0是先发完,才会剩下16个轮询。默认情况下:队列0是PQ,队列1-16是CQ
  2. 队列机制:默认每个队列20个缓存位
  3. 调度机制:每个队列轮询发送子队列里的报文,一次发送1500-2999个字节
  4. 丢弃机制:尾丢弃
queue-list 10 protocol ip 3 tcp telnet
queue-list 10 protocol ip 4 list 100
queue-list 10 interface FastEthernet0/1  5
queue-list 10 protocol ip 6
queue-list 10 default 7
!
interface FastEthernet 0/0
 custom-queue-list 10
!
access-list 101 permit udp any any range 16384 32767
access-list 101 permit udp any range 16384 32767 any
queue-list 10 protocol ip 1 list 101           //语音流量放到队列1
queue-list 10 lowest-custom 2                //最小轮询队列为2,就是把0-1队列加到PQ,2-16加到CQ

queue-list 10 queue 0 limit 30               //设置队列0的缓存数为30
queue-list 10 queue 3 byte-count 3000         //设置队列3每次轮询发送3000-4499个字节,默认只发送1500-2999个字节

 

 

4.5 FBWFQ队列(基于流的解决方案)

  1. 队列分类:基于流进行队列分类,默认只有256个子队列。流超过256时,多个流会被放到同一个子队列。
  2. 入队机制:WFQ不会计算每个流队列的停车位数量,而使用宏观调控,只关注整个队列的停车位:
    1. 下限阈值CDT:当WFQ所有流队列里停车位占用总数大于等于CDT的时候,如果此时新加入了一个报文,该报文如果要加入最长的队列,会被直接丢弃,如果该报文加入的不是最长队列,则该报文入队成功。
    2. 上限阈值HQO:当WFQ所有流队列里停车位占用总数等于HQO时,新加入的报文无论加入哪个流队列都会被直接丢弃。
  3. 调度机制:加权调度,通过IP precedence和报文大小计算,得到Firish Time,越小越先转发。FT=(Packct length)/(Precedence+1)
  4. 丢弃机制:尾丢弃
!
interface FastEthernet 0/0
 fair-queue
!
interface FastEthernet0/0
 fair-queue 164 1024  200             //CDT,子队列数量,预留给RSVP的队列
!
interface FastEthernet0/0
 hold-queue 3000 out                  //设置HQO

 

Conversations:256    //队列中子队列数量

Output queue:0/1000/64/0             64:CDT     1000:HQO

 

4.6 FBLLQ队列(FBLLQ=PQ+FBWFQ)

LLQ为基于类别的加权公平排队(FBWFQ)提供绝对优先排队功能,减少语音会话的抖动。LLQ相当于FBWFQ加上一个严格优先级队列,该队列优先级高于其他所有队列,非常适合时延敏感性应用。

调度机制:定义一个优先级队列来实现PQ,其他的队列还是执行FBWFQ调度。

interface FastEthernet0/0
 ip rtp priority  16384 16383 200           //port:16384-32767,前提该端口必须是FBWFQ

 

4.7 CBWFQ队列

CBWFQ和FBWFQ区别在于:class和flow区别,class类由人工划分,flow流由设备动态定义。

  1. 定义每个类加到指定队列中。未分类流量放到class-default队列中,执行FIFO;
  2. 调度机制:仍然是通过计算FT值来进行调度,没有高优先级队列的缺陷。
class-map match-all VoIP
 match protocol rtp audio
class-map match-all Business
 match protocol ftp
class-map match-all Control
 match protocol eigrp
class-map match-all Video
 match protocol rtp video
!
policy-map CBWFQ
 class Business
   bandwidth percent 30
 class VoIP
   bandwidth percent 20
 class Video
   bandwidth percent 30
 class Control
   bandwidth percent 5
 class class-default
   fair-queue                           //默认执行FIFO,修改为FBWFQ
!
interface FastEthernet0/0
  max-reserved-bandwidth 85         //默认qos预留带宽75%,修改为85%
  server-policy output CBWFQ
  ip nbar protocol-discovery

 

 

4.8 CBLLQ队列(CBLLQ=PQ+CBWFQ)

 CBLLQ队列在CBWFQ的基础上可以定义多个优先级队列;

class-map match-all VoIP
 match protocol rtp audio
class-map match-all Business
 match protocol ftp
class-map match-all Control
 match protocol eigrp
class-map match-all Video
 match protocol rtp video
!
policy-map CBLLQ
 class Control
   priority 100
 class VoIP
   priority percent 20
 class Business
   bandwidth percent 30
 class Video
   bandwidth percent 30
 class class-default
   fair-queue                           //默认执行FIFO,修改为FBWFQ
!
interface FastEthernet0/0
  server-policy output CBLLQ

 

priority:不仅定义了队列的数量,还保证了强制优先。定义强制优先队列,即PQ

bandwidth:仅仅定义了队列的数量,并没有保证强制优先,仍然执行FT调度。

 

priority和bandwidth区别:
  • 从应用上来讲,priority更适合应用到语音、视频或实时性比较高的业务流量上。原因在于它的严格优先(PQ),如果在policy map上同时有priorty和bandwidth class时,那么设为priority的class流量会被优先转发出去。
  • 当发生拥塞时,priority只保证指定的带宽(最大带宽),假设指定的priority的带宽是100Kbps,发生拥塞时priority的实际流量是150Kbps,那么,50Kbps的包流量会被丢弃。也就是说发生拥塞时,priority能发送的流量只有100Kbps。但吐过没有拥塞的话,发送流量可能会超过100Kbps。对于bandwidth来说,无论拥塞与否,流量都有可能超过100Kbps,不过发生拥塞时,至少可以保证100Kbps的带宽。多余的流量会与其它流量一起来争夺未被指定的带宽。

 4.9 Class-map注意点

错误用法:

class-map match-all Control
 match ip precedence 6 
 match ip precedence 7 

 使用上述方法,抓取不到ip precedence是6或者7的流量,上面的match是“且”的关系,因为是match-all;如果想抓取ip precedence是6或者7的流量可以写成如下两种形式:(用法与route-map类型

class-map match-all Control
 match ip precedence 6  7 
class-map match-any Voice
 match ip precedence 6 
 match ip precedence 7

 

 

 

 

 

 

 

posted @ 2022-04-18 17:08  Day__Day_Up  阅读(507)  评论(0编辑  收藏  举报