This site covers Cisco and Palo Alto as part of *** Shadowgarden.org ***

Cisco Catalyst 1300 スイッチ QoS 設定ガイド―Catalyst 9200L との違いと設定例

目次

はじめに

Catalyst 1300スイッチで QoS を設定する場合、IOS XE を搭載する Catalyst 9200L などの Catalyst スイッチで採用されている MQC とは異なる設定体系で QoS を構成します。

このため、QoS の設定体系として MQC を採用する Catalyst 9200L などと Catalyst 1300 スイッチを導入候補として比較する場合は、Catalyst 1300 スイッチの QoS で何ができ、どのように設定するのかをあらかじめ把握しておくことが重要です。

本記事では、実機による確認結果と Cisco TAC への問い合わせ結果に基づき、Catalyst 1300 スイッチにおける QoS の基礎知識と設定方法を解説します。また、Catalyst 9200L スイッチの QoS との設定体系の違いについても比較します。

動作確認環境

  • Cisco C1300-8T-E-2G
    • Version: 4.1.9.85

Catalyst 1300 スイッチの QoS 概要

Catalyst 1300 スイッチにおける QoS の基本構造

Catalyst 1300 スイッチの QoS は、

  • CoS や DSCP などの QoS 値に基づく出力キュー割り当て
  • ACL によるクラス分類とクラス別の出力キュー指定

を行った上で、キューごとのスケジューリングや帯域制御を行うという設定体系になっています。

QoS の処理は、大きく入力側のトラフィック分類・制御と、出力側のキュー制御に分けられます。またキュー制御とは別にポート単位でのシェーピングも可能です。

  • 受信パケットのキューマッピング・クラス分類と制御
    • 受信パケットの CoS や DSCP などの QoS 値に基づくキューマッピング
      • CoS/DSCP と出力キューの対応関係は変更可能
    • ACL を条件にしたクラス分類
      • クラス別の出力キュー指定
      • クラス別の CoS や DSCP のマーキング
      • クラス別ポリシング
  • 出力キューの制御
    • 一部のキューを優先キューとして設定
    • キューごとの重み付け
    • キュー単位でのシェーピング
  • ポート単位でのシェーピング

このように、トラフィックの分類、マーキング、ポリシング、出力キューへの割り当て、キューの優先制御・重み付け、およびシェーピングを組み合わせて QoS を構成します。

Catalyst 1300 スイッチの各ポートには、キュー 1 からキュー 8 までの 8 つの出力キューがあります。

Catalyst 1300 スイッチでは、class-map でクラスを定義し、policy-map でクラス別の処理を定義して、インターフェースへ適用する構造で QoS を設定できます。ただし、MQC のように policy-map 内でクラス別の優先キュー設定、帯域保証を設定することはできません。また、出力方向の policy-map ではキュー指定やポリシングなど、一部のアクションを使用できません。

QoS Basic モードと QoS Advanced モード

Catalyst 1300 スイッチには次の QoS 動作モードがあります。

  • QoS Basic モード ※デフォルト
  • QoS Advanced モード
  • QoS 無効
    • トラフィックの分類および優先制御は行われず、すべてベストエフォートとして処理される

Basic モードと Advanced モードでは、トラフィックを分類する方法や使用できる QoS 機能が異なります。

QoS Basic モード

受信パケットに設定されている CoS または DSCP を信頼し、その値とキューマッピングに基づいて出力キューを決定します。

信頼する QoS 値には、次のいずれかを使用できます。

  • CoS
  • DSCP
  • IP パケットでは DSCP、IP 以外では CoS

タグなしフレームで CoS を使用する場合は、受信ポートに設定されたデフォルト CoS (デフォルトでは 0) が使用されます。DSCP を信頼する場合、IP 以外のパケットはベストエフォートキューへ割り当てられます。

ACL、class-map、policy-map を使用したフロー単位の分類は行わず、端末や別機器ですでに設定されている CoS または DSCP を利用して、比較的単純な優先制御を行う場合に適しています。

QoS Advanced モード

ACL、class-map および policy-map を使用して、通信フローごとに QoS の処理を定義できます。

class-map では、MAC ACL、IPv4 ACL、IPv6 ACL を使用してトラフィックを分類します。policy-map では、分類されたクラスに対して、次のようなアクションを設定できます。

  • 出力キューの指定
  • CoS のマーキング
  • DSCP のマーキング
  • ポリシング
    • 超過トラフィックの破棄
    • 超過トラフィックの DSCP 再マーキングと転送

Basic モードが受信パケットに付与されている CoS や DSCP を基準として出力キューを決定するのに対し、Advanced モードでは、送信元や宛先、プロトコル、ポート番号など、ACL で指定した条件に基づいて通信を分類できます。

Catalyst 1300 スイッチの policy-map では、MQC における class-default のようなどのクラスにも当てはまらない通信を表すクラス定義が存在しません。すべての通信を対象とするクラスが必要な場合は、すべての通信に一致する ACL と class-map を明示的に作成します。

インターフェースに policy-map が設定されている場合、QoS アクションに加えてフィルタリングも動作し permit/deny の判定が行われます。policy-map に一致しないトラフィックについてはデフォルトのアクションが実行されます。デフォルトのアクションは明示的に指定しない場合 deny (パケット破棄) となるため注意が必要です。

Catalyst 9200L の MQC との違い

Catalyst 1300 スイッチでも class-map と policy-map を使用するため、設定構造は Catalyst 9200L の MQC と似ています。

ただし、Catalyst 1300 の policy-map では Catalyst 9200L のprioritybandwidth系コマンドに相当する、クラス単位の優先キュー制御や最低帯域保証を設定することはできません。

Catalyst 1300 では、policy-map による分類、マーキング、ポリシングおよび出力キュー指定と、出力キュー側の優先キュー指定、重み付け、シェーピングを組み合わせて QoS を構成します。

モード間の比較

項目QoS Basic モードQoS Advanced モード
デフォルトはいいいえ
主な分類単位CoS/DSCPACL による通信フロー
class-map使用しない使用する
policy-map使用しない使用する
出力キュー指定CoS/DSCP マッピングCoS/DSCP マッピングまたはクラス別指定
CoS/DSCP マーキンググローバルな書き換え機能が中心クラス別に設定可能
ポリシング使用しない
主な用途既存の QoS 値を信頼する構成通信条件ごとの詳細な制御
クラス別最低帯域保証非対応非対応

出力キューのスケジューリング方式

Catalyst 1300 スイッチでは、出力キューのパケットを送信する方式として、緊急キューによる絶対優先処理と、WRR による相対的な送信機会の配分を使用できます。

いくつのキューを緊急キューとして設定するか、および WRR に参加するキューへどのような重みを設定するかによって、各キューの送信動作が決まります。

緊急(絶対優先)キュー

緊急(絶対優先)キューは、音声通信など遅延の影響を受けやすいトラフィックを最優先で送信するための方式です。

緊急キューにパケットが存在する間は、そのキューが空になるまで優先して送信されます。緊急キューが空になると、他のキューのパケットが送信されます。

緊急キューの数は、0 から 8 の範囲で指定できます。緊急キューは、番号の大きいキューから順に割り当てられます。

  • 緊急キュー 1 つ ⇒ キュー 8 が緊急キューとなる
  • 緊急キュー 2 つ ⇒ キュー 8 とキュー 7 が緊急キューとなる

デフォルトでは 8 つのすべてのキューが緊急キュー(つまり、緊急キューの個数は 8 の設定)となっています。

WRR (Weighted Round Robin、加重ラウンドロビン)

WRR は、各出力キューに設定した重みに基づいて、各キューへ相対的な送信機会を割り当てる方式です。
なお緊急キューとなっているキューは WRR の対象外となります。

デフォルトでは 8 つすべてのキューが緊急キューであるため、WRR による重み付けを有効に利用する場合は、緊急キューの数を 6 以下に設定し、WRR に参加するキューを 2 つ以上設ける必要があります。

重みは 1-255 の範囲の整数値で指定できます。

各キューに割り当てられる相対的な送信機会は、おおむね次の関係で決まります。

÷WRR対象キューの重み ÷ WRR に参加する全キューの重みの合計

例えば、WRR に参加するキューの数が 2 つあり、それぞれのキューに32の重みを設定した場合、両方のキューに送信待ちパケットが存在する状況では、おおむね 3:2 の比率で送信機会が割り当てられます。

WRR の重みは最低帯域を保証する値ではなく、輻輳が発生し、複数のキューに送信待ちパケットが存在する場合の相対的な送信機会の配分に使用されます。

緊急キューによる帯域占有に注意

緊急キューはキュー内のパケットがなくなるまで WRR キューよりも優先して処理されます。優先トラフィックが継続的に流れると、他のキューへ送信機会が回らず通信が滞留する可能性があります。
このため、緊急キューを使用する場合はキュー単位のシェーピングを併用して緊急キューの送信レートを制限する設計を検討します。

