【ラウンドトリップタイムグラフを生成してトラフィックの見える化】kWireshark達人への道 第十歩 RTT(Round Trip Time)グラフの生成
2021年6月5日、題名を修正したよ!
本連載は、筆者がWiresharkの達人となるまでを追うドキュメンタリー作品である。
今回の記事では、ネットワーク監視ソフトウェアに標準で搭載されているRTTグラフをWiresharkで生成しようといった内容です。Round Trip Timeの翻訳は、「往復遅延時間」です。つまり、「行き帰りの時間」となりこの時間が明らかに多いと通信パスでなんらかの遅延が発生している可能性があります。例えば、あるサイトにアクセスした時に通信遅延が発生している場合、「自PC→スイッチ→ルータ→AS1234→AS5678→目的のサイト」といった経路のどこかのルートで、遅延が発生している可能性があります。Solarwinds社のNetpathはこの通信ルートの遅延を視覚化してくれるツールです。Wiresharkには残念ながらそこまでの機能はありませんが、収集したパケットからRTTグラフを生成することができます。今回は、そのやり方をご紹介します。
1.検証環境準備
先ずは検証環境のおさらいです。以下の赤枠が今回試験をした環境となります。
今回iperf3というツールを使って、tcp通信を生成します。PC Engine製のapu4は中身はUbuntu18.04。有線接続のPCはWindows10です。iper3を両端末ともインストールしておきます。ダウンロードは、こちらから。
次に通信遅延を故意的に発生させたいと思います。apu4側でtcコマンドを使えば通信遅延を発生させることができます。コマンドは以下の通りです。
#100ms通信遅延の初期設定(addオプション)。apu4のNICインターフェイス名はbr0
apu4:~$ sudo tc qdisc add dev br0 root netem delay 200ms
#以降、遅延幅を設定する場合は、オプションchangeを利用する
apu4:~$ sudo tc qdisc change dev br0 root netem delay 500ms
#設定を削除する場合は、以下コマンドを実行
apu4:~$ sudo tc qdisc del dev br0 root
今回の検証では、200msの設定をしました。※iperf3ではデフォルトの実行時間が10秒ととても短く遅延のグラフ化には適当でありません。よって、クライアント側のオプションでiperf3の実行時間を5分に設定しました。本試験の間、サーバー側のapu4側ではtcpdumpコマンドを利用してパケットをキャプチャしております。
2. iperf3の実行結果
apu4:~$ sudo iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.1.8, port 55020
[ 5] local 192.168.1.254 port 5201 connected to 192.168.1.8 port 55024
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.00 sec 99.8 KBytes 817 Kbits/sec
[ 5] 1.00-2.00 sec 1.03 MBytes 8.62 Mbits/sec
[ 5] 2.00-3.00 sec 1.25 MBytes 10.5 Mbits/sec
[ 5] 3.00-4.00 sec 1.25 MBytes 10.5 Mbits/sec
[ 5] 4.00-5.00 sec 1.25 MBytes 10.5 Mbits/sec
~snip~
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-300.20 sec 0.00 Bytes 0.00 bits/sec sender
[ 5] 0.00-300.20 sec 368 MBytes 10.3 Mbits/sec receiver
iper3は5201ポートを利用して通信試験をするので収集したパケットはこのポート番号でフィルタをかけて調査を開始します。
3. ストリーム番号の選定
Wiresharkでは3ウェイハンドシェイクで開始したTCP通信が終了する(FIN-ACK/ACK,RSTによる中断)迄の一連の通信をストリームと呼んでいます。そして、それぞれストリームごとに番号を振っています。今回iperf3で実験した通信のストリーム番号を特定してグラフ化してみましょう。
フィルタに”tcp.dstport == 5201″と入力し、キーボードの「Enter」ボタンをおしてください。
適当なパケットを選択した状態で、右クリック。「追跡」→「TCPストリーム」と進んでください。
図4が表示されるので、「ストリーム」の右に記載されている番号を確認します。(※例では、61)
フィルタに「tcp.stream eq 61」となり、選択したストリーム番号の通信だけが表示されている状態から、「統計(S)」→「TCPストリームグラフ」→「往復遅延時間」を選択してください。
図6にRTTグラフが表示されます。若干ばらつきはあるものの概ね200msで推移していることが分かります。本機能を利用すればターゲットプロトコルに対してのRTTを見える化することができ遅延原因特定の証拠となります。
最新記事 by 伊集院 (全て見る)
- 【暗号化通信(TLS)を復元できる】WIRESHARK達人への道 第二十五歩 暗号化通信(TLS)を復号する方法 - 1月 1, 2023
- 【詳細版】NSM(ネットワークセキュリティモニタ)、Zeekとは? - 9月 1, 2022
- 【簡易版】OSSネットワークセキュリティモニタZeekとは? - 8月 26, 2022