第12章 大規模環境のトラフィック監視
本章では、トラフィックが大量に発生する環境におけるntop製品の利用にフォーカスしたいと思います。大量のトラフィックを処理するためにはどのようにntop製品を配置すればよいか?また、処理性能を改善するためにどのようなテクニックがあるか?をご紹介します。
ntopng,nProbeが大量にトラフィックを処理できるようにする方式を知っていれば、厳しい顧客要件でも確実にトラフィックを収集し、ネットワークの見える化環境を構築することができます。
文:ジュピターテクノロジー よしひろ
-
2022年2月9日(水)に、本ブログ記事のシリーズ【ntopng and nProbeによる高速トラフィック分析入門】がもととなったebookを弊社サイトに公開しました。本サイトで紹介する以上の内容が盛だくさんで、かつ本ブログ執筆当時ではntopngのバージョンが4系でしたが、こちらのebookは5系を対象に執筆しております。是非、無料のebook「ntopによる高速トラフィック分析入門(ntopngバージョン5.0.2系)」をご入手ください。ダウンロードは、こちらからお願いします。
12.1 PF_RING ZCとは
PF_RING ZC(Zero Copy)は、10Gbpsパケット処理(RX,TX両方)を実現する柔軟なパケット処理フレームワークです。
PF_RING ZCは、NICから受信したパケットをカーネルバイパスして処理することができます。また、カーネルモードでも動作させることができます。ZCでカーネルをバイパスした場合、通常のネットワークは利用できなくなることに注意してください。ZCは高速にトラフィックを収集・処理するためだけに利用することができます。
つまり、10Gpbsトラフィックレコーダーを実現したい要件やスイッチ/ルーターの10Gbps ポートにntopngサーバーのNICを直接接続し、トラフィックの可視化を実現したいといった場合に本モジュールを利用することができます。
12.2 PF_RING ZCのインストールと設定
PF_RING ZCのインストールと設定は以下の通りです。
$sudo pf_ringcfg –configure-driver ixgbe –rss-queues 1 ※NICがixgbeの場合
$sudo cp -p B49691A3XXX /etc/pf_ring/ ※ZCライセンス#1の配置
$sudo cp -p B49691A3XXX /etc/pf_ring/ ※ZCライセンス#2の配置
$sudo systemctl restart pf_ring
以下のコマンドを実行し、ixgbeドライバ行がRSS=1となり、かつ[Running ZC]と表示されれば設定は成功です。※RSS(RECEIVE-SIDE SCALING)とは、複数のCPUでインバウンドトラフィックを処理するネットワークドライバのテクノロジです。
ntop@ntopng:/etc/pf_ring/zc/ixgbe$ sudo pf_ringcfg –list-interfaces
Name: enp3s0f1 Driver: ixgbe RSS: 1 [Running ZC]
Name: enp3s0f0 Driver: ixgbe RSS: 1 [Running ZC]
Name: enp1s0f0 Driver: igb RSS: 6 [Supported by ZC]
Name: enp1s0f1 Driver: igb RSS: 6 [Supported by ZC]
Name: eno1 Driver: tg3 RSS: 1
Name: eno2 Driver: tg3 RSS: 1
12.3 ZCを活用したntopng設定(n2disk有効)
前節でご紹介した通り、ZCを利用しかつトラフィックレコーディングn2diskを有効にする場合は、RSS=1に設定する必要があります。
また、ntop製品のアーキテクチャも大きく変更となり、n2diskがトラフィック情報をNICから吸い上げてntopngに伝達する構成となります。
図12-1は、今回のアーキテクチャを表す図となります。
図12-1 ntopng, n2disk連携図
図12-1のアーキテクチャにする場合は、ntopng設定変更が必要です。
$ sudo vim /etc/ntopng/ntopng.conf
~snip~
-i=tcp://*:5556c
$sudo systemctl restart ntopng
次にn2diskの設定を行います。
–interface=zc:enp3s0f0
–dump-directory=/storage/n2disk/pcap
–timeline-dir=/storage/n2disk/timeline
–disk-limit=80%
–max-file-len=1000
–buffer-len=4000
–max-file-duration=60
–index
–snaplen=1536
–writer-cpu-affinity=0
–reader-cpu-affinity=1
–compressor-cpu-affinity=2,3
–index-on-compressor-threads
-u=ntopng
–zmq=tcp://127.0.0.1:5556
–zmq-probe-mode
–zmq-export-flows
$sudo systemctl restart n2disk@enp3s0f0
設定が完了すると、図12-1構成でntopngとn2diskが動作し、図12-2のようにntopng WEB GUIに表示されるインターフェイスメニューが、”tcp://*:5556c”となります。
こちらで、ZC, n2diskと連携したトラフィック分析環境の構築は完了です。
図12-2 n2disk経由でのトラフィック分析
12.4 RSSとZCを活用したntopng設定
“12.3 ZCを活用したntopng設定(n2disk有効)”節では、RSS=1固定が条件でした。n2diskと連携しない(トラフィックレコーディング機能を利用しない)選択をした場合、RSSとZCを組み合わせてトラフィック処理を高速化することができます。
先ずは、RSS設定変更です。
以下の例では、RSS=6に設定しています。
$ sudo pf_ringcfg –configure-driver ixgbe –rss-queues 6
[>] Configuring PF_RING
[>] Configuring hugepages
[>] Detecting interfaces using ixgbe
enp3s0f1
enp3s0f0
[>] Configuring ixgbe driver with 6 RSS queues
[>] Restarting PF_RING
[>] Configuration completed
次にRSS=6に対応したntopngの設定変更を実施します。
$ sudo vim /etc/ntopng/ntopng.conf
~snip~
-i=zc:enp3s0f0@0
-i=zc:enp3s0f0@1
-i=zc:enp3s0f0@2
-i=zc:enp3s0f0@3
-i=zc:enp3s0f0@4
-i=zc:enp3s0f0@5
-i=view:all
:wq!
$systemctl restart ntopng
図12-3 RSS=6, ZC経由でのトラフィック分析
図12-3の”view:all”をクリックするとRSS=6で分割してトラフィック収集している情報をまとめて表示することができます。
RSSとZCを併用すれば、10Gbpsまでのトラフィック分析が可能となります。
10Gbpsを超える場合は、nProbe centoと併用する必要があります。
nProbe centoとの連携に関しては、別の機会にご紹介いたします。