ASA防火墙上实现QoS


1、 实现要求:将总部与分公司的Site-to-Site ×××放入优先级队列,使×××的流量能够得以优先转发;将本人用的计算机放入优先级队列,让自己上网更快一些(一点私心,呵呵)。


2、 实现方案:×××的流量放入优先级队列比较好实现,对流量进行分类,直接匹配×××的流量,然后放入到优先级队列中,应用到外部接口。
而对于将指定的地址放入到优先级队列,就不能采用和×××一样的方式了。首先要建立一条访问列表,分类时匹配这条访问列表。这种情况下就不能应用到外部接口,原因为在防火墙上做了PAT转换,内部的地址到达外部接口时,IP地址已经进行了转换,转换为外部接口的公网地址,用于分类的访问列表就永远匹配不了了,指定计算机的IP地址也就永远无法放入优先级的队列了,那么就只有将策略应用到内部接口,在写访问列表时一定要注意方向,否则也不会产生效果。



3、 具体配置:


设置×××的qos

ASA# config t 
  
 
  

    ASA(config)# class-map ***-qos 
                                        //建立名为***-qos的分类 
  
 
  

    ASA(config-cmap)# match tunnel-group togg*** 
                        //匹配名字为togg***的***隧道 
  
 
  

    ASA(config-cmap)# match flow ip destination-address 
                 //匹配基于流的策略,将***的流量看做为流 
  
 
  

    ASA(config-cmap)# exit 
  
 
  

    ASA(config)# policy-map ***-qos 
                                             //建立名为***-qos的策略 
  
 
  

    ASA(config-pmap)# class ***-qos 
                                             //应用前面定义的***-qos分类 
  
 
  

    ASA(config-pmap-c)# priority 
                                           //将这个类设定为高优先级 
  
 
  

    ASA(config-pmap-c)# exit 
  
 
  

    ASA(config-pmap)# exit 
  
 
  

    ASA(config)# priority-queue outside 
                                   //在外部接口启用优先级队列 
  
 
  

    ASA(config-priority-queue)# queue-limit 2048 
                    //设定优先级队列的大小 
  
 
  

    ASA(config-priority-queue)# tx-ring-limit 256 
                    //设定在给定时间内允许等待的最大的包的数量 
  
 
  

    ASA(config-priority-queue)# exit 
  
 
  

    ASA(config)# service-policy ***-qos interface outside 
                 //将策略应用到外部接口 
  
 
  

      
  
 
  

    设置指定IP地址的qos 
  
 
  

    ASA(config)# access-list aclqos permit ip any host 192.168.16.148 
      //建立访问列表,注意方向性 
  
 
  

    ASA(config)# class-map aclqos 
                                                        //建立名为aclqos的分类 
  
 
  

    ASA(config-cmap)# match access-list aclqos 
                                      //匹配前面建立的访问列表 
  
 
  

    ASA(config-cmap)# exit 
  
 
  

    ASA(config)# policy-map aclqos 
  
 
  

    ASA(config-pmap)# class aclqos 
  
 
  

    ASA(config-pmap-c)# priority 
                                                         //将前面建立的基于访问列表的分类设定为高优先级 
  
 
  

    ASA(config-pmap-c)# exit 
  
 
  

    ASA(config-pmap)# exit 
  
 
  

    ASA(config)# priority-queue inside 
                                                  //在内部接口启用优先级队列 
  
 
  

    ASA(config-priority-queue)# queue-limit 2048 
  
 
  

    ASA(config-priority-queue)# tx-ring-limit 256 
  
 
  

    ASA(config-priority-queue)# exit 
  
 
  

    ASA(config)# service-policy aclqos interface inside 
                         //将策略应用到内部接口 
  
 
  

      
  
 
  

    验证配置: 
  
 
  

    ASA# sh priority-queue config 
                      //显示接口的优先级队列的设置 
  
 
  

      
  
 
  

    Priority-Queue Config interface inside 
            //内部接口的设置 
  
 
  
 
                   current         default         range 
  
 
  

    queue-limit 
        2048            2048            0 - 2048 
  
 
  

    tx-ring-limit 
      256             80              3 - 256 
  
 
  

      
  
 
  

    Priority-Queue Config interface outside 
                 //外部接口的设置 
  
 
  
 
                   current         default         range 
  
 
  

    queue-limit 
        2048            2048            0 - 2048 
  
 
  

    tx-ring-limit 
      256             80              3 - 256 
  
 
  

      
  
 
  

    ASA # sh priority-queue statistics 
                        //显示接口上优先级队列的统计信息 
  
 
  

      
  
 
  

    Priority-Queue Statistics interface inside 
         //内部接口的 
  
 
  

      
  
 
  

    Queue Type 
            = BE                       //尽力转发队列 
  
 
  

    Tail Drops 
            = 0 
  
 
  

    Reset Drops 
           = 0 
  
 
  

    Packets Transmit 
      = 10380155 
  
 
  

    Packets Enqueued 
      = 0 
  
 
  

    Current Q Length 
      = 0 
  
 
  

    Max Q Length 
          = 0 
  
 
  

      
  
 
  

    Queue Type 
            = LLQ                     //低延迟队列即高优先级 
  
 
  

    Tail Drops 
            = 0 
  
 
  

    Reset Drops 
           = 0 
  
 
  

    Packets Transmit 
      = 118366                     //传输的包的数量,也就是从内部接口转发给我的计算机的数据包 
  
 
  

    Packets Enqueued 
      = 0 
  
 
  

    Current Q Length 
      = 0 
  
 
  

    Max Q Length 
          = 0 
  
 
  

      
  
 
  

    Priority-Queue Statistics interface outside 
              //外部接口 
  
 
  

      
  
 
  

    Queue Type 
            = BE 
  
 
  

    Tail Drops 
            = 0 
  
 
  

    Reset Drops 
           = 0 
  
 
  

    Packets Transmit 
      = 52366206 
  
 
  

    Packets Enqueued 
      = 0 
  
 
  

    Current Q Length 
      = 0 
  
 
  

    Max Q Length 
          = 0 
  
 
  

      
  
 
  

    Queue Type 
            = LLQ 
  
 
  

    Tail Drops 
            = 0 
  
 
  

    Reset Drops 
           = 0 
  
 
  

    Packets Transmit 
      = 30711               //从外部接口通过×××转发到分公司的包的数量 
  
 
  

    Packets Enqueued 
      = 0 
  
 
  

    Current Q Length 
      = 0 
  
 
  

    Max Q Length 
          = 0 
  
 
  

      
  
 
  

    ASA # sh service-policy priority 
           //显示策略中具有优先级分类的统计信息 
  
 
  

      
  
 
  

    Interface inside: 
                                    //内部接口的 
  
 
  

     Service-policy: aclqos 
  
 
  
 
       Class-map: aclqos 
  
 
  
 
         Priority: 
  
 
  
 
           Interface inside: aggregate drop 0, aggregate transmit 118738 
  
 
  

      
  
 
  

    Interface outside: 
                                   //外部接口的 
  
 
  

     Service-policy: ***-qos 
  
 
  
 
       Class-map: ***-qos 
  
 
  
 
         Priority: 
  
 
  
 
           Interface outside: aggregate drop 0, aggregate transmit 30711

https://blog.51cto.com/mastzhang/648598