ポリシングとシェーピングの違い

Catalyst 1300 では、ポリシングは QoS Advanced モードの policy-map で設定します。一方、シェーピングは policy-map ではなくインターフェースで設定し、QoS Basic モードと QoS Advanced モードのどちらでも使用できます。

ポリシング

ポリシングは、QoS Advanced モードの policy-map 内で、分類したクラスに対して設定する機能です。

設定の流れは次のとおりです。

  1. ACL で対象トラフィックを定義する
  2. class-map で ACL を参照する
  3. policy-map 内のクラスにポリシングを設定する
  4. policy-map をインターフェースの入力方向へ適用する

ポリシングでは、設定した CIR と CBS を基準にトラフィックを判定し、超過したパケットに対して次のいずれかを実行します。

  • パケットを破棄する
  • IP パケットの DSCP を再マーキングして転送する

したがって、Catalyst 1300 におけるポリシングは、Advanced モードで分類した通信フローに対して適用する入力側の帯域制御です。

ポリシング設定を含む policy-map をインターフェースの出力方向 (output) に指定することはできません。

QoS Basic モードでは class-map と policy-map を使用しないため、ポリシングは設定できません。

シェーピング

シェーピングはインターフェースに対して設定する出力側の帯域制御です。policy-map 内のアクションには存在しません。

Catalyst 1300 では次の 2 種類を設定できます。

  • ポート単位のシェーピング
    • インターフェースコンフィギュレーションモードで設定
    • そのポートから送信されるトラフィック全体の送信レートを制限する
  • 出力キュー単位のシェーピング
    • インターフェースコンフィギュレーションモードで設定
    • 指定した出力キューの送信レートを制限する

キュー単位のシェーピングは、Basic モードと Advanced モードのどちらでも、出力キューへ割り当てられたトラフィックを対象に使用できます。

ただし、キューへの割り当て方法はモードによって異なります。

  • QoS Basic モード
    • CoS/DSCP とキューのマッピングによって出力キューを決定する
  • QoS Advanced モード
    • CoS/DSCP マッピングに加え、policy-map のクラス別アクションとして出力キューを指定できる

そのため、シェーピング自体は Advanced モード固有の policy-map 機能ではなく、各モードで決定された出力キューに対して、送信レートの上限を設定する機能として位置付けられます。

適用例

たとえば、キュー 8 を緊急キューとして使用する場合は、キュー 8 にシェーピングを設定することで、緊急キューがポート帯域を継続的に占有することを抑制できます。

Cisco TAC からも、緊急キューへキューシェーピングを適用し、他の WRR キューへ送信機会を確保する構成が案内されました。

ポリシングとシェーピングの比較

項目ポリシングシェーピング
使用する QoS モードAdvanced モードBasic/Advanced モード
設定場所policy-map 内のクラスインターフェース
適用方向入力方向の policy-map出力方向
設定単位ACL と class-map で分類した通信フローポート全体または出力キュー
超過時の動作破棄または DSCP を再マーキングして転送送信レートを制限して送信

ポリシングは、Advanced モードの class-map と policy-map を使用して、特定の入力通信フローへ適用します。

一方、シェーピングは、Basic モードまたは Advanced モードで出力キューへ割り当てられたトラフィックに対し、ポートまたはキュー単位で設定します。

どちらもトラフィックレートを制御する機能ですが、Catalyst 9200L のbandwidthのように、特定クラスへ最低帯域を保証する機能ではありません。

Catalyst 9200L の MQC と同じ帯域制御はできない

Catalyst 1300 スイッチでは、Catalyst 9200L の出力 policy-map で使用できる、次のようなクラス単位の帯域制御はサポートされていません。

  • bandwidth
  • bandwidth percent
  • bandwidth remaining percent
  • priority level percent

Catalyst 9200L ではbandwidth系コマンドによってクラスごとの最低帯域や残余帯域の配分を設定できます。またpriority level percentによって、特定のクラスを優先キューとして処理できます。

一方、Catalyst 1300 では policy-map 内でクラスごとの最低帯域保証や優先キューを設定できません。代わりに、トラフィックを出力キューへ割り当て、次の機能を組み合わせて制御します。

  • 緊急キューによる優先送信
  • WRR による通常キュー間の相対的な送信機会の配分
  • キューシェーピングによる送信レートの上限設定

この構成によって、Catalyst 9200L の QoS 設計意図に近い動作を実現できる場合はあります。ただし、クラス単位の最低帯域保証やpriority level percentと同一の動作ではありません。

そのため、Catalyst 9200L の QoS 設定を Catalyst 1300 へそのまま移行することはできず、出力キューを基準とした設計へ置き換える必要があります。Cisco TAC からも、Catalyst 1300 には MQC のbandwidthpriority level percentに相当する機能がなく、緊急キュー、WRR、キューシェーピングによって設計意図を近似する構成が案内されています。

Catalyst 1300 の QoS でできること・できないこと

Catalyst 1300 で使用できる QoS 機能は、QoS Basic モード、QoS Advanced モード、および両モードで共通して使用する出力キュー制御に分けられます。

Basic モードでは、受信パケットの CoS または DSCP を信頼し、あらかじめ設定したキューマッピングに基づいて出力キューを決定します。

Advanced モードでは、Basic モードのキューマッピングに加えて、ACL、class-map、policy-map を使用した通信フロー単位の分類、マーキング、ポリシング、出力キュー指定が可能です。

一方、緊急キュー、WRR、ポートシェーピング、キューシェーピングは、policy-map 内のアクションではなく、出力キューまたはインターフェースに対する共通の制御機能です。Cisco の管理者ガイドでも、CoS/DSCP マッピング、キュー、帯域幅、キュー単位の出力シェーピングは「一般」の設定として整理され、class-map、policy-map、ポリサーは Advanced モードの設定として分けられています。

機能BasicAdvanced補足
CoS/DSCP に基づくキュー割り当て共通のキューマッピングを使用
ACL による分類×MAC/IPv4/IPv6 ACL
class-map/policy-map×通信フロー単位の制御
クラス別 CoS/DSCP マーキング×policy-map で設定
クラス別出力キュー指定×入力方向のみ
クラス別ポリシング×破棄または DSCP 再マーキング
緊急キュー共通の出力キュー制御
WRR共通の出力キュー制御
ポートシェーピング出力方向
キューシェーピング出力方向
priority level percent 相当の制御緊急キューとシェーピングで近似可能
クラス単位の最低帯域保証××bandwidth 相当なし
class-default 相当のクラス×明示的な全一致クラスで代替(Advanced モード)
Catalyst 9200L の MQC と同一動作××同一動作は再現不可
Catalyst 9200L の QoS 設計意図の近似キュー制御による近似。同一動作ではない
表:モード別機能対応表(●=対応、▲=近似可能、×=非対応)

Basic モードは、CoS または DSCP を信頼し、キューマッピングに基づいて出力キューを決定する構成です。Advanced モードでは、これに ACL、class-map、policy-map を使用した通信フロー単位の制御が加わります。

ただし、どちらのモードでも、Catalyst 9200L のbandwidthpriority level percentに相当するクラス単位の帯域制御は使用できません。

Catalyst 1300 スイッチの QoS 設定方法

Catalyst 1300 スイッチで QoS を設定する場合は、最初に使用する QoS モードを決定し、対象トラフィックをどの出力キューへ割り当てるかを設計します。

QoS Basic モードでは、CoS または DSCP と出力キューのマッピングを中心に設定します。QoS Advanced モードでは、これに加えて ACL、class-map、policy-map を使用し、通信フローごとにマーキング、ポリシング、出力キュー指定などを設定できます。

出力キューへ割り当てた後は、緊急キュー、WRR、キューシェーピングなどを設定し、最後に設定内容とキューごとの動作を確認します。

QoS モードの確認と選択

QoS モードの確認

選択できる QoS モードは以下の 3 つです。デフォルトは Basic モードです。

  • QoS Basic モード
  • QoS Advanced モード
  • QoS 無効

まず show qos コマンドで現在の QoS モードを確認します。

C1300-8T#show qos
Qos: Basic mode
Basic trust: dscp

上記出力のうち「Qos: Basic mode」の部分で QoS モードを確認できます。

QoS モードの選択

要件に応じて QoS モードを選択します。選択の目安を以下の表に記載します。

要件推奨モード
既存の CoS/DSCP を使用して出力キューへ割り当てるBasic
CoS/DSCP と出力キューのマッピングを変更するBasic または Advanced
ACL で通信フローを分類するAdvanced
クラス別に CoS/DSCP をマーキングするAdvanced
クラス別に出力キューを指定するAdvanced
クラス別にポリシングするAdvanced
緊急キュー、WRR、シェーピングだけを使用するBasic または Advanced
QoS による分類や優先制御を使用しないQoS 無効
表:QoS モード選択の目安

Basic モードと Advanced モードの主な違いは、出力キュー制御の有無ではなく、ACL、class-map、policy-map による通信フロー単位の制御を使用するかどうかです。

