技術Tips
第4回:Wiresharkによるレスポンス・タイム測定
Wiresharkによるレスポンス・タイム測定 :
Wiresharkをより快適に使用
ネットワークの解析およびトラブルシューティングの現場においては、パケットをキャプチャし、特定のプロトコル上で発せられたコマンドに対し、レスポンスが返ってくるまでの時間(レスポンス・タイム)を確認したい、といったケースがあります。
そこで今回のWireshark使いこなしTips では、Wiresharkに搭載されている時間調整機能について、実際のPCAPファイルを用いながら、同機能によるレスポンス・タイムの表示および測定方法についてご紹介します。
今回はWiresharkのサイトからダウンロード可能なサンプルのキャプチャファイル(https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=http.cap)にあるhttp.pcapを用います。 このサンプル・キャプチャファイルには、
までの一連の流れが含まれていますので、このPCAPファイルを用いながらDNSのレスポンス・タイムの測定、およびHTTPのレスポス・タイムの測定を行なってみることにします。
Wireshark上で本キャプチャファイルに対し表示フィルタ機能(*)を用い、DNSおよびHTTPについて絞り込み表示してみると、フレーム#13および#17間でDNSのクエリ~レスポンスがあり、そしてそのDNSレスポンスに基づき、フレーム#18および#26間でHTTPによるWebサイトへの接続(HTTP GET)~Webサイトからのレスポンス(HTTP 200 OK)を確認することが出来ます(Figure 1)。
(*)Wiresharkにおける表示フィルタ機能の使い方につきましては、Wireshark使いこなしTips第3回:表示フィルタを使いこなす をご参照下さい。
DNSのレスポンス・タイムを測定する
フレーム#13および#17のタイムスタンプ値の差を求めることにより、DNSのレスポンス・タイムが求められますが、タイムスタンプ値の桁数も多く、時刻情報の引き算となりますので計算ミスもしがちです。このような場合には、Wireshark上でフレーム#13のタイムスタンプ値を基準値の0(ゼロ)と設定することにより、基準時間から特定のフレームまでの時間差を表示することが出来ます。それではその設定方法について見てみましょう。
Wireshark上で「編集」→「時間調整」を選択すると、Figure 2のような画面が表示されます。
ここでは、フレーム#13でDNSのクエリが送信された時間を基準値の0(ゼロ)と設定したいので、「パケット番号」のラジオボタンをONにし、同欄に「13」と入力します。続いて、「・・・の時間を設定」の右側の空欄には、基準値としたい時刻情報を入力します。ここでは、基準値として0(ゼロ)と設定したいので、hh:mm:ssの入力形式に従い、「00:00:00」と入力します(ここでは同ラジオボタンの下にあるチェックマークは外すこととします)。Figure 3のように入力の準備が出来ましたら、同ウィンドウ右下の「適用」ボタンをクリックし、さらに「閉じる」ボタンをクリックします。
するとWiresharkのウィンドウはFigure 4の通りの表示となり、DNSクエリが発せられたフレーム#13のタイムスタンプ値が基準値としての0(ゼロ)で表示されています。DNSレスポンスが返されたフレーム#17のタイムスタンプ値は00:00:00.360518と表示されていますので、ここでのDNSのレスポンス・タイムは0.360518秒であることがわかります。
HTTPのレスポンス・タイムを測定する:
「Allow subdissector to reassemble TCP streams」の設定に注意
HTTPのレスポンス・タイムを測定する際には、
の2通りの方法があります。
1. 「時間調整」機能を用いる方法
ここでのHTTPのレスポンス・タイムの定義として、HTTP GET(フレーム#18)およびHTTP 200 OK (フレーム#26)の時間差をHTTPのレスポンス・タイムと考えるとします。Wireshark上でHTTPのレスポンス・タイムを測定・表示を行う際には、WiresharkのTCPプロトコル上の「Allow subdissector to reassemble TCP streams」の設定に気をつけます。この設定項目は、Wiresharkのパケット詳細表示画面内で、TCP上にマウスを移動し、右クリックすることで呼び出すことが出来ます(Figure 5の赤枠内)。
この「Allow subdissector to reassemble TCP streams」の設定は、HTTPのレスポンス測定を行う際に、
のいずれであるかによって、本設定をオフあるいはオンにします。Wiresharkのデフォルトでは「オン」になっていますので、注意が必要です。ここでは、HTTPのレスポンス・タイムの定義をHTTP GET(フレーム#18)およびHTTP 200 OK (フレーム#26)の時間差と考えることとしますので、本機能はFigure 5の通り「オフ」とします。
それでは前出のDNSにおけるレスポンス・タイムの測定同様、「時間調整」機能を用いてHTTPのレスポンス・タイムを求めてみることにします。Wireshark上で「編集」→「時間調整」を選択し「時間調整」ウィンドウを起動します。ここでは、フレーム#18のHTTP GETが送信された時間を基準値の0(ゼロ)と設定したいので、「パケット番号」のラジオボタンをONにし、同欄に「18」と入力します。続いて、基準値としたい時刻情報「00:00:00」を入力します(ここでは同ラジオボタンの下にあるチェックマークは外すこととします)。入力完了後は「適用」ボタンをクリックし、さらに「閉じる」ボタンをクリックします。
するとWiresharkのウィンドウはFigure 6の通りの表示となり、HTTP GETが発せられたフレーム#18のタイムスタンプ値が基準値としての0(ゼロ)で表示されており、HTTP 200 OKが返されたフレーム#26のタイムスタンプ値は00:00:00.931339と表示されていますので、この場合のHTTPのレスポンス・タイムは0.931339秒であることがわかります。
2. HTTPのパケット詳細表示画面内のTime since request値を参照する方法
「時間調整」ウィンドウ内で、「すべての調整を元に戻す」のラジオボタンをオンにし、「適用」、「閉じる」をクリックし、すべてのタイムスタンプ値を元の状態に戻します。続いてフレーム#26のパケット詳細表示画面内で「Hypertext Transfer Protocol」(HTTP)の詳細を見ると、[Time since request: 0.931339000 seconds]の行が確認できます(Figure 7の赤枠内)。この値によっても、フレーム#18によって発せられたHTTP GETからフレーム#26によってHTTP 200 OKが返されるまでのレスポンス・タイムは、0.931339秒であったことがわかります。
HTTPのパケット詳細表示画面内のTime since request値を参照する方法の場合においても、前述の「Allow subdissector to reassemble TCP streams」の設定によって、表示されるレスポンス・タイムの値が異なりますので、気をつけるようにします。
最後に
アルチザネットワークスの自社開発製品であるetherExtractorは、10GbE/1GbE Full-Duplex(双方向)上で転送されるワイヤーレートの最短パケット(64バイト)の連続キャプチャを保証し、ネットワーク上で生じるさまざまな事象の全てをパケットロスすることなくキャプチャを実行するパワフルなキャプチャ専用機です。
今回ご紹介したレスポンス・タイムの測定は、DNSやHTTPだけではなく、様々なプロトコルにおけるコマンド~レスポンス間の時間測定や、特定の2つのフレーム間の時間差を知りたい、といった際にも便利にご利用いただくことができます。
アルチザネットワークスでは、etherExtractorで取得した貴重なPCAPファイルを、Wireshark上で快適に、そして便利に解析いただくためのさまざまなヒントや利用方法を、今後も「Wireshark使いこなしTips」のコーナーで多角的にご紹介してまいります。