NEC IX の QoS 設定|class-map で構成する優先制御と帯域制御

  • URLをコピーしました!
目次

はじめに

NEC の UNIVERGE IX シリーズで QoS を設定する場合、class-map(分類)→ policy-map(動作)→ service-policy(適用)という体系を用います。これは Cisco の MQC によく似ており、Cisco を扱ったことがあれば全体像はつかみやすい構成です。

一方で、IX には固有の作法があります。優先制御・帯域制御を働かせるにはインタフェースで service-policy enable による有効化が必要で、class-mappolicy-map を変更したあとは反映のための操作が必要になります。これらを押さえないまま設定すると、設定したのに QoS が効かない、という状況になりがちです。本記事では、IX の QoS の全体像を整理したうえで、設定方法と、効かないときの確認までを扱います。

なお、QoS そのものの全体像(分類・マーキング・キューイング・帯域制御の役割や、優先制御の設計の考え方)は、関連記事『QoS とは|優先制御の仕組みと製品共通で押さえる設計のポイント』で扱っています。本記事は、その考え方を IX の設定に落とし込む位置づけです。

この記事でわかること
  • IX の QoS の構成(class-map / policy-map / service-policy の関係)と、Cisco(MQC)との違い・共通点
  • class-mapmatch によるトラフィックの分類
  • 優先制御(PQ)とシェーピングの設定方法
  • service-policy による適用と、DSCP / ToS のマーキング
  • QoS が効かないときの確認ポイントと show での確認

NEC IX の QoS(優先制御)の全体像

IX の QoS は、「分類(class-map)→ 動作の定義(policy-map)→ インタフェースへの適用(service-policy)」という 3 段階で構成されます。加えて、優先制御・帯域制御を働かせるための有効化が必要になる点が特徴です。

class-map / policy-map / service-policy の関係

各要素の役割は次のとおりです。

class-map

match 条件によって通信をクラスに分類します。宛先ネットワークやトンネル、IP アクセスリストなどで分類できます。

policy-map

分類したクラスごとに、優先制御(PQ)やシェーピング、帯域制御(CBQ)といった動作を定義します。

service-policy

定義したポリシーをインタフェースに適用します。

参考: NEC — UNIVERGE IX シリーズ FAQ(QoS)
「宛先ネットワークアドレスやトンネル毎にクラスマップを定義して、各クラスマップに帯域制御と優先制御の設定を行うことにより、実現することができます」
https://jpn.nec.com/univerge/ix/faq/qos.html

ここで押さえておきたいのが、IX 固有の 2 つの作法です。1 つは、キューイングやシェーピングを行うインタフェースで service-policy enable(優先/帯域制御の有効化)が必要な点です。もう 1 つは、class-mappolicy-map を変更したあとは、clear policy-map interface <インタフェース> で変更を装置に反映させる点です。これらを忘れると、設定が反映されず QoS が効かない原因になります。

なお、service-policy enable は仮想インタフェース(Tunnel、BVI)には設定できず、FastEthernet / GigaEthernet 以外のインタフェースでは反映に再起動が必要になる場合があります。

また、QoS は UFS キャッシュによる高速化処理の対象となるため、QoS を利用する際は UFS キャッシュの有効化が案内されています。対応や制限は機種・バージョンにより異なるため、対象機種の公式ドキュメントでの確認を推奨します。

Cisco(MQC)との違い・共通点

Cisco の MQC を知っていると、IX の QoS は理解しやすい構成です。共通点と違いを整理します。

共通点は、class-map(分類)・policy-map(動作)・service-policy(適用)という 3 段構成と、match による分類の考え方です。クラスを部品として定義し、ポリシーで動作を与え、インタフェースに適用する流れは、Cisco の MQC とほぼ同じです。MQC 側の考え方は、関連記事『Cisco の QoS 設定|MQC で構成する優先制御の設計のポイント』で扱っています。

一方で、IX では service-policy enable による有効化が別途必要で、変更後は clear policy-map interface での反映が要る点が、Cisco との大きな違いです。加えて、適用できるインタフェースに制限がある点や、class-map 内の条件ごとに PQ の優先度を設定できる点なども、IX 固有の作法です。Cisco の感覚でそのまま設定すると、「有効化」と「反映」の 2 点でつまずきやすいため、この違いを意識しておくことを推奨します。

トラフィックの分類(class-map / match)

QoS の起点は、class-map による分類です。match 条件の組み合わせ方(match-all / match-any)と、IX 固有の「条件ごとの優先度(PQ)指定」を押さえると、以降の設定が整理しやすくなります。

class-map と match による分類

class-map は、match 条件で通信をクラスに分類します。複数の条件を指定する場合、すべてに一致させる match-all(AND)と、いずれかに一致すればよい match-any(OR)を選びます。

参考: NEC — IX-R/IX-V 機能説明書(QoS の設定)
「match-allを設定した場合、マッチ条件をandにより判定します」
https://support.necplatforms.co.jp/ix-nrv/manual/fd/02_router/24_qos.html

