当該記事ではACIにおけるQoSの概要について解説します。後発の記事で各QoS Policyの設定方法やDPP, Dot1p Preservation についてもご紹介予定です。バージョン 5.2(7) をベースに記載します。以前のバージョンについては こちら の記事も合わせてご参照ください。
1. ACI QoS Overview
Classification
以下の要素に従ってトラフィックを識別可能
・Contract
・EPG
・DSCP or CoS
6つのユーザクラス (Level1 – 6) に分類可能
デフォルトはLevel3 (ベストエフォート)
Marking
・QoS Class に応じて、Ingress Leafにより VXLAN Outer Header の CoS, DEI値 が設定される
・Fabric内(SpineおよびEgress Leaf)ではこの値により QoS Class を判別し、優先制御を実施
・Egress Packet に対してCoS/DSCPのリマーキングを行うことも可能
Policing
・Access Port(Leaf downlink)において、Ingress および Egress方向でPolicing可能(Data Plane Policing)
・Shaping はサポートしていない。
2. ACI QoS Process Flow
ACIにおいて、Ingress Leaf / Spine / Egress Leaf でそれぞれ以下の通りの QoS 処理が行われます。
Ingress Leaf:Classification, Marking, Buffering, Queuing, Ingress Policing
Spine:Buffering, Queuing
Egress Leaf:Buffering, Queuing, Egress Policing

3. QoS Class
ACIでは3つの予約済みClassとユーザ定義可能な6つのClassが用意されている(4.0(1)より前のバージョンではユーザ定義可能なQoS Class は3つ) ACIではこの QoS Class の 優先度、Weight に応じて優先制御が行われる。
分類
|
Traffic type
|
scheduling
|
用途
|
CoS In VXLAN Header
|
DEI
|
ユーザ 利用可能
|
Level 6 user data
|
SP or WRR (WRR 0%)
|
|
2
|
1
|
Level 5 user data
|
SP or WRR (WRR 0%)
|
|
3
|
1
|
Level 4 user data
|
SP or WRR (WRR 0%)
|
|
5
|
1
|
Level 2 user data
|
SP or WRR (WRR 20%)
|
|
1
|
0
|
Level 1 user data
|
SP or WRR (WRR 20%)
|
|
2
|
0
|
Level 3 user data
|
(WRR 20%)
|
デフォルトクラス
|
0
|
0
|
システム 予約
|
APIC controller traffic
|
SP
|
APICとの送受信トラフィック
|
3
|
0
|
SPAN traffic
|
best effort
|
SPAN/ERSPAN用トラフィック
|
4
|
0
|
Control Traffic
|
SP
|
Fabric制御用(LACP, BGP, ISISなど)
|
5
|
0
|
Traceroute
|
best effort
|
システム正常性確認
|
6
|
0
|
・SP:Strict Priority(絶対優先)、WRR:Weighted Round Robin(カッコ内はデフォルト値)
・SPのキューが複数ある場合、優先度は Level3(最低優先), Level1, Level2…Level6(最優先) の順になる
・SPのキューにパケットが存在する場合は優先して処理が行われ、SPのキューが空になってからWRRキューの転送が開始されます。
・ACI内部でVXLANにカプセル化されてパケットが転送される際、Outer Header の CoS + DEI にセットされる値に従ってどのQoS Class に割り当てられたパケットかを判別する。ACIでは、DEIはパケットの廃棄可能性を示すのではなく単に QoS Class を判別するために使用されます。
QoS Class グローバル設定は Fabric > Access Policies > Policies > Global > QOS Class で行う。

4. QoS Classification
どのパケットをどの QoS Class に割り当てるかは以下の3つの設定方法がある。
(1) QoS in Contract :Contractに対し設定
Filterにマッチしたパケットを特定の QoS Class に割り当てる。
特定のEPG間の通信に QoS を適用したい場合や、L4-L7 Port 番号 を指定して QoS を適用したい場合に使用。
また、特定のEPGに依らずに、L4-L7 Port番号 を指定して QoS 処理を行いたいといった場合には vzAny-to-vzAny Contract で QoS Class を設定する方法で実装することが可能。
(2) Custom QoS : EPGに対し設定
Ingress Leaf に着信したオリジナルのパケットの CoS / DSCP 値 を元に QoS を適用したい場合に使用。
Egressパケットへの CoS/DSCP 値のリマーキングを行うことも可能。
(3) EPG Default Class : EPGに対し設定
特定のEPGを送信元とするトラフィックに対して QoS を適用したい場合に使用。
この3つの QoS Policy には優先順位があり、以下の通り処理される。

以下のように複数のQoS Policyが設定されている場合、優先度の高い順にポリシーの適用が行われます。

(1) Contract の QoS Policy に従い、Fabric全体でHTTPのトラフィックは QoS Class Level1 に割り当て
(2) Custom QoS に従い、EPG 3 に着信した DSCP:EF がセットされたパケットは QoS Class Level2 に割り当て
(3) (1), (2) のどちらにもマッチしないEPG 3 に着信した通信は EPG default Class に従って QoS Class Level3 に割り当て
各 QoS Policy の設定方法については次回の記事でご紹介します。