QoS for VoIP

Supervisor IOS for CCNP Switching (640-604J) のQoSのSectionも参考にして下さい。


QoS(Quality of Service)の要件

VoIPでは遅延に敏感な音声パケットを、その他の重要性の低いネットワークトラフィックより優先させるために、QoSが使用されます。

逆にQoSが使用されないと、リアルタイム音声パケットがネットワークで優先されるという保証はありません。

VoIPネットワークがPSTN(既存の電話網)に取って代わるためには、PSTNと同等な音声品質が必要になります。

つまり音声が途切れたり、遅延が発生したり、またはその遅延の変動(ジッタ、ゆらぎと呼ばれる)があることは致命的になります。

またQoSによる音声パケットの優先と同様に、十分なネットワーク帯域幅を確保するべきである。

 


パケットの分類(Classification)とマーキング

パケットの分類(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に適用

 


QoS キューイングのメカニズム

パケットの分類とマーキングが済んだら、その優先度によってインテリジェントな出力を行うのがキューイング処理。

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パケットにプライオリティサービスを提供する。インターフェースコンフィグモードでのシンプルな設定

 


フレームリレーネットワーク上でのVoIPのQoSの例

企業が本社(ハブサイト)と支社(リモートサイト)間の音声通話を運ぶため、既存のデータトラフィック用のフレームリレー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ソリューション導入ガイド(ソフトバンク)

inserted by FC2 system