VoIP技術者のための実践講座 [第2回WireSharkでSIPシグナリングを見る]




VoIP技術者のための実践講座 [第2回 WireSharkでSIPシグナリングを見る]

 

前回の「VoIP技術者のための実践講座[第1回WireSharkを使う]」においてインストールは完了していますので、今回は具体的な使い方をご紹介しようと思います。本記事ではタイトルにもあるようにVoIP(Voice/Video over Internet Protocolボイス/ビデオ オーバー インターネット プロトコル)技術者を想定しています。そのため今回はVoIPの代表的な通信プロトコルである、SIP (Session Initiation Protocol)のシグナリングを見ることを目標にWireSharkを使ってみましょう。

 

その前にSIP(Session Initiation Protocol)のシグナリングとはVoIP技術者、Network技術者にとっては当たり前かもしれませんが、RFC3261で規定されています。気合のある方は以下の原文を読みましょう。

https://www.ietf.org/rfc/rfc3261.txt

 

今回は上記RFC3261から代表的なSIPトラペゾイドの図を抜粋しました。

sip_trapezoid

AliceとBobのSIPフォンとの間に2台のSIPサーバが存在し、SIPのシグナリングメッセージを仲介していることがわかります。INVITEリクエストから始まり200OKでセッションが確立しています。話が終わった後、Bobが電話を切っているのがBYEの向きからわかりますね。

 

Wiresharkで現実を確認

では、このような流れは本当に行われているのでしょうか。Wiresharkを利用して実際のネットワークをパケットキャプチャして確認してみましょう。今回以下の機器で調査を行いました。

SIP電話機A

SIP ID:y1046, ip address: 172.16.200.50

SIP電話機B

SIP ID: y1530, ip address: 172.16.200.152

SIPサーバー

172.16.200.84

実験はSIPサーバーにインストールしてあるWiresharkのパケットキャプチャをONにして、SIP電話機AからSIP電話機Bに電話を掛け、通話後にSIP電話機Bが電話を切ります。

 

<手順>

  1. WiresharkのパケットキャプチャをON(開始)

   [Capture]->Startで開始です。また、緑のボタンを押しても同じです。

  sip_capture_start

  1. SIP電話機Aから電話機Bへ電話を掛けます。SIP電話機Bは電話に出た後、数秒待って電話を切ります。

 

  1. WiresharkのパケットキャプチャをOFF

​   上記画面の[Capture]->Stopで停止できます。また、赤いボタンを押しても同じです。

それではキャプチャした内容を見ていきましょう。以下がキャプチャした直後の画面の一部です。実はこのSIPサーバーは今回実験で使用したSIP電話機以外のSIP端末からも接続されているため、色々なパケットが入り混じっています。これは実際の現場でも同様の事が多々あります。この画面のままでは人間の目で必要なパケットを読み解くことは不可能ですよね。

sip_capture_1

Wiresharkのフィルター機能を使う

そこで、今回の本題の一つです。Wiresharkのフィルター機能を使いましょう。今回見たい対象のメッセージはSIP電話機A(172.16.200.50)SIP電話機B(172.16.200.152)とのやり取りですので、以下のようにフィルターを掛けてみます。

 ip.addr==172.16.200.50 || ip.addr==172.16.200.152

画面上部のフィルター欄に記入します。

sip_capture_2

どうでしょうか。かなり見やすく絞れましたが、まだまだ不要なパケットがありますね(赤く塗りつぶされたパケット以外が不要なパケットです)。今回見たいパケットはSIPプロトコルのメッセージだけのはずです。そのためさらにフィルターにsip条件を追加します。

(ip.addr==172.16.200.50 || ip.addr==172.16.200.152)&&sip

sip_capture_3

どうでしょうか。欲しいパケットの情報だけがスッキリとフィルタリングされて見えたのではないでしょうか。また、それぞれのパケットの中を見たい場合はその行をクリックするだけでOKです。

 

 

グラフでフローを見る

プロの方は上記まで絞れるともうOKですが慣れない人はもう少しビジュアルで見たいかもしれません。

その時は以下のように“SIP Flows”のメニューを使用します。(Wireshark 2.6.5の場合。2018年12月時点の最新バージョンです。 )

 

少し前のバージョンをご使用の方は以下の通り“Flow Graph”を使用します。

(画面はWireshark 1.12.xの場合です。 )

sip_capture_4

 

 

すると最初に冒頭に紹介したRFCのメッセージ概念図みたいなフローグラフが現れます。

sip_capture_5

SIP電話機AとSIP電話機BがSIPサーバーを介してメッセージをやり取りしていることがわかりますね。冒頭のRFCの概念図と今回の実験での違うところは「407メッセージが飛んでいる」ところと、「仲介しているSIPサーバーが1台」だけの所でしょうか。

 

 

いかがでしょうか。今回はシンプルな構成でSIPのメッセージングを見てきました。簡単ですが、非常に重要な部分でもあります。次回はSIPサーバーだけでなくIP PBXが構成に参加するとどういうメッセージングのやり取りになるかご紹介しようと思います。



 

>>VoIP技術者のための実践講座 [第3回WireSharkでIP-PBXシグナリングを見る]

2 thoughts on “VoIP技術者のための実践講座 [第2回WireSharkでSIPシグナリングを見る]

  • 07/19/2015 at 8:07 AM
    Permalink

    このWireSharkのフローはRFCのフローと違い、ACKやBYEもSIPサーバを経由してますがなぜでしょうね。ウチでもサーバを経由してるのでそちらが一般的みたいですが。

  • 07/23/2015 at 3:33 PM
    Permalink

    確かに。RFCではACKやBYEはSIPサーバを経由しなくてもよい仕様になっていますね。ではなぜ商用のSIPサーバではこれらのメッセージも経由するのでしょうか。それには理由があります。次回触れたいと思います。

Comments are closed.