QoS モードの設定変更

QoS モードの設定はグローバルコンフィギュレーションモードにて以下コマンドで行います。

QoS モードの設定
  • qos basic:QoS Basic モードに設定する
  • qos advanced [ ports-not-trusted | ports-trusted ]:QoS Advanced モードに設定する
    • [ ports-not-trusted | ports-trusted ]
      • Advanced モードではポートのデフォルトの信頼状態を指定する
      • デフォルト値は ports-not-trusted
      • 詳細は後述

また QoS を無効にする場合は以下のコマンドで設定します。

QoS の無効化
  • no qos

QoS モード設定後は show qos コマンドで現在の QoS モードを確認します。

C1300-8T(config)#qos advanced
C1300-8T(config)#end
C1300-8T#show qos
Qos: Advanced mode
Advanced mode trust type: cos-dscp
Advanced mode ports state: Not trusted

C1300-8T#

Qos: Advanced mode」でモードを、「Advanced mode ports state」でポートのデフォルト信頼状態を確認できます。

QoS モード変更時の注意点

QoS モードの変更を行うと、QoS 設定の削除を伴うことの確認メッセージが表示されます。

C1300-8T(config)#qos basic
  This action will cause loss of configuration.Proceed?  (Y/N)[Y] Y
C1300-8T(config)#

変更を確定すると既存の QoS 設定の一部または全部が失われる可能性があるため、変更前後でコンフィグ全体を比較し、削除された設定を確認することを推奨します。

CoS/DSCP と出力キューのマッピング

CoS/DSCP-to-Queue マッピングは、受信パケットの CoS または DSCP と、割り当て先となる出力キューの対応関係を定義する設定です。デフォルトでもマッピングが設定されていますが、設計に応じて変更できます。

マッピングの設定を変更しても、対象パケットの CoS/DSCP が信頼されなければ、そのマッピングは使われません。

QoS モードCoS/DSCP マッピングが使用される主な条件
Basic モード受信ポートで CoS または DSCP を信頼する場合
※デフォルトで信頼する
Advanced モードpolicy-map または Advanced モードの信頼設定により、
パケットの CoS/DSCP を信頼する場合
QoS 無効使用されない
表:QoS モード別のキューマッピング条件

Advanced モードについては、以下のようにやや複雑なルールでマッピングが決まります。

  • policy-map の処理によってキュー指定や信頼処理などの QoS アクションが実行されないパケットの扱い
    • モード設定において ports-trusted の場合は、CoS/DSCP に基づいてマッピングされる
    • モード設定において ports-not-trusted の場合は、キュー 1 にマッピングされる
  • policy-map で出力キューを明示指定した場合は、CoS/DSCP マッピングよりクラス別のキュー指定が使用される

CoS-to-Queue マッピング設定

CoS キューマッピングはデフォルトでは以下の通りです。

CoS 値マッピング先キュー番号
01
12
23
36
45
58
68
77
表:デフォルトの CoS キューマッピング

現在の CoS キューマッピングは show qos interface queuing <インターフェース名> コマンドで確認できます。

C1300-8T#show qos interface queuing gi1
Ethernet gi1
wrr bandwidth weights and EF priority:
qid-weights      Ef - Priority
1 - N/A          ena- 1
2 - N/A          ena- 2
3 - N/A          ena- 3
4 - N/A          ena- 4
5 - N/A          ena- 5
6 - N/A          ena- 6
7 - N/A          ena- 7
8 - N/A          ena- 8
Cos-queue map:
cos-qid
0 - 1
1 - 2
2 - 3
3 - 6
4 - 5
5 - 8
6 - 8
7 - 7

Cos-queue map:」の箇所が CoS キューマッピングを示しています。

CoS キューマッピング設定は全インターフェースで共通です。

CoS キューマッピングの設定変更はグローバルコンフィギュレーションモードにて以下コマンドで行います。

CoS キューマッピングの設定
  • wrr-queue cos-map <キュー番号> <CoS値1> [<CoS値2>] [<CoS値3>] ...
    • CoS 値を半角スペース区切りで複数指定するとまとめてマッピング設定可能

以下は CoS 1 と CoS 2 をキュー 4 にマッピングする場合の設定例です。

C1300-8T(config)#wrr-queue cos-map 4 1 2

なお、コンフィグ上では CoS 値 1 つにつき 1 行で表示されます。

C1300-8T#show run | inc wrr-queue
wrr-queue cos-map 4 1
wrr-queue cos-map 4 2
C1300-8T#

設定後の CoS キューマッピングを show qos interface queuing <インターフェース名> コマンドで確認します。

C1300-8T#show qos interface queuing gi1
Ethernet gi1
wrr bandwidth weights and EF priority:
qid-weights      Ef - Priority
1 - N/A          ena- 1
2 - N/A          ena- 2
3 - N/A          ena- 3
4 - N/A          ena- 4
5 - N/A          ena- 5
6 - N/A          ena- 6
7 - N/A          ena- 7
8 - N/A          ena- 8
Cos-queue map:
cos-qid
0 - 1
1 - 4
2 - 4
3 - 6
4 - 5
5 - 8
6 - 8
7 - 7
C1300-8T#

設定をデフォルト値に戻す場合は、CoS 値ごとにデフォルトのキューマッピングに設定しなおします。

C1300-8T(config)#wrr-queue cos-map 2 1
C1300-8T(config)#wrr-queue cos-map 3 2

すべての CoS 値のキューマッピングをデフォルトに戻す場合は「no wrr-queue cos-map」と設定します。

C1300-8T(config)#no wrr-queue cos-map

DSCP-to-Queue マッピング設定

DSCP キューマッピングはデフォルトでは以下の通りです。

DSCP 値マッピング先キュー番号
1-81
02
9-153
17-234
25-315
33-396
16, 24, 40, 48-637
32, 41-478
表:デフォルトの DSCP キューマッピング

現在の DSCP キューマッピングは show qos map dscp-queue コマンドで確認できます。

C1300-8T#show qos map dscp-queue
Dscp-queue map:
     d1 : d2 0  1  2  3  4  5  6  7  8  9
     -------------------------------------
      0 :   02 01 01 01 01 01 01 01 01 03
      1 :   03 03 03 03 03 03 07 04 04 04
      2 :   04 04 04 04 07 05 05 05 05 05
      3 :   05 05 08 06 06 06 06 06 06 06
      4 :   07 08 08 08 08 08 08 08 07 07
      5 :   07 07 07 07 07 07 07 07 07 07
      6 :   07 07 07 07

Dscp-queue map:」の箇所が DSCP キューマッピングを示しています。

DSCP キューマッピング設定は全インターフェースで共通です。

DSCP キューマッピングの設定変更は、グローバルコンフィギュレーションモードにて以下コマンドで行います。

DSCP キューマッピングの設定
  • qos map dscp-queue <DSCP値1> [<DSCP値2>] [<DSCP値3>] ... to <キュー番号>
    • DSCP 値を半角スペース区切りで複数指定するとまとめてマッピング設定可能
      • 同時に指定できる DSCP 値は 8 つまで

以下は DSCP 1 と DSCP 2 をキュー 4 にマッピングする場合の設定例です。

C1300-8T(config)#qos map dscp-queue 1 2 to 4

なお、コンフィグ上では DSCP 値 1 つにつき 1 行で表示されます。

C1300-8T#show run | inc qos map
qos map dscp-queue 1 to 4
qos map dscp-queue 2 to 4
C1300-8T#

設定後の DSCP キューマッピングを show qos map dscp-queue コマンドで確認します。

C1300-8T#show qos map dscp-queue
Dscp-queue map:
     d1 : d2 0  1  2  3  4  5  6  7  8  9
     -------------------------------------
      0 :   02 04 04 01 01 01 01 01 01 03
      1 :   03 03 03 03 03 03 07 04 04 04
      2 :   04 04 04 04 07 05 05 05 05 05
      3 :   05 05 08 06 06 06 06 06 06 06
      4 :   07 08 08 08 08 08 08 08 07 07
      5 :   07 07 07 07 07 07 07 07 07 07
      6 :   07 07 07 07

設定をデフォルト値に戻す場合はグローバルコンフィギュレーションモードにて以下コマンドで行います。

DSCP キューマッピングをデフォルトに戻す
  • no qos map dscp-queue <DSCP値1> [<DSCP値2>] [<DSCP値3>]
    • 指定した DSCP 値のキューマッピングをデフォルトに戻す
    • DSCP 値を半角スペース区切りで複数指定するとまとめて設定可能
      • 同時に指定できる DSCP 値は 8 つまで
  • no qos map dscp-queue
    • すべての DSCP 値についてのキューマッピングをデフォルトに戻す

以下は DSCP 1 と DSCP 2 のキューマッピングをデフォルトに戻す設定例です。

C1300-8T(config)#no qos map dscp-queue 1 2

