ネットワークモニタリング、トラフィックの可視化を実現する製品開発に力をいれてまいりました。
そして、その活動の成果であるntop社の製品をリリース予定です。本ブログ記事では、ntop製品の1つ高速ネットワークトラフィック分析ツールntopngの性能諸元と性能を引き出す方法をご紹介したいと思います。
文:ジュピターテクノロジー よしひろ
本ブログ記事は、ntop社のブログ「Best Practices for Efficiently Running ntopng」を意訳してご紹介しております。
ntopngのデフォルト設定は、ホームネットワークもしくは小さい規模のネットワーク(例えば、サブネットマスク(255.255.255.0))で、リンク速度100Mbit以下の環境で利用する設定になっています。
ntopngが高速で巨大なネットワークで利用することが出来ないといっているわけではありませんが、設定変更なしではそのような環境の要件を満たすことは出来ません。
高速で巨大なネットワーク内でntopngを利用するには、ホスト数を定義する-xオプションを最初に修正する必要があります。
これは、監視対象のネットワーク上で予測できるホスト数の最大値の約2倍を設定してください。
例えば(ローカル、リモート両方で)35,000台のホストがある場合、-xオプションは70,000以上である必要があります。
実際のホスト数より設定が小さいと正しくホストが表示されません。
また、ntopngの性能にも影響します。
-xオプションの設定を大きな値とすると、より多くのメモリを必要とします。
十分なRAMがある場合でも、無駄に大きな値を設定するとリソースを無駄にするだけで効果は得られません。(例えば、上述の例だと-x 1,000,000に設定するなど)
他の設定で重要な要素は、ローカルネットワークの範囲を定義する-mオプション(例: 192.168.0.0/16)です。
必ず実際のローカルネットワークの範囲に合わせて設定してください。
よくある間違った設定は、0.0.0.0/0といった設定をしてしまうユーザーがいます。
これは、ntopngが全ホストの統計を保存する設定となるため、ディスクスペースや他のリソースを無駄に消費し、性能低下につながります。
ntopngのパケットキャプチャ処理は、できるだけ効率よく行えるよう設計されています。ntopngで設定された1インターフェイスごとに1つのスレッドが処理するようになっています。a)cpu性能、b)ホストやフローの数、c)パケットキャプチャ技術といった3つの要素が密接に関わってきますが、ntopngが処理できる1秒あたりのパケット数を調整することができます。
高速パケット処理フレームワークPF_RING(ZCオプションなし)は、1Mpps/インターフェイスを処理することができます。
また、PF_RING ZCを利用すれば、2もしくは3Mpps/インターフェイスとなります(通常はもっと性能をだすことができますが、5Mppsは超えられません)。
10Gbitインターフェイスを処理する場合(または40Gbitインターフェイスの場合)以下を考慮する必要があります。
ntopngのデフォルト設定は、ホームネットワークもしくは小さい規模のネットワーク(例えば、サブネットマスク(255.255.255.0))で、リンク速度100Mbit以下の環境で利用する設定になっています。
ntopngが高速で巨大なネットワークで利用することが出来ないといっているわけではありませんが、設定変更なしではそのような環境の要件を満たすことは出来ません。
高速で巨大なネットワーク内でntopngを利用するには、ホスト数を定義する-xオプションを最初に修正する必要があります。
これは、監視対象のネットワーク上で予測できるホスト数の最大値の約2倍を設定してください。
例えば(ローカル、リモート両方で)35,000台のホストがある場合、-xオプションは70,000以上である必要があります。
実際のホスト数より設定が小さいと正しくホストが表示されません。
また、ntopngの性能にも影響します。
-xオプションの設定を大きな値とすると、より多くのメモリを必要とします。
十分なRAMがある場合でも、無駄に大きな値を設定するとリソースを無駄にするだけで効果は得られません。(例えば、上述の例だと-x 1,000,000に設定するなど)
他の設定で重要な要素は、ローカルネットワークの範囲を定義する-mオプション(例: 192.168.0.0/16)です。
必ず実際のローカルネットワークの範囲に合わせて設定してください。
よくある間違った設定は、0.0.0.0/0といった設定をしてしまうユーザーがいます。
これは、ntopngが全ホストの統計を保存する設定となるため、ディスクスペースや他のリソースを無駄に消費し、性能低下につながります。
ntopngのパケットキャプチャ処理は、できるだけ効率よく行えるよう設計されています。ntopngで設定された1インターフェイスごとに1つのスレッドが処理するようになっています。a)cpu性能、b)ホストやフローの数、c)パケットキャプチャ技術といった3つの要素が密接に関わってきますが、ntopngが処理できる1秒あたりのパケット数を調整することができます。
高速パケット処理フレームワークPF_RING(ZCオプションなし)は、1Mpps/インターフェイスを処理することができます。
また、PF_RING ZCを利用すれば、2もしくは3Mpps/インターフェイスとなります(通常はもっと性能をだすことができますが、5Mppsは超えられません)。
10Gbitインターフェイスを処理する場合(または40Gbitインターフェイスの場合)以下を考慮する必要があります。
- パケットキャプチャを高速化するために、PF_RING ZCを利用する
- 複数キューを処理するためにRSSを利用する。例えば、RSS=4に設定すると、4つの仮想10Gインターフェイスに仮想化することになります
- 全ての仮想インターフェイスからntopngパケットポーリングを開始する様に設定する
例えばeth1の10/40Gbitインターフェイスがあるとします。
PF_RING ZCのオプションでRSS=4を設定します。
ntopngを起動する場合は、「ntopng -i zc:eth1@0 -i zc:eth1@1 -i zc:eth1@2 -i zc:eth1@3」で起動してください。
PF_RING ZCのオプションでRSS=4を設定します。
ntopngを起動する場合は、「ntopng -i zc:eth1@0 -i zc:eth1@1 -i zc:eth1@2 -i zc:eth1@3」で起動してください。
この場合、ntopngはそれぞれのコアにスレッドをバインドします。
NUMA利用とcpu仕様によりコアIDが変化する可能性があるため、各インターフェイスにスレッドをバインドする場合、-gオプションを使ってIDを固定してください。
ネットワークインターフェイスが接続されているNUMAノードで、物理コアが使用されていることを確認してください(マルチcpuシステムの場合のみ)。
上記の設定をすると、4つのインターフェイスが表示されますが、インターフェイスビュー(ユーザーガイドを参照)を使用して、すべての仮想インターフェイスを単一のインターフェイスに統合することができます(数百万のホストがある場合、この設定がボトルネックになる可能性があることを理解してください)。
本記事で扱っているntop社のnProbe, ntopngという製品ですが、ご興味のある方は以下のリンクから弊社までお問い合わせください!
NUMA利用とcpu仕様によりコアIDが変化する可能性があるため、各インターフェイスにスレッドをバインドする場合、-gオプションを使ってIDを固定してください。
ネットワークインターフェイスが接続されているNUMAノードで、物理コアが使用されていることを確認してください(マルチcpuシステムの場合のみ)。
上記の設定をすると、4つのインターフェイスが表示されますが、インターフェイスビュー(ユーザーガイドを参照)を使用して、すべての仮想インターフェイスを単一のインターフェイスに統合することができます(数百万のホストがある場合、この設定がボトルネックになる可能性があることを理解してください)。
本記事で扱っているntop社のnProbe, ntopngという製品ですが、ご興味のある方は以下のリンクから弊社までお問い合わせください!