Asterisk/VoIP

VoIP音声品質調査のための実験

1. はじめに

IP電話では音声をパケットでやりとりします。パケット遅延/パケット損失により、音声品質が劣化します。
ネットワークリソース不足が要因として挙げられます。

本検証では、ネットワークリソースが十分に確保されていない状況を想定した検証を行います。
検証事項は以下とします。

  • 聴覚レベルで、どのような現象が発生するか。 音声の途切れ、遅延等
  • 問題発生時にネットワークモニタリングツールで確認できること
  • 問題発生時のネットワークの状態

 

2. 構成

IP PBX とSIP端末の間にpfSenseを設置してTraffic Shaper機能による帯域制限を行います。また、ミラーリングポート機能を有するスイッチで、IP PBX側ポートをパケット解析用端末で監視します。

本検証で使用したハード構成、ソフト構成は以下の通りです。

  • IP PBX : ATCOM製 「IP 04」
  • pfSense : 2.0-RC3 (i386) ※1
  • ミラーリング スイッチ : colega製 「SSW08GTR」
  • パケット モニタリング ツール : WireShark Version 1.6.0

※1 pfSense 1.2.3 は Traficc Sharper機能を有していますが、正常動作しなかったため 2.0-RC3版を使用しました。

 

正常時、帯域制限時の構成図は以下の通りです。

■正常時

VoIP_test01

■帯域制限時

VoIP_test02

各機器のIPは以下としています。

IP PBX : 192.168.1.100

SIP端末1 : 192.168.2.10

SIP端末2 : 192.168.2.20

 

3. 正常時の検証

1) ネットワーク帯域の確認

まず、正常時の帯域を確認します。 ツールは jperf を使用しました。計測値は以下の通りです。

[1880] 0.0- 1.0 sec 5408 KBytes 44302 Kbits/sec
[1880] 1.0- 2.0 sec 2376 KBytes 19464 Kbits/sec
[1880] 2.0- 3.0 sec 5432 KBytes 44499 Kbits/sec
[1880] 3.0- 4.0 sec 5584 KBytes 45744 Kbits/sec
[1880] 4.0- 5.0 sec 5712 KBytes 46793 Kbits/sec
[1880] 5.0- 6.0 sec 5664 KBytes 46399 Kbits/sec
[1880] 6.0- 7.0 sec 5656 KBytes 46334 Kbits/sec
[1880] 7.0- 8.0 sec 5872 KBytes 48103 Kbits/sec
[1880] 8.0- 9.0 sec 5936 KBytes 48628 Kbits/sec
[1880] 9.0-10.0 sec 5616 KBytes 46006 Kbits/sec
[1880] 0.0-10.0 sec 53256 KBytes 43559 Kbits/sec

 

2) 通話パケットの取得

SIP端末間の通話開始から終了までのパケットのやり取りを、パケット解析端末で取得します。
パケット解析端末で、 WireShark を起動してから、SIP端末1 から SIP端末2 にダイアルします。WireShark で以下のようにパケットの記録が始まります。

WireShark01

ある程度、音声を交換してから各SIP端末をオンフックします。そのあとでパケットキャプチャーを停止します。
これから、取得したパケットについて調査していきます。

 

3) RTP統計値

RTPパケットの統計値を表示します。
上部ツールバーの「Telephony」をクリックして、コンテキストメニューから「RTP」→「Show All Streams」を選択します。

WireShark02

以下の値に注目します。

  • Lost 値
  • Max Jitter値
  • Mean Jitter値

正常時は、各ノード間のLost値が 0.0%と表示されていることから、パケットの損失はありません。各Jitter値もそれほど高くなく、通信的にも比較的良好といえます。

 

4) 音声データの生成、音声波形図の確認

取得したパケットから、SIP端末間で交換された音声を生成します。
上部ツールバーの「Telephony」をクリックして、コンテキストメニューから「VoIP Calls」を選択します。

VoIP Calls ダイアログが表示されます。再生する音声セットを選択状態にして、「Player」をクリックします。

WireShark03

 

VoIP RTP Player ダイアログが表示されます。「Use RTP timestamp」をチェックして、「Decode」をクリックします。

WireShark04

 

デコード処理されたものが表示されます。 再生する音声セットのチェックボックスにチェックを入れて、「Play」をクリックすると、音声が再生されます。

WireShark05

上の図が正常に通信されている時の波形図になります。再生される音声にも特に問題は見当たりません。

 

4. 帯域制限による検証 -1-

帯域を制限した際に発生する現象を検証します。pfSense の Traffic Sharper で制限を 128Kbit/sec に制限します。

 

1) ネットワーク帯域の確認

jperfで計測値は以下の通りです。

