2019年9月27日金曜日

NetFlowの見積り方法

本記事では、「NetFlowの見積り方法」について考えてみたいと思います。
fps(flow per second) ・・・1秒に受信するフローの数
を見積る方法をご紹介したいと思います。
(2022年2月9日(水) ebookの記載を追加)

文:ジュピターテクノロジー よしひろ

  • (2022年2月9日(水) 追記)
    2022年2月9日(水)に、本ブログ記事のシリーズ【ntopng and nProbeによる高速トラフィック分析入門】がもととなったebookを弊社サイトに無料公開しました。
    本サイトで紹介する以上の内容が盛だくさんで、かつ本ブログ執筆当時ではntopngのバージョンが4系でしたが、こちらのebookは5系を対象に執筆しております。
    是非、無料のebook「ntopによる高速トラフィック分析入門(ntopngバージョン5.0.2系)」をご入手ください。ダウンロードは、こちらからお願いします。


fps 見積りで難しいのは、フローは帯域幅や社員数と必ずしも相関しないということです。

例えば、同じ50人規模の会社でも業種、社員の特性、社内ポリシーによっても fps は全く異なる結果となります。
このお話を分かりやすく比喩している海外記事を見つけましたので、以下にご紹介します。

「夫婦2人と犬一匹の家族がアパートに住んでおりました。
自分たちの家を建てると決意した彼らは、ある設計事務所に相談しました。
彼らがその設計事務所に連絡したのは希望する敷地面積だけでした。
そこでその事務所は、郊外に建築した場合と市内に建築した場合の図面を夫婦に渡したのです。
それは、全く異なる図面でした。
郊外にと設計された図面は、市内と同じ敷地でも3階建でした。
しかし、市内の図面はわずか1階建ての家だったのです。」

この記事で作者が伝えたかったのは、家族構成、敷地面積が同じ条件でも利用する環境が異なれば全く異なる結果となるというお話です。
これが今回のNetFlowの見積り(fps の見積り)に似ているのです。

社員100人の会社だから50fps くらいだろうといった見積りは出来ないの?
といったお話をよく頂きますが、過去の事例はご紹介出来るもののお客様環境に合った正確なものはお出しできません。

一番確実なfpsの見積り方法は、評価版を実環境に設置して fps をカウントするといった回答となります。
それが一番確実な方法です。
しかし、実際問題として評価版を入手して実環境で評価して頂けるお客様は多くありません。
管理者がどのルータのどのインターフェイスでフローを取得したいか?もポイントになります。
もしかしたら、インターネットに一番近いネットワーク機器に所属するWANポートのフローデータだけを取得して、インターネット帯域がどのように使われているかを把握したいだけの管理者が多いかもしれません。

ここでは実機を使ってfpsの見積りをしてみましょう。
今回は、Cisco891FにNetFlow version9 (※Flexbile NetFlowだとまたやり方が異なります) を設定します。
GigabitEthernet8がWANポートに該当し、ingress(IN方向トラフィック)とegress(OUT方向トラフィック)両方設定してみましょう。


192.168.91.36はフローコレクターのIPアドレスで、UDPの2055が待ち受けポートとなっております。
※今回はフローコレクターがない前提での見積りなので、存在しないアドレスを設定することになります。
NetFlow の設定が適切にされているかを確認する為に、以下のコマンドを実行します。


最初のコマンド、show ip flow interfaceでNetFlowが設定されているインターフェイスが正しく、GigabitEthernet8に施されingressとegressも両方設定されていることが分かります。
そして、次のコマンドshow ip flow exportでNetFlowのバージョンが9であることが確認できます。
この2番目のコマンドを利用して、fpsの見積りをすることが出来ます。
上図の赤枠部分に注目してください。
644211がコマンド実行時点でのエクスポートされたフローの数です。
見積りの方法はこの5秒後、10秒後といった一定間隔で同じコマンドを実行して差分をとります。
そして、それぞれの秒数で割り算すればfpsを算出することができます。
ただしfpsがピークとなる時間帯を見計らって調査をしないと最大fpsが分かりませんので、実行タイミングが難しいです。
こういった場合、Cisco IOSのスクリプトであるtclを使ってloopで定期的に上記コマンドを実行します。
それでは、実践してみましょう。


上図の様に、C891F(tcl)#for {set i 1} {$i <= 5} {incr i} {show ip flow export; after 10000}を実行してください。
after 10000は、10秒間のスリープという意味です。
つまり、show ip flow exportコマンドを10秒間隔で実行しいることになります。
結果は、下表となりました。




後は引き算して10で割るだけです。
654663 - 654649 = 14  14/10 = 1.4
654677 - 654663 = 14  14/10 = 1.4
654691 - 654677 = 14  14/10 = 1.4
654701 - 654691 = 10  10/10 = 1.0

コマンドを実行した時点でのルータのfpsは、1.0fps~1.4fpsであったことが分かります。コマンドを実行した瞬間では、ほとんど通信が流れていなかったことが分かります。
上記で紹介したコマンドのloop回数を変更して、ターミナルソフトウェアで標準出力のログを保存してください。平日日勤帯に実行すれば、ピークのfpsを見積りをすることが出来ます。

如何でしょうか?
本記事で紹介した一軒家を建てるお話のように fps の見積もりは社員数やPCの数、会社の規模では正確な見積りは出来ません。

ピーク時の fps を見積りする場合は、本記事で紹介したやり方を参考にしてみてください。
また、他に良いやり方を知っているという方は、下の問い合わせから是非教えてください。

弊社では、以下の特徴を持ったntop社のntopngという製品を販売しております。

  • リアルタイム分析
  • アプリケーション分析
  • L2,L7サポート
  • フローコレクター
  • 脅威検知
※画像をクリックすると製品ページにジャンプします



ご興味のある方は以下のリンクから弊社までお問い合わせください。