すべての DSCP 値のキューマッピングをデフォルトに戻す場合は「no qos map dscp-queue」と設定します。

C1300-8T(config)#no qos map dscp-queue

Basic モードの設定

QoS Basic モードでは、受信パケットの CoS または DSCP を信頼し、前節で説明した CoS/DSCP-to-Queue マッピングに基づいて出力キューを決定します。

Basic モードの設定では、最初に信頼する QoS 値を選択し、対象インターフェースで信頼設定を行います。

信頼方式の設定

Basic モードで選択できる信頼方式は以下表の 3 種類です。デフォルトの設定では DSCP です。

信頼方式動作主な用途
CoS受信フレームの CoS に基づいてキューを決定VLAN タグ内の CoS を利用する場合
DSCPIP パケットの DSCP に基づいてキューを決定IP 通信の DSCP を利用する場合
CoS/DSCPIP パケットでは DSCP、IP 以外では CoS を使用IP と非 IP 通信を混在して扱う場合
表:Basic モードにおける信頼方式

DSCP 方式では、IP パケットは DSCP 値に基づいて出力キューへ割り当てられます。DSCP 値を持たない非 IP パケットは、ベストエフォートキューへ割り当てられます。IP パケットでは DSCP、非 IP パケットでは CoS を使用する場合は、CoS/DSCP 方式を選択します。

信頼方式はグローバルコンフィギュレーションモードにて以下コマンドで設定します。

Basic モードの信頼方式の設定
  • qos trust cos
    • CoS 方式に設定
  • qos trust dscp
    • DSCP 方式に設定。デフォルト値
  • qos trust cos-dscp
    • CoS、DSCP 併用方式に設定

以下は CoS、DSCP 併用方式に設定する場合の設定例です。

C1300-8T(config)#qos trust cos-dscp

現在の信頼方式は show qos コマンドで確認できます。

C1300-8T#show qos
Qos: Basic mode
Basic trust: cos-dscp

Basic trust: cos-dscp」の表示より現在の信頼方式が CoS、DSCP 併用方式であることを確認できます。

インターフェースで CoS/DSCP を信頼する設定

グローバルで信頼方式を決めても、インターフェース側で信頼しなければ、受信パケットの CoS/DSCP はキューマッピングに使用されません。インターフェース設定では受信パケットの QoS 値を信頼するかどうかを決めます。

インターフェースコンフィギュレーションモードにて以下コマンドで信頼設定を行います。

インターフェースの信頼設定
  • qos trust
    • インターフェースを信頼する状態にする。デフォルト値
  • no qos trust
    • インターフェースを信頼しない状態にする

以下は GigabitEthernet1 を信頼しない状態にする場合の設定例です。

C1300-8T(config)#interface GigabitEthernet1
C1300-8T(config-if)#no qos trust

現在の信頼状態は show qos interface <インターフェース名> コマンドで確認できます。

C1300-8T#show qos interface GigabitEthernet1
Ethernet gi1
Default CoS: 0
Trust mode: disable

Trust mode: disable」の表示より、信頼しない状態であることを確認できます。

タグなしフレームのデフォルト CoS の設定

VLAN タグがないフレームには CoS 値が存在しません。ポートが信頼されており、パケットがタグなしの場合、受信ポートのデフォルトの CoS 値がそのフレームの CoS 値として使用されます。

各ポートのデフォルトのデフォルト CoS 値は「0」です。

インターフェースコンフィギュレーションモードにて以下コマンドでデフォルト CoS 値を設定できます。

インターフェースのデフォルト CoS 値の設定
  • qos cos <0-7>
    • デフォルトの CoS 値を 0-7 の範囲から設定
  • no qos cos
    • デフォルトのデフォルト CoS 値 (0) に戻す

以下は GigabitEthernet1 のデフォルト CoS 値を 5 にする場合の設定例です。

C1300-8T(config)#interface GigabitEthernet1
C1300-8T(config-if)#qos cos 5

現在のデフォルト CoS 値は show qos interface <インターフェース名> コマンドで確認できます。

C1300-8T#show qos interface GigabitEthernet1
Ethernet gi1
Default CoS: 5
Trust mode: disable

Default CoS: 5」の表示より、デフォルト CoS 値が 5 であることを確認できます。

Advanced モードの信頼設定

信頼する QoS 値の設定

Advanced モードでは、受信パケットの CoS または DSCP を信頼して出力キューを決定する場合に、どの QoS 値を使用するかを設定します。

この設定は、qos advanced ports-trusted によってデフォルトで信頼されるパケット、または policy-map の trust アクションによって信頼されるパケットに適用されます。

Advanced モードの信頼方式の設定
  • qos advanced-mode trust {cos | dscp | cos-dscp}
    • cos
      • 受信フレームの CoS に基づいて出力キューを決定する
      • タグなしフレームでは、受信ポートのデフォルト CoS を使用する
    • dscp
      • IP パケットの DSCP に基づいて出力キューを決定する
    • cos-dscp
      • IP パケットでは DSCP、IP 以外のパケットでは CoS を使用する
      • デフォルト値
C1300-8T(config)#qos advanced-mode trust dscp

設定後は show qos で確認します。

C1300-8T#show qos
Qos: Advanced mode
Advanced mode trust type: dscp
Advanced mode ports state: Not trusted

Advanced mode trust type:」で現在の設定内容を確認できます。

モード設定におけるポート信頼設定

Advanced モードに設定するコマンドは以下です。

QoS Advanced モードの設定
  • qos advanced [ ports-not-trusted | ports-trusted ]:QoS Advanced モードに設定する
    • [ ports-not-trusted | ports-trusted ]
      • Advanced モードではポートのデフォルトの信頼状態を指定する
      • デフォルト値は ports-not-trusted

ポート信頼設定の詳細については以下の通りです。

  • ports-not-trusted
    • policy-map の処理によってキュー指定や信頼処理などの QoS アクションが実行されないパケットは、既存の CoS/DSCP を信頼せず、すべてキュー 1 にマッピングされる
    • policy-map 内で trust (後述) が設定されたクラスだけは例外で、qos advanced-mode trust で選択した CoS/DSCP に基づいてキューへ割り当てられる
  • ports-trusted
    • policy-map の処理によってキュー指定や信頼処理などの QoS アクションが実行されないパケットは、qos advanced-mode trust で選択した CoS/DSCP に基づいて出力キューへ割り当てられる
    • 既存の CoS/DSCP の値に基づいてキューマッピングする場合はこれを設定する

Advanced モードの分類と policy-map

QoS Advanced モードでは、ACL で対象通信を定義し、class-map でクラスとして参照します。次に policy-map でクラスごとの処理を定義し、作成した policy-map をインターフェースへ適用します。

  • ACL で対象通信を定義する
  • class-map で ACL を参照する
  • policy-map へ class-map を関連付ける
  • クラスごとのアクションを設定する
  • policy-map のデフォルトアクションを設定する
  • policy-map をインターフェースへ適用する

ACL による対象通信の定義

対象通信を定義する ACL を設定します。

QoS Advanced モードでは、MAC ACL、IPv4 ACL、IPv6 ACL を通信フローの分類条件として使用できます。ACL は対象通信の条件だけを定義し、マーキング、出力キュー指定、ポリシングなどの処理は後続の policy-map で設定します。

以下は ACL の例です。

ip access-list extended acl-test-01
permit ip 10.0.10.0 0.0.0.255 192.168.100.0 0.0.0.255

ip access-list extended acl-test-02
permit ip 10.0.20.0 0.0.0.255 192.168.200.0 0.0.0.255

ip access-list extended acl-test-03
permit ip any any

ACL の構文や詳細な設定方法については、Cisco Catalyst 1300 CLI ガイドACL の解説記事を参照してください。

設定した ACL は次に設定する class-map で参照します。

class-map の作成

ACL で定義した通信条件を、policy-map から参照するための class-map を作成します。

class-map 自体は、マーキング、出力キュー指定、ポリシングなどの処理を設定するものではありません。対象通信の分類条件をまとめ、後続の policy-map から参照できるクラスとして定義します。

class-map の作成後、match access-group コマンドで参照する ACL を指定します。

class-map の設定
  • class-map <class-map 名> [match-all | match-any]
    • class-map を作成し、クラスマップコンフィギュレーションモードへ移行する
    • match-all:登録したすべての一致条件を満たす通信を対象とする。省略時のデフォルト
    • match-any:登録したいずれかの一致条件を満たす通信を対象とする
  • match access-group <ACL 名>
    • class-map から参照する MAC ACL、IPv4 ACL、または IPv6 ACL を指定する

前項で作成した ACL を参照する場合は、次のように設定します。

class-map class-test-01 match-any
 match access-group acl-test-01

class-map class-test-02 match-any
 match access-group acl-test-02

class-map class-test-03 match-any
 match access-group acl-test-03

class-test-03 は、acl-test-03 (permit ip any any) によって IPv4 通信を包括的に対象とするクラスです。
class-test-03 はすべての IPv4 通信に一致するため、個別条件を設定したクラスの後に配置します。

