1. 程式人生 > 實用技巧 >ACL流策略

ACL流策略

QoS實現工具之MQC-qos設定

作者:上猶日期:2019-10-23 11:30:36

返回目錄:設定問題

QoS技術可以對網路中報文進行分類處理,根據優先順序提供不同的差分服務,如何實現這種差分服務呢?我們有一種強大的配置方法-模組化QoS命令列MQC(Modular QoS Command-Line)。下面就來介紹一下MQC。

MQC可以做什麼?

MQC,又叫流策略,是指通過將某些具有相同特徵的報文劃分為一類,併為這一類報文提供相同服務的配置方法。通過配置流策略,使用者可以定義報文分類規則匹配需要單獨處理的流量,然後將匹配的流量進行相應處理,達到自己想要的效果。通過MQC配置可以實現流量監管、重標記優先順序等QoS業務,也可以實現流量統計、策略路由等其他網路常用功能,功能強大,配置靈活。

MQC是如何實現的?

MQC的配置流程

MQC包含三個要素,分別是流分類(traffic classifier)、流行為(traffic behavior)和流策略(traffic policy)。三要素通過下面的方式配合使用完成對流量的處理:

  1. 配置流分類定義報文匹配規則
  2. 配置流行為確定報文處理動作
  3. 配置流策略,並將配置好的流分類和流行為繫結到一起
  4. 在指定檢視下應用流策略

配置流分類

當用戶想要對某類流量進行識別時,需要確定一組流量匹配規則,這個過程稱為定義流分類。分類方法豐富多樣,常用的報文分類規則有如下幾種

  1. MAC地址
  2. VLAN ID
  3. 802.1p優先順序
  4. EXP優先順序
  5. ACL
  6. DSCP優先順序
  7. IP優先順序
  8. 所有報文
  9. 出介面或入介面
通過命令traffic classifier classifier-name [ operator { and | or } ] [ precedence precedence-value ]配置流分類,然後在該流分類中通過if-macth命令配置具體的規則。

一個流分類中可以配置一條規則,也可以配置多條,多條規則之間的關係可以配置為and或者or。規則之間的關係配置為and或者or時,報文匹配流分類的要求不同:

以下面兩個流分類為例,對於tc1來說,報文必須同時匹配ACL2001(或ACL3001),802.1p優先順序為5和三層協議型別為IP協議三個規則時才屬於該類。

[switch] traffic classifier tc1 operator and
[switch-classifier-tc1] if-match acl 2001
[switch-classifier-tc1] if-match 8021p 5
[switch-classifier-tc1] if-match acl 3001
[switch-classifier-tc1] if-match protocol ip

對於tc2來說,報文匹配ACL3001或者報文802.1p優先順序為6時都屬於該類。

[switch] traffic classifier tc2 operator or 
[switch-classifier-tc2] if-match acl 3001
[switch-classifier-tc2] if-match 8021p 6

配置流行為

前面通過流分類對報文進行了分類,那分類的目的是什麼呢?就是對不同型別的報文(或者說不同業務)提供不同的服務,而不同的服務就是通過流行為來定義的。配置時需要通過命令traffic behaviorbehavior-name定義一個流行為,然後在流行為中配置具體的流動作。常用的流動作包括以下幾種:

如果配置流動作為重標記,表示對報文重新進行分類,可以重標記報文的802.1p優先順序、DSCP優先順序、本地優先順序、目的MAC地址、流ID等等。重標記報文的802.1p優先順序和DSCP優先順序會影響下游裝置對報文的QoS處理,不影響報文在本裝置的QoS處理;重標記本地優先順序則僅影響本裝置對報文的QoS處理。

在一個流行為中可以定義一個或多個動作,如下流行為tb1表示對匹配分類的報文進行流量監管,限速為4096kbit/s,同時進行流量統計。

[switch]traffic behavior tb1
[switch-behavior-tb1] car cir 4096
[switch-behavior-tb1] statistic enable

流行為tb2表示將匹配分類的報文重定向到下一跳10.10.10.1。

[switch] traffic behavior tb2
[switch-behavior-tb2] redirect ip-nexthop 10.10.10.1

不同的流動作之間可能會存在互斥,即同一個流行為中,某些動作不能同時配置。比如流動作deny與流映象之外的其他動作不能在一個流行為中配置。

ACL與MQC經常組合使用。ACL裡面的permit/deny與traffic behavior中的permit/deny組合使用時有如下四種情況:

配置流策略

前面配置的流分類、流行為是孤立的,本身沒任何意義,所以必須將兩者聯絡在一起才有意義,而流策略就是把兩者繫結起來。流分類規則和流行為定義好之後,通過命令traffic policypolicy-name [match-order{auto|config} ]配置一個流策略,然後通過classifierclassifier-namebehaviorbehavior-name將流分類和流行為繫結到一起,組成一個特定的策略。

