先日打ち合わせを行ったお客様から、nProbeのプロキシモードでサンプリングを実装できないか?といったお問い合わせを頂きましたので、サンプリング設定方法をご紹介したいと思います。
文:ジュピターテクノロジー よしひろ
/etc/nprobe/nprobe.confに以下のオプションを付加することによって、サンプリングを実現します。
セパレータはコロン(:)で、それぞれ対応するモードと役割が異なります。
<pkt rate>は、-iオプションを使ったProbeモードで有効な値です。
入力パケットのサンプリングレートを管理します。
例えば、100とした場合100パケットに1つのパケットのみを処理し、他のパケットは破棄します。
<flow collection rate>は、Collectorモードで動作します(オプション--collector-port有効時)。
このオプションは、実際にはサンプリングはせずにIN_BYTES(入力バイト)の掛け算式に使われ入力バイトを増やします。
例えば、フローのIN_BYTESが250でflow collection rateが100の場合、2,500バイトとして計上されます。
<flow export rate>は、nProbeがコレクターにエクスポートするレートを設定します。
-n|--collectorオプションを指定した場合に有効なオプションです。
例えば100を設定した場合、コレクターが100フロー受信したら1フローのみコレクターに送信します。
<flow export rate>を実際に検証しました。
検証環境は、以下の通りです。
以前こちらの記事でご紹介した、Soalrwinds社のNetFlow Generatorから100fps(flow per second)でNetFlowをエクスポートし、nProbeが1/100にサンプリング、つまり1fpsとなれば正しくnProbeがサンプリングしてくれていることが分かります。
実際に図1のWiresharkで受信したパケットが以下の図2となります。