QoS(トラフィック分類とマーキング)

目次

IP Precedence(IPプレシデンス)とは

IP Precedence(IPプレシデンス)は、IPヘッダのToS(Type of Service)フィールド内の上位3ビットを使って定義されるパケットの優先度です。値は 0~7の8段階 で、数値が大きいほど優先度が高くなります。

この値はQoS(Quality of Service)の基準として使われ、ルータやスイッチがパケットをどのように扱うかを判断する材料になります。例えば音声通信など遅延に敏感なトラフィックには、PCからの通常データより高い優先度が設定されます。

一般的にPCから送信されるパケットは IP Precedence = 0(Routine)ですが、IP電話機から送信される音声パケットには 3(Flash)5(Critical) が付加されて送出されるのが一般的です。また、ルータの設定によって、通過するパケットのPrecedence値を上書き(マーキング)することも可能です。

IP Precedenceの8段階クラス

IP Precedenceの値と意味は以下の通りです。

ビットクラス名用途
7111Network Controlネットワーク制御用(予約済み)
6110Internetwork Controlルーティング制御用(予約済み)
5101Critical重要通信(音声など)
4100Flash Override高優先度通信
3011Flash優先度中(音声などで利用される場合あり)
2010Immediate即時通信
1001Priority優先通信
0000Routine通常通信(デフォルト)

試験では 6と7は制御用で予約済み、管理者が使うのは通常0~5 という点が重要です。

IP Precedenceの設定方法

1. レガシーな方法:PBR(Policy-Based Routing)を利用

PBRを使ってパケットをマーキングする方法です。

例:宛先が172.16.1.1のトラフィックに IP Precedence 5(Critical) を付与する設定。

access-list 101 permit ip any host 172.16.1.1

route-map R-MARK permit 10
 match ip address 101
 set ip precedence critical

interface GigabitEthernet0/0
 ip policy route-map R-MARK

ACL101に一致しないトラフィックは、そのまま元のPrecedence値で転送されます。

2. 現在の主流:Class-Basedパケットマーキング(MQC方式)

現在は MQC(Modular QoS CLI) に基づく設定が一般的です。これを利用するには CEF(Cisco Express Forwarding) を有効にする必要があります。

例:宛先が172.16.1.1のトラフィックに IP Precedence 5 を設定する場合。

ip cef
access-list 101 permit ip any host 172.16.1.1

class-map match-all C-MARK
 match access-group 101

policy-map P-MARK
 class C-MARK
  set ip precedence 5

interface GigabitEthernet0/0
 service-policy input P-MARK

ACL101に一致しないトラフィックは、既存のIP Precedence値を保持して転送されます。

試験対策:
IPヘッダのToSフィールド上位3ビット = IP Precedence
・値は0~7で、数値が大きいほど優先度が高い
6と7は制御用で予約済み、利用するのは通常0~5
・旧方式:PBRで設定、新方式:Class-Based QoS(MQC)で設定
・音声パケットには通常「3(Flash)」または「5(Critical)」が使われる

この点を押さえておけば、試験での「IP PrecedenceとDSCPの違い」「どの値を音声に割り当てるべきか」といった問題に対応できます。

DSCP(Differentiated Services Code Point)とは

DSCP(Differentiated Services Code Point)は、IPパケットに優先度を与える仕組みであり、QoS(Quality of Service)を実現するための代表的なマーキング方式です。

IP Precedenceが IPヘッダのToSフィールド(8ビット)のうち上位3ビットを使用 していたのに対して、DSCPは 6ビットを利用 します。そのため、

  • IP Precedence:0~7の8段階
  • DSCP:0~63の64段階

と、より細かく優先度を定義できる点が大きな違いです。

この拡張により、アプリケーションの特性に応じたきめ細かいQoS制御が可能になりました。

DSCPとIP Precedenceの関係

DSCPは、IP Precedenceとの下位互換性を保つために設計されています。具体的には、DSCPの先頭3ビットはIP Precedenceの値と対応しており、古い機器でも互換的に扱えるようになっています。

ただし、DiffServをサポートしていない機器を通過する場合、設定されたDSCP値は無視されるか、ToS値として解釈されます。

DSCP値とPHB(Per Hop Behavior)

DSCPの値によって、ルータやスイッチがパケットをどのように処理するかを決める動作方針を PHB(Per Hop Behavior) と呼びます。主な分類は次の通りです。

