7.2. QoS
7.2.1. QoSの概要
QoSは特定のパケットを優先的に処理したり帯域幅の確保を行う技術のこと。
QoSによりパケットの重要度により優先的に転送するといったことが可能。
QoSをネットワークに取り入れることで、IP電話(VoIP)の通話品質の向上などのメリットがある。
7.2.2. QoSのアーキテクチャ
QoSを実現するためのアーキテクチャにはベストエフォート、IntServ、DiffServの3つがある。
ベストエフォート
パケット優先順を気にせず先に来たものを先に出すアーキテクチャ。 品質保証はされないQoSのデフォルトの挙動。
IntServ
アプリケーションのフローごとにエンドツーエンドのQoSを提供するモデル。 フローが必要とする帯域をあらかじめ予約しておくアーキテクチャとなる。 フローごとに帯域を予約するためにRSVP(Resource reSerVation Protocol:リソース予約プロトコル)というプロトコルが使用されて送信元から宛先までの各機器で帯域を確保する。
各アプリケーションが必要とする帯域幅を経路上のデバイスに予約するのでエンドツーエンドのQoSを提供できる反面、拡張性が低いという特徴を持つ。 現在では規模が大きくなった際のRSVP自体が負荷になる問題や運用しづらいことから普及していない。
DiffServ
パケットをクラスに分類・マーキングし、クラスごとに優先度を提供するモデル。 各ルータやスイッチごとにパケットの優先順位に基づいて区別し転送処理を行うアーキテクチャとなる。
一般的にQoSといえばこのモデルのことを指す。 各デバイスが独自に処理を行えるため拡張性が高いという特徴を持つ。
DiffServのQoSの仕組みは以下のように行われる。
- マーキング
- ポリシング/シェーピング
- キューイング/スケジューリング
- 輻輳管理
7.2.3. QoS実現のための機能
QoSを実現するための機能はQoSツールと呼ばれ以下のようなものがある。
- 輻輳管理(分類、マーキング、キューイング/スケジューリング)
- 輻輳回避(RED、WRED)
- 帯域制御(シェーピング、ポリシング)
輻輳管理
輻輳管理では以下の内容を行う。
- 分類:QoS適用対象となるパケットを分類する
- マーキング:分類されたパケットに優先度識別用の印を付ける
- キューイング:パケットに付けられたマークを使って、それぞれの優先度に応じたキュー(パケットを溜めるバッファ)に格納する
- スケジューリング:各キューからデータを取り出して送信する
なお分類とキューイングは信頼境界で行われる。 信頼境界となる機器(アクセススイッチやIP電話など)では受信したパケットにすでに施されているマーキングを無視し、改めてQoSポリシーに従って分類、マーキングを行うことで適切なQoSを実現する。
信頼境界 : QoS対象となるパケットがネットワークに入ってくるエッジのこと
輻輳回避
輻輳回避は輻輳(大量パケット到着により送受信できなくなる状態)が発生する前にキューに待機しているパケットをドロップする機能のこと。
輻輳回避するための機能にはRED(Random Early Detection:ランダム早期検出)やWRED(Weighted RED:重み付けランダム早期検出)などがあります。
| 方式 | 説明 | 
|---|---|
| RED(ランダム早期検出) | キューがいっぱいになる前にランダムにパケットを破棄する方式 | 
| WRED(重み付けランダム早期検出) | パケットの優先順位を考慮したREDの方式 | 
帯域制御
帯域制御はシェーピング、ポリシングを使って行われる。
主に大規模ネットワークでは、主にWAN境界でQoSを適用する。 これは一般的にLAN側の速度(例:GigabitEthernet)よりもWAN側の回線速度(例:15Mbps)のほうが遅い、あるいはWAN回線の速度と接続するインターフェースの速度が異なる場合、容易に輻輳が発生するためとなっている。 特にサービスプロバイダが指定したCIR(Committed Information Rate:最低保証速度)を超えて送受信したデータは、輻輳時に破棄される可能性が高くなります。
7.2.4. 分類 - 輻輳管理
分類とは指定した条件によってQoSの対象となるパケットを分類することを指す。 分類の方法には以下方法が使用される。
- 拡張アクセスリストを使用する
- NBAR(Network Based Application Recognition)を使用する
拡張アクセスリストを使用した方法
拡張アクセスリストを使った場合、パケットのヘッダにある以下の情報を使った分類が可能となる。
- IPプロトコル番号
- 送信元/宛先アドレス
- 送信元/宛先ポート番号
NBARを使用した方法
NBAR(アプリケーションを識別する機能)を使った場合はパケットをアプリケーションごとに分類することが可能となる。
例えばWebブラウザから参照するYouTubeのパケットは、拡張アクセスリストではHTTPプロトコルとしか判断できないため適切に分類できないが、NBARでは以下のようにネットワークアプリケーション名でマッチさせることができるようになる。
7.2.5. マーキング - 輻輳管理
マーキングは分類されたパケットに優先度識別用の印を付けることをいう。 具体的にはCoSやIPPやDSCPをポリシーに従い変更を行う。
またマーキングにはL2マーキングとL3マーキングがある。 それぞれ値を変更する場所が異なり変更箇所は以下のようになる。
- L2マーキング … IEEE 802.1QヘッダのCoSフィールド
- L3マーキング … IPヘッダのToSフィールド
CoS
CoS(lass of Service)はイーサネットの優先度を表すもの。 IEEE802.1Qで付与されたタグの中にPRIと呼ばれるCoSの値を表せるフィールドがある。 そこをチェックしたり変更することでマーキングを行う。
DiffServのマーキングで使用される。
特徴としては以下の通り。
- L2マーキング
- 3ビット(2進数で000-111)でマーキングを行う(8段階のマーキングが可能)
DSCP
DSCP(Differentiated Service Code Point)はIPパケットの優先度を表すもの。 IPヘッダのToSというフィールドのうちサービスタイプフィールドの前半6bitを使用して優先度を設定する。
DHSCPの値に応じてルータ/スイッチは転送を行う。これらはホップごとの動作を決めたPHB(Per Hop Behavior)に応じて処理される。 特徴をまとめると以下の通り。
- L3マーキング
- 6ビット(2進数で000000-111111)でマーキングを行う(64段階のマーキングが可能)
またPHBには以下のような種類がある。
| 種類 | 説明 | 
|---|---|
| AF(Assured Forwarding) | 優先度と破棄レベルの組み合わせを12段階で指定できるマーキング | 
| EF(Expedited Forwarding) | 最優先で処理したいパケット用のマーキング。主にIP電話のような音声パケットに使用する。 | 
| CS(Class Selector) | DSCPとIPPの互換用のマーキング | 
| DF(Default Forwarding) | ベストエフォート用のマーキング。QoSによる優先処理を行わない。 | 
IPP
IPP(IP Precedence)はIPヘッダの中のToSフィールドで定義されたIPパケットの優先度を表すもの。 特徴は以下の通り。
- L3マーキング
- 3ビット(2進数で000-111)でマーキングを行う(8段階のマーキングが可能)
7.2.6. キューイング/スケジューリング - 輻輳管理
キューイングは送信するパケットをキューと呼ばれる領域に格納していく。 キューの種類にはハードウェアキューとソフトウェアキュがあるが、ソフトウェアキューにキューイングは行われる。
スケジューリングはソフトウェアキューに並んだパケットをどういう割合/順番でハードウェアキューに並べるか決定するもの。
キューイングとスケジューリングには以下のような機能がある。
| 種類 | 説明 | 
|---|---|
| FIFO | パケットを到着した順番に送信する方式。デフォルトのキューイング方式 | 
| PQ | 優先度が高いパケットの転送を優先する方式。優先度には「high」「medium」「normal」「low」の4つが使用される | 
| CQ | キューに設定したバイト数ずつパケットを転送する方式 | 
| WFQ | アプリケーションのフローごとにキューを自動で作成し、どのキューからもパケットを転送されるようにしたキューイング方式 | 
| CB-WFQ | クラスごとにキューを割り当てる方式。ユーザが定義したクラスごとにキューを割り当てて送信比率を帯域幅の設定により変更できる | 
| LLQ | 優先的に送信するプライオリティキューとクラスキューを使用する方式。 | 
CB-WFQ
CB-WFQでは全てのキューを順にチェックし指定された割合(保証帯域)でデータを取り出して転送する。
LLQ
LLQではPQに割り振られたパケットを最優先で転送する。
7.2.7. RED/WRED - 輻輳回避
RED/WREDは輻輳回避はの機能で輻輳によるテールドロップが発生する前にキューに待機しているパケットをドロップするもの。
RED
RED(Random Early Detection:ランダム早期検出)はキューが一杯になる前にパケットをドロップすることで輻輳レベルを下げテールドロップを防ぐもの。 REDはキューに溜まっているパケットの量に応じて「ノードロップ」「ランダムドロップ」「フルドロップ」という3つのモードで動作する。
- ノードロップ … パケットの量が最小しきい値以下の状態。パケットをドロップしない
- ランダムドロップ … パケットの量が最小しきい値を超えた状態。設定した割合に基づきパケットをドロップする
- フルドロップ … パケットの量が最大しきい値を超えた状態。着信パケットを全てドロップする(テールドロップ)
WRED
WREDはREDの破棄率を優先度ごとに設定できる機能のこと。 具体的にはキューが一杯になる前に優先度の低いパケットをドロップする。
7.2.8. ポリシング/シェーピング - 帯域制御
ポリシング
ポリシングは設定値や最低限保証されている伝送速度を超過したトラフィックの破棄や優先度を変更できるもの。 これはパケットの到着/発信の際に適用できる。
ポリシングは指定した転送レートを超えて送受信されたパケットを破棄するため、損失発生の要因となりえる。 しかしながらキューイングが行われないため遅延やジッタは発生しない。
シェーピング
シェーピングは設定値や最低限保証されている伝送速度を超過したトラフィックをバッファに保存して遅れて送信するもの。 キューにバッファ用のメモリが必要でパケット発信の際に利用できる。
シェーピングは送信側で実装し、指定した送出レートを超えないように送出レートを超えるパケットをキューに保持し、送信可能になった時点で送信する。 リアルタイムに送信されない場合があるため、遅延、ジッタ発生の要因となりえる。
7.2.9. QoSの評価方法
ネットワークにおけるQoSは以下の4つの項目で評価される。
- 帯域幅(Bandwidth) … 1秒間に送信できるデータ量(Bps)
- 遅延(Delay) … 送ったデータが相手に届くまでにかかる時間(片方向遅延/往復遅延)のこと。主にミリ秒(ms)で表す
- ジッタ(Jitter) … 遅延のゆらぎのこと。遅延の時間が一定の場合はジッタが発生していないと言い、パケットごとの遅延が異なる(例:100ms、115ms、98ms、108ms、など)場合は、その遅延の差分(例では、15ms、17ms、10ms)
- 損失(Loss) … 相手に届かなかったパケットの割合
7.2.10. 音声/ビデオのQoS要件
音声とビデオのQoS要件にはガイドラインがあり、以下表のように定義されている。
| パケットの種類 | 帯域幅 | 片方向遅延 | ジッタ | 損失 | 
|---|---|---|---|---|
| 音声 | 20~320 Kbps | 150ms未満 | 30ms未満 | 1%未満 | 
| ビデオ | 384K~20M bps | 200~400ms | 30~50ms | 0.1~1% |