■NetFlowとは?NetFlowとは1996年にCiscoによって開発されたIPトラフィックのフローを収集するためのプロトコルです。民間企業や大学、自治体などでこのNetFlowを有効にして運用しているのは見たことがありません。BGPを使ってフルルート運用をしているISPなどで利用される技術だと思っています。ある程度大規模なネットワークとなれば市場を問わず、これを利用すればどのプロトコル、どの送信元がどの程度ネットワークを使っているのか、などを可視化することができますので設定して損はないと思います。ルータやスイッチを流れるトラフィックの流量などを可視化するにはCactiなどを用いてSNMP経由で可能なのですが、そのトラフィックが何のトラフィックであるのかというところまでは把握することができません。TraditionalNetFlowは以下の7つの項目を用いてトラフィックのフローを識別することができます。入力インターフェイスこれら7つの項目は固定です。不要な項目があったとしても削ることはできません。この7つが全て合致するものが同一のフローと見なされます。一つでも異なるものがあればそれは別フローにみなされます。これらの情報をルータ内部にキャッシュ情報として保存し、それを外部にサーバなどに吐き出すという動作になります。従ってメモリの使用率やCPU使用率なども設定しない場合に比較して上昇はするのですが、爆発的に上がるというのは今のところ見たことはありませんのでリソース面はさほど心配することではないように思います。NetFlowの設定例です。NetFlowを有効にするインターフェイスで以下のコマンドを実施します。egressNetFlowのデータの出力先をdestinationで指定します。IPアドレスの後ろの数字はポート番号であり、NetFlowコレクタと一致している必要があります。合わせて送信元インターフェイス、バージョンの指定も行なっています。9996NetFlowを有効にしたインターフェイスでトラフィックの多い順に表示することが可能です。下記ではバイト数が多い順に20表示するよう設定しています。bytesタイマー関連の設定です。NetFlowのデータを外部に出力する際に、フローの有無に関係なくエクスポートするのがactiveタイマーでデフォルトが30分、フローがなくなってからエクスポートするのがinactiveタイマーでデフォルトが15秒です。activeタイマーがデフォルトだと長すぎるのでこれを1分に、inactiveを20秒に変更しておきます。20ルータ内部に保存できるキャッシュのエントリ数を以下で変更できます。デフォルトは64536ですが、1024-524288の間で任意に指定可能です。このコマンドを実施した際にはルータ自体を再起動かけるかまたはNetFlowを一旦オフにする必要があります。100000デフォルトでは全てのパケットをキャッシュとして保存しますが、Xパケット中1パケットをサンプルとして収集するという設定も可能です。設定可能な範囲は1-65535です。小中規模環境であれば全てのフローを採取したほうが、より正確な状態を把握することが可能なのですが、例えば10GBインターフェイスが必須となるような大規模環境においては100パケットまたは1000パケットに1パケットを採取するのが一般的です。リソースが許容するようであれば全パケットを採取するのに越したことはありません。以下がその設定例で100パケットに1パケットを採取する例です。SAMPLE外部にキャッシュデータをエクスポートしている状況を確認するのが以下のコマンドです。failuresルータ内部のキャッシュ情報を表示するのが以下のコマンドです。Pktsこれらコマンドベースでフロー情報などを確認することが可能ですが日常的な運用の中でこれらを不定期に確認するというのも非現実的です。そこでこれらのキャッシュ情報を外部にエクスポートした先でグラフ化などを行うのが一般的で、それ用の有償製品なども発売されていますが、下記でフリーソフトであるflow-toolsを使用した手順を紹介しています。