この例では各 class-map に設定している一致条件は 1 つですが、複数の一致条件を追加した場合にも、いずれかの条件を満たす通信を対象とするため、match-any を明示しています。

作成した class-map は、show class-map コマンドで確認できます。

C1300-8T#show class-map
Class Map matchAny class-test-01
   Match access-group acl-test-01

Class Map matchAny class-test-02
   Match access-group acl-test-02

Class Map matchAny class-test-03
   Match access-group acl-test-03

また、特定の class-map だけを確認する場合は、名前を指定します。

C1300-8T#show class-map class-test-01
Class Map matchAny class-test-01
   Match access-group acl-test-01

設定した class-map は、次に作成する policy-map へ関連付けます。

policy-map の作成

class-map で分類した通信に対する処理を定義するため、policy-map を作成します。

policy-map には 1 つ以上の class-map を関連付けることができ、各クラスに対して、マーキング、出力キュー指定、ポリシングなどのアクションを設定します。

policy-map の作成後、class コマンドで関連付ける class-map を指定します。

policy-map の設定
  • policy-map <policy-map 名>
    • policy-map を作成し、ポリシーマップコンフィギュレーションモードへ移行する
  • class <class-map 名>
    • 既存の class-map を policy-map へ関連付け、ポリシーマップクラスコンフィギュレーションモードへ移行する

前項で作成した class-map を関連付ける場合は、次のように設定します。

policy-map policy-test-01
 class class-test-01
 exit
 class class-test-02
 exit
 class class-test-03
 exit

ポリシーマップクラスコンフィギュレーションモードの状態から別のポリシーマップクラスを設定する場合、一度 exit コマンドを実行してポリシーマップコンフィギュレーションモードに戻る必要があります。

この時点では、各クラスに対する具体的な QoS アクションは設定していません。マーキング、出力キュー指定、ポリシングなどの設定方法は、後述する「policy-map で設定できるクラス別アクション」で説明します。

作成した policy-map は、show policy-map コマンドで確認できます。

C1300-8T#show policy-map
 Policy Map policy-test-01
   class class-test-01
   class class-test-02
   class class-test-03

特定の policy-map だけを確認する場合は、名前を指定します。

C1300-8T#show policy-map policy-test-01
 Policy Map policy-test-01
   class class-test-01
   class class-test-02
   class class-test-03

設定した policy-map は、後続の手順でデフォルトアクションを設定したうえで、インターフェースへ適用します。

Catalyst 1300 スイッチには、Catalyst 9200L などが採用している MQC の QoS 体系に存在するすべての通信フローを意味する class-default という組み込みクラスはありません。未一致通信へマーキング、出力キュー指定、ポリシングなどの QoS アクションを設定する場合は、全一致 ACL を参照する class-map を明示的に作成します。

policy-map のインターフェースへの適用

作成した policy-map を service-policy コマンドでインターフェースへ適用します。

インターフェースへの policy-map の適用
  • service-policy {input | output} <policy-map 名> [default-action {permit-any | deny-any}]
    • input:入力方向へ policy-map を適用する
    • output:出力方向へ policy-map を適用する
    • default-action {permit-any | deny-any}
      • policy-map のどのクラスにも一致しないパケットの処理を設定する
      • permit-any:パケットを転送する
      • deny-any:パケットを破棄する
      • default-action を省略した場合は deny-any が適用される

方向ごとに 1 インターフェースあたり 1 つの policy-map を適用できます。また、同じ policy-map を入力方向と出力方向へ同時に適用することはできません。

前項で作成した policy-test-01 を GigabitEthernet1 の入力方向へ適用する場合は、次のように設定します。

interface GigabitEthernet1
 service-policy input policy-test-01 default-action permit-any

この設定では、policy-test-01 のクラスに一致したパケットには各クラスで設定したアクションが適用され、どのクラスにも一致しないパケットは転送されます。

デフォルトアクションについて

デフォルトアクションは、policy-map のどのクラスにも一致しないパケットの処理を決定します。デフォルトアクションを指定しない場合は deny-any となります。そのため、QoS 制御を目的として policy-map を適用する場合でも、未一致パケットを転送する設計であれば permit-any を明示する必要があります。

未一致に相当する通信へ QoS アクションを設定する場合は、前項で作成した class-test-03 のように、全一致条件を持つ ACL と class-map を明示的に作成します。
ただし、permit ip any any で作成したクラスが対象とするのは IPv4 通信です。IPv6 や非 IP 通信は含まれません。

出力方向へ適用する場合の制約

policy-map は出力方向にも適用できますが、出力方向でサポートされていないアクションを含む場合、service-policy output の設定は失敗します。

たとえば、次のアクションを含む policy-map は出力方向へ適用できません。

  • クラス別の出力キュー指定
  • ポリシング
  • CoS/DSCP の信頼

各アクションの適用方向は、後述する「policy-map で設定できるクラス別アクション」で説明します。

policy-map の適用解除

インターフェースから policy-map を解除する場合は、policy-map 名以降を含めずに適用方向までを指定して次のように設定します。

interface GigabitEthernet1
 no service-policy input
 no service-policy output

適用状態の確認

show qos interface <インターフェース名> コマンドで、指定したインターフェースに適用している policy-map を確認できます。

C1300-8T#show qos interface gi1
Ethernet gi1
Default CoS: 5
Trust mode: enable
Ingress policy applied: policy-test-01
Egress policy applied: policy-test-02
Default ACE ingress action: forward-all
Default ACE egress action: deny-all

Ingress policy applied:」で input 方向に適用されている policy-map を確認できます。「Egress policy applied:」で output 方向に適用されている policy-map を確認できます。policy-map が適用されていない場合はこれらの項目は表示されません。

インターフェース名を指定せずに show qos interface コマンドを実行すると、全インターフェースの情報が表示されます。

policy-map で設定できるクラス別アクション

QoS Advanced モードでは、policy-map に関連付けた各クラスに対して、次の QoS アクションを設定できます。

アクション設定内容入力方向出力方向
出力キューの指定対象パケットをキュー 1~8 のいずれかへ割り当てる×
CoS マーキング対象フレームの CoS を 0~7 の値へ変更する
DSCP マーキング対象 IP パケットの DSCP を 0~63 の値へ変更する
ポリシングCIR と CBS に基づいて通信レートを監視し、
超過パケットを処理する
×
CoS/DSCP の信頼受信パケットの CoS/DSCP を使用して出力キューを決定する×
表:policy-map で設定できる主なクラス別 QoS アクション

これらのアクションは、policy-map 内で class コマンドを実行した後のポリシーマップクラスコンフィギュレーションモードで設定します。

出力キュー指定、CoS マーキング、DSCP マーキングには set コマンドを使用します。ポリシングには police コマンドを使用します。既存の CoS/DSCP を信頼する場合は trust コマンドを使用します。

なお、Catalyst 1300 の policy-map には、Catalyst 9200L の priority や bandwidth 系コマンドに相当するクラス単位の優先キュー指定や最低帯域保証はありません。ACL と class-map で対象通信を分類し、policy-map でクラス別のマーキング、出力キュー指定、ポリシングなどを設定します。実際のキューの送信順序や送信レートは、後述する緊急キュー、WRR、キューシェーピングなどで制御します。

出力キューの指定

以下コマンドを使用することで、クラスに一致したパケットをキュー 1~8 のいずれかへ直接割り当てることができます。

出力キューの設定
  • set queue <キュー番号>
    • キュー番号は 1~8 の範囲で指定する
    • クラスに一致したパケットを指定した出力キューへ割り当てる
    • 出力方向の policy-map では使用できない

set queue を設定した場合、受信パケットの CoS/DSCP とキューのマッピングではなく、クラスに設定したキュー番号が割り当て先として使用されます。

set queue はパケットを出力キューへ割り当てる設定であり、そのキューを緊急キューにする設定や、キュー間の送信比率を設定するものではありません。キューの送信動作は、緊急キュー、WRR、キューシェーピングの設定によって決まります。

以下は、前項で作成した 3 つのクラスを、それぞれ異なる出力キューへ割り当てる設定例です。

policy-map policy-test-01
 class class-test-01
  set queue 8
 exit
 class class-test-02
  set queue 7
 exit
 class class-test-03
  set queue 2
 exit

なお、キュー 8 は特別なキューのため、キュー 8 への割り当てを設定する際に以下のような確認メッセージが表示されます。

C1300-8T(config)#policy-map policy-test-01
C1300-8T(config-pmap)#class class-test-01
C1300-8T(config-pmap-c)#  set queue 8
Queue number 8 is reserved for special traffic
Are you sure ? (Y/N)[N] Y
C1300-8T(config-pmap-c)#

たとえば、後続の設定でキュー 8 を緊急キューにすれば、class-test-01 の通信を優先送信できます。また、キュー 7 とキュー 2 を WRR の対象とし、それぞれ異なる重みを設定すれば、両キュー間の相対的な送信機会を調整できます。