[1848] 0.0- 1.0 sec 24.2 KBytes 199 Kbits/sec
[1848] 1.0- 2.0 sec 31.8 KBytes 260 Kbits/sec
[1848] 2.0- 3.0 sec 9.43 KBytes 77.2 Kbits/sec
[1848] 3.0- 4.0 sec 0.00 KBytes 0.00 Kbits/sec
[1848] 4.0- 5.0 sec 7.13 KBytes 58.4 Kbits/sec
[1848] 5.0- 6.0 sec 15.7 KBytes 128 Kbits/sec
[1848] 6.0- 7.0 sec 17.1 KBytes 140 Kbits/sec
[1848] 7.0- 8.0 sec 14.7 KBytes 120 Kbits/sec
[1848] 8.0- 9.0 sec 8.00 KBytes 65.5 Kbits/sec
[1848] 9.0-10.0 sec 16.0 KBytes 131 Kbits/sec
[1848] 10.0-11.0 sec 16.0 KBytes 131 Kbits/sec
[1848] 0.0-11.3 sec 168 KBytes 122 Kbits/sec

 

2) 通話パケットの取得

この状態でSIP端末間の通話開始から終了までのパケットのやり取りを、パケット解析端末で取得します。
この時点で、各SIP端末間の音声交換で以下の事象が聴覚レベルで確認できました。

  • 音声の遅延 : SIP端末1で発信した音声が、暫くしてからSIP端末2で再生される。
  • 音声の途切れ: SIP端末1で発信した音声が、SIP端末2で途切れ途切れに聞こえる。

 

3) RTP統計値

RTPパケットの統計値を表示します。

WireShark06

Lost値に注目します。 IP PBX ~ SIP端末1間と IP PBX ~ SIP端末2間に パケット損失が確認できます。
また、各Jitter値についても、正常時に比べて、値が増加しています。

 

4) 音声データの再生、音声波形図の確認

SIP端末間で交換された音声を生成します。

WireShark07

音声を再生すると、波形図が途切れいている個所(青枠で囲んでいる個所)で音声の途切れが確認できます。

 

5) 結果

帯域を 128Kbit/sec に制限した状態ですと、聴覚レベルで音声の遅延や途切れが確認できます。IP電話システムとしては使用はできるものではありません。

 

5. 帯域制限による検証 -2-

前章では、明らかに通信障害が発生するであろう値で帯域制限を行いました。本章では、障害が発生する最低ラインを調査します。
本検証では、180kbit/sec 以下に設定した場合に音声の途切れを確認しました。

 

1) ネットワーク帯域の確認

jperf での計測値は以下の通りです。

[1868] 0.0- 1.0 sec 17.1 KBytes 140 Kbits/sec
[1868] 1.0- 2.0 sec 22.9 KBytes 188 Kbits/sec
[1868] 2.0- 3.0 sec 24.0 KBytes 197 Kbits/sec
[1868] 3.0- 4.0 sec 16.0 KBytes 131 Kbits/sec
[1868] 4.0- 5.0 sec 24.0 KBytes 197 Kbits/sec
[1868] 5.0- 6.0 sec 24.0 KBytes 197 Kbits/sec
[1868] 6.0- 7.0 sec 16.0 KBytes 131 Kbits/sec
[1868] 7.0- 8.0 sec 24.0 KBytes 197 Kbits/sec
[1868] 8.0- 9.0 sec 24.0 KBytes 197 Kbits/sec
[1868] 9.0-10.0 sec 16.0 KBytes 131 Kbits/sec
[1868] 0.0-10.9 sec 232 KBytes 174 Kbits/sec

 

2) 通話パケットの取得

この状態でSIP端末間の通話開始から終了までのパケットのやり取りを、パケット解析端末で取得します。
前章では、音の遅延/途切れが確認できましたが、今回は聴覚レベルでの異常は認められませんでした。

 

3) RTP統計図

RTPパケットの統計値を表示します。

WireShark08

Lost値については 0.0% とあり、パケットの損失はありません。各Jitter値についても、正常時に比べて、多少ではありますが増加しています。

 

4) 音声データの再生、音声波形図の確認

SIP端末間で交換された音声を生成します。

WireShark09

波形図に異常(青枠で囲んでいる個所)が見当たります。また音声でも途切れが確認できます。

 

5) 結果

帯域を 180Kbit/sec に制限した状態ですと、聴覚レベルでは異常は確認できません。しかし、音声データ波形図からは異常が確認でき、再生した音声データからも途切れが確認できます。

 

6. まとめ

今回の検証結果では、180Kbit/secに帯域を制限した場合、音声に障害が発生することを確認しました。
ただし、聴覚レベルでは確認できず、WireSharkで取得したパケットから生成した音声データで確認できるレベルです。
聴覚レベルでは確認できなくとも、WireShark上では確認できることがありますので、IP電話システム構築後には調査することをお勧めします。

ネットワークリソースの不足による障害の場合、解消方法としては以下が挙げられます。

  • よりスイッチ処理能力が高いスイッチへの
  • QoSによるVoIPサービスの帯域保障
  • ネットワークの分離 音声ネットワークと他ネットワークの分離

また、IP電話システムの導入時には、音声通信の特性を考慮したネットワーク設計を行う必要があります。