PHBDSCP値(2進)DSCP値(10進)説明
Default0000000ベストエフォート。優先しない通常のデータトラフィックに割り当て
CS(Class Selector)000000~1110000, 8, 16, 24, 32, 40, 48, 56IP Precedenceとの互換性。例:CS5(40)はPrecedence 5と同じ意味
AF(Assured Forwarding)001010~10011010~38優先度と廃棄レベルを組み合わせたクラス。例:AF41は高優先度かつ低廃棄レベル
EF(Expedited Forwarding)10111046最優先で処理するクラス。主に音声トラフィックに割り当て

AFクラスの見方

AFは「優先度(前3ビット)」と「廃棄レベル(後2ビット)」を組み合わせて表現します。

  • AF41は高優先度・低廃棄
  • AF43は高優先度・高廃棄

この仕組みにより、重要だがある程度の廃棄は許容できるトラフィックなどを柔軟に制御できます。

EFクラス

EF(Expedited Forwarding, DSCP=46)は「最優先で確実に処理される」ことを意味します。音声通話やリアルタイム通信でよく利用され、事実上 音声用の標準的DSCP値 になっています。EFは常に優先処理されるため、廃棄(ドロップ)は基本的に考慮されません。

DSCPの設定方法

Cisco機器では、IP Precedenceと同じように「ルートマップ」または「Class-Based QoS」で設定できます。

例:Class-Based QoSでDSCP値を付与する場合

class-map match-all C-MARK
 match access-group 101

policy-map P-MARK
 class C-MARK
  set dscp ef

interface GigabitEthernet0/0
 service-policy input P-MARK

試験対策:
・DSCPは 6ビットで64段階、IP Precedenceは 3ビットで8段階
・DSCPの処理方針は PHB(Per Hop Behavior) で決まる
EF(46)=音声トラフィック用 → 最優先処理、試験頻出
CSクラス=IP Precedence互換
AFクラス=優先度+廃棄レベル

この違いを押さえておくと、IP PrecedenceとDSCPの関係や「音声に適切なDSCP値は何か」といった問題を確実に解答できるようになります。

CoS(Class of Service)とは

CoS(Class of Service)は、Ethernetフレームに付与される優先度情報のことです。IPパケットに対しては IP PrecedenceDSCP を使って優先度を付与しますが、Ethernetフレームそのものに対しては CoS を使います。

この情報は、IEEE 802.1Q(VLANタグ付きフレーム)の タグ内にある3ビットのフィールド に格納されます。そのため、値は 0~7の8段階 で定義され、数値が大きいほど優先度が高いことを意味します。

CoS値を伝送できる条件

CoSは 802.1Qタグ内の情報であるため、スイッチ間を接続するポートがトランクポートである必要があります。アクセスポートではフレームにタグが付与されないため、CoS情報は伝達されません。

つまり、CoS値を有効に活用するには「VLANタグが付いたフレームで通信する」=「トランクポートを利用する」ことが前提です。

CoS関連のCatalystスイッチ設定

CoSはスイッチ上で扱うQoSの一部として設定されます。Catalystスイッチで利用するためには、まずQoS機能を有効化する必要があります。

QoSの有効化

(config)# mls qos

優先度情報の信頼(trust)の設定

スイッチのポートに入ってくるトラフィックに対して、どの優先度情報を信頼するのかを設定します。

  • CoS(Ethernetフレームのタグの優先度)
  • DSCP(IPパケットの優先度)
  • IP Precedence(IPヘッダ内の優先度)
(config)# interface interface-id
(config-if)# mls qos trust [cos | dscp | ip-precedence]

設定例(音声VLANとデータVLANを分ける場合)

vlan 10
 name Voice
vlan 20
 name Data

mls qos

interface FastEthernet0/1
 switchport mode access
 switchport voice vlan 10
 switchport access vlan 20
 mls qos trust cos
 mls qos trust cisco-phone
 priority-queue out

この例では、VLAN10を音声用、VLAN20をデータ用とし、CoS値を信頼する設定にしています。音声VLANのトラフィックは優先度を基にした制御が可能となり、音声通話の品質を確保できます。

CoSとCatalyst QoSの関係