ただし、set queue を含む policy-map はインターフェースの出力方向へ適用できません。クラス別のキュー指定を使用する場合は、policy-map を入力方向へ適用します。Cisco の CLI ガイドでも、set queue は出力方向の policy-map ではサポートされないと明記されています。

ポリシーマップの設定内容は show policy-map コマンドで確認します。

C1300-8T#show policy-map
 Policy Map policy-test-01
   class class-test-01
     set egress queue 8
   class class-test-02
     set egress queue 7
   class class-test-03
     set egress queue 2

CoS/DSCP マーキング

以下コマンドを使用することで、クラスに一致したパケットの CoS または DSCP を指定した値へ変更できます。

CoS/DSCP マーキングの設定
  • set cos <CoS 値>
    • CoS を 0~7 の範囲で指定する
  • set dscp <DSCP 値>
    • DSCP を 0~63 の範囲で指定する

CoS は Ethernet フレームの VLAN タグに含まれる優先度です。set cos は対象フレームの CoS を変更します。

DSCP は IP ヘッダーに含まれる QoS 値です。set dscp は対象となる IP パケットの DSCP を変更します。非 IP パケットには DSCP が存在しないため、DSCP マーキングの対象にはなりません。

以下は、class-test-01 の DSCP を 46、class-test-02 の DSCP を 26、class-test-03 の DSCP を 0 に変更する設定例です。

policy-map policy-test-01
 class class-test-01
  set dscp 46
 exit
 class class-test-02
  set dscp 26
 exit
 class class-test-03
  set dscp 0
 exit

ポリシーマップの設定内容は show policy-map コマンドで確認します。

C1300-8T#show policy-map
 Policy Map policy-test-01
   class class-test-01
     set ip dscp 46
   class class-test-02
     set ip dscp 26
   class class-test-03
     set ip dscp 0

set queue を設定した場合は、クラスに指定したキューが使用されます。一方で、DSCP を変更した場合は DSCP と出力キューのマッピングに基づいてキューが決定されます。

同じクラスの中で set queue、set dscp、set cos を同時に設定することはできません。例えば、set queue を設定している状態で set dscp を設定すると、set queue は消えて set dscp のみが設定された状態になります。

ポリシング

ポリシングは、クラスに一致した通信のレートを監視し、設定したレートを超過したパケットに対して破棄または DSCP の再マーキングを行う機能です。

Catalyst 1300 スイッチでは、ポリシングは QoS Advanced モードの policy-map 内で設定します。ポリシングを含む policy-map は入力方向のみに適用でき、出力方向へは適用できません。

ポリシングの設定
  • police <CIR (kbps)> <CBS (byte)> [exceed-action {drop | policed-dscp-transmit}] [peak <ピークレート (kbps)> <PBS (byte)> [violate-action {drop | policed-dscp-transmit}]]
    • CIR (kbps):平均通信レート。kbps 単位で指定する
    • CBS (byte):通常時に許容するバーストサイズ。byte 単位で指定する
    • exceed-action:CIR および CBS の基準を超えたパケットに対する処理
    • peak:ピークレートとピークバーストサイズを追加する
    • violate-action:ピーク側の基準も超えたパケットに対する処理
    • 超過時のアクションには次のいずれかを指定
      • drop:超過パケットを破棄する
      • policed-dscp-transmit:IP パケットの DSCP を再マーキングして転送する
    • exceed-action を省略した場合の動作
      • peak を設定していない場合 ⇒ 超過パケットは破棄される
      • peak を設定している場合 ⇒ CIR 側の超過パケットに policed-dscp-transmit が適用される
      • violate-action を省略した場合、ピーク側の基準も超えたパケットは破棄される

以下は、class-test-01 の通信を CIR 100,000 kbps、CBS 10,000 byte でポリシングし、超過パケットを破棄する設定例です。

policy-map policy-test-01
 class class-test-01
  police 100000 10000 exceed-action drop

この設定では、class-test-01 に一致する通信のレートを監視し、設定した CIR および CBS の基準を超えたパケットを破棄します。

ポリシーマップの設定内容は show policy-map コマンドで確認します。

C1300-8T#show policy-map
 Policy Map policy-test-01
   class class-test-01
     police 100000 10000 exceed-action drop

   class class-test-02
   class class-test-03

ポリシングは、通信レートが設定値を超えた際にパケットを直ちに処理する機能です。超過したパケットを一時的に保持し、後から送信するシェーピングとは動作が異なります。

また、ポリシングは出力キューの割り当てやキューの送信順序を決定するものではありません。必要に応じて、set queue、CoS/DSCP マッピング、緊急キュー、WRR などと組み合わせて設計します。

Cisco の CLI ガイドでは、ポリシングにトークンバケット方式を使用し、CIR がトークンの追加速度、CBS がバケットの大きさを表すと説明されています。また、CIR は 3 kbps からポートの最大速度まで、CBS は 3,000~19,173,960 byte の範囲で指定します。

超過パケットの DSCP 再マーキング

policed-dscp-transmit を指定すると、超過した IP パケットを破棄せず、DSCP を別の値へ変更して転送できます。

再マーキング後の DSCP 値は、policy-map 内の police コマンドではなく、グローバルコンフィギュレーションモードの qos map policed-dscp コマンドで定義します。

qos map policed-dscp <元の DSCP 値> to <変更後の DSCP 値>

そのうえで、policy-map 内の超過時アクションに policed-dscp-transmit を指定します。

policy-map policy-test-01
 class class-test-01
  police 100000 10000 exceed-action policed-dscp-transmit

この場合、設定レート以内のパケットは通常どおり転送され、超過した IP パケットは qos map policed-dscp で定義した DSCP へ変更して転送されます。

DSCP の再マーキングは IP パケットに対してのみ動作します。また、Cisco の CLI ガイドでは、policed-dscp-transmit による再マーキングを有効にするには、Advanced モードの信頼方式が DSCP を使用する状態である必要があるとされています。

ポリシング設定時の注意点

ポリシングは、特定クラスへ最低帯域を保証する設定ではありません。

たとえば、CIR に 100,000 kbps を指定しても、そのクラスへ常に 100 Mbps の帯域を確保するわけではありません。通信レートを監視し、基準を超えたパケットを破棄または再マーキングするための上限制御として使用します。

また、ポリシングを含む policy-map を出力方向へ適用すると、service-policy output の設定は失敗します。ポリシングを使用する policy-map は入力方向へ適用します。

C1300-8T(config-if)#service-policy output policy-test-01
Egress policy map 'policy-test-01' has a class action that is not supported as egress.

CoS/DSCP の信頼

trust コマンドを使用すると、クラスに一致したパケットの既存の CoS または DSCP を信頼し、CoS/DSCP-to-Queue マッピングに基づいて出力キューを決定できます。

CoS/DSCP の信頼の設定
  • trust

どの QoS 値を信頼するかは、グローバルコンフィギュレーションモードの qos advanced-mode trust で設定します。

たとえば、次の設定では、class-test-01 に一致したパケットの DSCP を信頼します。

qos advanced-mode trust dscp

policy-map policy-test-01
 class class-test-01
  trust

この設定では DSCP 自体を書き換えず、受信パケットに設定されている DSCP と DSCP-to-Queue マッピングに基づいて出力キューを決定します。

set dscp が DSCP を指定した値へ変更するのに対し、trust は受信パケットの既存値をそのまま使用する点が異なります。

trust と set は、同じポリシーマップクラス内で併用できません。

trust は受信パケットの既存の CoS/DSCP を使用するアクションであり、set cos、set dscp、set queue は新しい値またはキューを明示的に指定するアクションです。そのため、同じポリシーマップクラスではどちらか一方の方式を選択します。

出力キューの送信制御

Catalyst 1300 スイッチでは、各インターフェースにキュー 1~8 の 8 つの出力キューがあります。

パケットが出力キューへ割り当てられた後は、次の機能を使用して、各キューの送信順序や送信レートを制御します。

  • 緊急キュー
  • WRR
  • キューシェーピング

緊急キューと WRR は、複数の出力キューに送信待ちパケットが存在する場合に、どのキューからどのような順序や比率で送信するかを決定します。

キューシェーピングは、指定したキューから送信するトラフィックのレート上限を設定します。

これらは policy-map 内で設定するクラス別アクションではありません。緊急キューと WRR はスイッチ全体に対して設定し、キューシェーピングは対象インターフェースに対して設定します。

機能設定単位主な役割
緊急キュースイッチ全体対象キューを他のキューより優先して送信する
WRRスイッチ全体通常キュー間の相対的な送信機会を配分する
キューシェーピングインターフェースの出力キュー指定キューの送信レートに上限を設定する
表:出力キューの主な送信制御

緊急キュー

緊急キューは、通常の WRR キューよりも優先して送信される絶対優先キューです。

