この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Catalyst 9000シリーズスイッチのトラフィックキューへのキューバッファ割り当てを予測する方法について説明します。
次の項目に関する知識があることが推奨されます。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
このドキュメントは、次のバージョンのハードウェアとソフトウェアにも使用できます。
注:9500Xまたは9600XではASICとQoSのアーキテクチャが異なるため、このドキュメントの対象外です。
Catalyst 9000シリーズスイッチのQoSの技術概要については、『Catalyst 9000 QoSとキューイング』ホワイトペーパーを参照してください。
多くの場合、バッファ割り当ては、特定のトラフィッククラスに対する望ましくない出力廃棄への応答として調整する必要があります。Catalyst 9000シリーズスイッチでの出力ドロップの診断とトラブルシューティングの詳細については、「Catalyst 9000スイッチの出力ドロップのトラブルシューティング」を参照してください。
QoS |
Quality of Service |
ネットワークデバイスに出入りするトラフィックの分類、マーキング、キューイング、およびスケジューリングに関連する関連機能の概念/グループ |
DSCP |
Differentiated Services Code Point(DiffServ コード ポイント) |
パケットのIPヘッダーに含まれるトラフィック分類メカニズム |
CoS |
[Class of Service] > |
パケットのイーサネットフレームヘッダーに含まれるトラフィック分類メカニズム |
ACE |
アクセスコントロールエントリ |
アクセスコントロールリスト(ACL)内の単一のルールまたは行 |
ACL |
アクセス コントロール リスト |
トラフィックを照合してアクションを実行するために、さまざまな機能によって使用されるアクセスコントロールエントリ(ACE)のグループ |
ASIC |
特定用途向け集積回路 |
特定のタスクやタスクの組み合わせを高い効率で実行できるように設計されたコンピュータチップを提供する。 |
UADP |
ユニファイドアクセスデータプレーン |
Catalyst 9000シリーズスイッチで多くのネットワークパケット処理タスクを実行するために使用されるCisco ASIC。 |
肺塞栓症 |
パケットバッファ複合体 |
Cisco UADP ASICサブシステム。パケットの処理、キューイング、スケジューリングを行う中央パケットバッファとして機能します。 |
AQM |
アクティブキュー管理 |
Cisco UADP ASICサブシステム:トラフィックキューを管理し、ネットワークポートのアクションをスケジュールします。 |
DTS |
動的しきい値とスケール |
Cisco UADP ASICテクノロジー:ポート全体でバッファの動的な調整と拡張を行い、ハードウェア使用率を最適化 |
概念として、バッファは一時的なデータバーストを吸収するために使用されるメモリであり、ポートにスイッチまたはルーティングされるデータが、データをネットワークに送出するポートの能力を超えた場合に使用されます。ポートは一定のレートでデータを送信し、キューからデータを削除します。バッファは、概念的には、インターフェイスから送信されるまでデータを保存する、つまりキューイングする場所です。
Catalyst 9000シリーズスイッチでは、バッファという単語には2つの用途があります。システムバッファ全体は、ASICのパケットバッファコンプレックス(PBC)とも呼ばれます。バッファという単語は、PBCの小さな単位を指すこともあります。バッファは、キューごとにポートに割り当てられます。つまり、ポートキューには、システムバッファ全体から少量の個別バッファが割り当てられます。
Cisco UADP ASICベースのプラットフォームでは、1つのバッファに最大256バイトのデータが格納され、バッファはリンクされて256バイトを超えるフレームを表します。
キュー単位の使用可能なバッファの最終的な計算には、次の要因が影響します。
柔軟なバッファは、ポート間で共有されるバッファです。これらのバッファはポートに対して保証されていないため、ソフトと呼ばれます。
システムは、意図的にソフトバッファを割り当てます。これにより、必要に応じて任意の1つのポートで大量のバッファを使用することが可能になりますが、より多くのポートでバッファが必要になると、すべてのポートとキューがCisco UADP ASIC DTSプロセスの一部としてダイナミックかつ公平に縮小されます。
要約すると、ソフトバッファ(出力内ではsoftmaxと呼ばれる)は便宜上の最大値です。ポートは、バッファの総量がシステムバッファ全体から使用可能な場合にのみ、softmaxの総量を使用します。他のポートやキューの間でバッファ要求が増加すると、そのポートで使用可能な最大バッファは少なくなります。
厳格なバッファはポート用に明示的に予約されたバッファであり、DTSプロセスの影響を受けません。厳格なバッファは保証されたバッファであるため、ポートに割り当てられた厳格なバッファの合計がこれらの厳格なバッファ専用のPBCセグメントを超えることはありません。
ソフトバッファのアクティブなスケールを制御するメカニズムはDTS(Dynamic Threshold and Scale)と呼ばれ、Catalyst 9000シリーズQoSホワイトペーパーで説明されています。
キューハードバッファとソフトバッファ専用のPBCセグメントのサイズは、システムの設定時に動的に変更され、次の出力ではAQM GlobalSoftLimitおよびGlobalHardLimitとして表示されます。
C9500#show platform hardware fed active qos queue stats interface twe1/0/1
----------------------------------------------------------------------------------------------
AQM Global counters
GlobalHardLimit: 18072 | GlobalHardBufCount: 0
GlobalSoftLimit: 37224 | GlobalSoftBufCount: 0
C9500#show platform hardware fed active qos queue config interface tw1/0/1 Asic:0 Core:1 DATA Port:20 GPN:101 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 160 - 167 DrainFast:Disabled PortSoftStart:2 - 4320 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 2 480 3 1920 16 960 0 0 4 5760 En <--- default configuration has a mix of hard buffer and soft buffer in queue 0 1 1 0 0 4 2880 16 1440 8 720 4 5760 En <--- default configuration has two queues so some buffers are seen in queue 1
<snip>
C9500(config)#policy-map test
C9500(config-pmap)#class class-default
C9500(config-pmap-c)#priority level 1 <--- Priority level 1 queue configuration on first queue, which is queue 0 in the next output
C9500(config-pmap-c)#exit
C9500(config-pmap)#exit
C9500(config)#int tw1/0/1
C9500(config-if)#service-policy output test
C9500(config-if)#end
C9500#show platform hardware fed active qos queue config interface twe1/0/1
Asic:0 Core:1 DATA Port:20 GPN:101 LinkSpeed:0x12
AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 160 - 167
DrainFast:Disabled PortSoftStart:4 - 1800 BufferSharing:Disabled
DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable
----- -------- -------- -------- -------- --------- -------
0 1 4 1200 7 1200 0 0 0 0 3 2400 En <--- Hardmax increased to 1200 from 480 in queue 0, softmax reduced to 1200 from 1920
1 1 0 0 0 0 0 0 0 0 3 2400 En <--- queue 1 now no longer has any values, as no second queue is configured
C9500#show platform hardware fed active qos queue stats interface twe1/0/1
----------------------------------------------------------------------------------------------
AQM Global counters
GlobalHardLimit: 18792 | GlobalHardBufCount: 0 <--- GlobalHardLimit increased to 18792 from 18072, or by 720
GlobalSoftLimit: 36504 | GlobalSoftBufCount: 0 <--- GlobalSoftLimit decreased from 37224 to 36504, or by 720
注:GlobalHardLimitの増加とGlobalSoftLimitの比例的な減少に注意してください。
さらに、プライオリティレベル1を設定すると、そのキューのsoftmaxがhardmaxと完全に等しくなるように静的に設定されます。変更できるのは、優先レベル1のキューのハードバッファだけです。
GlobalHardLimitとGlobalSoftLimitの変更は720です。これは、設定後のhardmaxの変更と同じです。
このドキュメントのシナリオでは、複数のポリシーマップ設定でsoftmaxとhardmaxの割り当てを計算および予測する方法について説明します。
キューの最終バッファ値は、最初にキューに割り当てられる基本値の関数の一部です。 これは、後でソフトバッファの場合に乗算されます。
乗算係数は、他の暗黙的な動作と組み合わせて、特定のキューの最終値を特定の設定で決定する際の課題となります。
結果として得られるキューバッファ割り当てを明確にするための最初の手順は、基本バッファ値を決定することです。
これを行うには、プライオリティキューを利用します。プライオリティキューは、キュー数または設定されたキューバッファ比に正比例する厳格なバッファを受け取ります。
特定の設定を使用すると、特定のポート速度に割り当てられた基本バッファの量を明示的に取得できます。
すべてのバッファを設定し、乗算されない単一のキュー(優先レベル1キュー)に割り当てる
この例では、class-defaultクラスを使用してすべてのトラフィックを照合しています。これは、他のクラスが設定されていないためです。
Switch(config)#policy-map test1
Switch(config-pmap)#class class-default
Switch(config-pmap-c)#priority level 1 <--- Assign hard buffer to the port, which is not affected by multipliers
Switch(config-pmap-c)#queue-buffers ratio 100 <--- Assign all buffers to this queue only
前の例の設定では、次のアクションを実行します。
queue-buffers ratio 100は、100/100、つまり使用可能な基本バッファの100 %をこのキュー/クラスに割り当てます。
複数のクラスがあるポリシーマップでは、バッファの100 %を単一のクラスに割り当てることはできません。どのクラスにも、最低でも1/100または1 %を割り当てる必要があります。
クラスが1つだけのポリシーでは、クラスは1つしかなく、すべてのバッファをそのクラスに割り当てることができます。
前述したように、プライオリティキューは、設定されたqueue-buffers ratioに従って、基本バッファの分配と等しい厳格なバッファを取得します。ハードバッファは乗数の影響を受けません。
「Hardmax」という列の出力に厳格なバッファが示されます。
これで、マルチプライヤの影響を受けないバッファを持つ単一のトラフィッククラスが作成されました。これにより、ベースバッファとhardmaxが等しくなるため、このポート速度のベースバッファ割り当てを明示的に取得できます(このプラットフォームでは、このポート速度のみが異なります)。
ベースバッファ= ?
キュー比1 = 100/100 = 1
このキューのHardmax =ベースバッファxキュー比1
X = Y x 1
X / 1 = Y
X = Y
X = Y = Hardmax =基本バッファ= 1200 (例2を参照)。
この例では、ポリシーマップtest1が出力サービスポリシーとしてインターフェイスに適用されています
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test1 <--- service policy that assigns all buffer to the first queue, as a priority queue 1
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 1800 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 4 1200 7 1200 0 0 0 0 3 2400 En <--- hardmax 1200 - the maximum amount of buffer this port can use without multiplication 1 1 0 0 0 0 0 0 0 0 3 2400 En 2 1 0 0 0 0 0 0 0 0 3 2400 En 3 1 0 0 0 0 0 0 0 0 3 2400 En 4 1 0 0 0 0 0 0 0 0 3 2400 En 5 1 0 0 0 0 0 0 0 0 3 2400 En 6 1 0 0 0 0 0 0 0 0 3 2400 En 7 1 0 0 0 0 0 0 0 0 3 2400 En
<snip>
次に示すように、バッファの100 %が割り当てられたこのプライオリティキューのハードマックスは1200です。
hardmaxは完全に乗算またはスケールされない値であり、このキューには100 %のバッファが設定されているため、スイッチ、ソフトウェアバージョン、および特定のポート速度のこの特定のモデルに対する基本バッファ割り当ては1200です。
この同じスイッチ上の他のポート速度、および同じポート速度の他のモデルのスイッチでは、異なる基本バッファ割り当てが受信されます。この基本割り当てはユーザが設定することはできず、観察を通じて導き出す必要があります。
このドキュメントの以降のシナリオでは、最初からすべて同じスイッチ、ソフトウェア、およびポート速度を使用します。したがって、これらはすべて、最終的なバッファ割り当てを決定する計算で1200の基本割り当てを想定しています。
注:前の例のsoftmaxも1200であることに注意してください。
設計上、プライオリティレベル1のキューのsoftmaxは、そのhardmaxと完全に等しくなっています。これは意図された動作であり、ユーザによる設定はできません。
また、このsoftmax割り当ての特定のケースは、後で示すsoftmax乗数の影響を受けません。softmaxのこの動作は、プライオリティレベル1のキューだけに適用されます。
このシナリオでは、追加のキューが追加されます。このキューはプライオリティレベル1を使用しないため、softmaxは乗数でスケールします。
一方のマルチプライヤはユーザ設定され、もう一方は隠しマルチプライヤまたは設定不可能なマルチプライヤです。
これらの乗数を、このポート用に導出された基本バッファ(この場合はシナリオ1に従って1200)と組み合せます。
アルゴリズム:
現在のキュー比=予測されるキュー/クラスのqueue-buffers ratio
非表示の乗数= 400%
ユーザ乗数= qos queue-softmax-multiplier <percent>で設定するパーセント値。デフォルトは 100%
Softmax = (ベースバッファx (現在のキュー率 / 100)) x隠し乗数x (ユーザ乗数 / 100)
9500H(config)#policy-map test2
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 50 <-- class 1 / first queue gets 50% of base buffer
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 100 <-- required configuration due to priority queue, can be ignored for this example
9500H(config-pmap-c)# queue-buffers ratio 50 <-- class 2 / first queue gets 50% of base buffer
値の概要:
クラス1バッファ割り当ての決定
class1はプライオリティキューであるため、hardmax(ハードバッファ)を受け取ります。また、softmaxの特別なケースでは、乗数の影響を受けません。
クラス1 hardmax = (ベースバッファx現在のキュー比(クラス1) / 100)
クラス1 hardmax = 1200 x (50/100) = 600 – プライオリティキューの特別なケースにより、すべての計算を停止し、結果をhardmaxに割り当てます。Softmaxは、プライオリティレベル1のルールとしてHardmaxと等しくなります。
class-defaultバッファ割り当ての決定
Class class-default = (ベースバッファx (現在のキュー比率(class-default / 100)) x隠し乗数x (ユーザ乗数 / 100))
クラスクラスデフォルト= [
[ベースバッファ] 1200 x [現在のキューの比率] (50/100) = 600
[前の結果] 600 x [隠し乗数] 4 x [ユーザ乗数] (100/100) = 2400
]
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test2 <-- apply the policy
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 3600 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 1 4800 En <-- Hardmax is 600 as predicted, Softmax is set equal to Hardmax due to priority level 1 1 1 0 0 10 2400 16 1200 8 600 1 4800 En <-- Softmax is 2400 as predicted
<snip>
最終結果:Q0 – ハードマックス:600ソフトマックス:600Q1 - Softmax:2400
このシナリオは、シナリオ2と同じ手順で開始しますが、ここではqos queue-softmax-multiplier 1200を設定します。
これにより、現在の設定のsoftmaxバッファが1200 %、つまり係数12倍になります。
値の概要:
クラス1バッファ割り当ての決定:
class1はプライオリティキューであるため、hardmax(ハードバッファ)を受け取ります。また、softmaxの特別なケースでは、乗数の影響を受けません。
クラス1 hardmax = (ベースバッファx現在のキュー比(クラス1) / 100)
クラス1 hardmax = 1200 x (50/100) = 600 – プライオリティキューの特別なケースにより、すべての計算を停止し、結果をhardmaxに割り当てます。Softmaxは、プライオリティレベル1のルールとしてHardmaxと等しくなります。
class-defaultバッファ割り当ての決定:
Class class-default = (ベースバッファx (現在のキュー比率(class-default / 100)) x隠し乗数x (ユーザ乗数 / 100))
クラスクラスデフォルト=[
[ベースバッファ] 1200 x [現在のキューの比率] (50/100) = 600
[前の結果] 600 x [隠し乗数] 4 x [ユーザ乗数] (1200/100) = 28800
]
qos queue-softmax-multiplier 1200を設定し、softmaxの変更を確認します(softmaxはそのキューの最大バッファ値で、現在の全体的なバッファ使用量に基づいて動的に調整されます)。
9500H(config)#qos queue-softmax-multiplier 1200
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:3 - 31500 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 5 600 0 0 0 0 6 42000 En <-- Queue 0 does not change as its configured with priority level 1 1 1 0 0 6 28800 1 900 1 900 6 42000 En <-- Softmax increases by 12x to 28800 from 1200 due to queue-softmax-multiplier 1200
<snip>
最終結果:Q1 – ハードマックス:600、ソフトマックス:600Q2 - Softmax:28800
このシナリオでは、5つのキューが設定されますが、queue-buffers ratio が明示的に定義されているのは4つだけです。これらのキューに割り当てられるバッファは、前の例と同じです。
設定されていないキューは、設定されているすべてのキューバッファの合計と100の差を受け取ります。
明示的に設定された比率の合計= (Q0バッファ比率) + (Q1バッファ比率) ... (最終バッファ比率) - Catalyst 9000シリーズスイッチでは最大8つのキューがサポートされているため、最大8つの比率を追加できます
暗黙的な比率の残存率= (100 – 明示的に構成された比率の合計)。
Implicit Ratio Leftoverは、queue-buffers ratioが設定されていないキューに割り当てられる値です。
このシナリオで使用されているポリシーマップ:
9500H(config)#policy-map test3
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 20
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10 <-- rest of queues have an explicit queue-buffers ratio
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 40
値の概要:
残りのキューバッファ率の計算:
暗黙的な比率の残存率= (100 – 明示的に構成された比率の合計)。
100 - (20) - (10) - (10) - (50) = 20
現在のキュー率(クラス2) = 20
最終的なキューバッファ割り当ての計算
Class1 = [Base Buffer] 1200 x [Current Queue Ratio(class1)] (20/100) = 240 – プライオリティキュー、それ以上の計算なし
クラス2 = [
[基本バッファ] 1200 x [現在のキュー比率(クラス2)] (10/100) = 240 – このキューの基本バッファ割り当て。ただし、非優先キューのsoftmaxを取得するには、この値を乗算する必要がある
[このキューの基本バッファ割り当て] 120 x [隠し乗数] 4 x [ユーザ乗数] (100/100) = 960
]
残りのキューに対して繰り返します。
クラス3 = [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
クラス4 = [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
クラスクラスデフォルト= [
1200 x (40/100) = 480
600 x 4 x (100/100) = 1920
]
予測と比較して適用されたtest3ポリシーマップの結果:
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test3
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 2880 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 8 240 0 0 0 0 6 3840 En 1 1 0 0 9 960 16 480 8 240 6 3840 En <-- queue without queue buffers ratio configured receives any leftover ratio, as predicted 2 1 0 0 11 480 16 240 8 120 6 3840 En 3 1 0 0 11 480 16 240 8 120 6 3840 En 4 1 0 0 4 1920 16 960 8 480 6 3840 En
<snip>
最終結果:Q0 – ハードマックス:240、ソフトマックス:240Q1 – ソフトマックス:960、Q2 – ソフトマックス:480、Q3 – ソフトマックス:480、Q4 – ソフトマックス:480
このシナリオでは、5つのキューが設定されており、2つのキューにはqueue-buffers ratioが設定されていません。
バッファ割り当てを決定するには、シナリオ2と同じロジックが続きますが、Implicit Ratio Leftoverも、queue-buffers ratioを持たない暗黙的なキューまたはキューの合計数で除算する必要があります
このシナリオで使用されているポリシーマップ:
9500H(config)#policy-map test4
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 20
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 40
値の概要:
残りのキューバッファ率の計算:
暗黙的な比率の残存率= (100 – 明示的に構成された比率の合計)。
暗黙的キューの数= 2(class2およびclass3にはqueue-buffers ratioが定義されていません)
構成比率の合計= 20+40+10 = 7
暗黙の比残存率= 100 - 70 = 30
暗黙的なキュー比割り当て= [暗黙的な比率の残存期間] 30 / [暗黙的なキューの数] 2 = 15
最終的なキューバッファ割り当ての計算:
クラス1 =
[基本バッファ] 1200 x [現在のキュー比(クラス1)] (20/100) = 240 – 優先キュー、それ以上の計算なし
クラス2 =
[Base Buffer] 1200 x [Implicit queue ratio allocation] (15/100) = 180 – クラス2にはqueue-buffers ratioが定義されていないため、明示的なキューの残りのqueue-buffers ratioは暗黙的なキュー間で共有されます。
[このキューの基本バッファ割り当て] 180 x [隠し乗数] 4 x [ユーザ乗数] (100/100) = 720
残りのキューに対して繰り返します。
クラス3 = [
1200 x (15/100) = 180
120 x 4 x(100/100)= 720
]
クラス4 = [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
クラスクラスデフォルト= [
1200 x (40/100) = 480
600 x 4 x (100/100) = 1920
]
予測と比較して適用されたtest4ポリシーマップの結果:
9500H(config)#interface tw1/0/3
9500H(config-if)#service-policy output test4
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 2880 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 8 240 0 0 0 0 6 3840 En 1 1 0 0 9 720 16 360 8 180 6 3840 En <-- queue 1 and 2 were not configured with queue-buffers ratio 2 1 0 0 9 720 16 360 8 180 6 3840 En <-- queue 1 and 2 get an equal share of leftover buffer ratio 3 1 0 0 11 480 16 240 8 120 6 3840 En 4 1 0 0 4 1920 16 960 8 480 6 3840 En
<snip>
注:暗黙のキュー比割り当ての結果が整数でない場合、等しいシェアは不可能です。この結果は、ポリシーマップの早い方のキューに対しては切り上げられ、遅い方のキューに対しては切り下げられます。 割り当てられたキューバッファの比率の最終的な合計は100のままですが、暗黙のキューは、先ほど説明した整数の結果要件のために、必ずしも等しく割り当てられるわけではありません。
このシナリオでは、5つのキューが設定され、すべてqueue-buffers ratioで設定されます。クラス間のキューバッファ比率の合計は100未満です。
この場合、未割り当てのバッファ率はクラス間で均等に分散されます。
前のシナリオと同様に、残りのキューバッファ率の分割結果が整数でない場合、各キューへの最終的な割り当ては切り上げられるか切り捨てられ、設定したキューバッファ率に追加されます。
このシナリオで使用されているポリシーマップ:
9500H(config)#policy-map test5
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 12
値の概要:
構成比率の合計= 10 + 10 + 10 + 10 + 12 = 52
バッファ比残存率= 100% - 52% = 48%
[Buffer Ratio Leftover] 48% / [Total Number of Queues] 5 = 9.6% added per queue – これは整数ではないため、キューへの最終的な適用はキューごとに切り上げまたは切り捨てる必要があります
システムが使用する最終的なキューバッファの比率を取得するには、設定済みのキューバッファの比率に9または10を追加する必要があります。
ポリシーマップ内でより高いクラスは、切り上げられた値10を受け取ります。ポリシーマップ内で下位のクラスは、端数処理された値9を受け取ります。
最終的なキューバッファ割り当ての計算
バッファ率の残り= 48
Class1 = [基本バッファ] x ([現在のキュー比(class1) +共有バッファ比の切り上げ値)]
クラス1 = 1200 x ((10% + 10%)/100) = 240 – プライオリティキュー、それ以上の計算なし
バッファ比余剰= (48 - 10) = 38
Class2 = [基本バッファ] x ([現在のキュー比(class2) +共有バッファ比の切り上げ値)]
クラス2 = 1200 x ((10% + 10%)/100) = 240 – これはプライオリティキューではないため、引き続きユーザとシステムの乗数で乗算します。
Class2 = [このキューのベースバッファ割り当て] 240 x [隠し乗数] 4 x [ユーザ乗数] (100/100) = 960 – このキューのsoftmax結果
バッファ率の残り= (38 - 10) - 28
残りのキューに対して繰り返します。
クラス3 = [
1200 x ((10+10)/100) = 240
120 x 4 x (100/100) = 960
]
バッファ比残存率= (28 - 10) = 18
クラス4 = [
1200 x ((10+9)/100) = 240
120 x 4 x (100/100) = 912
]
バッファ率の残り= 9
クラスクラスデフォルト= [
1200 x ((12+9)/100) = 252
120 x 4 x (100/100) = 1008
]
バッファ率の残り= 0
予測と比較して適用されたtest5ポリシーマップの結果:
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 1512 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 9 240 0 0 0 0 6 2016 En 1 1 0 0 10 960 16 480 8 240 6 2016 En 2 1 0 0 10 960 16 480 8 240 6 2016 En 3 1 0 0 11 912 16 456 8 228 6 2016 En 4 1 0 0 12 1008 16 504 8 252 6 2016 En
<snip>
このシナリオでは、ポリシーマップのクラスはプライオリティレベル2で設定されます。
プライオリティレベル1では、乗数の影響を受けず、hardmaxと同じ値に設定されますが、プライオリティレベル2では、softmaxに掛ける一方で厳格なバッファ(hardmax)も割り当てられます。
このシナリオで使用されているポリシーマップ:
9500H(config)#policy-map test6
9500H(config-pmap)#class class1
9500H(config-pmap-c)#priority level 1
9500H(config-pmap-c)#queue-buffers ratio 50 <-- 50 / 50 split between both queues
9500H(config-pmap-c)#class class-default
9500H(config-pmap-c)#priority level 2 <-- Priority level 2 in use now
9500H(config-pmap-c)#queue-buffers ratio 50 <-- 50 / 50 split between both queues
適用されたtest6 policy-mapの結果:
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 3600 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 1 4800 En <-- Softmax is equal to hardmax 1 1 5 600 10 2400 16 1200 0 0 1 4800 En <-- Softmax is multiplied by Hidden Multiplier (400%) and User Multiplier (100% default)r
<snip>
上記の出力では、2番目のキューsoftmaxには、最初のキューの4つのsoftmaxがあります。これは、プライオリティレベル1 softmaxは特にシステムsoftmax乗数の影響を受けませんが、プライオリティレベル2は影響を受けるためです。
ユーザsoftmax multiplierを設定すると、プライオリティレベル2のキューだけが影響を受けます。
9500H(config)#qos queue-softmax-multiplier 200
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 7200 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 9600 En <--- priority-level 1 queue unaffected by softmax multiplier 1 1 5 600 10 4800 8 1200 0 0 5 9600 En <--- User multiplier increased to 200%, softmax for this queue doubles
<snip>
キュー制限の設定は、最終的なキューバッファの割り当てに影響します
キューバッファの割り当てに影響する主なメカニズムは、MQCポリシーマップでキューごとに追加されるqueue buffers-ratio設定です。
ただし、キューバッファの割り当ては他の設定の影響を受けます。
Queue-limitでは、(Weighted Tail Drop(WTD;重み付けテールドロップ)を介して)特定のトラフィッククラスをドロップするしきい値が定義されますが、このドキュメントでは説明しません。
特定の状況では、queue-limitはソフトバッファキューのシステムHidden Multiplier(隠線処理乗数)を変更します。これは、QUEUE-LIMITが適用されるそのキューの全体的なソフトバッファの割り当てに影響します。
まず、キュー制限はクラスごとに最大3回設定できることを理解します。これは、DSCPまたはCoSごとにWTDに対して最大3つのしきい値を定義します。
次の出力では、2つのしきい値だけが定義されています。
ポリシーマップに2つのキュー制限を適用します。
9500H(config)#policy-map test7
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 50
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# priority level 2
9500H(config-pmap-c)# queue-buffers ratio 50
9500H(config-pmap-c)# queue-limit dscp af11 percent 10 <-- Tells system to drop af11 traffic at 10% queue utilization
9500H(config-pmap-c)# queue-limit dscp af12 percent 50 <-- Tells system to drop af12 traffic at 50% queue utilization
バッファ割り当ての結果を確認します。
9500H(config-pmap-c)#interface tw1/0/3
9500H(config-if)#service-policy output test7
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 7200 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 9600 En 1 1 5 600 10 4800 8 1200 0 0 5 9600 En <--- final result for queue that contains 2 queue-limit statements is 4800
<snip>
次の例では、3番目のqueue-limit設定をclass class-defaultに追加します。
バッファ割り当ての結果を確認します。
9500H(config)#policy-map test7
9500H(config-pmap)#class class-default
9500H(config-pmap-c)#queue-limit dscp af13 percent 100
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 1800 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 2400 En 1 1 5 600 10 1200 32 1200 0 0 5 2400 En <-- Softmax reduces by 400% from previous example
<snip>
3番目のqueue-limit設定がキューに追加されると、そのキューに対してsystem hidden soft buffer multiplier(SNR;システム隠しソフトバッファ乗数)400 %が無効になります。ただし、そのキューはユーザ設定のqos queue-softmax-multiplier <percent>を引き続き尊重します。
改定 | 発行日 | コメント |
---|---|---|
3.0 |
24-May-2024 |
再認定 |
1.0 |
02-Dec-2022 |
初版 |