ネットワークアナライザ Wiresharkを使った音声RTPの再生について

みなさん、こんにちは。
本ブログでは、ネットワークアナライザ Wiresharkを使った音声RTPの再生について記載します。
以前のブログ IP電話機をローカル環境で試してみるで、実際にIP電話機同士での通話を実施し、そのときにWiresharkでRTPパケットをキャプチャーして確認していました。
本ブログでも同様の通話を実施しRTPパケットをキャプチャーすることとします。
それでは始めましょう。
目次
Wiresharkでのパケットのキャプチャー構成
WiresharkでのRTPパケットのキャプチャー構成は図1のとおりです。
②のWiresharkが動作するPCにおいて
①SIP Serverと④、⑤のIP電話機間のパケットをモニター、キャプチャーします。
- ※
- 各機器間のパケットを見るためにポートミラー機能付きのスイッチを使用しています。
図1. WiresharkでのRTPパケットのキャプチャー構成
Wiresharkのフィルター
今回の構成では
- ① SIP Serverアドレス 192.168.0.10
- ④ IP電話機 192.168.0.20
- ⑤ IP電話機 192.168.0.30
となっています。
ローカルでの試験環境のため多くの機器は接続されていませんが、もっと多くの機器が接続されている場合、それらの機器からもパケットが流れるためより多くのパケットがキャプチャーされるでしょう。
特定のパケットのみをみるためWiresharkのフィルター機能を使います。
主に使用するもの
条件の一致 | == |
---|---|
AND条件 | && |
OR条件 | || |
除外 | ! |
例えば、上記にあるSIP Server、IP電話機x2 のパケットを見る場合、
ip.addr==192.168.0.10 || ip.addr==192.168.0.20 || ip.addr==192.168.0.30
をWiresharkのフィルター欄に入力します。
IPアドレスが192.168.0.10、192.168.0.20、192.168.0.30のみのパケットが表示されます。
さらに、192.168.0.10、192.168.0.20、192.168.0.30のパケットでかつRTP、SIPのみのパケットを表示する場合は以下を入力します。
(ip.addr==192.168.0.10 || ip.addr==192.168.0.20 || ip.addr==192.168.0.30) && (rtp || sip)
パケット切り取り
取得したRTPパケットにはいくつかのストリームがあるはずです。
ストリームごとにSSRC(Synchronization Source 同期ソース)を持っています。
RTPパケットで特定のストリームのみを抽出する場合は、以下のように入力します。
(例)
rtp.ssrc==0xd0df96b0
表示されているパケットのみを別ファイルに保存します。
メニューの「ファイル」から「指定したパケットをエクスポート」を選択します。
ファイル名 | 適当な名前 |
---|---|
ファイルの種類 | Wireshark/… -pcapng |
Packet Range | All PacketsとDisplayed |
フィルターで指定した特定のパケットのみを含むファイルが生成されます。
音声の再生
特定のパケットのみを含むファイルをWiresharkで開きます。
UDPからRTPへデコードします。(パケットを右クリックし、Decode Asを選択)
RTPを選択します。
メニューの「電話」から「RTP->RTPストリーム」を選択します。
対象ストリームを選択し、「分析」ボタンを押します。
「ストリームを再生」ボタンを押します。
左にある「▶」ボタンを押すと音声が再生されます。
おわりに
いかがでしたでしょうか。
本ブログで紹介したWiresharkは通信プロトコルの詳細な解析が可能なツールで、さまざまな用途に活用できます。
音声RTPの解析は、VoIPシステムのトラブルシューティングや通信品質の検証に役立ちます。
また、ネットワーク機器ベンダーがRTP実装の検証にも利用されています。
Wiresharkの使い方を理解することでネットワークの可視化が容易になり、通信の問題解決をスムーズに行えるようになります。今回は音声RTPに絞って説明しましたが、同様の手順でビデオやファイル転送など、他のトラフィックの解析も可能です。
最後までお付き合いいただきありがとうございました。
VoIP関連のDSP、システム・オン・チップ(SoC)などに関する情報は以下よりご確認ください。