緊急キューに送信待ちパケットが存在する場合、そのキューが空になるまで優先して送信されます。緊急キューが複数ある場合は、番号が大きいキューから順に処理されます。

緊急キューの数は、グローバルコンフィギュレーションモードにて次のコマンドで設定します。

緊急キューの設定
  • priority-queue out num-of-queues <緊急キュー数>
    • 緊急キュー数は 0~8 の範囲で指定する
    • 番号の大きいキューから順に緊急キューとなる
    • 0 の場合は緊急キューを使用せず、すべてのキューを WRR の対象とする
    • 8 の場合はすべてのキューが緊急キューとなる
    • デフォルト値は 8

緊急キューと WRR キューの対応関係は次のとおりです。

設定値緊急キューWRR キュー
0なしキュー 1~8
1キュー 8キュー 1~7
2キュー 7~8キュー 1~6
6キュー 3~8キュー 1~2
8キュー 1~8なし
表:緊急キュー数と対象キュー

たとえば、緊急キューを 2 つにする場合は、次のように設定します。

C1300-8T(config)#priority-queue out num-of-queues 2

この設定では、キュー 8 とキュー 7 が緊急キューとなり、キュー 1~6 が WRR の対象となります。

設定内容は、show qos interface queueing <インターフェース名> コマンドで確認します。

C1300-8T#show qos interface queuing GigabitEthernet1
Ethernet gi1
wrr bandwidth weights and EF priority:
qid-weights      Ef - Priority
1 - 1            dis- N/A
2 - 2            dis- N/A
3 - 4            dis- N/A
4 - 8            dis- N/A
5 - 16           dis- N/A
6 - 32           dis- N/A
7 - N/A          ena- 7
8 - N/A          ena- 8
Cos-queue map:
cos-qid
0 - 1
1 - 2
2 - 3
3 - 6
4 - 5
5 - 8
6 - 8
7 - 7

出力の Ef - Priority で、各キューが緊急キューとして有効になっているか、および緊急キュー内の優先順位を確認できます。

緊急キュー設定をデフォルトに戻す

no priority-queue out num-of-queues

このコマンドを実行すると、デフォルトの「8 つすべてのキューが緊急キュー」の状態へ戻ります。

緊急キューは、音声通信など、遅延やジッターの影響を受けやすい通信を優先して送信する場合に使用します。

ただし、緊急キューに大量のトラフィックが継続的に流れると、WRR キューの処理が後回しとなり、通常キューの通信が滞留する可能性があります。

そのため、緊急キューへ割り当てる通信を必要なものに限定するとともに、後述するキューシェーピングによって送信レートの上限を設定することを検討します。

WRR

WRR(Weighted Round Robin、加重ラウンドロビン)は、WRR に参加する複数のキューへ、設定した重みに基づく相対的な送信機会を割り当てる方式です。

WRR の重みは、グローバルコンフィギュレーションモードにて次のコマンドで設定します。

WRR の設定
  • wrr-queue bandwidth <キュー1の重み> <キュー2の重み> <キュー3の重み> …
    • WRR キューの重みを 1~255 の範囲で半角スペース区切りで順番に指定する
    • 指定する重みの個数は緊急キューを除き残った WRR キューの個数
    • 値が大きいキューほど、相対的に多くの送信機会が割り当てられる
    • 緊急キューは、WRR に関係なく優先される

各キューの相対的な送信機会は、次の関係で決まります。

÷WRR対象キューの重み ÷ WRR に参加する全キューの重みの合計

たとえば、緊急キューをキュー 7 とキュー 8 の 2 つとし、WRR キューであるキュー 1~6へ次の重みを設定する場合を考えます。

キュー送信方式重み
1WRR1
2WRR1
3WRR1
4WRR1
5WRR2
6WRR4
7緊急キューWRR 対象外
8緊急キューWRR 対象外
表:緊急キューと WRR の設定例

設定は次のようになります。

C1300-8T(config)#priority-queue out num-of-queues 2
C1300-8T(config)#wrr-queue bandwidth 1 1 1 1 2 4

キュー 7 とキュー 8 は緊急キューで WRR 対象外となるため、キュー 1~6 の重みのみ設定します。

キュー 1~6 にすべて送信待ちパケットが存在する場合、それぞれの相対的な送信機会は、おおむね次の比率となります。

キュー1 :キュー2:キュー3 :キュー4:キュー5 :キュー6
   1   :   1   :   1   :   1   :   2   :   4

重みの合計は 10 であるため、キュー 6 には WRR で処理される送信機会のおおむね 4/10、キュー 5 には 2/10 が割り当てられます。

ただし、この比率はポート帯域全体を各キューへ常時予約するものではありません。

WRR の重みは、次の条件が成立する場合に意味を持ちます。

  • 出力ポートで輻輳が発生している
  • 複数の WRR キューに送信待ちパケットが存在する
  • 緊急キューが空になり、WRR キューが処理される状態になっている

他のキューに送信待ちパケットが存在しない場合、1 つのキューがポートの空き帯域を使用できます。

このため、WRR の重みは Catalyst 9200L の bandwidth percent のような最低帯域保証ではなく、輻輳時における相対的な送信機会の配分として扱います。

設定内容は、show qos interface queueing <インターフェース名> コマンドで確認します。

C1300-8T#show qos interface queuing gi1
Ethernet gi1
wrr bandwidth weights and EF priority:
qid-weights      Ef - Priority
1 - 1            dis- N/A
2 - 1            dis- N/A
3 - 1            dis- N/A
4 - 1            dis- N/A
5 - 2            dis- N/A
6 - 4            dis- N/A
7 - N/A          ena- 7
8 - N/A          ena- 8
Cos-queue map:
cos-qid
0 - 1
1 - 2
2 - 3
3 - 6
4 - 5
5 - 8
6 - 8
7 - 7

出力の「qid-weights」で、各キューに設定された WRR の重みを確認できます。

WRR の重みをデフォルトに戻す

no wrr-queue bandwidth

キューシェーピング

キューシェーピングは、指定した出力キューの送信レートに上限を設定する機能です。

緊急キューまたは WRR キューのどちらにも設定できます。

特に、緊急キューへ割り当てたトラフィックがポート帯域を継続的に占有することを防ぎ、WRR キューへ送信機会を確保する目的で使用できます。

キューシェーピングは対象となる出力インターフェースに設定します。

キューシェーピングの設定
  • traffic-shape queue <キュー番号> <CIR (kbps)> [<CBS (byte)>]
    • キュー番号は 1~8 の範囲で指定する
    • CIR
      • キューの平均送信レートの上限を kbps 単位で指定する
      • 64 kbps からポートの最大速度までの範囲で指定する
    • CBS
      • 許容するバーストサイズを byte 単位で指定する
      • 4,096~16,670,940 byte の範囲で指定する
      • 省略可能
    • デフォルトではキューシェーピングは無効
    • Ethernet インターフェースとポートチャネルで設定可能

以下は、GigabitEthernet1 のキュー 8 の送信レートを 200,000 kbps、CBS を 10,000 byte に設定する例です。

interface GigabitEthernet1
 traffic-shape queue 8 200000 10000

この設定では、GigabitEthernet1 のキュー 8 から送信されるトラフィックの平均レートを 200 Mbps に制限します。

たとえば、キュー 8 を緊急キューとして使用している場合でも、キュー 8 から送信されるトラフィックは設定したシェーピングレートに制限されます。これにより、キュー 8 が 1 Gbps のポート帯域全体を継続的に使用することを抑制できます。

キューシェーピングは、設定レートを超過したパケットを直ちに破棄するポリシングとは異なります。送信可能なレートを超えたパケットはキューに保持され、設定したレートに従って順次送信されます。

ただし、送信待ちパケットが増加してキューの収容能力を超えた場合は、パケットが破棄される可能性があります。

設定内容は show qos interface shapers <インターフェース名> コマンドで確認します。

C1300-8T#show qos interface shapers GigabitEthernet1
Ethernet gi1
Port shaper: disable
Committed rate: N/A
Committed burst: N/A

                      Target            Target
qid      Status      Committed         Committed
                     Rate [Kbps]       Burst [bytes]
1        disable     N/A               N/A
2        disable     N/A               N/A
3        disable     N/A               N/A
4        disable     N/A               N/A
5        disable     N/A               N/A
6        disable     N/A               N/A
7        disable     N/A               N/A
8        enable      200000            10000

このコマンドでは、指定したインターフェースに設定されているポートシェーパーとキューシェーパーを確認できます。

キューシェーピングの解除

no traffic-shape queue <キュー番号>

以下は、GigabitEthernet1 のキュー 8 に設定したシェーピングを解除する例です。

interface GigabitEthernet1
 no traffic-shape queue 8

緊急キュー、WRR、キューシェーピングの組み合わせ例

