技術Tips
第8回:フローグラフ(ラダー・チャート)を表示する
フローグラフ(ラダー・チャート)を表示する
今回のWireshark使いこなしTips では、フローグラフ機能について解説します。
Wiresharkでいうところの「フローグラフ」とは、一般には通信プロトコルの「シーケンス・チャート」、あるいは「ラダー・チャート」(その形状がはしごのように見えることから(Ladder = はしご))と呼ばれるものと同じものを指します。フローグラフを使用することにより、PCAPファイルに含まれるノード間でやり取りされているプロトコルの一連のやりとりの流れを、時系列と共にシーケンシャルに表示・可視化します。
使用するサンプルのキャプチャファイルは、今回も前回同様、Wiresharkのサイトからダウンロード可能なサンプルのキャプチャファイル(https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=SIP_CALL_RTP_G711)にあるSIP_CALL_RTP_G711.pcapを用います。
また、Wiresharkのリリースには、version 2.6.3を用います(本記事執筆時点では、Wiresharkの最新のStable Releaseは2018年11月28日リリースの2.6.5ですが、同バージョンおよびひとつ前の2.6.4共に、日本語を含む多言語でのメニューの表示に問題が認められていますので、本記事では2.6.3を用いて解説します)。
フローグラフの起動
上記のサンプルPCAPファイルをダウンロードし、Wiresharkでファイルを開きます。フローグラフは、Wiresharkのメニューバーから、「統計」→「フローグラフ」を選択することにより起動します。
▲ SIP_CALL_RTP_G711.pcapから作成されたフローグラフ(デフォルト設定での表示)
以下、フローグラフ・ウィンドウ内に表示される項目のうち、主な機能について説明します。
ボタン/表示 | 説明 |
---|---|
時間 | メニューバーから「表示」→「時間表示形式」で選択されている表示形式に従い時刻情報が表示されます。 |
IPアドレス | プロトコルのやり取りに関与しているIPアドレスを表示します。 |
コメント | Wiresharkメイン画面内における「Protocol」および「Info」に相当する情報が表示されます。 |
矢印 | 通信の方向を表示します。 矢印をクリックすると、Wiresharkのメイン画面上で該当するフレームが反転表示されます。 |
矢印の両端に表示される数字 | TCPポート番号を表示します。 |
□ 表示フィルタに制限 | Wireshark上で各種の表示フィルタを設定・適用後、このチェックボックスにチェックを入れることにより、表示フィルタの内容に即したフローグラフが表示されます。 ターゲットとなる特定のプロトコルおよびIPアドレス間の通信に絞り込んでフローグラフを表示したい時に便利な機能です。 |
フロー種別 | デフォルトで下記のフロー表示が定義されています。
|
アドレス |
|
リセット | フローグラフのリセットを行います。 |
Save As ・・・ | 下記の形式でフローグラフの保存を行います。 PDF形式/PNG形式/Windowsビットマップ形式/JPEG形式/アスキー形式 |
閉じる | フローグラフを終了します。 |
特定のプロトコルおよびIPアドレス間の通信に絞り込んでフローグラフを表示する
フローグラフは、デフォルトでは対象とするPCAPファイル内に含まれているすべての通信がラダー・チャート形式でシーケンシャルに表示されます(Fig. 1)。しかし、実際のトラブルシューティングの現場においては、特定のプロトコルおよび特定のノード間の通信の事象に絞り込んでフローグラフを表示したいケースが多いでしょう。その場合には、下記の手順でWireshark上で表示フィルタの設定を行うことにより、特定の通信に着目したフローグラフの表示が可能です(表示フィルタの設定方法につきましては、Wireshark使いこなしTips第3回「表示フィルタを使いこなす」をご参照下さい)。
これにより、Wiresharkのメイン画面上で特定のプロトコルおよびノード間の通信の事象に絞り込んだフローグラフの表示が可能です。ここでは例として、表示フィルタとして「ip.addr==200.57.7.204 and ip.addr==200.57.7.194」を設定し、これら2つのIPアドレス間の通信に着目したフローグラフを表示した例を示します(Fig. 2)
▲ 表示フィルタとして「ip.addr==200.57.7.204 and ip.addr==200.57.7.194」を設定し、ウィンドウ内左下の「表示フィルタに制限」にチェックを入れて表示されたフローグラフ
また、使用頻度が高いと考えられるTCPのシーケンスに着目したフローグラフは、フローグラフ・ウィンドウ内で、「フロー種別 = TCP Flows」を選択すすることにより、TCPのシーケンス・フローに着目したフローグラフを作成することができます。これにより、PCAPファイルに含まれているすべてのIPアドレス間でTCP通信を伴うノード間におけるシーケンスが表示されますので、TCP 3-wayハンドシェイク通信をよりわかりやすく可視化することができます(Fig. 3)。
▲ フロー・ウィンドウ内で「フロー種別 = TCP Flows」を選択して表示されたフローグラフ
フローグラフ内で表示されている矢印をクリックすることにより、Wiresharkのメイン画面上で該当するフレームが反転表示されます。これにより、フローグラフ上で大まかなフローの流れを確認後、特定の通信に関してその詳細を確認したいフレームが存在する場合に便利です。
それでは、本サンプル・キャプチャファイル内で、フローグラフを使ってSIPによるシグナリング後にRTPによる通信が開始される様子を見てみましょう。
フローグラフでSIPシグナリングおよびRTPを確認
ここではSIPによるシグナリングおよびRTPによるメディアの送受信に着目しフローグラフを表示したいため、下記の操作によりフローグラフを表示します。
するとFig. 4のようなフローグラフが表示されます。
▲ 表示フィルタとして「sip or rtp」を設定し、ウィンドウ内左下の「表示フィルタに制限」にチェックを入れて表示されたフローグラフ
Fig.4のフローグラフ上で見られる通り、IPアドレス200.57.7.195~200.57.7.204間においてSIPによる接続の確立(シグナリング)が確認され、その後はIPアドレス200.57.7.204~200.57.7.196間におけるRTPによるメディアの送受信が確認できます。1番目と6番目に表示されているフレームにはSIP/SDPと表示されていますので、これらによりSIPメッセージ内にSDP(Session Description Protocol(セッション記述プロトコル))を含みながら、双方のノード間において、メディアの通信能力のネゴシエーションが行われていることがわかります。
SDPの詳細について確認するために、1番目の矢印をクリックしてみます。すると、Wiresharkのメイン画面の1番目のフレームが反転表示されますので、同フレームの詳細画面内において、Session Initiation Protocol (INVITE)の左に表示されている「>」印をクリックし、「Message Body」→「Session Description Protocol」を表示すると、Fig.5のようなウィンドウが表示されます。これにより、IPアドレス200.57.7.195から200.57.7.204に対し、
などが確認できます。
最後に
Wiresharkのメイン画面のみの表示では、数字とアルファベットの表示がメインとなるため、通信の方向性、すなわち、どのノードからどのノードに対し、どのような通信プロトコル/メッセージが発せられているか、を視覚的に把握することは時として容易ではありませんが、今回ご紹介したフローグラフを用いることにより、ドキュメントおよび仕様書上などで見慣れた「シーケンス・チャート」、あるいは「ラダー・チャート」と同じイメージで表示・可視化することが可能です。 また、今回ご紹介しました通り、フローグラフは表示フィルタ機能と合わせて表示することにより、ターゲットとする通信をより明確に表示・解析することができます。
アルチザネットワークスの自社開発製品であるetherExtractorは、10GbE/1GbE Full-Duplex(双方向)上で転送されるワイヤーレートの最短パケット(64バイト)の連続キャプチャを保証し、ネットワーク上で生じるさまざまな事象の全てをパケットロスすることなくキャプチャを実行するパワフルなキャプチャ専用機です。
アルチザネットワークスでは、etherExtractorで取得した貴重なPCAPファイルを、Wireshark上で快適に、そして便利に解析いただくためのさまざまなヒントや利用方法を、今後も「Wireshark使いこなしTips」のコーナーで多角的にご紹介してまいります。