今回はUbuntuで利用出来るパッケージを駆使して、並列実行で動作するNetFlowシミュレーターを実現したというお話をしたいと思います。
そして、マルチスレッドのNetFlowシミュレーターの実現ステップは以下の通りです。
- tcpreplayのインストール
- NetFlowパケットのキャプチャ
- parallelのインストール
- tcpreplayの実行
- サーバー(フローコレクター)側での受信確認
1. tcpreplayのインストール
2. NetFlowパケットのキャプチャ
3. parallelのインストール
4. tcpreplayの実行
Tue Nov 12 17:11:35 JST 2019
[sudo] password for demo:
Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel – The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47.
This helps funding further development; AND IT WON’T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
To silence this citation notice: run ‘parallel –citation’.
Actual: 5006 packets (811124 bytes) sent in 200.20 seconds
Rated: 4051.5 Bps, 0.032 Mbps, 25.00 pps
Flows: 1 flows, 0.00 fps, 5006 flow packets, 0 non-flow
Statistics for network device: ens3
Successful packets: 5006
Failed packets: 0
Truncated packets: 0
Retried packets (ENOBUFS): 0
Retried packets (EAGAIN): 0
real 3m23.612s
user 3m20.300s
sys 0m0.142s
Successful packetsをみると5,006パケットとなっていますのでFlow Tool Bundleから受信したパケットを全て送信していることを確認出来ます。また、実行時間が200.20秒かかっているので1秒あたり25パケット投げています。こちらは、tcpreplay-editの-pオプション(packets/sec)を25と設定している為です。前述の記載通りNetFlow Genratorで収集したパケットは、1パケットあたり2flows含んでいます。従ってこのシミュレーター1スレッドあたり、50fpsのNetFlowをNetVizura NetFlow Analyzerに送信していることになります。今回、tcpreplay-editのオプション”–jobs 1″で実行していますので、50fps * 1 = 50fps となっていれば正しくフローの送受信が行われたということになります。ただし、単発で投げると上記の通り3分ほどで終了してしまいます。NetVizura NFAのグラフは直近5分間のデータを丸めて表示しますので少なくとも10分間以上投げ続けると奇麗な50fpsのグラフが表示されるはずです。それでは、tcpreplay-editのオプション-l(ループ数)を指定して再度実行してみましょう。
Tue Nov 12 18:12:35 JST 2019
[sudo] password for demo:
Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel – The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47.
This helps funding further development; AND IT WON’T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
To silence this citation notice: run ‘parallel –citation’.
Actual: 50060 packets (8111240 bytes) sent in 2002.36 seconds
Rated: 4050.8 Bps, 0.032 Mbps, 25.00 pps
Flows: 1 flows, 0.00 fps, 500600 flow packets, 0 non-flow
Statistics for network device: ens3
Successful packets: 50060
Failed packets: 0
Truncated packets: 0
Retried packets (ENOBUFS): 0
Retried packets (EAGAIN): 0
Tue Nov 12 17:29:45 JST 2019
real 33m23.055s
user 33m22.198s
sys 0m0.335s
上記の通り、-lオプションで10回ループさせていますので、総送信パケット数は5,006 * 10 = 50,060となっております。また、時間も30分を超えていますね。それでは、NetVizura NetFlow Analyzerのfpsを表示出来る画面を見てみましょう。
5. サーバー(フローコレクター)側での受信確認
上図の通り、最大50fpsに到達しています。シミュレーターが送信したfpsとサーバー側で受信したfpsが一致したことになります。
最後に20スレッドで-pオプション(packets/sec)を13を指定して試験してみましょう。到達予想fpsは、20 * 13 * 2 = 520fpsとなります。13packet/secですと、5,006/13=約385秒です。30分以上実行したいので、1800秒/385秒=約4.7。-lオプションは5を指定すればよさそうです。では、実際に実行してみましょう。
Actual: 25030 packets (4055620 bytes) sent in 1925.31 seconds
Rated: 2106.4 Bps, 0.016 Mbps, 13.00 pps
Flows: 1 flows, 0.00 fps, 125150 flow packets, 0 non-flow
Statistics for network device: ens3
Successful packets: 25030
Failed packets: 0
Truncated packets: 0
Retried packets (ENOBUFS): 0
Retried packets (EAGAIN): 0
Actual: 25030 packets (4055620 bytes) sent in 1925.32 seconds
Rated: 2106.4 Bps, 0.016 Mbps, 13.00 pps
Flows: 1 flows, 0.00 fps, 125150 flow packets, 0 non-flow
Statistics for network device: ens3
Successful packets: 25030
Failed packets: 0
Truncated packets: 0
Retried packets (ENOBUFS): 0
Retried packets (EAGAIN): 0
Actual: 25030 packets (4055620 bytes) sent in 1925.30 seconds
Rated: 2106.4 Bps, 0.016 Mbps, 13.00 pps
Flows: 1 flows, 0.00 fps, 125150 flow packets, 0 non-flow
Statistics for network device: ens3
・
・
(続く)
計算通り、520fpsに到達しておりますね。また、しっかりとマルチスレッドで受信出来ているかはNetVizura NetFlow AnalyzerのNetFlowモジュール→Exportersタブで確認することが出来ます。
192.168.11.1~192.168.11.20のエクスポータからフローを受信しているようにちゃんと見えています。本検証で、送信側と受信側のfpsカウントの同期がとれたことになり、かつ並列実行でのフローコレクターの試験が出来たことになります。
弊社では、フローコレクターNetVizura NetFlow Analyzerを販売しております。
主な特長としては、
- 軽量で低スペックサーバーでも動作
- サブスクリプションによる柔軟なライセンス契約
- 特定トラフィック・特定ユーザーの監視に適している
- ネットワークが遅い!の調査に使えるお手軽フローコレクター
となります。評価版(Free Editionへは、30日経過後に移行可能)、マニュアルを無償で提供しておりますので、NetVizura NetFlow Analyzerをこの機会に是非お試しください。
92.168.81.121 port 2055