Skip to content

Flow Monitoring

技術用途
NetFlow / Flexible NetFlow通信フロー可視化
IPFIX標準化されたフローレコード輸出
確認コマンド見るポイント
show ip cache flowTraditional NetFlowのフロー情報表示
show flow monitor <モニタ名> cache format {csv | record | table}Flexible NetFlowのフロー情報表示
show flow monitor監視設定
show flow exporter送信先設定

重要: NetFlowで収集したトラフィック情報は「ルータ上のコマンド実行」または「フローコレクタ(サーバ)で動作する専用ツール」の2つの方法で確認できる。NetFlowツール単体ではNetFlowの情報を表示することはできない。

NetFlow バージョン

バージョン特徴
v1初期バージョン。基本的なフロー情報のみ
v5最も広く使われたバージョン。BGP AS番号、フローシーケンス番号に対応
v8アグリゲーション(集約)に対応
v9RFCで定義された業界標準。テンプレートベースのエクスポートフォーマットを採用
IPFIXv9をベースにIETFが標準化(RFC 7011)。「NetFlow v10」とも呼ばれる

NetFlow v9 の特徴

  • マルチキャスト、MPLS、BGPネクストホップなど、v8までサポートされなかった技術に対応
  • テンプレートベースのエクスポートフォーマットにより、新しい技術にも容易に対応可能
  • Flexible NetFlowのベースとなるバージョン

NetFlow 有効化

トップトーカー等のフロー統計を使用するにはNetFlowの有効化が必要。

設定目的コンフィグモードコマンド
受信フローの収集Interface configip flow ingress
送信フローの収集Interface configip flow egress
パラメータ意味
ingressそのIFで受信されたフローを対象
egressそのIFで送信されたフローを対象(通常、自発パケットは対象外)

重要: ip flow ingress が使用できない古いIOSバージョンでは、代わりに ip route-cache flow(Interface config)を使用する。動作は ip flow ingress と同様(受信フローが対象)。なお ip flow egress にはこのような代替コマンドは存在せず、IOSバージョンや機種によってはサポートされない。

重要: フローが発生していない状態では % Cache is empty と表示される。NetFlowが無効なわけではなく、単にデータがないだけ。

Traditional NetFlow のエクスポート設定

Traditional NetFlowでは ip flow-export コマンドでエクスポート設定を行う。

設定目的コンフィグモードコマンド
送信元IF指定Global configip flow-export source <インタフェース>
バージョン指定Global configip flow-export version {1 | 5 | 9}
宛先・ポート指定Global configip flow-export destination <IPアドレス> <UDPポート番号>

複数宛先への送信

ip flow-export destination コマンドを複数回実行することで、フロー情報の送信先を2つ設定できる。2つ設定するには以下のいずれかを使用する。

方法
同一IPアドレスで異なるUDPポート番号を指定ip flow-export destination 10.1.1.1 5150 + ip flow-export destination 10.1.1.1 5151
異なるIPアドレスを指定(ポート番号は任意)ip flow-export destination 10.1.1.1 5150 + ip flow-export destination 10.2.2.2 5150

重要: Traditional NetFlowでは ip flow-export destination を複数回実行して複数宛先を設定する。Flexible NetFlowでは1エクスポータ=1宛先のため、複数のフローエクスポータを作成する必要がある。

Flexible NetFlow のコンポーネント

Flexible NetFlowは4つのコンポーネントで構成される。

コンポーネント主な設定内容
フローレコードKeyフィールドの指定、Non Keyフィールドの指定
フローエクスポータ収集したトラフィック情報の出力先を指定
フローモニタレコードの指定、フローエクスポータの指定
フローサンプラトラフィックの収集レートを指定

設定手順

順序手順
フローレコードを作成して、収集するフローデータを定義
フローエクスポータを作成して、データをエクスポートする宛先を指定
フローモニタを作成し、①フローレコードと②フローエクスポータを適用
必要に応じてフローサンプラを作成
フローモニタをインタフェースに適用し、必要に応じて④フローサンプラも適用

重要: IFに直接適用するのは「フローモニタ」と「フローサンプラ」。フローレコードやフローエクスポータは直接IFに適用しない。

フローレコードの設定

レコードを作成し、Keyフィールド(フローの識別条件)とNon Keyフィールド(収集する付加情報)を指定する。

設定目的コンフィグモードコマンド
フローレコード作成Global configflow record <フローレコード名>
Keyフィールド指定Flow-record configmatch <Keyフィールド>
Non Keyフィールド指定Flow-record configcollect <Non Keyフィールド>

主なKeyフィールド(フローを識別する要素)

フィールド一致条件
ipv4 protocolIPv4プロトコル
ipv4 source addressIPv4送信元IPアドレス
ipv4 destination addressIPv4宛先IPアドレス
interface input入力インターフェース
interface output出力インターフェース

主なNon Keyフィールド(収集する統計情報)

フィールド収集データ
counter bytesフローのバイト数
counter packetsフローのパケット数

