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の値と意味は以下の通りです。
| 値 | ビット | クラス名 | 用途 |
|---|---|---|---|
| 7 | 111 | Network Control | ネットワーク制御用(予約済み) |
| 6 | 110 | Internetwork Control | ルーティング制御用(予約済み) |
| 5 | 101 | Critical | 重要通信(音声など) |
| 4 | 100 | Flash Override | 高優先度通信 |
| 3 | 011 | Flash | 優先度中(音声などで利用される場合あり) |
| 2 | 010 | Immediate | 即時通信 |
| 1 | 001 | Priority | 優先通信 |
| 0 | 000 | Routine | 通常通信(デフォルト) |
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値を保持して転送されます。
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) と呼びます。主な分類は次の通りです。
| PHB | DSCP値(2進) | DSCP値(10進) | 説明 |
|---|---|---|---|
| Default | 000000 | 0 | ベストエフォート。優先しない通常のデータトラフィックに割り当て |
| CS(Class Selector) | 000000~111000 | 0, 8, 16, 24, 32, 40, 48, 56 | IP Precedenceとの互換性。例:CS5(40)はPrecedence 5と同じ意味 |
| AF(Assured Forwarding) | 001010~100110 | 10~38 | 優先度と廃棄レベルを組み合わせたクラス。例:AF41は高優先度かつ低廃棄レベル |
| EF(Expedited Forwarding) | 101110 | 46 | 最優先で処理するクラス。主に音声トラフィックに割り当て |
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
CoS(Class of Service)とは
CoS(Class of Service)は、Ethernetフレームに付与される優先度情報のことです。IPパケットに対しては IP Precedence や DSCP を使って優先度を付与しますが、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値) を生成します。その後、このラベル情報を基にしてパケットが入力キューや出力キューに振り分けられます。
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リクエストやレスポンスの特定ヘッダに含まれる情報を基準にトラフィックを分類しています。