QoS Scheduling について
定義
このセクションでは、コアの「スケジューリング」用語を定義します。
- パケット処理(Packet Handle)
- ルータはパケットを転送する準備が整うと、ルータはそのパケットを表すパケット処理を出力キューの 1 つに配置します。この処理は、パケットの長さやメモリ内のパケットの位置などの情報を保持します。
- クラス キュー(Class Queues)
-
出力 QoS が設定されると、class queueは、キューイング アクションを設定している各クラスに対して作成されます。同様に、明示的に作成されたキューイング クラスのいずれかに一致しないトラフィックに対して、implicit class-default queue を作成します。非キューイング アクションのみを使用してクラスを設定した場合(たとえば、マーキングのみを設定したクラス)、「一致する」パケットは class-default キューに入れられます。
- スケジュール(Schedule)
-
意思決定者としてスケジュール(スケジューラ)を表示する必要があります。パケット処理を選択することによって、スケジュールでは、次に終了するパケットとその送信時期が選択されます。上の図の「楕円」 は、クラス キューの 1 つからパケットを選択する単一のスケジュールを表しています。
(注)
個々のスケジュールは、各インターフェイスに対して作成されます。
- スケジュール エントリ(Schedule Entry)
-
スケジュールをキューから選択するには、各キューの予想される処理を知る必要があります。このタイプの情報は、スケジュール エントリに保存されます。たとえば、キューイング コマンド(例:bandwidth 10 Mbps )を設定することによって、スケジュール エントリを設定しています。
また、スケジュール エントリには、そのキューからのパケットが最後に送信された時刻や、そのキューからの現在のパケット処理(ある場合)などの内部状態も格納されます。
スケジュール エントリにはプライオリティ キューおよび帯域幅キューの 2 種類があります。
スケジュール エントリのプログラム方法
このセクションでは、スケジュール エントリ内で設定されるパラメータについて簡単に紹介します。実際のコマンドについては、この章で後ほど詳しく説明します。
まず、スケジュール エントリは、プライオリティ エントリまたは帯域幅エントリ(プライオリティ キューまたは帯域幅キュー) のいずれかとして設定されます。
以下の説明では、プライオリティ エントリが P1 エントリまたは P2 エントリにさらに分割することができることが分かります。P1 エントリ(既定値)は、priority または priority level 1 コマンドのいずれかを使用して設定します。同様に、priority level 2 コマンドを使用して P2 エントリを設定します。
帯域幅エントリには 最小レート(Min)、最大レート(Max)、および超過ウェイト(図では「Ex」と表示)の 3 つの異なるパラメータがあります。
(注) |
ASR 1000 シリーズ アグリゲーション サービス ルータのスケジュールは、3 つのパラメータによるスケジュールとよく呼ばれます。 |
- 最小(最小レート)エントリは、 最小帯域幅における保証スループット量をキューに割り当てます。最小エントリは bandwidth コマンドで設定され、明示的に設定しない限り設定されません。IOS の設定チェックでは、スケジュールに設定されている最小レートを満たすのに十分な帯域幅が常にあることを確認しようとします。スループットの監視と事前設定された目標レートに基づいてキューを処理することは、リアル タイム スケジュール(「スケジューラによる時間表記」を参照)と呼ばれることがあります
- 最大(最大レート)エントリは、 キューが受け取ることができるスループットの量の上限を設定します。最大エントリは shape コマンドを使用して設定され、明示的に設定しない限り設定されません。Max はキューのスループットに上限を設定しますが、それ自体はそのキューへのスループットを保証するものではありません。
- Ex(超過ウェイト) エントリでは、Priority および Min の保証されたスループットの量が満たされた後に使用可能な帯域幅(超過帯域幅、または優先順位および帯域幅保証に対して保証されていない、または使用されていない使用可能帯域幅)に対するキューの競合方法を指定します。超過重量を bandwidth remaining コマンドで設定し、明示的に設定されていない限り、デフォルトは 1 になります。超過帯域幅の共有 は、キューの超過ウェイトに比例します (レートが設定されておらず、相対的な動作が重要であるため、仮想時間のスケジュールとも呼ばれます)。帯域幅共有についての考察については、「スケジュール エントリのプログラム方法」を参照してください。
次の図は、上に示した内容をまとめたものです (各スケジュール エントリを設定するコマンド)。
スケジュール操作
スケジュールがどのようにパケット シーケンスを決定するかを、以下にまとめました。
(注) |
各パケットが転送された後、ステップ 1 に戻ります。 |
-
P1 キューが空でない場合は、P1 パケットを送信します。
-
PI キューが空で、P2 キューが空でない場合は、P2 パケットを送信します。
-
すべてのプライオリティ キューが空の場合、スケジュールは最低帯域幅保証(Min)があるすべてのキューを処理し、帯域幅保証が満たされるまでそのようなキューを処理し続けます。均等性を確保するために、スケジューラは、適格キュー、つまり帯域幅保証を超えず最も長く待機していたキューを選択することによって、最低帯域幅保証が設定されているキューから選択します。
-
プライオリティ キューが空で、すべての帯域幅保証が満たされている場合はどうなりますか。超過帯域幅は、すべての帯域幅が消費されるか、特定のキューが設定された最大帯域幅に達するまで、まだサービスを必要とするキュー間で分散されます。そのキューのスケジュール エントリで設定された Ex では、 各キューがこの超過帯域幅を受け取る割合を決定します。
シェーパーなしでのスケジュール操作
次の例は、スケジュールがどのように機能し、指定された負荷に対して各キューが受け取る帯域幅を決定する方法を示しています。
例を説明する前に、プライオリティ キュー アドミッション コントロールの概念について説明します。スケジュール操作のこれまでの説明では、スケジュールがプライオリティ キューをどのように処理するかにおいて、レートが設定されていないに気付くでしょう。 パケットが含まれているときはいつでも、スケジュールは単にプライオリティ キューを選択します。
プライオリティ キュー(クラス)により他のサービス キューが利用できる帯域を消費されないようにするには、ポリサーを使用して、利用できる帯域幅を制限します。このようなポリサーは、そのキューにパケットを入れることができるレートを制限します。
次の例では、100 Mbps インターフェイスにポリシーを適用します。
policy-map scheduling-example
class voice
priority level 1
police 20m
class video
priority level 2
police 10m
class mission-critical
bandwidth 20000
class class-default
(注) |
帯域幅は Kbps 単位で設定されます。police および shape コマンドでは、ユニットを指定するために接尾辞をサポートしますが、bandwidth コマンドではサポートしません。 |
各クラスに提供された負荷は図の上部に示されているように、30 M、5 M、50 M、50 M です。プライオリティ キューにポリサー(20M と 10M)を適用しました。
30 Mbps が音声クラスに提供され、最初に 20 Mbps ポリサーを通過し、20 Mbps を P1 キューに入れます。常にこのキューを最初に処理するため、キューに入れた 20 Mbps がすべて転送されます。
5 Mbps がビデオ クラス(すべてが 10 mbps ポリサーを通過)に提供され、5 mbps がビデオ キューにキューイングされます。80 Mbps(100 Mbps ~ 20 Mbps)の帯域幅がまだ使用できるため、5 Mbps すべてが転送されます。
プライオリティ キューの処理後、明示的な帯域幅保証のあるキューに進みます。mission-critical クラスには最大帯域幅 20 Mbps があるため、そのクラスは少なくてもその量のスループットを得ることになります。
使用可能な超過帯域幅は、55Mbps(100 Mbps - 20 Mbps - 5 Mbps - 20 Mbps)です。class-default クラスと mission-critical クラスの両方にデフォルトの超過ウェイトとして 1 があるため、27.5 Mbps(55Mbps/2 =)の使用可能な超過帯域幅をそれぞれ同等に得ることができます。
mission-critical クラスは、47.5 Mbps(20 Mbps + 27.5 Mbps)の総スループットを監視します。
シェーパーを使用したスケジュール操作
設定を少し変更してみましょう。mission-critical クラスに最大値(シェーパーを設定)を追加します。
policy-map scheduling-example
class voice
priority level 1
police 20m
class video
priority level 2
police 10m
class mission-critical
bandwidth 20000
shape average 30m
(注) |
ポリシー定義から class-default を除外しました。明示的に定義しているかどうかにかかわらず、常に class-default は存在します。 |
各クラスに提供される負荷は、以前とまったく同じで、30M、5M、50M、および 50M です。
30 Mbps が音声クラスに提供され、最初に 20 Mbps ポリサーを通過し、20 Mbps を P1 キューに入れます。常にこのキューを最初に処理するため、キューに入れた 20 Mbps がすべて転送されます。
5 Mbps がビデオ クラス(すべてが 10 Mbps ポリサーを通過)に提供され、5 Mbps が P2 キューにキューイングされます。 80 Mbps(100 Mbps ~ 20 Mbps)の帯域幅がまだ使用できるため、5 Mbps すべてが転送されます。
プライオリティ キューの処理後、明示的な最低帯域幅保証のあるキューに進みます。mission-critical クラスには 20 Mbps の帯域幅保証があるため、少なくともそのスループットの量を得ることになります。
使用可能な超過帯域幅は、55 Mbps(100-20-5-20 Mbps)です。class-default クラスと mission-critical クラスの両方にデフォルトの超過ウェイトとして 1 があるため、使用可能な超過帯域幅をそれぞれ同等に得ることができます。帯域幅がキューの Ex に比例する超過帯域幅の共有「ルール」をベースに、各クラスは 27.5 Mbps を受け取ります。(この「ルール」の詳細については、「スケジュール エントリのプログラム方法」を参照してください。)
帯域幅保証と帯域幅の共有に基づいて、mission-critical キューは 47.5 Mbps(20 + 27.5 Mbps)を受け取ります。ただし、Max が設定したシェーピング レートが 30 Mbps に設定されているため(この例では Max は 0 に設定されているます)、キューはこれほど多くの帯域幅を使用できません。その結果、キューは(帯域幅の共有から受信した 47.5 Mbps のうち)30 Mbps を使用し、追加の 17.5 Mbps の帯域幅は超過プールに戻ります。
class-default はまだ帯域幅を要求している唯一のキューであるため、競合することはなく、この余分な 17.5 Mbps を消費する可能性があり、その合計スループットは 45 Mbps に増加します。
(注) |
この例は、帯域幅が浪費されない方法を示しています。スケジューリングは、次のいずれかに該当するまで、適格なキューおよび配分帯域幅をソートし続けます。
|