match で指定できる条件には、ANY、入力インタフェース、IPv4 / IPv6 アクセスリスト(ToS 値を含む)、CoS 値、ルータ内生成パケット、RTP 使用ポートなどがあります。アクセスリストで分類する例は次のとおりです。

ip access-list voip-list permit ip src 192.168.0.0/24 dest any
!
class-map match-all voip-class
 match ip access-list voip-list

なお、IX では class-map の判定条件を省略でき、省略した場合は match-all で動作します。

条件ごとの優先度(PQ)と match の扱い

IX 固有の点として、match-anyclass-map では、match 条件ごとに優先度(PQ)を指定できます。優先度は high / medium / normal / low から指定し、match-any では上から順に判定して、合致した時点でその優先度のキューに分類されます。

class-map match-any pq-class
 match ip access-list voip-list high
 match input-interface GigaEthernet1.0 normal
 match any low

match-any は上から順に評価されるため、match any low のような広い条件を上位に置くと、それ以降の条件が評価されなくなる点に注意します。優先したい通信の条件を上位に並べることを推奨します。

優先制御と帯域制御の設定(policy-map)

分類したクラスに動作を与えるのが policy-map です。優先制御(PQ)はクラスの優先度に従って送出し、帯域制御はシェーピングや CBQ(最小予約帯域)で行います。

優先制御(PQ)

PQ は、class-map 側で決めた優先度に従って動作します。policy-map では対象のクラスを並べ、インタフェースに service-policy で適用します。

policy-map pq-map
 class pq-class
 class class-default
!
interface GigaEthernet0.1
 service-policy enable
 service-policy output pq-map

ここで、service-policy enable(優先/帯域制御の有効化)を忘れると動作しません。また、class-mappolicy-map を変更したあとは、clear policy-map interface <インタフェース> で反映させる必要があります。

シェーピングと CBQ(帯域制御)

帯域制御には、シェーピングと CBQ があります。シェーピングは policy-map のクラスで shape を指定する方法と、インタフェース全体に traffic-shape rate を指定する方法があります。

policy-map shape-map
 class site1-class
  shape mbps 300
 class site2-class
  shape mbps 200
interface GigaEthernet0.1
 service-policy enable
 traffic-shape rate mbps 300

CBQ は、クラスごとに最小予約帯域を確保する方式です。policy-map のクラスで bandwidth を指定します。

参考: NEC — IX-R/IX-V コマンドリファレンス(ポリシーマップ)
「CBQを利用するクラスの最小予約帯域割合を設定します」
https://support.necplatforms.co.jp/ix-nrv/manual/crm/cli/qos/cli_policymap.html

policy-map cbq-map
 class cbq-class1
  bandwidth percent 50
 class cbq-class2
  bandwidth percent 30
 class class-default

bandwidth は割合(bandwidth percent、1〜98%)のほか、bandwidth 128(Kbps)や bandwidth mbps 10(Mbps)のように絶対値でも指定できます(既定は bandwidth percent 10)。CBQ で指定した割合は最小予約帯域として確保されるため、割り当ての小さいクラスでも通信できなくなることはありません。整理すると、優先順位をつけたい場合は PQ、通信ごとに帯域の上限や最小保証を与えたい場合はシェーピングや CBQ、という使い分けになります。

なお、コマンドやオプションは UNIVERGE IX シリーズと IX-R / IX-V、また機種・バージョンにより異なる場合があるため、対象機種の公式リファレンスでの確認を推奨します。

適用・マーキングと確認

作成した policy-map は、service-policy でインタフェースに適用します。DSCP / ToS のマーキング(カラーリング)もこの段階で設定し、動作は show policy-map interface で確認します。

service-policy enable / output による適用

適用には 2 つの設定が必要です。優先制御・帯域制御を働かせる service-policy enable(有効化)と、ポリシーを方向に関連付ける service-policy output(送信方向)または service-policy input(受信方向)です。

参考: NEC — UNIVERGE IX シリーズ 障害切り分けガイドライン(QoS)
「設定したインタフェースで優先制御や帯域制御を有効化する設定です。マーキング・カラーリングのみ設定される場合、本設定は不要です」
https://jpn.nec.com/univerge/ix/Support/Troubleshooting/qos-1.html

interface GigaEthernet0.1
 service-policy enable
 service-policy output out-map

優先制御(PQ)・シェーピング・CBQ は送信方向に適用します。マーキングやクラス分け(qos-group)は受信方向にも設定できます。service-policy enable を忘れると優先制御・帯域制御は動作せず、class-mappolicy-map を変更したあとは clear policy-map interface <インタフェース> で反映する点が、IX でつまずきやすいポイントです。なお、service-policy enable は仮想インタフェース(Tunnel、BVI)には設定できません。

DSCP / ToS のマーキング(カラーリング・ip type-of-service)

