Supervisor IOS for CCNP Switching (640-604J) のQoSのSectionも参考にして下さい。
VoIPでは遅延に敏感な音声パケットを、その他の重要性の低いネットワークトラフィックより優先させるために、QoSが使用されます。
逆にQoSが使用されないと、リアルタイム音声パケットがネットワークで優先されるという保証はありません。
VoIPネットワークがPSTN(既存の電話網)に取って代わるためには、PSTNと同等な音声品質が必要になります。
つまり音声が途切れたり、遅延が発生したり、またはその遅延の変動(ジッタ、ゆらぎと呼ばれる)があることは致命的になります。
またQoSによる音声パケットの優先と同様に、十分なネットワーク帯域幅を確保するべきである。
パケットの分類(Classification)とは、ネットワークデバイスが受け取る通常のIPトラフィックとVoIPパケットの違いを識別し、それぞれをクラス分け(グループ化)する処理を意味する。
大きく分けて2種類の分類方法がある。
マーキングとは、ネットワークデバイスがパケットを受け取り、上記の2種類の方法で分類したパケットに、「これは優先度の高いパケットです」という印を付け、他のデバイスに送信すること。
この印が付いているパケットを受け取った他のデバイスは、いちいちパケットの分類をする必要がなくなる。
マーキング処理には幾つか種類があるが、IPネットワークでは、IPヘッダ内の ToS(Type of Service)バイトをセットする方法が主に使われる。
*ToS(Type of Service)バイトの内部は、IPプレシデンス(3ビット)とDSCP(6ビット)に別れています。
実際どういう方法で、パケットの分類とマーキングの設定をするか挙げていきます。
1,dialer-peer voice [ダイヤルピア番号] voip グローバルコンフィグモードコマンドを使う
2,CAR(Committed Access Rate) を使う
3,PBR (Policy-Based Routing)を使う
access-list 100 permit udp any any range 16384 32767 /* RTP
stream */ <-分類されるトラフィックを指定
access-list 100 permit tcp any any eq 1720
/* H.255.0 */ <-分類されるトラフィックを指定
!
route-map [ルートマップ名]
match ip address 100 <-アクセスリスト100にヒットするトラフィックを示す
set ip precedence 5 <-分類されたトラフィックのマーキング(IPプレシデンスを5[101]にセット)
!
interface E0/0
ip address 10.10.10.1 255.255.255.0
ip policy route-map [ルートマップ名] <-作成したルートマップをI/Fに適用
4,MQC (Modular QoS Command Line Interface) を使う
access-list 100 permit udp any any range 16384 32767 /* RTP
stream */ <-分類されるトラフィックを指定
access-list 100 permit tcp any any eq 1720
/* H.255.0 */ <-分類されるトラフィックを指定
!
class-map [クラスマップ名] <-クラスマップを作成
match access-group 100 <-アクセスリスト100にヒットするトラフィックを作成したクラスマップに入れる
!
policy-map [ポリシーマップ名] <-ポリシーマップを作成
class [クラスマップ名] <-含めるクラスマップを指定
set ip precedence 5 <-分類されたトラフィックのマーキング(IPプレシデンスを5[101]にセット)
class class-default <-クラスマップに含まれないその他のトラフィックを指定
set ip precedence 0 <-その他のトラフィックのマーキング(IPプレシデンスを0[000]にセット)
!
interface E0/0
service-policy input [ポリシーマップ名] <-作成したポリシーマップをI/Fに適用
パケットの分類とマーキングが済んだら、その優先度によってインテリジェントな出力を行うのがキューイング処理。
VoIPトラフィックには絶対優先キュー(プライオリティキューとも呼ばれる、キューイング手法の1つであるPQ[プライオリティキューイング]のことではない)が使用されるのが必須。
キューイングメカニズムには幾つかの種類があるが、柔軟性と設定の容易さに優れているLLQ (Low Latence Queuing)の使用が推奨される。
1,LLQ (Low Latence Queuing):以前は PQ-CBWFQと呼ばれていた。
パケットの分類とマーキングにはMQCが使われる。輻輳が発生している時に、優先度の高いトラフィック(プライオリティトラフィック)が帯域幅を独占しないような設定が出来る。つまり優先度の高くないその他のトラフィックにも、最低帯域保証を与える必要がある。
LLQの動作(パケットの流れ ------> )
分類 | クラス Priority | プライオリティキュー | スケジューラ | 出力 |
クラス class 1 | 予約済キュー | |||
クラス class 2 | 予約済キュー | |||
クラス class-default | 予約済キュー または 未予約のデフォルトキュー |
LLQの設定例
access-list 100 permit udp any any range 16384 32767 /* RTP
stream */ <-分類されるトラフィックを指定
access-list 100 permit tcp any any eq 1720
/* H.255.0 */ <-分類されるトラフィックを指定
access-list 101 permit tcp any any eq 80
/* HTTP */ <-分類されるトラフィックを指定
access-list 102 permit tcp any any eq 23
/* telnet */ <-分類されるトラフィックを指定
!
class-map voip
match access-group 100 <-アクセスリスト100にヒットするトラフィックをクラス
voipに入れる
class-map data1
match protocol <-アクセスリスト101にヒットするトラフィックをクラス
data1に入れる?(access-group 101ではない?)class-map
data2
match access-group 102 <-アクセスリスト102にヒットするトラフィックをクラス
data2に入れる
!
policy-map llq
class voip
priority 32 <-クラス
voip は 32Kbpsまでの高いプライオリティを与えられる
class data1
bandwidth 64 <-クラス
data1 は 64Kbpsまでの帯域幅を保証される
class data2
bandwidth 32 <-クラス
data2 は 32Kbpsまでの帯域幅を保証される
class class-default
fair-queue <-未分類のその他のトラフィックに残りの帯域幅を均等に分配
!
interface S0/0
bandwidth 256 <-I/Fの総帯域幅を設定(指定しないとSerialなのでデフォルトで1.544Mbps)
service-policy input llq <-作成したポリシーマップをI/Fに適用
*ルーティングプロトコルが使用する帯域幅を考慮して、全てのクラスに保証された帯域幅の合計が、I/Fの総帯域幅の75%未満でなければならない。
2,FIFO (First-In , First-Out):到着順で出力される。シンプルな設定。Priorityサービスと帯域保証は不可能。
3、WFQ (Weighted Fair Queuing):IP precedenceとDSCP値によるシンプルな設定。2Mbps未満リンクのデフォルト。Priorityサービスと帯域保証は不可能。
4,CO (Custom Queuing):設定は比較的難しい。Priorityサービスは不可能。
5,PQ (Priority Queuing):高、中、通常、低のPriorityキューに分類。帯域保証は不可能。
6,CBWFQ (Class-Based Weighted Fair Queuing):分類にMQCを使用。ただしLLQと違いPriorityキューはないのでPriorityサービスは不可能。
7,PQ-WFQ (Priority Queue-Weighted Fair Queuing):IP RTPプライオリティとも呼ばれる。特定範囲内の偶数ポート番号宛のUDPパケットにプライオリティサービスを提供する。インターフェースコンフィグモードでのシンプルな設定
企業が本社(ハブサイト)と支社(リモートサイト)間の音声通話を運ぶため、既存のデータトラフィック用のフレームリレーWANのインフラを利用する、という状況を考えます。方法として2つ考えられます。
1,音声とデータを別々のPVCで運ぶ:PIPQ(PVC Interface Priority Queue)を使用。音声トラフィックに高、中、通常、低の4種類のPriority付け可能。
2,音声とデータのトラフィックを同じPVCで運ぶ。
フレームリレーのような、Point-to-multipointネットワーク(ハブ&スポーク)では、ハブサイトとリモートサイト間のリンク速度の不一致により、パケットが破棄される恐れがあります。つまりハブサイトはフレームリレーネットワークにT1接続を持っていて、リモートサイトは128Kbpsしかない場合、ハブがリモートに対し、T1速度でトラフィックを送ったら、リモートは処理しきれないパケットを破棄してしまいます。これを防ぐのがトラフィックシェーピングと呼ばれるQoSメカニズムです。
基本的なフレームリレーのトラフィックシェーピング設定
interface Serial 0/1
no ip address
encapsulation frame-relay
frame-relay traffic shaping <-
物理インタフェースでトラフィックシェーピングを有効
!
interface Serial 0/1.64 point-to-point
ip address 10.14.96.2 255.255.255.252
frame-relay interface-dlci 128
class voice <-
このPVCにクラスvoiceを関連づける
!
map-class frame-relay voice <-
マップクラスコンフィグモード (class-map
ではないので注意)
no frame-relay adaptive-shaping
frame-relay cir 256000 <-
サービスプロバイダと契約している最低保証レート値
frame-relay bc 2560
frame-relay mincir 256000 <-
CIRと同じ値にする
実際のフレームリレーWAN上でにVoIPのQoS設定はもっと複雑です。上記のトラフィックシェーピング設定の他に、レートを超過してキューされたトラフィックのプライオリティ付けのためのLLQ設定やcRTP(圧縮RTP:ヘッダ圧縮技術)、FRF.12フラグメンテーション設定などが必要です。ここではやめときます。
参照:Cisco VoIPソリューション導入ガイド(ソフトバンク)