WireSharkでパケットキャプチャ

WireSharkを公式からDLする

https://www.wireshark.org/download.html

Stable Release (3.4.0)
Windows Installer (64-bit)
を選択

インストーラを実行
Wireshark-win64-3.4.0.exe

インストールコンポーネントはデフォルトのまま次へ
ショートカット作成などもデフォルト
拡張子の関連付けだけチェックを外し次へ

インストール先もデフォルト
C:\Program Files\Wireshark

Npcapをインストール (デフォルト)
USBpcapはインストールしない (デフォルト)

OS再起動はしないで進める

WireShark起動

# GUIでの負荷チェック

[サーバ性能: EC2のc5.large(2コア)]
※CPU性能は高いモデル

WireShark起動前
CPU負荷
1% (たまに2%と5%)
メモリ
使用中 2.3GB
利用可能 1.5GB

WireShark起動 (アプリ起動しただけ)
CPU負荷
1% (たまに2%と5%)
メモリ
使用中 2.4GB
利用可能 1.3GB
WireShark.exeのCPU使用率は0%、メモリ使用量は80MB
ディスク活動 (リソースモニター)
0KB (たまに14～20KB)

キャプチャ開始 (キャプチャフィルタなしでそのままキャプチャ開始)
CPU負荷
4から6%
メモリ
実行前と変わらず
使用中 GB
利用可能 GB
WireShark.exe
CPU使用率0～2 %、
メモリ使用量 90MB ※10NB増加
ディスク活動 (リソースモニター)
44～258KB間で上下 (70前後や150前後が多い印象)
書き込み対象の主なファイルはこれ
C:\Users\Administrator\AppData\Local\Temp\3\wireshark_イーサネット 3BDOSU0.pcapng

なんだデフォでディスクに永続化してるのかと、キャプチャ止めてpcapng開いてみようとしたら、ファイルなくなってた
キャプチャ止めると停止されるみたい
ファイルとして保存の動作は、これをコピーしてるだけと見た

# インスタンスタイプ変更 (しょぼくする)
一番しょぼく、バーストもないm3.mediumにした
Intel Xeon E5-2670 v2 2.5GHz
1コア メモリ3.75GB

# CUI実行

参考
https://qiita.com/tes2840/items/3cc51cb5c5b38d0486e9

http://blog.livedoor.jp/mephistobless-201/archives/65820159.html

>wiresharkに付属しているtsharkっていうのは、ダメなのです。
>wiresharkのコマンドライン版ですので、通信量が大量だと、フィルタ処理により取りこぼします。

> どうすればいいか。
> wiresharkのインストールフォルダにある、
> dumpcap.exeを使うか、
> winpcapのサイトでダウンロードできるwindumpを使います。

....

>ファイルサイズがデカくなりすぎるとファイルをwiresharkで開けなくなるので、
>以下のオプションをつけたりします。
>
>dumpcap.exe -i <IF番号> -b filesize:256000 -b duration:3600 -P -w C:¥cap¥capture.pcap
>
>-b filesize:<キロバイト>　→ファイルサイズ256MBで次のファイルにスイッチ
>-b duration:<秒>　→1時間毎に次のファイルにスイッチ
>-P libpcap形式で保存

ファイルサイズでローテするのが良い気がするな
(時間の方が管理はしやすいけど、WireSharkで解析するときにサイズがでかいとつらいので数百MBくらいに抑えたい)

# CUI (dumpcap.exe) 検証

出力先ファイルと10KBでのローテーションのみ指定
(1024KB指定だとなかなかそのサイズに達しなかったので小さいサイズで検証)

```
c:\tmp>"C:\Program Files\Wireshark\dumpcap.exe" -w C:\tmp\capture.pcap -b filesize:1024
Capturing on '繧､繝ｼ繧ｵ繝阪ャ繝・
File: C:\tmp\capture_00001_20201208114553.pcap
Packets captured: 156
Packets received/dropped on interface '繧､繝ｼ繧ｵ繝阪ャ繝・: 156/0 (pcap:0/dumpcap:0/flushed:0/ps_ifdrop:0) (100.0%)

c:\tmp>"C:\Program Files\Wireshark\dumpcap.exe" -w C:\tmp\capture.pcap -b filesize:10
Capturing on '繧､繝ｼ繧ｵ繝阪ャ繝・
File: C:\tmp\capture_00001_20201208114605.pcap
Packets: 41 File: C:\tmp\capture_00002_20201208114607.pcap
Packets: 108 File: C:\tmp\capture_00003_20201208114614.pcap
Packets captured: 176
Packets received/dropped on interface '繧､繝ｼ繧ｵ繝阪ャ繝・: 176/0 (pcap:0/dumpcap:0/flushed:0/ps_ifdrop:0) (100.0%)
```

指定したファイル名に基づいて、番号とタイムスタンプを自動付与したファイルでローテしてくれる。賢い。ファイルが切り替わると新規書き込み先のファイル名を標準出力してくれて分かりやすい。

出力されたファイルをWireSharkで解析かけてみる
最初のファイルも次にローテで生成されたファイルも問題なく読めた
(10KBだとさっと開けて気持ちいい.. 本番取得だとファイルサイズでかくなりがち)

