レイヤー 3 サービス クラス(CoS)
ジュニパークラウドネイティブルーターは、L3サービス品質(QoS)としても知られるレイヤー3サービスクラス(CoS)をサポートします。このトピックでは、サポートされるCoSメカニズムの概要、設定例、検証例を紹介します。
L3 CoSの概要
ネットワークで輻輳や遅延が発生した場合、データのランダムな損失を避けるために、一部のパケットに優先順位を付ける必要があります。サービス品質(QoS)としても知られるサービスクラス(CoS)は、電子メール、ストリーミングビデオ、音声、大容量ドキュメントファイル転送などの類似タイプのトラフィックをクラスに分割することで、この優先順位付けを実現します。その後、スループットやパケットロスなど、異なるレベルの優先度をグループごとに適用することで、トラフィックの動作を制御します。ジュニパークラウドネイティブルーターはCoSをサポートしており、トラフィックを区別または分類することができます。設定されたルールに従って、トラフィックをドロップするか、トラフィックの優先度を下げることができます。 サービスクラス の詳細については、Junosのドキュメントを参照してください。
クラウドネイティブルーターのCoSアプリケーションは、IPv4およびIPv6パケットヘッダーの差別化されたサービスフィールドに6ビットの差別化されたサービスコードポイント(DSCP)を使用するDiffServをサポートしています。IPv6では、DSCPはトラフィッククラスと呼ばれます。この設定では、DSCP値を使用して、着信パケットのCoS処理を決定します。DSCPフィールドは、パケットの変更された優先度をネクストホップに通知するためにも使用されます。
クラウドネイティブルーターがサポートするCoSメカニズム
Cloud-Native Routerは、分類子、ポリサー、書き換え/マーカーCoSメカニズムをサポートします。以下のセクションで、クラウドネイティブルーターのCoS実装について詳しく見てみましょう。
転送クラスと損失の優先度
転送クラスは、JCNRを通過するパケットに適用される転送ポリシーとマーキングポリシーに影響します。デフォルトでは、Cloud-Native Routerには転送クラスが定義されていません。8つのキューにマッピングされた最大16のカスタム転送クラスを定義できます。
クラウドネイティブルーターのCoS実装では、転送クラスと損失の優先度が書き換えルールとポリサーに使用されます。損失の優先度は、分類子によって低、中低、中高、高に設定されます。クラウドネイティブルーターのCoS実装における損失の優先度の使用方法の一部を次に示します。
| QoSブロック |
損失の優先度の使用方法 |
|---|---|
|
分類子 |
転送クラスと損失の優先度は、分類子によって設定されます。 |
|
書き換え |
損失の優先度は、新しいDSCP値を取得するためのトラフィッククラス(フォワーディングクラス)とともにインデックスとして使用されます。 |
| ポリサー |
カラー認識ポリサーのみが損失優先度を使用します。損失の優先度は、以下のようにトラフィックカラーにマッピングされます。
|
| スケジューラ | 転送クラスと損失の優先度は、厳密な優先度に基づいてトラフィックをキューイングするためのスケジューラへの入力です。 |
分類子
パケット分類とは、着信パケットの検査を指します。この機能は、パケットを特定の CoS サービス レベルに関連付けます。分類子は、受信パケットを転送クラスと損失優先度に関連付け、関連する転送クラスに基づいて、パケットを出力キューに割り当てます。2つの一般的なタイプの分類子がサポートされています。
-
動作集約分類子—動作集約(BA)は、JCNRに入るパケットに対して動作する分類方法です。パケットヘッダーのCoS値が調べられ、この1つのフィールドがパケットに適用されるCoS設定を決定します。BA 分類子を使用すると、DSCP(差別化されたサービスコードポイント)値と DSCP IPv6 値に基づいて、パケットの転送クラスと損失優先度を設定できます。BA 分類子はインターフェイスレベルで設定されます。 Behavior Aggregate Classifer の詳細については、Junosのドキュメントを参照してください。
-
マルチフィールドトラフィック分類子—マルチフィールド(MF)分類子は、パケットの送信元アドレスと宛先アドレス、送信元と宛先ポート番号など、パケット内の複数のフィールドを調べることができます。マルチフィールド分類子では、ファイアウォールフィルター(ACL)ルールに基づいてパケットの転送クラスと損失優先度を設定します。パケットがBAとMFの両方の分類子に一致する場合、MF分類子が優先されます。 Multified Traffic Classifier の詳細については、Junos のドキュメントを参照してください。
ポリサー
ポリサーを使用すると、特定のクラスのトラフィックを指定された帯域幅とバーストサイズに制限できます。ポリサーは、設定されたトラフィックレートとバーストサイズに対して各パケットを測定(測定)します。次に、パケットと測定結果をマーカーに渡し(書き換えルール)、測定結果に対応するパケット損失の優先度を割り当てます。ポリサーは、設定された特定のトラフィック制限のセットに基づいて、自動車の交通制御に使用される信号機の色に類似した2つまたは3つのカテゴリのいずれかに属するものとしてトラフィックフローを識別します。ポリサーは、パケットごと、またはトラフィッククラスごとに適用できます。 クラウドネイティブルーターのCoS実装は、16のポリサープロファイルをサポートします。 ポリサーの実装 の詳細については、Junosのドキュメントを参照してください。クラウドネイティブルーターのCoS実装では、ポリサーはシングルレート3カラーマーカー(srTCM)または2レート3カラーマーカー(trTCM)モードで動作します。ポリサーは、カラー認識モードまたは色覚異常モードでトラフィックカラーマーキングを実行できます。カラー認識モードでは、ポリサーは分類子によって派生したパケットのカラーを追加入力とみなします。色覚異常モードでは、ポリサーは新しい色を決定する際にパケットの色を考慮しません。以下の表で、各モードのさまざまな考慮事項を見ていきます。
-
シングルレート3カラー—シングルレート3カラーマーカー(srTCM)は、設定されたコミット情報レート(CIR)、コミットバーストサイズ(CBS)、ピークバーストサイズ(PBS)に基づいてトラフィックを計測します。シングルレートの3カラーポリサーは、ピーク到着率ではなくパケット長に基づいてサービスが構成されている場合に最も役立ちます。トラフィックは、以下の考慮事項に基づいて、緑、黄、赤の3つのカテゴリのいずれかに属するものとしてマークされます。
表2:カラー認識srTCM 受信カラー パケットの測定対象
考えられるケース
新しい色
パケットに対するアクション
緑色
CIR、CBS、PBS
CBS以下
緑色
ドロップされていません
CBSより上、PBSより下
黄色 書き換えルールを使用してトラフィッククラスを変更します。
PBS以上
赤
破棄
黄色
PBS
PBS以下
黄色
書き換えルールを使用してトラフィッククラスを変更します。
PBS以上
赤
破棄 赤 従量制なし NA 赤 破棄 表3:色覚異常srTCM パケットの測定対象
考えられるケース
新しい色
パケットに対するアクション
CIR、CBS、PBS
CBS以下
緑色
ドロップされていません
CBSより上、PBSより下
黄色 書き換えルールを使用してトラフィッククラスを変更します。
PBS以上
赤
破棄
-
ツーレートスリーカラー—2レートスリーカラーマーカー(trTCM)は、設定されたCIRとピーク情報レート(PIR)に基づいてトラフィックを計測します。2 レート 3 カラー ポリサーは、サービスが必ずしもパケットの長さではなく到着レートに従って構成されている場合に最も役立ちます。トラフィックは、以下の考慮事項に基づいて、次の3つのカテゴリのいずれかに属するものとしてマークされます。
表4:カラー認識trTCM 受信カラー パケットの測定対象
考えられるケース
新しい色
パケットに対するアクション
緑色
CIR、PIR
CIR以下
緑色
ドロップされていません
CIRを上回るがPIRを下回る
黄色 書き換えルールを使用してトラフィッククラスを変更します。
PIR以上
赤
破棄
黄色
PIR
PIR以下
黄色
書き換えルールを使用してトラフィッククラスを変更します。
PIR以上
赤
破棄 赤 従量制なし NA 赤 破棄 表5:色覚異常trTCM パケットの測定対象
考えられるケース
新しい色
パケットに対するアクション
CIR、PIR
CIR以下
緑色
ドロップされていません
CIRを上回るがPIRを下回る
黄色 書き換えルールを使用してトラフィッククラスを変更します。
PIR以上
赤
破棄
ポリサーによってマークされた色は、次のように損失の優先度にマップされます。
|
カラー |
損失の優先度 |
|---|---|
|
緑色 |
低い |
|
黄色 |
中-低(色を損失の優先度にマッピングしている間は、中-高は使用されません) |
|
赤 |
高い |
書き換え/マーカー
書き換えルールまたはマーカーは、発信パケットに適切なCoSビットを設定します。これにより、次のダウンストリームのルーティングデバイスは、パケットを適切なサービスグループに分類できます。アウトバウンドパケットの書き換え(マーキング)は、ルーティングデバイスがネットワークの境界にあり、ターゲットピアのポリシーを満たすためにCoS値を変更する必要がある場合に便利です。書き換えプロファイルはインターフェイスに適用され、分類子やポリサーの計測結果から導き出された転送クラスと損失の優先度に基づきます。Cloud-Native Router書き換えルールは、外部IPv4/IPv6 DSCPマーキングの内部IPヘッダーDSCPフィールドへのコピーと、MPLS EXPビットマーキングをサポートしています。Cloud-Native Routerは、16種類の書き換えプロファイルをサポートしています。 ルールの書き換え の詳細については、Junosのドキュメントを参照してください。
クラウドネイティブルーターのCoS実装は、どのCoSブロックにも一致しないトラフィックに対する暗黙的なベストエフォート処理をサポートしていません。ベストエフォート処理には、明示的なキャッチオールルールを設定する必要があります。
クラウドネイティブルーターのCoS実装は、トンネル化されたパケット(MPLSoUDPおよびVXLAN)に対してのみ、外部IPヘッダーのDSCP値を変更します。
スケジューラ
スケジューラは、Cloud-Native RouterのCoS実装の最後のブロックで、パケットの優先度を計算します。Cloud-Native Routerは、優先度の高い順から低い順に、厳密な優先度8キュースケジューラを実装しています。転送クラスは、スケジューラの優先度に直接マッピングされます。Cloud-Native Routerは、デプロイメントヘルムチャートで最大4つのスケジューラプロファイルと、最大16のスケジューラマップとフォワーディングクラスをサポートします。ス ケジューラ の詳細については、Junosのドキュメントを参照してください。以下の表に示すように、8つの優先度のいずれかでスケジューラを設定できます。スケジューラの優先度はすでにインターフェイスキュー(8キュー)にマッピングされていることに注意してください。
|
優先度 |
スケジューリングの優先度(キュー) |
|---|---|
|
高い |
スケジューリングの優先度1 |
|
低 |
スケジューリングの優先度 7 (最小) |
|
低-高 |
スケジューリングの優先度 5 |
|
低遅延 |
スケジューリングの優先度 4 |
|
低-中 |
スケジューリングの優先度6 |
|
中高 |
スケジューリングの優先度2 |
|
中-低 |
スケジューリングの優先度3 |
|
ストリクトハイ |
スケジューリング優先度0(最高) |
ドロッパーとシェイパー
スケジューラブロックには、スポイトモジュールとシェーパーモジュールも含まれています。
- ドロッパー—DPDKドロッパーモジュールは、輻輳を回避するためにスケジューラブロックに到着したパケットをドロップします。ドロップは、設定されたWRED(Weighted Random Early Detection)ドロッププロファイルマップに基づいて実行されます。深刻な輻輳が発生した場合、ドロッパーモジュールがテールドロップを実行し、その結果、到着したすべてのパケットがドロップされることがあります。ドロッププロファイルは、スケジューラキューごとに適用され、パケット損失の優先度に基づく場合があります。スケジューラごとに最大32のドロッププロファイルと3つのドロッププロファイルマップがサポートされます。 ドロッパー の詳細については、Junosのドキュメントを参照してください。
-
シェーパー—シェーパーまたは送信レートは、エグレス キューごとのトラフィックをシェーピングするために使用されます。シェーパーは、キューの送信レートを制限することで、優先度の高いキューが優先度の低いキューを枯渇させるのを防ぐことができます。シェーピングレートは、スケジューラキューに適用されます。
サポートされているインターフェイス
Cloud-Native Routerは、CoS実装のために以下のインターフェイスをサポートしています。
| CoSコンポーネント/インターフェイスタイプ |
ポッドインターフェイス |
ファブリックインターフェイス |
IRB インターフェイス |
|---|---|---|---|
|
分類子 |
対応 |
対応 |
対応 |
|
ポリサー |
対応 |
対応 |
対応 |
|
マーカー |
対応 |
対応 |
対応 |
| スケジューラ | 未対応 | 対応 | 未対応 |
L3 CoS設定
転送クラスを設定する
Cloud-Native Routerには、デフォルトで設定された転送クラスがありません。8つのキューにマッピングされた最大16の転送クラスを設定できます。キュー番号はスケジューラ設定で定義された優先度から派生し、キュー番号と1対1でマッピングされるため、ユーザー定義のキューマッピングは無視されます。
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set class-of-service forwarding-classes class af11 queue-num 3
set class-of-service forwarding-classes class af12 queue-num 3
set class-of-service forwarding-classes class af13 queue-num 3
set class-of-service forwarding-classes class af21 queue-num 4
set class-of-service forwarding-classes class af22 queue-num 4
set class-of-service forwarding-classes class af23 queue-num 4
set class-of-service forwarding-classes class af31 queue-num 5
set class-of-service forwarding-classes class af32 queue-num 5
set class-of-service forwarding-classes class af33 queue-num 5
set class-of-service forwarding-classes class cs1 queue-num 6
set class-of-service forwarding-classes class cs2 queue-num 6
set class-of-service forwarding-classes class cs3 queue-num 7
set class-of-service forwarding-classes class cs4 queue-num 7
set class-of-service forwarding-classes class ef queue-num 1
set class-of-service forwarding-classes class nc1 queue-num 0
set class-of-service forwarding-classes class nc2 queue-num 0
crpdSelector:
matchLabels:
node: worker
分類子の設定
BA分類子を設定し、インターフェイスに適用することができます。
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set class-of-service classifiers dscp BA_1 forwarding-class af11 loss-priority high code-points 000001
set class-of-service classifiers dscp BA_1 forwarding-class af11 loss-priority low code-points 001010
set class-of-service classifiers dscp BA_1 forwarding-class af11 loss-priority medium-high code-points 001110
set class-of-service classifiers dscp BA_1 forwarding-class af11 loss-priority medium-low code-points 001100
set class-of-service classifiers dscp BA_1 forwarding-class ef loss-priority low code-points 101111
set class-of-service classifiers dscp BA_1 forwarding-class nc1 loss-priority low code-points 110000
set class-of-service classifiers dscp BA_1 forwarding-class nc1 loss-priority low code-points 111000
set class-of-service classifiers dscp-ipv6 BA6_1 forwarding-class ef loss-priority low code-points 101111
set class-of-service classifiers dscp-ipv6 BA6_1 forwarding-class nc2 loss-priority high code-points 111000
set class-of-service interfaces eno2 unit 0 classifiers dscp BA_1
set class-of-service interfaces eno2 unit 0 classifiers dscp-ipv6 BA6_1
crpdSelector:
matchLabels:
node: worker
MF分類子をファイアウォールフィルターとして設定できます。
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set firewall family inet filter MCFF_1 term 1 from source-port 1001
set firewall family inet filter MCFF_1 term 1 then forwarding-class af11
set firewall family inet filter MCFF_1 term 1 then loss-priority medium-low
set firewall family inet filter MCFF_1 term 2 from icmp-type echo-request
set firewall family inet filter MCFF_1 term 2 then forwarding-class af31
set firewall family inet filter MCFF_1 term 2 then loss-priority medium-low
set firewall family inet filter MCFF_1 term 3 then accept
set firewall family inet6 filter MCFF6_1 term 1 from source-port 1001
set firewall family inet6 filter MCFF6_1 term 1 then forwarding-class af11
set firewall family inet6 filter MCFF6_1 term 1 then loss-priority low
set firewall family inet6 filter MCFF6_1 term 2 then accept
set interfaces eno2 unit 0 family inet filter input MCFF_1
set interfaces eno2 unit 0 family inet6 filter input MCFF6_1
crpdSelector:
matchLabels:
node: worker
ポリサーの設定
ポリサーをアクションタイプ three-color-policer 以下のように設定できます。
シングルレートスリーカラーメーター(srTCM)ポリサー:
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set firewall three-color-policer srTCM_1 action loss-priority high then discard
set firewall three-color-policer srTCM_1 single-rate color-aware
set firewall three-color-policer srTCM_1 single-rate committed-information-rate 500m
set firewall three-color-policer srTCM_1 single-rate committed-burst-size 20k
set firewall three-color-policer srTCM_1 single-rate excess-burst-size 20k
set firewall family inet filter FF_1 term 1 then three-color-policer single-rate srTCM_1
set firewall family inet6 filter FF6_1 term 1 then three-color-policer single-rate srTCM_1
crpdSelector:
matchLabels:
node: worker
ツーレートスリーカラーメーター(trTCM)ポリサー:
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set firewall three-color-policer trTCM_1 action loss-priority high then discard
set firewall three-color-policer trTCM_1 two-rate color-aware
set firewall three-color-policer trTCM_1 two-rate committed-information-rate 100m
set firewall three-color-policer trTCM_1 two-rate committed-burst-size 2048
set firewall three-color-policer trTCM_1 two-rate peak-information-rate 200m
set firewall three-color-policer trTCM_1 two-rate peak-burst-size 2048
set firewall family inet filter FF_1 term 1 from forwarding-class af11
set firewall family inet filter FF_1 term 1 then three-color-policer two-rate trTCM_1
set firewall family inet6 filter FF6_1 term 1 from forwarding-class af11
set firewall family inet6 filter FF6_1 term 1 then three-color-policer two-rate trTCM_1
crpdSelector:
matchLabels:
node: worker
ポリサーで分類子を設定できます。
ポリサー付きBA分類子:
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set firewall family inet filter FF_1 term 1 from forwarding-class af11
set firewall family inet filter FF_1 term 1 then three-color-policer single-rate srTCM_1
set firewall family inet6 filter FF6_1 term 1 from forwarding-class af11
set firewall family inet6 filter FF6_1 term 1 then three-color-policer single-rate srTCM_1
set class-of-service interfaces eno2 unit 0 classifiers dscp BA_1
set class-of-service interfaces eno2 unit 0 classifiers dscp-ipv6 BA6_1
set interfaces eno2 unit 0 family inet filter input FF_1
set interfaces eno2 unit 0 family inet6 filter input FF6_1
crpdSelector:
matchLabels:
node: worker
ポリサーを備えたファイアウォールフィルターとしてのMF分類子:
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set firewall family inet filter MCFF_1 term 1 from source-port 1001
set firewall family inet filter MCFF_1 term 1 then forwarding-class af11
set firewall family inet filter MCFF_1 term 1 then three-color-policer single-rate srTCM_1
set firewall family inet filter MCFF_1 term 2 from icmp-type echo-request
set firewall family inet filter MCFF_1 term 2 then forwarding-class af31
set firewall family inet filter MCFF_1 term 2 then three-color-policer single-rate srTCM_1
set firewall family inet filter MCFF_1 term 3 then accept
set firewall family inet6 filter MCFF6_1 term 1 from source-port 1001
set firewall family inet6 filter MCFF6_1 term 1 then forwarding-class af11
set firewall family inet6 filter MCFF6_1 term 1 then three-color-policer single-rate srTCM_1
set firewall family inet6 filter MCFF6_1 term 2 then accept
set interfaces eno2 unit 0 family inet filter input MCFF_1
set interfaces eno2 unit 0 family inet6 filter input MCFF6_1
crpdSelector:
matchLabels:
node: worker
書き換え/マーカーの設定
書き換え/マーカーは次のように設定できます。
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set class-of-service rewrite-rules dscp RE_1 forwarding-class af11 loss-priority high code-point 010010
set class-of-service rewrite-rules dscp RE_1 forwarding-class af11 loss-priority low code-point 001100
set class-of-service rewrite-rules dscp RE_1 forwarding-class af11 loss-priority medium-high code-point 000001
set class-of-service rewrite-rules dscp RE_1 forwarding-class af11 loss-priority medium-low code-point 001110
set class-of-service rewrite-rules dscp RE_1 forwarding-class ef loss-priority low code-point 001010
set class-of-service rewrite-rules dscp RE_1 forwarding-class ef loss-priority medium-high code-point 001001
set class-of-service rewrite-rules dscp-ipv6 RE6_1 forwarding-class af11 loss-priority high code-point 010010
set class-of-service rewrite-rules dscp-ipv6 RE6_1 forwarding-class af11 loss-priority low code-point 001100
set class-of-service rewrite-rules dscp-ipv6 RE6_1 forwarding-class af11 loss-priority medium-high code-point 000001
set class-of-service rewrite-rules dscp-ipv6 RE6_1 forwarding-class af11 loss-priority medium-low code-point 001110
set class-of-service rewrite-rules dscp-ipv6 RE6_1 forwarding-class ef loss-priority low code-point 001001
set class-of-service interfaces eno3 unit 0 rewrite-rules dscp RE_1
set class-of-service interfaces eno3 unit 0 rewrite-rules dscp-ipv6 RE6_1
crpdSelector:
matchLabels:
node: worker
トンネルパケットのMPLS Exp書き換え:
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set class-of-service rewrite-rules exp RE_3 forwarding-class af11 loss-priority low code-point 111
set class-of-service rewrite-rules exp RE_3 forwarding-class af11 loss-priority medium-high code-point 101
set class-of-service rewrite-rules exp RE_3 forwarding-class af11 loss-priority medium-low code-point 110
set class-of-service interfaces eno3 unit 0 rewrite-rules exp RE_3
crpdSelector:
matchLabels:
node: worker
スケジューラの設定
スケジューラは、8つの優先度のいずれかに設定できます。スケジューラマップは、スケジューラマッピングへの転送クラスを設定し、インターフェイスレベルで適用されます。
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set class-of-service schedulers S1 priority medium-high
set class-of-service schedulers S2 priority strict-high
set class-of-service schedulers S3 priority high
set class-of-service schedulers S4 priority low
set class-of-service scheduler-maps VOICE-SCHED-MAP forwarding-class af11 scheduler S1
set class-of-service scheduler-maps VOICE-SCHED-MAP forwarding-class af12 scheduler S2
set class-of-service scheduler-maps VOICE-SCHED-MAP forwarding-class ef scheduler S3
set class-of-service scheduler-maps VOICE-SCHED-MAP forwarding-class nc1 scheduler S4
set class-of-service interfaces eno2 scheduler-map VOICE-SCHED-MAP
crpdSelector:
matchLabels:
node: worker
qos-scheduler-profileにマッピングされている場合にのみ有効です。スケジューラプロファイルには、CPUと帯域幅の割り当てを設定する必要があります。詳細については、Helm Chartのカスタマイズを参照してください。
ドロッパーとシェーパーの設定
スケジューラブロック内でドロッパーモジュールとシェーパーモジュールを設定できます。ドロッププロファイルマップを定義し、送信レートとともにスケジューラに割り当てます。
apiVersion: configplane.juniper.net/v1
kind: Configlet
metadata:
name: configlet-sample
namespace: jcnr
spec:
config: |-
set class-of-service drop-profiles dp1 min-threshold 25
set class-of-service drop-profiles dp1 max-threshold 75
set class-of-service drop-profiles dp1 mark-probablility-denominator 90
set class-of-service drop-profiles dp2 min-threshold 35
set class-of-service drop-profiles dp2 max-threshold 60
set class-of-service drop-profiles dp2 mark-probablility-denominator 80
set class-of-service schedulers S1 drop-profile-map loss-priority low protocol any drop-profile dp2
set class-of-service schedulers S1 drop-profile-map loss-priority high protocol any drop-profile dp2
set class-of-service schedulers S1 drop-profile-map loss-priority medium-high protocol any drop-profile dp1
set class-of-service schedulers S1 priority low
set class-of-service schedulers S1 transmit-rate 50M
set class-of-service schedulers S2 drop-profile-map loss-priority any protocol any drop-profile dp1
set class-of-service schedulers S2 priority high
set class-of-service schedulers S2 transmit-rate 50M
set class-of-service scheduler-maps VOICE-SCHED-MAP forwarding-class af11 scheduler S1
set class-of-service scheduler-maps VOICE-SCHED-MAP forwarding-class af12 scheduler S2
set class-of-service interfaces eno2 scheduler-map VOICE-SCHED-MAP
crpdSelector:
matchLabels:
node: worker
L3 CoS検証
L3 CoS設定を確認するためのCLIコマンド
- cRPDでの分類子設定の確認
- vRouterでCoS分類子を検証する
- 書き換えルールの検証
- MF 分類子の ACL を検証する
- ポリサー統計の検証
- スケジューラ統計情報の検証
- インターフェイスに適用されたCoS機能の検証
cRPDでの分類子設定の確認
cRPDシェルで以下のコマンドを使用して、L3 CoS設定を検証できます。
show class-of-service classifierコマンドを使用して分類子の設定を確認します。出力例を以下に示します。user@host> show class-of-service classifier Classifier: BA_1, Code point type: dscp Code point Forwarding class Loss priority 000001 af11 high 001000 cs1 medium-high 001010 af11 low 001100 af11 medium-low 001110 af11 medium-high 010000 cs1 medium-high 010010 af21 medium-low 010100 af22 medium-high 010110 af23 high 011100 af32 high 101111 ef low 110000 nc1 low 111000 nc1 low 111010 af31 low Classifier: BA6_1, Code point type: dscp-ipv6 Code point Forwarding class Loss priority 001010 af33 low 010000 cs2 medium-high 011000 cs3 medium-low 101111 ef low 110000 cs4 medium-low 111000 nc2 high
show class-of-service code-point-aliasesコマンドを使用して、code-point-alisasesの設定を確認します。出力例を以下に示します。user@host> show class-of-service code-point-aliases Code point type: dscp Alias Bit pattern af11 001010 af12 001100 af13 001110 af21 010010 af22 010100 af23 010110 af31 011010 af32 011100 af33 011110 af41 100010 af42 100100 af43 100110 be 000000 cs1 001000 cs2 010000 cs3 011000 cs4 100000 cs5 101000 cs6 110000 cs7 111000 ef 101110 nc1 110000 nc2 111000 Code point type: dscp-ipv6 Alias Bit pattern af11 001010 af12 001100 af13 001110 af21 010010 af22 010100 af23 010110 af31 011010 af32 011100 af33 011110 af41 100010 af42 100100 af43 100110 be 000000 cs1 001000 cs2 010000 cs3 011000 cs4 100000 cs5 101000 cs6 110000 cs7 111000 ef 101110 nc1 110000 nc2 111000
show class-of-service interfaceコマンドを使用して、インターフェイス上のCoS設定を確認します。出力例を以下に示します。user@host> show class-of-service interface eno2 Physical interface: eno2 Maximum usable queues: 8, Queues in use: 8 Logical interface: eno2.0 Object Name Type Classifier BA_1 dscp Classifier BA6_1 dscp-ipv6
show class-of-service rewrite-ruleコマンドを使用して、書き換えルールの設定を確認します。出力例を以下に示します。user@host> show class-of-service rewrite-rule Rewrite rule: RE_1, Code point type: dscp Forwarding class Loss priority Code point ef low 100001 af11 low 000010 af11 high 000101 af11 medium-low 000011 af11 medium-high 000100 af21 medium-low 000110 af22 medium-high 000111 af23 high 001000 af31 low 001111 af32 high 001010 cs1 medium-high 001011 nc1 low 001101 Rewrite rule: RE6_1, Code point type: dscp-ipv6 Forwarding class Loss priority Code point ef low 000001 af33 low 001110 cs2 medium-high 010011 cs3 medium-low 101010 cs4 medium-low 111111 nc2 high 111100 Rewrite rule: RE_3, Code point type: exp Forwarding class Loss priority Code point af11 low 111 af11 medium-low 110 af11 medium-high 101
-
show class-of-service schedulersコマンドを使用して、スケジューラ、ドロッパー、シェーパーの設定を確認します。出力例を以下に示します。user@host> show class-of-service schedulers S1 { transmit-rate 50m; drop-profile-map loss-priority low protocol any drop-profile dp2; drop-profile-map loss-priority high protocol any drop-profile dp2; drop-profile-map loss-priority medium-high protocol any drop-profile dp1; priority low; } S2 { transmit-rate 50m; drop-profile-map loss-priority any protocol any drop-profile dp1; priority high; }
vRouterでCoS分類子を検証する
bash-5.1# qosdpdk --list cla Classifer name: BA_1 Traffic-class: dscp =============================================================== code-points loss priority forwarding-class-id =============================================================== 000000(0) n/a n/a 000001(1) high 65 000010(2) n/a n/a 000011(3) n/a n/a 000100(4) n/a n/a 000101(5) n/a n/a 000110(6) n/a n/a 000111(7) n/a n/a 001000(8) medium-high 74 001001(9) n/a n/a 001010(10) low 65 001011(11) n/a n/a 001100(12) medium-low 65 001101(13) n/a n/a 001110(14) medium-high 65 001111(15) n/a n/a 010000(16) medium-high 74 010001(17) n/a n/a 010010(18) medium-low 68 010011(19) n/a n/a 010100(20) medium-high 69 010101(21) n/a n/a 010110(22) high 70 010111(23) n/a n/a 011000(24) n/a n/a 011001(25) n/a n/a 011010(26) n/a n/a 011011(27) n/a n/a 011100(28) high 72 011101(29) n/a n/a 011110(30) n/a n/a 011111(31) n/a n/a ====================================================================== Classifer name: BA6_1 Traffic-class: dscpv6 =============================================================== code-points loss priority forwarding-class-id =============================================================== 000000(0) n/a n/a 000001(1) n/a n/a 000010(2) n/a n/a 000011(3) n/a n/a 000100(4) n/a n/a 000101(5) n/a n/a 000110(6) n/a n/a 000111(7) n/a n/a 001000(8) n/a n/a 001001(9) n/a n/a 001010(10) low 73 001011(11) n/a n/a 001100(12) n/a n/a 001101(13) n/a n/a 001110(14) n/a n/a 001111(15) n/a n/a 010000(16) medium-high 75 010001(17) n/a n/a 010010(18) n/a n/a 010011(19) n/a n/a 010100(20) n/a n/a 010101(21) n/a n/a 010110(22) n/a n/a 010111(23) n/a n/a 011000(24) medium-low 76 011001(25) n/a n/a 011010(26) n/a n/a 011011(27) n/a n/a 011100(28) n/a n/a 011101(29) n/a n/a 011110(30) n/a n/a 011111(31) n/a n/a ======================================================================
書き換えルールの検証
bash-5.1# qosdpdk --list re-write Re-Write name: RE_1 Traffic-class: dscp ====================================================================== loss priority Forwarding-class re-write prio ====================================================================== low 0 001100(12) low 1 n/a low 2 n/a low 3 101111(47) low 4 001010(10) low 5 010100(20) low 6 111010(58) low 7 011100(28) low 8 n/a low 9 n/a low 10 010000(16) low 11 n/a low 12 n/a low 13 n/a low 14 n/a low 15 111100(60) high 0 010010(18) high 1 n/a high 2 n/a high 3 n/a high 4 n/a high 5 n/a high 6 n/a high 7 n/a high 8 n/a high 9 n/a high 10 n/a high 11 n/a high 12 n/a high 13 n/a high 14 n/a high 15 n/a medium-low 0 001110(14) medium-low 1 110000(48) medium-low 2 010110(22) medium-low 3 100000(32) medium-low 4 n/a medium-low 5 n/a medium-low 6 n/a medium-low 7 n/a medium-low 8 n/a medium-low 9 n/a medium-low 10 n/a medium-low 11 n/a medium-low 12 n/a medium-low 13 n/a medium-low 14 n/a medium-low 15 n/a medium-high 0 000001(1) medium-high 1 n/a medium-high 2 n/a medium-high 3 n/a medium-high 4 001001(9) medium-high 5 n/a medium-high 6 n/a medium-high 7 n/a medium-high 8 n/a medium-high 9 n/a medium-high 10 n/a medium-high 11 n/a medium-high 12 n/a medium-high 13 n/a medium-high 14 n/a medium-high 15 n/a ====================================================================== Re-Write name: RE6_1 Traffic-class: dscpv6 ====================================================================== loss priority Forwarding-class re-write prio ====================================================================== low 0 001100(12) low 1 n/a low 2 n/a low 3 101111(47) low 4 001001(9) low 5 010100(20) low 6 111010(58) low 7 011100(28) low 8 n/a low 9 n/a low 10 010000(16) low 11 n/a low 12 n/a low 13 n/a low 14 n/a low 15 111100(60) high 0 010010(18) high 1 n/a high 2 n/a high 3 n/a high 4 n/a high 5 n/a high 6 n/a high 7 n/a high 8 n/a high 9 n/a high 10 n/a high 11 n/a high 12 n/a high 13 n/a high 14 n/a high 15 n/a medium-low 0 001110(14) medium-low 1 110000(48) medium-low 2 010110(22) medium-low 3 100000(32) medium-low 4 n/a medium-low 5 n/a medium-low 6 n/a medium-low 7 n/a medium-low 8 n/a medium-low 9 n/a medium-low 10 n/a medium-low 11 n/a medium-low 12 n/a medium-low 13 n/a medium-low 14 n/a medium-low 15 n/a medium-high 0 000001(1) medium-high 1 n/a medium-high 2 n/a medium-high 3 n/a medium-high 4 n/a medium-high 5 n/a medium-high 6 n/a medium-high 7 n/a medium-high 8 n/a medium-high 9 n/a medium-high 10 n/a medium-high 11 n/a medium-high 12 n/a medium-high 13 n/a medium-high 14 n/a medium-high 15 n/a ======================================================================
MF 分類子の ACL を検証する
bash-5.1# acl --list-filters --family inet ======================================= Filter: MCFF_3 ======================================= Term: 1 ----- Priority: 256 Src ports: [1005 - 1005] POLICER Id: 0 Action: policer (V4MCFF_31trTCM_2) Action: fc (af11) ======================================= ======================================= Filter: MCFF_3 ======================================= Term: 2 ----- Priority: 255 ICMP Type: 8 POLICER Id: 1 Action: policer (V4MCFF_32trTCM_2) Action: fc (af31) ======================================= ======================================= Filter: MCFF_3 ======================================= Term: 3 ----- Priority: 254 Action: accept (n/a) ======================================= bash-5.1# bash-5.1# acl --list-filters --family inet6 ======================================= Filter: MCFF6_3 ======================================= Term: 1 ----- Priority: 256 Dest IP: ::/0 Src IP: ::/0 Src ports: [1005 - 1005] POLICER Id: 2 Action: policer (V6MCFF6_31trTCM_2) Action: fc (af11) ======================================= ======================================= Filter: MCFF6_3 ======================================= Term: 2 ----- Priority: 255 Dest IP: ::/0 Src IP: ::/0 Dst ports: [2152 - 2152] POLICER Id: 3 Action: policer (V6MCFF6_32trTCM_2) Action: fc (nc2) ======================================= ======================================= Filter: MCFF6_3 ======================================= Term: 3 ----- Priority: 254 Dest IP: ::/0 Src IP: ::/0 Action: accept (n/a) ======================================= bash-5.1#
V4MCFF_31trTCM_2があり、用語2には同じポリサーsrTCM_2.のポリサーインスタンスV4MCFF_32trTCM_2があります
ポリサー統計の検証
bash-5.1# qosdpdk --get policer --name V4MCFF_32trTCM_2
=====================================
Policer parameters:
=====================================
policer name: V4MCFF_32trTCM_2
policer id: 1
policer type: trTCM
policer loss_priority: high
policer tcm_action: tcm_discard
policer color type: color_aware
policer_cir: 6250000
policer_pir: 8750000
policer_cbs: 10000
policer_pbs: 10000
rx_pkts: 1
rx_bytes: 54
drop_pkts: 1
drop_bytes: 54
=====================================
bash-5.1# acl --family inet --filter FF_1 --action V4FF_11srTCM_1
inet filter "FF_1": Policer "V4FF_11srTCM_1"
Rx Packets: 1 Rx Bytes: 54
Dropped Packets: 1 Dropped Bytes: 54
スケジューラ統計情報の検証
bash-5.1# qosdpdk --get sch --name VOICE-SCHED-MAP
Fetch Qos FC info
Scheduler name: VOICE-SCHED-MAP Scheduler Index: 0
================================================================
priority forwarding shaping drop
class rate profiles
low,high,med
================================================================
strict-high(0) none NA NA,NA,NA
high(1) af12(65) 50.000 Mbps 0,0,0
medium-high(2) none NA NA,NA,NA
medium-low(3) none NA NA,NA,NA
low-latency(4) none NA NA,NA,NA
low-high(5) none NA NA,NA,NA
low-medium(6) none NA NA,NA,NA
low(7) af11(64) 50.000 Mbps 1,1,0
ドロッパーの統計情報を確認します。
bash-5.1# qosdpdk --get dropper --name dp1
Fetch Qos FC info
Drop Profiles
============================================================
Idx Name Min Max Mark Probability
Threshold Threshold Denominator
============================================================
0 dp1 25 75 90
インターフェイスレート統計を確認します。
bash-5.1# scheduler --rate Interface rate statistics ------------------------- Interface Vif Scheduler Sched-core-Rx Sched-Port-Rx Sched-Port-Tx ID core Errors Packets Errors Packets Errors Packets eno2 2 4 0 123123 1003 123123 0 123123
スケジューラポート統計を確認します。
bash-5.1# scheduler --port 2
Scheduler port stats for vif 2, lcore id 4
------------------------------------------------------------------------------------------------------------------------
Prio Pkts Bytes Pkts Bytes Avg Wred
OK OK Dropped Dropped Qlen Drops
------------------------------------------------------------------------------------------------------------------------
[00] 23302064 23768105280 4325778 4412293560 0 0
[01] 23301994 23768033880 4325848 4412364960 0 0
[02] 23301921 23767959420 4325921 4412439420 0 0
[03] 23301913 23767951260 4325930 4412448600 0 0
[04] 27627842 28180398840 0 0 0 0
[05] 27627842 28180398840 0 0 0 0
[06] 26805889 27342006780 821954 838393080 0 266904
[07] 5195092308 5298994154160 1084208 1105892160 32 0
------------------------------------------------------------------------------------------------------------------------
スケジューラのポートレート統計を確認します。
bash-5.1# scheduler –-portrate 2
Scheduler port stats for vif0/2
-------------------------------
Scheduler port stats for vif 2, lcore id 4
--------------------------------------------------------------------
Prio Pkts Bytes Pkts Bytes Avg Wred
OK OK Dropped Dropped Qlen Drops
--------------------------------------------------------------------
[00] 68195 102839272 0 0 0 0
[01] 136391 205678545 0 0 0 0
[02] 68196 102840779 0 0 0 0
[03] 68197 102842285 0 0 0 0
[04] 68196 102840779 0 0 0 0
[05] 68196 102840779 0 0 0 0
[06] 68196 102840779 0 0 0 0
[07] 136390 205677038 0 0 0 0
---------------------------------------------------------------------
スケジューラポート統計情報のクリア:
bash-5.1# scheduler --port 2 --clear Counters cleared for scheduler port 2
インターフェイスに適用されたCoS機能の検証
bash-5.1# vif --get 2
Vrouter Interface Table
Flags: P=Policy, X=Cross Connect, S=Service Chain, Mr=Receive Mirror
Mt=Transmit Mirror, Tc=Transmit Checksum Offload, L3=Layer 3, L2=Layer 2
D=DHCP, Vp=Vhost Physical, Pr=Promiscuous, Vnt=Native Vlan Tagged
Mnp=No MAC Proxy, Dpdk=DPDK PMD Interface, Rfl=Receive Filtering Offload, Mon=Interface is Monitored
Uuf=Unknown Unicast Flood, Vof=VLAN insert/strip offload, Df=Drop New Flows, L=MAC Learning Enabled
Proxy=MAC Requests Proxied Always, Er=Etree Root, Mn=Mirror without Vlan Tag, HbsL=HBS Left Intf
HbsR=HBS Right Intf, Ig=Igmp Trap Enabled, Ml=MAC-IP Learning Enabled, Me=Multicast Enabled
LsDp=Link down in DP only, Ccc=CCC Enabled, HwTs=Hardware support for Timestamp
vif0/2 PCI: 0000:ca:01.2 (Speed 10000, Duplex 1) NH: 8 MTU: 9216
Type:Physical HWaddr:48:5a:0d:6f:b2:1a IPaddr:10.0.1.1
IP6addr:1001::1
DDP: ON SwLB: ON
Vrf:0 Mcast Vrf:0 Flags:L3Vof QOS:0 Ref:17
RX port packets:37865806023 errors:0
RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Fabric Interface: 0000:ca:01.2 Status: UP Driver: net_iavf
Qos classifier: dscp:BA_1 dscpv6:BA6_1
Rewrite: dscp:RE_1 dscpv6:RE6_1
Scheduler: VOICE-SCHED-MAP
RX packets:3160058 bytes:3910471152 errors:0
TX packets:1224847957 bytes:186064373590 errors:0
Drops:13116
Scheduler Enqueue packets:1218217596 errors:0
Scheduler Dequeue packets:1218217596 errors:0
TX queue packets:1218219665 errors:6627728
TX port packets:1218218121 errors:0
inet acl MCFF_1
inet6 acl MCFF6_1