かなりゆるーいインフラエンジニアのブログ

zawayaブログ

インフラエンジニアとして活動しています。現場での経験や技術的なことを思ったように書いていきます。

NetFlow 基本のKI

皆さんこんにちわ

 

ネットワークの可視化していますか?

クラウド、セキュリティ、SDNの流れから今ネットワークがどのように使われているのか?を知ることは非常に重要と感じています。といいますか可視化は当たり前のファンクションになってきています(ノД`)・゜・。

 

ということで、ネットワークの可視化について調べて自分なりに今風に実装をしていけたらと思いました。

 

まずは情報のソースとなるNetflowについて調べます。

  

Netflowとは? 

NetFlowは1996年ごろにシスコ製ルータに導入された機能で、インターフェイスに出入りするときにIPネットワークトラフィックを収集する機能を提供します。 NetFlowによって提供されたデータを分析することによって、ネットワーク管理者トラフィックの発信元と宛先、サービスクラス、輻輳の原因などのことを判断できます。 

 

f:id:blackstar01:20190616201514p:plain

 

1)フローを収集

フローを識別してフローレコードを作成し、キャッシュテーブルに保持します。

フローレコードにはKeyフィールド(フロー識別に使用する情報)があり、このフィール

ドの情報が1つでも異なると別のフローとして識別されレコードが作成される。

もう一つはNon-Keyフィールドで、フローごとに集計されていく。

 

Keyフィールド

 ・ 送信元IPアドレス
 ・ あて先IPアドレス
 ・ TCP/UDPポート送信元番号
 ・ TCP/UDPポートあて先番号
 ・ L3プロトコル
 ・ ToSバイト(DSCP)
 ・ 入力インターフェース

 

Non-Keyフィールド

 ・ 送信元IPアドレス/あて先IPアドレス
 ・ 送信元ポート番号/あて先ポート番号
 ・ 入力インターフェースと出力インターフェース
 ・ ToSバイト(DSCP)
 ・ フローのバイト数、パケット数
 ・ 送信元AS番号、あて先AS番号

 

※注意 上記はNetflow v5の場合となり、Netflow v9 の場合KeyフィールドとNon-Keyがかなり増えています。

 

2)フロー情報のエクスポート

キャッシュサイズは無限ではないので、キャッシュテーブルにに作成されたレコードは定期的に出力される。出力されるタイミングは以下の通り。一回に出力されるフローレコードは最大30レコード。

 

TCPのRSTまたはFINを検出してTCPセッションが終了したとき
・アクティブタイマーが設定時間を経過したとき
・インアクティブタイマーが設定時間を経過したとき
・NetFlowのキャッシュテーブルが一杯になったとき

 

 

f:id:blackstar01:20190616210427p:plain

3)サンプリング

全てのパケット情報を収集することが望ましいが、大規模なネットワークであったり、機器の負荷が気になる場合に、収集する対象や量を制限することができる。

 

負荷の目安は以下のブログが参考になりそう。

https://designetwork.daichi703n.com/entry/2016/10/08/Performance-of-NetFlow-Cisco

 

ランダムサンプリング

n個のパケットの連続するパケットの中からランダムに1つを集計する。

例:1/100 とした場合、全パケットの1%が収集。100人が1kbのパケットを送ったとす

  ると、1人1kbを送った情報しか得られない。

 

サンプリング数の理論値に関する情報とても参考になります。

https://www.janog.gr.jp/meeting/janog23/doc/d2p5.pdf

 

Netflow v5 がスタンダードでしたが、最近ではFlexibleNetflow(Netflow v9)が出てきており、対応機種も増えつつあります。v5,v9の違いなんかにも触れつつ、進めていけたらと思います。

 

今回はここまで。