NetFlowは、1996 年頃にCiscoルータに導入された機能で、インターフェイスに出入りする IP ネットワーク トラフィックを収集する機能です。NetFlow によって提供されるデータを分析することで、ネットワーク管理者は送信元と送信先のトラフィック、サービス クラス、輻輳の原因などを特定できます。一般的なフロー監視設定 (NetFlow を使用) は、3 つの主要コンポーネントで構成されています。[1]
- フロー エクスポータ: パケットをフローに集約し、フロー レコードを 1 つ以上のフロー コレクターにエクスポートします。
- フロー コレクター: フロー エクスポータから受信したフロー データの受信、保存、および前処理を担当します。
- 分析アプリケーション: 侵入検知やトラフィック プロファイリングなどのコンテキストで受信したフロー データを分析します。
プロトコルの説明
NetFlow をサポートするルータとスイッチは、 NetFlow が有効になっているすべてのインターフェイスでIPトラフィック統計を収集し、後でそれらの統計を NetFlow レコードとして少なくとも 1 つの NetFlow コレクター (通常は実際のトラフィック分析を実行するサーバー) にエクスポートできます。
ネットワークフロー
Cisco標準NetFlowバージョン5では、フローを、フローの一意のキーを定義する7つの値を共有するパケットの単方向シーケンスとして定義しています。[2]
- 入力インターフェース ( SNMP ifIndex)
- 送信元IPアドレス
- 宛先IPアドレス
- IPプロトコル番号
- UDPまたはTCPの場合は送信元ポート、その他のプロトコルの場合は 0
- UDPまたはTCPの場合は宛先ポート、 ICMPの場合はタイプとコード、その他のプロトコルの場合は 0
- IPサービスタイプ
出力インターフェイス、IP ネクストホップ、または BGP ネクストホップはキーの一部ではないため、フローの有効期限が切れる前にルートが変更された場合、または負荷分散がパケットごとに行われる場合は正確でない可能性があることに注意してください。
このフロー定義は IPv6 でも使用され、MPLSおよびイーサネットフローでも同様の定義が使用されます。
Cisco Flexible NetFlow などの高度な NetFlow または IPFIX 実装では、ユーザー定義のフロー キーが許可されます。
保存されたフローを印刷するときのNetFlow コマンドライン ツール (nfdumpこの場合) の一般的な出力は次のようになります。
フロー開始日 期間 プロトコル 送信元IPアドレス:ポート 送信先IPアドレス:ポート パケット バイト フロー 2010-09-01 00:00:00.459 0.000 UDP 127.0.0.1:24920 -> 192.168.0.1:22126 1 46 1 2010-09-01 00:00:00.363 0.000 UDP 192.168.0.1:22126 -> 127.0.0.1:24920 1 80 1
記録のエクスポート
ルータは、フローが終了したと判断すると、フロー レコードを出力します。これは、フローのエージングによって行われます。ルータは、既存のフローに新しいトラフィックがあると判断すると、エージング カウンタをリセットします。また、TCP フローで TCP セッションが終了すると、ルータはフローを期限切れにします。フローがまだ進行中の場合でも、一定の間隔でフロー レコードを出力するようにルータを設定することもできます。
パケットトランスポートプロトコル
NetFlow レコードは、従来、ユーザー データグラム プロトコル ( UDP )を使用してエクスポートされ、NetFlow コレクターを使用して収集されます。NetFlow コレクターの IP アドレスと宛先 UDP ポートは、送信ルーターで設定する必要があります。一般的な値は UDP ポート 2055 ですが、9555 または 9995、9025、9026 などの他の値も使用できます。
効率上の理由から、ルータは従来、すでにエクスポートされたフロー レコードを追跡しません。そのため、ネットワークの輻輳やパケットの破損により NetFlow パケットがドロップされると、含まれているすべてのレコードが永久に失われます。UDP プロトコルは、パケットを再送信できるように、ルータに損失を通知しません。これは、特に多数のパケットまたはフローを 1 つのレコードに集約できる NetFlow v8 または v9 では、大きな問題になる可能性があります。1 つの UDP パケット損失が、一部のフローの統計に大きな影響を及ぼす可能性があります。
そのため、NetFlow の最近の実装では、パケット損失に対する保護を提供するために、ストリーム制御伝送プロトコル ( SCTP ) を使用してパケットをエクスポートし、関連するレコードがエクスポートされる前に NetFlow v9 テンプレートが受信されるようにしています。パケットの厳密な順序付けにより、過剰なバッファリングと遅延が発生するため、TCP は NetFlow には適していないことに注意してください。
SCTP の問題は、各 NetFlow コレクターと NetFlow をエクスポートする各ルーター間のやり取りが必要になることです。ルーターが多数の NetFlow コレクターを処理する必要があり、NetFlow コレクターが多数のルーターを処理する必要があると、特に障害やメンテナンスのためにルーターの一部が使用できない場合、パフォーマンスが制限される可能性があります。
NetFlow を複数の独立したコレクターにエクスポートする必要がある場合、その一部がいつでもダウンする可能性があるテスト サーバーである場合、SCTP は効率的ではない可能性があります。UDP を使用すると、ネットワーク タップまたは L2 または L3 ミラーリングを使用して、NetFlow パケットを簡単に複製できます。単純なステートレス機器は、必要に応じて NetFlow UDP パケットの宛先アドレスをフィルタリングまたは変更することもできます。NetFlow エクスポートでは、ほとんどネットワーク バックボーン リンクのみを使用するため、パケット損失は無視できる場合が多くあります。パケット損失が発生した場合は、主にネットワークと NetFlow コレクター間のリンクで発生します。
パケットヘッダー
すべての NetFlow パケットはバージョン依存のヘッダーで始まり、少なくとも次のフィールドが含まれます。
- バージョン番号 (v1、v5、v7、v8、v9)
- 損失と重複を検出するためのシーケンス番号
- エクスポート時のタイムスタンプ(システム稼働時間または絶対時間)。
- レコード数 (v5 または v8) またはテンプレートとレコードのリスト (v9)
記録
NetFlow レコードには、特定のフロー内のトラフィックに関するさまざまな情報が含まれます。
NetFlow バージョン 5 (最も一般的に使用されるバージョンの 1 つで、バージョン 9 がそれに続きます) には、次のものが含まれます。
- SNMPで使用される入力インターフェイス インデックス(IF-MIB の ifIndex)。
- 出力インターフェース インデックス。パケットがドロップされた場合は 0 になります。
- フロー開始時間と終了時間のタイムスタンプ(最後の起動からのミリ秒単位)。
- フロー内で観測されたバイト数とパケット数
- レイヤー 3ヘッダー:
- TCP、UDP、SCTPの送信元および宛先ポート番号
- TCP フローの場合、フローの存続期間中に観測されたすべての TCP フラグの結合。
- レイヤー3ルーティング情報:
- 宛先までのルート上の直近のネクストホップ(BGP ネクストホップではない)の IP アドレス
- 送信元と宛先の IP マスク ( CIDR表記のプレフィックス長)
ICMPフローの場合、送信元ポートは 0 で、宛先ポート番号フィールドは ICMP メッセージ タイプとコードをコード化します (ポート = ICMP タイプ * 256 + ICMP コード) [引用が必要]。
送信元および宛先の自律システム(AS) 番号フィールドは、ルータの設定に応じて、宛先 AS (AS-Path の最後の AS) または直近の隣接 AS (AS-Path の最初の AS) を報告できます。ただし、機能がサポートされていない場合、ルートが不明または BGP によって通知されていない場合、または AS がローカル AS である場合、AS 番号は 0 になります。これらのケースを明示的に区別する方法はありません。
NetFlowバージョン9にはこれらすべてのフィールドを含めることができ、オプションでマルチプロトコルラベルスイッチング(MPLS)ラベルやIPv6アドレスとポートなどの追加情報も含めることができます。
フロー データを分析することで、ネットワーク内のトラフィック フローとトラフィック量を把握できます。NetFlow レコード形式は時間の経過とともに進化しており、バージョン番号が含まれています。Cisco は、さまざまなバージョン番号の詳細と、各バージョンのパケットのレイアウトを管理しています。
インターフェース
NetFlow は通常、NetFlow に関係するルータ コンポーネントの負荷を制限したり、エクスポートされる NetFlow レコードの量を制限したりするために、インターフェイスごとに有効になります。
NetFlow は通常、入力 IP インターフェイスによって受信されたすべてのパケットをキャプチャしますが、一部の NetFlow 実装では IP フィルターを使用して、パケットが NetFlow によって監視できるかどうかを決定します。
一部の NetFlow 実装では、出力 IP インターフェイス上のパケットの監視も許可されますが、これは注意して使用する必要があります。NetFlow が有効になっている任意の入力インターフェイスから NetFlow が有効になっている任意のインターフェイスへのすべてのフローが 2 回カウントされる可能性があります。
サンプル NetFlow
標準の NetFlow は、インターフェイス上のすべての IP パケットを処理するように設計されています。しかし、インターネット バックボーンなどの一部の環境では、各パケットに必要な追加の処理と、同時フローの数が多いため、コストがかかりすぎます。
そこでシスコは、Cisco 12000にサンプリングされた NetFlow を導入し、現在では NetFlow を実装するすべてのハイエンド ルーターで使用されています。
n 個のパケットのうち 1 個だけが処理されます。nはサンプリング レートであり、ルーターの設定によって決まります。
正確な選択プロセスは実装によって異なります。
- Cisco の12000で使用される Deterministic NetFlow では、nパケットごとに 1 パケットです。
- 最新の Cisco ルータで使用されるランダム サンプル NetFlow では、nパケット間隔でランダムに選択された 1 つのパケット。
一部の実装では、Cisco Martinez Catalyst でのフローごとのサンプリングなど、パケットをサンプリングするためのより複雑な方法があります。
サンプリング レートは、多くの場合、すべてのインターフェイスで同じですが、一部のルータではインターフェイスごとに調整できます。サンプリングされた NetFlow を使用する場合、NetFlow レコードはサンプリングの効果に合わせて調整する必要があります。特にトラフィック量は、実際に測定されたフロー量ではなく推定値になります。
サンプリング レートは、NetFlow バージョン 5 のヘッダー フィールド (すべてのインターフェイスで同じサンプリング レート) または NetFlow バージョン 9 のオプション レコード (インターフェイスごとのサンプリング レート) で示されます。
バージョン
NetFlow と IPFIX
NetFlow は当初 Cisco によって実装され、標準化過程にない「情報」文書 RFC 3954 – Cisco Systems NetFlow Services Export Version 9 で説明されていました。NetFlow プロトコル自体は、Internet Protocol Flow Information eXport ( IPFIX ) に置き換えられました。NetFlow Version 9 実装に基づいて、IPFIX は 2008 年に公開された RFC 5101 (RFC 7011 によって廃止)、RFC 5102 (RFC 7012 によって廃止) などとともに IETF 標準化過程にあります。
同等物
Cisco以外にも、同様のネットワーク フロー監視テクノロジを提供しているベンダーは数多くあります。ネットワーク業界ではCisco が圧倒的な市場シェアを占めているため、NetFlow はフロー監視の分野でよく使われる名前かも しれません。NetFlow は Cisco の商標であると考えられています (2012 年 3 月現在、Cisco の商標[3]には記載されていません)。
- Argus - 監査記録生成および利用システム
- Juniper Networksの Jflow または cflowd
- 3Com/HP向け NetStream
- Huawei Technologies向けNetStream
- Nokia向け Cflowd
- Ericsson向け Rflow
- AppFlow Citrix
- sFlowベンダーには、Alaxala、Alcatel Lucent、Allied Telesis、Arista Networks、Brocade、Cisco、Dell、D-Link、Enterasys、Extreme、F5 BIG-IP、Fortinet、Hewlett-Packard、Hitachi、Huawei、IBM、Juniper、LG-Ericsson、Mellanox、MRV、NEC、Netgear、Proxim Wireless、Quanta Computer、Vyatta、Telesoft、ZTE、ZyXELなどがある[4]。
また、フローツールソフトウェアコレクション[5]を使用すると、CiscoおよびJuniperルータからのNetFlowエクスポートを処理および管理できます。[6]
サポート
バリエーション
Cisco の NetFlow セキュリティ イベント ロギング
Cisco ASA 5580 製品の発売と同時に導入されたNetFlow セキュリティ イベント ロギングは、NetFlow v9 フィールドとテンプレートを利用して、高パフォーマンス環境でセキュリティ テレメトリを効率的に提供します。NetFlow セキュリティ イベント ロギングは、ログに記録されるイベントの詳細度と粒度はsyslogと同等でありながら、拡張性に優れています。 [引用が必要]
スタンドアロンプローブに基づく監視