次の要件を想定します。

  • キュー 8:音声通信を最優先で送信する
  • キュー 7:重要通信を音声通信に次いで優先する
  • キュー 1~6:WRR で相対的に送信機会を配分する
  • キュー 8:最大 200 Mbps に制限する
  • キュー 7:最大 300 Mbps に制限する

設定例は次のとおりです。

priority-queue out num-of-queues 2
wrr-queue bandwidth 1 1 1 1 2 4

interface GigabitEthernet1
 traffic-shape queue 8 200000 10000
 traffic-shape queue 7 300000 10000

この設定では、キュー 8 とキュー 7 が緊急キューとなります。

送信待ちパケットが存在する場合は、原則として次の順序で処理されます。

  • キュー 8
  • キュー 7
  • キュー 1~6を WRR の重みに基づいて処理

ただし、キュー 8 とキュー 7 にはキューシェーピングが設定されているため、それぞれ設定した送信レートの範囲で処理されます。

緊急キューの送信レートを制限することで、緊急キューによるポート帯域の継続的な占有を抑え、WRR キューへ送信機会が回るようにします。

この構成は、Catalyst 9200L の priority level percent や bandwidth 系コマンドと同一の動作ではありません。緊急キュー、WRR、キューシェーピングを組み合わせ、優先通信を先に処理しつつ、特定キューによる帯域占有を抑える近似設計です。

ポートシェーピング

ポートシェーピングは、指定したインターフェースから送信されるトラフィック全体の送信レートに上限を設定する機能です。

前項で説明したキューシェーピングが特定の出力キューだけを対象とするのに対し、ポートシェーピングは、対象ポートのすべての出力キューから送信されるトラフィックをまとめて制御します。

項目ポートシェーピングキューシェーピング
設定対象インターフェース全体指定した出力キュー
制御対象ポートから送信される全トラフィック指定したキューから送信されるトラフィック
主な用途回線帯域などに合わせて
ポート全体の送信レートを制限する
特定キューによる帯域占有を抑える
設定コマンドtraffic-shapetraffic-shape queue
設定場所インターフェースコンフィギュレーションモードインターフェースコンフィギュレーションモード
表:ポートシェーピングとキューシェーピングの違い

ポートシェーピングは QoS Basic モードと QoS Advanced モードのどちらでも使用できます。

ポートシェーピングの設定

ポートシェーピングは、インターフェースコンフィギュレーションモードで次のコマンドを使用して設定します。

ポートシェーピングの設定
  • traffic-shape <CIR (kbps)> [<CBS (byte)>]
    • CIR
      • ポート全体の平均送信レートの上限を kbps 単位で指定する
      • 64 kbps からポートの最大速度までの範囲で指定する
    • CBS
      • 許容するバーストサイズを byte 単位で指定する
      • 4,096~16,670,940 byte の範囲で指定する
      • 省略可能
    • デフォルトではポートシェーピングは無効
    • Ethernet インターフェースとポートチャネルで設定可能

以下は、GigabitEthernet1 の送信レートを 500,000 kbps、CBS を 10,000 byte に設定する例です。

interface GigabitEthernet1
 traffic-shape 500000 10000

この設定では、GigabitEthernet1 から送信されるトラフィック全体の平均レートを 500 Mbps に制限します。

ポート内で複数の出力キューが使用されている場合でも、それらのキューから送信されるトラフィックの合計がポートシェーピングの対象となります。

ポートシェーピングと出力キュー制御の関係

ポートシェーピングを設定しても、緊急キューや WRR の設定は無効になりません。

各パケットは、これまでに説明した設定に従って出力キューへ割り当てられます。その後、緊急キューまたは WRR に基づいて送信順序が決まり、最終的なポート全体の送信レートがポートシェーピングによって制限されます。

処理の関係は、次のように整理できます。

  • CoS/DSCP マッピングまたは policy-map によって出力キューを決定する
  • 緊急キューと WRR によってキュー間の送信順序や送信機会を決定する
  • キューシェーピングを設定している場合は、各キューの送信レートを制限する
  • ポートシェーピングによって、インターフェース全体の送信レートを制限する

たとえば、1 Gbps の物理インターフェースを 500 Mbps の回線へ接続する場合、ポートシェーピングを 500 Mbps に設定することで、スイッチから回線へ送信するトラフィック全体を回線帯域に合わせて制御できます。

一方、音声通信を割り当てたキュー 8 だけを 100 Mbps に制限したい場合は、ポートシェーピングではなく、前項で説明したキューシェーピングを使用します。

ポートシェーピングとキューシェーピングの併用

ポートシェーピングとキューシェーピングは、同じインターフェースで併用できます。

たとえば、次の要件を想定します。

  • ポート全体の送信レートを 500 Mbps に制限する
  • キュー 8 の送信レートを最大 100 Mbps に制限する
  • キュー 7 の送信レートを最大 200 Mbps に制限する

設定例は次のとおりです。

interface GigabitEthernet1
 traffic-shape 500000 10000
 traffic-shape queue 8 100000 10000
 traffic-shape queue 7 200000 10000

この設定では、キュー 8 は最大 100 Mbps、キュー 7 は最大 200 Mbps に制限されます。また、その他のキューを含むポート全体の送信レートは、最大 500 Mbps に制限されます。

ただし、これは各キューへ帯域を保証する設定ではありません。

たとえば、キュー 8 に通信が存在しない場合でも、その 100 Mbps がキュー 8 のために予約されるわけではありません。キューシェーピングとポートシェーピングは、いずれも送信レートの上限を設定する機能です。

また、各キューに設定したシェーピングレートの合計がポートシェーピングの設定値を上回っていても、実際にポートから送信できるトラフィックの合計は、ポートシェーピングの設定値によって制限されます。

設定内容の確認

ポートシェーピングとキューシェーピングの設定内容は show qos interface shapers <インターフェース名> コマンドで確認します。

以下は、GigabitEthernet1 にポートシェーピングを設定した場合の確認例です。

C1300-8T#show qos interface shapers GigabitEthernet1
Ethernet gi1
Port shaper: enable
Committed rate: 500000 Kbps
Committed burst: 10000 byte

                      Target            Target
qid      Status      Committed         Committed
                     Rate [Kbps]       Burst [bytes]
1        disable     N/A               N/A
2        disable     N/A               N/A
3        disable     N/A               N/A
4        disable     N/A               N/A
5        disable     N/A               N/A
6        disable     N/A               N/A
7        enable      200000            10000
8        enable      100000            10000

Port shaper が enable であることを確認します。

また、次の項目で設定値を確認できます。

  • Committed rate
    • ポート全体に設定されている CIR
  • Committed burst
    • ポート全体に設定されている CBS

キューシェーピングも設定している場合は、同じ出力のキュー一覧に、対象キューの状態と CIR、CBS が表示されます。show qos interface shapers は、指定したインターフェースのポートシェーパーとキューシェーパーの両方を表示するコマンドです。

ポートシェーピングの解除

ポートシェーピングを解除する場合は、対象インターフェースで次のコマンドを実行します。

no traffic-shape

以下は、GigabitEthernet1 のポートシェーピングを解除する例です。

interface GigabitEthernet1
 no traffic-shape

解除後に show qos interface shapers GigabitEthernet1 を実行すると、次のように表示されます。

Port shaper: disable
Committed rate: N/A
Committed burst: N/A

設計時の注意点

ポートシェーピングは、ポート全体の最大送信レートを制限する機能であり、特定のクラスやキューへ最低帯域を保証する機能ではありません。

また、ポートシェーピングの設定値を物理ポート速度より低くすると、そのインターフェースで利用できる実質的な送信帯域もその値まで低下します。

そのため、次のような用途で使用します。

  • 物理ポート速度より低い回線帯域や契約帯域に送信レートを合わせる
  • 接続先装置の処理能力を超えないように送信レートを抑える
  • 下流側で発生する輻輳やパケット破棄を、スイッチ側のシェーピングによって抑制する

一方、特定の通信だけを制御する場合は、ポートシェーピングではなく、キューシェーピングまたは Advanced モードのポリシングを検討します。

まとめ

Catalyst 1300 スイッチの QoS は、Catalyst 9200L の MQC とは異なり、出力キューを中心に設計します。

QoS Basic モードでは、受信パケットの CoS または DSCP とキューマッピングに基づいて出力キューを決定します。QoS Advanced モードでは、ACL、class-map、policy-map を使用し、通信フローごとのマーキング、出力キュー指定、ポリシングなどを設定できます。

ただし、Catalyst 9200L の bandwidth や priority level percent に相当する、クラス単位の最低帯域保証や優先帯域制御には対応していません。

Catalyst 1300 では、緊急キュー、WRR、キューシェーピング、ポートシェーピングを組み合わせ、出力キュー単位で QoS を設計します。

参考資料


Cisco Catalyst 1300 スイッチ関連記事一覧


Amazon で買えるおすすめアイテム

以下は Amazon アフィリエイトリンクです。ネットワーク作業向けにそこそこおすすめなアイテムです。

ブログ始めるなら 【アフィリエイトリンク】

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次