次、ローテサイズを大きくして、CUI実行時の負荷検証
※explorer.exeの負荷が気になるので、エクスプローラを閉じておくと、負荷の変動が少なくなる

dumpcap実行前
- CPU使用率
    - 変動するがかねがね6%～7%で推移
    - プロセス毎では、タスクマネージャが9%、リソースモニターが6%
- メモリ
    - 使用中 934MB
    - 利用可能 2.8GB
- ディスク活動 (リソースモニター)
    - かねがね0% (たまにsystemプロセスが不明なスパイク起こしたりはする)

dumpcap実行中
コマンド

```
c:\tmp>"C:\Program Files\Wireshark\dumpcap.exe" -w C:\tmp\capture.pcap -b filesize:100
```

- CPU使用率
    - 7%～9％ で推移
    - ※エクスプローラを起動してるとたまに21%程度までいくときがあったが、エクスプローラを閉じると全然変動しなくなった
- メモリ ※実行前と変化なし
    - 使用中 932MB
    - 利用可能 2.8GB
- ディスク活動 (リソースモニター)
    - かねがね10KB～20KBで推移
    - 30秒に1度70KBに一時上昇しまた下がる
- dumpcap.exe
    - CPU使用率
        - 0%
    - メモリ使用量 (プライベートワーキングセット)
        - 2MB

# ab (Apache Bench）自体の負荷計測

ab実行前

- CPU使用率
    - かねがね7～9％ で推移
メモリ
    - 使用中 1.1GB
    - 利用可能 2.7GB
- ディスク活動 (リソースモニター)
    - かねがね0KB

ab実行中
コマンド

```
set ab="c:\app\Apache24\bin\ab.exe"
for /l %%i in (1,1,60) do (
  %ab% -c 1 -n 5 http://192.168.x.x/
  timeout 1
)
```

※同時接続1で5リクエスト発行したら1秒おく、を60秒間繰り返す

- CPU使用率
    - かねがね29%前後で推移
- メモリ ※実行前と変化なし
- ディスク活動 (リソースモニター)
  - 0KB～5KBで推移
- ab.exe 負荷
    - こいつ自体は実行が一瞬なせいか、タスクマネージャ (CPU降順) には表示されてこない
- httpd.exe 負荷
    - CPU使用率 2%
    - メモリ使用量 3.2MB
- そのほか、conhost.exey/cmd.exeが2％など (ab実行バッチ)

# ab実行中にdumpcapでパケットキャプチャしたときの負荷計測

abコマンド

```
set ab="c:\app\Apache24\bin\ab.exe"
for /l %%i in (1,1,120) do (
  %ab% -c 1 -n 5 http://192.168.x.x/
  timeout 1
)
```

dumpcapコマンド
※1MBごとにファイルローテ

```
"C:\Program Files\Wireshark\dumpcap.exe" -w C:\tmp\capture.pcap -b filesize:1024
```

- CPU使用率
    - かねがね20%
- メモリ
    - 使用中 
    - 利用可能 
- ディスク活動 (リソースモニター)
  - 15KBy～50KBで推移
- dumpcap.exe負荷
  - CPU使用率 0％
  - メモリ使用量 2MB

# もっとabで負荷かけてみる (その最中にキャプチャかけて、キャプチャのディスク負荷とか計測)

ab
＃同時接続1、100リクエスト送信、を1秒おきに繰り返す

```
set ab="c:\app\Apache24\bin\ab.exe"
for /l %%i in (1,1,120) do (
  %ab% -c 1 -n 100 http://192.168.102.16/
  timeout 1
)
```

- CPU使用率
    - 最初は30%程度だが、なぜかじわじわと上昇していき、1分くらい後には100%で張り付く
    - ab結果でFailed Requests 0で全部completeなんだけどなあ
    - CPU使用率高いプロセスみると、perfmon.exe (リソースモニター) が80%.. うぉっなぜ..
    - リソースモニター閉じたらいいのか??
- メモリ 変化なし
- ディスク活動 (リソースモニター)
  - 0～30%間を推移
    - Apacheのアクセスログの書き込み
- dumpcap.exe負荷

リソースモニター閉じて再実行
＃リソースモニター閉じるだけでCPU使用率が25%から2%に下がったんだが..

- CPU使用率
    - ab実行前 2%
    - ab実行中 かねがね29%
    - dumpcap実行 かねがね29%から変化なし
- メモリ 上記いずれも変化なし
- ディスク活動
    - 確認するためにリソースモニター起動すると、リソースモニター自体がCPU100%を引き起こすので長く起動していられない。CPU張り付いてるせいかディスク書き込みの値が少なく見え、信用ならない

# 結論
dumpcapでのCUIでのパケットキャプチャの負荷は低い。
CPU、メモリはほぼ消費しない。
通信をログに書き込む分、毎秒15KB～50KB程度のディスク書き込みが発生する程度。

abコマンドでリクエスト (通信) を発生させながらキャプチャしたが、キャプチャの負荷はほぼない (見えるのはabの負荷だけ)