以下面的配置為例,流策略tp1表示對匹配tc1規則的報文執行tb1的動作,對匹配tc2規則的報文執行tb2動作。

[switch] traffic policy tp1 match-order config
[switch-trafficpolicy-tp1] classifier tc1 behavior tb1
[switch-trafficpolicy-tp1] classifier tc2 behavior tb2

流策略tp1的配置順序為config,匹配順序由流分類規則優先順序決定:

  • 如果未配置優先順序,或者不支援流分類規則優先順序配置,則按照配置順序生效。tc1先配置,因此報文優先匹配tc1的規則,執行tb1的動作,匹配之後不會再進行下一步規則查詢。
  • 如果框式裝置配置了流分類規則優先順序,則按照優先順序配置大小生效,數值越小,優先順序越高。

如果流策略tp1的配置順序為auto,匹配順序由系統預先指定的流分類型別的優先順序決定:

  • 該優先順序由高到低依次為:二層規則+三層規則 > 高階ACL6規則 > 基本ACL6規則 > 二層規則 > 三層規則 > 自定義ACL規則(部分裝置在某些情況下,三層規則 > 二層規則)。
  • 流分類tc1中定義的規則屬於二層規則+三層規則,因此優先順序較高,報文優先匹配tc1的規則,執行tb1的動作,匹配之後不會執行tb2的流動作。

對於不支援配置match-order引數的盒式裝置,報文按照配置順序進行匹配。

應用流策略

流策略配置完之後,需要選擇該策略在裝置上生效的範圍。流策略可以應用在介面、VLAN和全域性的出方向和入方向,其中介面包括物理介面、子介面、VLANIF介面和Eth-Trunk介面等。以介面為例,在指定介面入方向應用某個流策略,表示對進入該介面且匹配流分類規則的流量執行指定動作。如下所示:

[switch] interface GigabitEthernet 1/0/1
[switch-GigabitEthernet1/0/1] traffic-policy tp1 inbound

同一臺裝置上面可以配置多個流策略,同一個流策略也可以應用在多個檢視下。因此報文有可能會同時匹配多個流策略,那到底哪個流策略會生效呢?根據流分類規則是否屬於同一類,分為以下兩種情況。

當流分類屬於同一類時,流策略的生效規則如下圖所示:

當流分類規則不屬於同一類時,流策略的生效規則如下圖所示:

比如,裝置上還配置了一個流策略tp2,且應用在VLAN30上。

[switch] traffic policy tp2 match-order config
[switch-trafficpolicy-tp2] classifier tc1 behavior tb1
[switch-trafficpolicy-tp2] quit
[switch] vlan 30
[switch-vlan30] traffic-policy tp2 inbound

從配置可以看出流分類規則均為tc1,但是因為介面的生效優先順序高於VLAN,因此只有流策略tp1生效。

MQC配置舉例

前面我們已經分別介紹了配置MQC的四個步驟,現在我們來看一下一個完整的MQC配置過程是怎樣的。

以下面的組網為例,假設部門1的使用者均屬於VLAN10,部門2的使用者均屬於VLAN20,使用者希望為部門1提供8Mbit/s的頻寬,為部門2提供6Mbit/s的頻寬。

此處省略介面和VLAN等基本配置。

[LSW1] traffic classifier bumen1
[LSW1-classifier- bumen1] if-match vlan-id 10 //匹配部門1的流量
[LSW1-classifier- bumen1] quit
[LSW1] traffic classifier bumen2
[LSW1-classifier- bumen2] if-match vlan-id 20 //匹配部門2的流量
[LSW1-classifier- bumen2] quit
[LSW1] traffic behavior bumen1
[LSW1-behavior-bumen1] car cir 8000 pir 10000 green pass //限制部門1的流量為8Mbit/s
[LSW1-behavior-bumen1] quit
[LSW1] traffic behavior bumen2
[LSW1-behavior-bumen2] car cir 6000 pir 10000 green pass //限制部門2的流量為6Mbit/s
[LSW1-behavior-bumen2] quit
[LSW1] traffic policy xiansu
[LSW1-trafficpolicy-xiansu] classifier bumen1 behavior bumen1 //將流分類和流行為繫結
[LSW1-trafficpolicy-xiansu] classifier bumen2 behavior bumen2
[LSW1-trafficpolicy-xiansu] quit
[LSW1] interface gigabitethernet 0/0/3
[LSW1-GigabitEthernet0/0/3] traffic-policy xiansu outbound //在接口出方向應用該策略
[LSW1-GigabitEthernet0/0/3] quit

小結

MQC作為一種實現QoS技術的理念,可以完成QoS技術中的流量監管和限速,報文的分類和重標記。除了MQC外,優先順序對映提供了另一種報文分類和標記的方法,前面提到的802.1p優先順序、DSCP優先順序和本地優先順序將在後面的優先順序對映專題中進行詳細介紹。