スタンドアロン NetFlow プローブを使用した NetFlow 収集は、ルータやスイッチからのフロー収集の代替手段です。このアプローチは、ルータベースの NetFlow 監視のいくつかの制限を克服できます。プローブは、アプライアンスの TAP ポートまたは SPAN ポートを使用して、パッシブ アプライアンスとして監視対象リンクに透過的に接続されます。
歴史的に、NetFlow モニタリングはルーターよりも専用プローブで実装する方が簡単です。ただし、このアプローチにはいくつかの欠点もあります。
- 監視する必要があるすべてのリンクにプローブを展開する必要があり、追加のハードウェア、セットアップ、およびメンテナンスのコストが発生します。
- プローブは、ルータからのレポートのように、個別の入力および出力インターフェース情報を報告しません。
- プローブは、ルータとまったく同じルーティング情報を使用することはほとんど期待できないため、AS 番号やIP マスクなどのルーティングに関連する NetFlow フィールドを確実にレポートできない場合があります。
上記の欠点に対処する最も簡単な方法は、ルータの前にインラインでパケット キャプチャ アプライアンスを使用し、ルータからのすべての NetFlow 出力をキャプチャすることです。この方法を使用すると、大量の NetFlow データ (通常は数年分のデータ) を保存でき、ネットワークの再構成は必要ありません。
専用プローブからの NetFlow 収集は重要なリンクの監視に適していますが、ルータ上の NetFlow は、容量計画、アカウンティング、パフォーマンス監視、およびセキュリティに使用できるネットワーク全体のトラフィックのビューを提供します。
歴史
NetFlowはもともと、1996年頃にIOS 11.xで実装されたCiscoルータ用のCiscoパケットスイッチング技術でした。もともとはCisco 7000、7200、7500のソフトウェア実装であり、[19]当時のCisco Fast Switchingの改良版と考えられていました。Netflowは、CiscoのDarren KerrとBarry Bruin [20]によって発明されました(米国特許番号6,243,667)。
フローの最初のパケットが NetFlow スイッチング レコードを作成するというアイデアです。このレコードは、フローの有効期限が切れるまで、同じフローのそれ以降のすべてのパケットに使用されます。フローの最初のパケットのみ、最も具体的に一致するルートを見つけるためにルート テーブルを調べる必要があります。これは、ソフトウェア実装、特に転送情報ベースのない古い実装ではコストのかかる操作です。NetFlow スイッチング レコードは、実際にはルート キャッシュ レコードの一種であり、古いバージョンの IOS では、NetFlow キャッシュはip route-cacheとして参照されています。
この技術はローカルネットワークに有利でした。これは、フローの最初のパケットのみをACLで評価する必要があるため、一部のトラフィックをACLでフィルタリングする必要がある場合に特に当てはまりました。[21]
NetFlow スイッチングは、大規模なルーター、特にインターネット バックボーン ルーターには適さないことがすぐに判明しました。インターネット バックボーン ルーターでは、同時フローの数がローカル ネットワーク上のフローの数よりもはるかに重要であり、一部のトラフィックによって、ドメイン ネーム システム要求 (セキュリティ上の理由から送信元ポートはランダム) などの短命フローが多数発生するためです。
スイッチング テクノロジーとしての NetFlow は、1995 年頃にCisco Express Forwardingに置き換えられました。これは最初に Cisco 12000 ルータで導入され、その後 Cisco 7200 および Cisco 7500 の高度な IOS で NetFlow スイッチングに取って代わりました。
2012 年現在、NetFlow スイッチングに類似したテクノロジは、ほとんどのファイアウォールやソフトウェアベースの IP ルーターでまだ使用されています。たとえば、Linuxで使用されるNetfilterフレームワークの conntrack 機能などです。
RFC
- RFC 3334 - ポリシーベースのアカウンティング
- RFC 3917 - IP フロー情報エクスポート (IPFIX) の要件
- RFC 3954 - NetFlow バージョン 9
- RFC 3955 - IP フロー情報エクスポート (IPFIX) の候補プロトコルの評価
- RFC 3917 - IP フロー情報エクスポート (IPFIX) の要件
- RFC 3955 - IP フロー情報エクスポートの候補プロトコル (IPFIX)
- RFC 5101 - IP トラフィック フロー情報の交換のための IP フロー情報エクスポート (IPFIX) プロトコルの仕様
- RFC 5102 - IP フロー情報エクスポートの情報モデル
- RFC 5103 - IP フロー情報エクスポート (IPFIX) を使用した双方向フロー エクスポート
- RFC 5153 - IP フロー情報エクスポート (IPFIX) 実装ガイドライン
- RFC 5470 - IP フロー情報エクスポートのアーキテクチャ
- RFC 5471 - IP フロー情報エクスポート (IPFIX) テストのガイドライン
- RFC 5472 - IP フロー情報エクスポート (IPFIX) の適用範囲
- RFC 5473 - IP フロー情報エクスポート (IPFIX) およびパケット サンプリング (PSAMP) レポートの冗長性の削減
- RFC 5476 - パケット サンプリング (PSAMP) プロトコル仕様
- RFC 5477 - パケット サンプリング エクスポートの情報モデル
- RFC 5610 - IP フロー情報エクスポート (IPFIX) 情報要素のタイプ情報のエクスポート
- RFC 5655 - IP フロー情報エクスポート (IPFIX) ファイル形式の仕様
- RFC 5815 - IP フロー情報エクスポートの管理オブジェクトの定義
- RFC 5982 - IP フロー情報エクスポート (IPFIX) 仲介: 問題の説明
- RFC 6183 - IP フロー情報エクスポート (IPFIX) 仲介: フレームワーク
- RFC 6235 - IP フロー匿名化サポート
- RFC 6313 - IP フロー情報エクスポート (IPFIX) における構造化データのエクスポート
- RFC 6526 - ストリーム制御伝送プロトコル (SCTP) ストリームごとの IP フロー情報エクスポート (IPFIX)
- RFC 6615 - IP フロー情報エクスポートの管理オブジェクトの定義
- RFC 6645 - IP フロー情報アカウンティングおよびエクスポート ベンチマーク方法論
- RFC 6727 - パケットサンプリングのための管理オブジェクトの定義
- RFC 6728 - IP フロー情報エクスポート (IPFIX) およびパケット サンプリング (PSAMP) プロトコルの構成データ モデル
- RFC 6759 - Cisco Systems の IP フロー情報エクスポート (IPFIX) におけるアプリケーション情報のエクスポート
- RFC 7011 - フロー情報の交換のための IP フロー情報エクスポート (IPFIX) プロトコルの仕様
- RFC 7012 - IP フロー情報エクスポートの情報モデル (IPFIX)
- RFC 7013 - IP フロー情報エクスポート (IPFIX) 情報要素の作成者およびレビュー担当者向けガイドライン
- RFC 7015 - IP フロー情報エクスポート (IPFIX) プロトコルのフロー集約
- RFC 7119 - IPFIX メディエーター上の IP フロー情報エクスポート (IPFIX) プロトコルの動作
- RFC 7125 - tcpControlBits IP フロー情報エクスポート (IPFIX) 情報要素の改訂
- RFC 7133 - データリンク層トラフィック測定のための情報要素
- RFC 7270 - IP フロー情報エクスポート (IPFIX) で再利用されるシスコ固有の情報要素
- RFC 7373 - IP フロー情報エクスポート (IPFIX) 抽象データ型のテキスト表現
- RFC 8038 - IP フロー情報エクスポート (IPFIX) プロトコルを使用した MIB 変数のエクスポート
- RFC 8158 - NAT イベントをログに記録するための IP フロー情報エクスポート (IPFIX) 情報要素
- RFC 8272 - 制約のあるネットワークにおけるスマートメーター向け TinyIPFIX
- RFC 8549 - IP フロー情報エクスポート (IPFIX) における BGP コミュニティ情報のエクスポート
参照
- トラフィックフロー(コンピュータネットワーク)
- IP フロー情報エクスポート(IPFIX) - NetFlow バージョン 9 に基づくIETF標準トラック フロー エクスポート プロトコル
- sFlow - NetFlowの代替(必須サンプリング、フローキャッシュなし、テンプレートなし[22])
参考文献
- ^ Hofstede, Rick; Čeleda, Pavel; Trammell, Brian; Drago, Idilio; Sadre, Ramin; Sperotto, Anna; Pras, Aiko (2014). 「フロー監視の説明: パケットキャプチャからNetFlowとIPFIXによるデータ分析まで」IEEE Communications Surveys & Tutorials . 16 (4): 2037–2064. doi :10.1109/COMST.2014.2321898. S2CID 14042725.
- ^ 「InterProjektWiki: NetFlow」。2017年2月22日時点のオリジナルよりアーカイブ。
- ^ 「シスコの商標」。
- ^ 「sFlow 製品: ネットワーク機器」. sFlow.org.
- ^ “Adsr/Flow-tools”. GitHub . 2021年10月5日.
- ^ “Adsr/Flow-tools”. GitHub . 2021年10月5日.
- ^ 「Cisco RSP720 Sup720 NetFlow 特性」cisco.com、2010 年 7 月。2012 年 3 月 8 日閲覧。
- ^ 「Juniper j-flow の pps と bps が正しくない」。2012 年 8 月。2016 年 3 月 17 日閲覧。
- ^ 「NetFlow on Enterasys S-Serie」(PDF) . enterasys.com. 2012 年 2 月. 2012 年 3 月 4 日閲覧。
- ^ 「Enterasys N-Serie 上の NetFlow」(PDF) . enterasys.com. 2012 年 2 月. 2012 年 3 月 4 日閲覧。
- ^ "fprobe"。
- ^ 「ipt-netflow」.
- ^ Henning Brauer、Joerg Goltermann (2014-03-29)。「pflow — pflowデータエクスポート用のカーネルインターフェース」BSD Cross Rererence。OpenBSD 。 2019年8月9日閲覧。
- 「pflow — pflow データ エクスポート用のカーネル インターフェイス」。OpenBSD マニュアル ページ サーバー。
- ^ 「flowd-0.9.1.20140828 – NetFlow コレクター」。OpenBSD ポート。2019 年 7 月 17 日。2019年 8 月 9 日閲覧。
- ^ Gleb Smirnoff (2005). 「ng_netflow — Cisco の NetFlow 実装」BSD クロスリファレンス. FreeBSD . 2019 年 8 月 9 日閲覧。
- 「ng_netflow -- Cisco の NetFlow 実装」。FreeBSD マニュアル ページ。
- ^ 「vSphere 5 の新しいネットワーク機能 - NetFlow - VMware vSphere ブログ」。2011 年 8 月 15 日。
- ^ 「vSphere 51 ネットワーク テクニカル ホワイトペーパー」(PDF) . vmware.com . 2023 年7 月 1 日に閲覧。
- ^ 「マニュアル:IP/トラフィックフロー - MikroTik Wiki」。
- ^ 「NetFlow スイッチング拡張機能モジュール [Cisco IOS ソフトウェア リリース 11.1] - Cisco Systems」。www.cisco.com。2009年 12 月 21 日時点のオリジナルからのアーカイブ。
- ^ 「ネットワーキング、クラウド、サイバーセキュリティソリューション」。Cisco 。2023年7月1日閲覧。
- ^ 「NetFlow、sFlow、フロー拡張性、パート 1」。Kentikブログ。2016 年 3 月 28 日。2023 年7 月 1 日に閲覧。
- ^ Phaal, Peter; Lavine, Marc (2004 年 7 月). 「sFlow バージョン 5」. sFlow.org . 2010 年 10 月 23 日閲覧。
外部リンク
- NetFlow/FloMA: SWITCH が提供するポインターとソフトウェア。 - すべてのオープン ソースと研究成果を含む最も包括的なリストの 1 つです。
- FloCon - CERT/CC が主催する、ネットワーク フロー データと分析を扱う年次カンファレンス。
- Cisco サイトの基本的な NetFlow 情報
- Paessler IT の説明 - NetFlow
- Netflow を使用して再集約されたインバウンド フローとアウトバウンド フローを保存する
- AppFlowの仕様と標準の議論
- NetFlow の原理を理解するアニメーション
- NetFlow とフロー キャッシュの基礎
- Netflow アナライザーとコレクターのリスト