カラーリングは、パケットに DSCP・IP precedence・CoS の値を付与する機能で、クラス単位で設定します。policy-map のクラスで set ip precedenceset cos を指定します。

policy-map mark-in
 class voip-class
  set ip precedence 5
 class class-default
  set ip precedence 0
!
interface GigaEthernet2.0
 service-policy input mark-in

CoS の付与は set cos(Ver5.2 以降)で行い、DSCP も同様にクラス単位で付与できます。これにより、信頼境界となる IX で値を付け直し、ネットワーク内部のマーキングを一貫させられます(設定事例: https://support.necplatforms.co.jp/ix-nrv/manual/ex/Section1/11_qos.html )。

また、IX ルータ自身が生成するパケットに ToS 値を付与する場合は、ip type-of-service [機能] [dscp / precedence / tos] [値](Ver8.0 以降)を用います。

show コマンドでの確認

QoS の動作状態は show policy-map interface、設定内容は show running-config で確認します。show policy-map interface の表示行数で、関連付けの状態を切り分けられます。

Router# show policy-map interface
 Interface GigaEthernet0.0
  Traffic shaping is active, activated 429617 times
   CIR 8 Kbps, Bc 8 bits, Be 8 bits, Tc 1 ms
  Output policy-map outmap attached
   Class class-pq
    Bandwidth 10 percent, weight 512
    Queued 9 packets, 10314 bytes, peak 38 packets
    Output 285 packets, 317482 bytes
    10 tail drops, 0 excess bandwidth, 0 buffer exhausted

確認の着眼点は次のとおりです。何も表示されない場合は QoS が関連付いていない、2 行(インタフェースとポリシー名)のみの場合は service-policy enable の入力漏れ(ただしマーキング・カラーリングのみの場合は 2 行で問題なし)、複数行が表示されれば QoS が動作中、と判断できます。各クラスの tail drops(オーバーフローによる廃棄)、excess bandwidth(LLQ で帯域超過のため廃棄)、buffer exhausted(バッファ枯渇による廃棄)を見て、どこで廃棄が起きているかを把握します。

よくあるトラブルと対処

設定したのに QoS が効かない場合、設定値そのものより、有効化・反映の漏れや、シェーピングの設計に原因があることが少なくありません。

QoS が効かないときの確認(シェーピング超過・バースト・反映漏れ)

代表的な原因は次のとおりです。

service-policy enable の入力漏れ

show policy-map interface が 2 行のみの表示になります。

変更の反映漏れ

class-mappolicy-map を変更したら、clear policy-map interface <インタフェース> で反映します。

アクセスリストと class-map の関連付けの誤り

アクセスリスト名の指定順などを show running-config で確認します。

適用インタフェースの制限

仮想インタフェース(Tunnel、BVI)には適用できず、FastEthernet / GigaEthernet 以外では反映に再起動が必要な場合があります。

そもそも輻輳していない

優先制御は輻輳時にはじめて効くため、平常時の確認では差が現れません。

シェーピングに関しては、設定したレートを超えた通信で廃棄が発生します。

参考: NEC — UNIVERGE IX シリーズ 障害切り分けガイドライン(QoS 事例)
「トラフィックがシェーピング設定で指定した帯域(シェーピングレート)を超えている場合、QoSによる廃棄が発生します」
https://jpn.nec.com/univerge/ix/Support/Troubleshooting/qos-3.html

動画のように変動の大きい通信では、平均レートが上限以下でも、一時的なバーストでキューが輻輳し廃棄が生じることがあります。この場合、送信側のレートやバーストの調整に加え、Bc(バーストサイズ)を大きくして Tc を広げ、一時的に送信できる量を増やす対処が有効です。あわせて、実際にパケットへ付与された DSCP / CoS 値をパケットキャプチャで確認すると、マーキングと配分のどちらに原因があるかを切り分けられます。キャプチャでの絞り込み方法は、関連記事『Wireshark のフィルタ書き方と複数条件の使い分け|TCP 再送と HTTP エラーの追跡』で扱っています。

まとめ

  • NEC IX の QoS は、class-map(分類)→ policy-map(動作)→ service-policy(適用)という Cisco の MQC に近い体系です。
  • 分類は class-mapmatch で行い、match-any では条件ごとに PQ の優先度(high / medium / normal / low)を指定できます。
  • 優先制御は PQ、帯域制御はシェーピング(shape / traffic-shape)と CBQ(bandwidth による最小予約帯域)で行います。
  • マーキング(カラーリング)は set ip precedence / set cos などでクラス単位に付与し、自生成パケットは ip type-of-service で付与します。
  • 適用には service-policy enable(有効化)と service-policy output / input が必要です。
  • class-mappolicy-map を変更したら、clear policy-map interface で反映します。
  • 効かないときは有効化・反映・関連付けを確認し、show policy-map interface で廃棄を確認します。

以上、最後までお読みいただきありがとうございました。

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

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次