Catalystスイッチでは、入力したトラフィックの CoS・DSCP・IP Precedence のいずれかを信頼し、その情報をもとに QoSラベル(CoS値またはDSCP値) を生成します。その後、このラベル情報を基にしてパケットが入力キューや出力キューに振り分けられます。

試験対策:
・CoSは Ethernetフレームの優先度(3ビット、0~7の8段階)
・VLANタグに含まれるため トランクポート必須
・QoSを有効にするには mls qos コマンドが必要
mls qos trust cos を設定することでCoSを信頼できる
・音声VLANとデータVLANの混在環境では、CoSを利用して音声を優先処理するのが一般的

これを押さえておけば、試験で「CoSとDSCP/IP Precedenceの違い」や「どのポートで有効か」といった問題に確実に答えられます。

NBAR(Network-Based Application Recognition)とは

NBAR(Network-Based Application Recognition)は、Cisco IOSに標準搭載されているアプリケーション識別エンジンです。従来のL3/L4(IPアドレスやポート番号)による分類だけでなく、L7のアプリケーション情報まで解析できるのが大きな特徴です。これにより、特定のアプリやWebサイトごとの識別や制御が可能になります。例えば、HTTPトラフィックをURLやホスト名で分類したり、特定のMIMEタイプに基づいて制御することもできます。

NBARとPDLM(Packet Description Language Module)

NBARのプロトコル対応範囲はPDLM(Packet Description Language Module)によって拡張可能です。PDLMを利用すると、IOSのアップグレードやルータのリロードを行わなくても新しいプロトコルに対応できます。つまり、NBARが標準で認識しないアプリケーションでも、スタティックなTCP/UDPポートを割り当てて認識可能にできる仕組みです。

NBARの機能①:Protocol Discovery

NBARにはProtocol Discoveryという統計情報収集機能があり、インターフェースを通過するアプリケーションごとのトラフィックを検出できます。

設定例

(config)# interface interface-id
(config-if)# ip nbar protocol-discovery

確認コマンド

show policy-map interface interface-id
show ip nbar protocol-discovery interface interface-id

これにより、そのインターフェースを流れるプロトコルごとの利用状況を把握できます。

NBARの機能②:分類(Classification)

NBARで分類を行うには、まずCEF(Cisco Express Forwarding)を有効にする必要があります。

(config)# ip cef

分類自体はMQC(Modular QoS CLI)で設定します。class-map内で「match protocol」を利用することで、NBARが認識可能なプロトコルを基準に分類できます。

(config)# class-map NAME
(config-cmap)# match protocol protocol-name

HTTPの場合は、さらに細かい条件指定が可能です。

NBARによるHTTP分類(match protocol http)

HTTPを対象とする場合、URLやホスト名、MIMEタイプ、ヘッダ内容に基づいて分類できます。

(config-cmap)# match protocol http [ url string | host string | mime type | c-header-field string | s-header-field string ]
  • url string:指定したURLに基づいて分類
  • host string:特定のホスト名に基づいて分類
  • mime type:HTTPレスポンスのMIMEタイプで分類
  • c-header-field string:HTTPリクエストのヘッダ情報を基準に分類
  • s-header-field string:HTTPレスポンスのヘッダ情報を基準に分類

さらにNBARでは、正規表現を利用して柔軟な指定が可能です。

  • *:任意の文字列(0文字以上)
  • ?:任意の1文字以上
  • |:OR条件
  • ( | ):複数の文字列のOR条件
  • [ ]:文字セットのいずれか

NBARの設定例

ip cef

class-map CLASS1
 match protocol http c-header-field "somebody@cisco.com"

class-map CLASS2
 match protocol http c-header-field "https://www.cisco.com/routers"

class-map CLASS3
 match protocol http s-header-field "https://www.cisco.com/routers"

class-map CLASS4
 match protocol http s-header-field "gzip"

この例では、HTTPリクエストやレスポンスの特定ヘッダに含まれる情報を基準にトラフィックを分類しています。

試験対策:NBARはL7まで識別できる分類エンジンであり、従来のACLやポート番号による方法よりも詳細な制御が可能です。PDLMによって新しいプロトコルも追加でき、Protocol Discoveryで利用状況の可視化もできます。MQCと組み合わせて「match protocol」で分類を行うのが一般的で、特にHTTPの細かい分類(URLやホスト名など)ができる点は試験でも頻出です。

◆まとめスライド

目次