重要: Traditional NetFlowではKeyフィールド・Non Keyフィールドが固定だったが、Flexible NetFlowでは任意に指定できるため、目的に応じたトラフィック情報の収集が可能。

フローモニタの設定

設定目的コンフィグモードコマンド
フローモニタ作成Global configflow monitor <モニタ名>
レコード指定Flow-monitor configrecord <フローレコード名>
エクスポータ指定Flow-monitor configexporter <フローエクスポータ名>
キャッシュタイムアウトFlow-monitor configcache timeout {active | inactive} <秒>

キャッシュタイムアウト

収集したフローデータは一時的にキャッシュに保存される。一定時間経過すると、フローエクスポータで指定された出力先へデータを送信し、キャッシュから削除される。

タイムアウト種別意味デフォルト値
activeフローが送受信し続けている場合のタイムアウト1800秒(30分)
inactiveフローの送受信が行われていない場合のタイムアウト15秒

重要: タイムアウト値の範囲は 1〜604800秒。未設定時はデフォルト値が適用される。

トップトーカー

トップトーカー = ネットワーク上で最もトラフィック量が多い通信元/先のこと。帯域を大量消費しているホストやフローを特定するために使う。DDoS攻撃の検知や、帯域逼迫の原因調査に役立つ。

トップトーカーの設定

設定目的コンフィグモードコマンド
トップトーカー設定モードへGlobal configip flow-top-talkers
表示件数Flow-top-talkers configtop <件数>
ソート基準Flow-top-talkers configsort-by {bytes | packets}
リスト更新間隔Flow-top-talkers configcache-timeout <ミリ秒>
ソート基準意味使い分け
bytesバイト数が多い順帯域消費の大きいフローを特定したいとき(大容量ファイル転送等)
packetsパケット数が多い順パケット数ベースの異常を検知したいとき(DDoS、スキャン等)

トップトーカーの確認

確認コマンド見るポイント
show ip flow top-talkersトラフィック量が多いフローの一覧

出力フィールド

#フィールド意味
1SrcIf受信したインタフェース
2SrcIPaddress送信元IPアドレス
3DstIf宛先インタフェース
4DstIPaddress宛先IPアドレス
5Prプロトコルナンバー
6SrcP送信元ポート(16進数表記)
7DstP宛先ポート(16進数表記)
8Pktsフローのパケット数またはバイト数

重要: DstIfに * が付いている場合は ip flow egress によって集計されたフローを意味する。

フローサンプラの設定

フローサンプラで収集するトラフィックの量を減らすことで、NetFlowによるCPU使用率を抑えることができる。

設定目的コンフィグモードコマンド
フローサンプラ作成Global configsampler <サンプラ名>
サンプリングモード設定Sampler configmode {random | deterministic} 1 out-of <レート>
パラメータ意味
randomランダムサンプリング。サンプリングごとにランダムに選択されたポジションを使用
deterministic確定的サンプリング。毎回、同一のサンプリングポジションを使用
レートどれぐらいの割合でトラフィックを収集するか(2〜32768)

例: mode random 1 out-of 2 → 2パケットごとに1つを収集 = 分析対象が50%減少

IFへの適用

設定目的コンフィグモードコマンド
フローモニタ+サンプラをIFに適用Interface configip flow monitor <モニタ名> sampler <サンプラ名> {input | output}
パラメータ意味
input入力トラフィックに適用
output出力トラフィックに適用

重要: フローサンプラはCPU負荷軽減が目的。サンプリングレートが大きいほど収集量が減りCPU負荷は下がるが、精度も下がる。

フローエクスポータの設定

収集したトラフィック情報の出力先(フローコレクタ)を指定する。

設定目的コンフィグモードコマンド
フローエクスポータ作成Global configflow exporter <エクスポータ名>
送信元IF指定Flow-exporter configsource <インタフェース名>
エクスポートプロトコル指定Flow-exporter configexport-protocol <バージョン>
宛先(コレクタ)指定Flow-exporter configdestination <IPアドレス>
トランスポート指定Flow-exporter configtransport udp <ポート番号>
オプション設定Flow-exporter configoption {exporter-stats | interface-table | sampler-table} [timeout <再送時間>]

エクスポートプロトコル

バージョン説明
netflow-v5NetFlow Version 5
netflow-v9NetFlow Version 9
ipfixIPFIX(IETF標準)

オプション設定

オプション意味
exporter-statsエクスポータの統計情報を定期的に送信
interface-tableSNMPインターフェーステーブルを定期的に送信
sampler-table各サンプラーの詳細な設定情報を含むオプションテーブルを定期的に送信
timeoutオプションの再送時間を「1〜86400」から指定
確認コマンド見るポイント
show flow exporterDestination IP、Transport Protocol、Port

重要: 1つのフローエクスポータでは1つの宛先しか指定できない。複数のコレクタに送信したい場合は、宛先の数だけフローエクスポータを作成する。

重要: IPアドレスはIPv4またはIPv6のいずれかを指定できる。