ネットフロー

NetFlowは、1996年頃にCiscoルータに導入された機能で、インターフェースに出入りするIPネットワークトラフィックを収集する機能です。NetFlowによって提供されるデータを分析することで、ネットワーク管理者は送信元トラフィックと宛先トラフィック、サービスクラス、輻輳の原因などを特定できます。NetFlowを使用した典型的なフロー監視設定は、主に3つのコンポーネントで構成されます。[ 1 ]

  • フロー エクスポータ: パケットをフローに集約し、フロー レコードを 1 つ以上のフロー コレクターにエクスポートします。
  • フロー コレクター: フロー エクスポーターから受信したフロー データの受信、保存、および前処理を担当します。
  • 分析アプリケーション: 侵入検知やトラフィック プロファイリングなどのコンテキストで受信したフロー データを分析します。

プロトコルの説明

NetFlow をサポートするルータとスイッチは、NetFlow が有効になっているすべてのインターフェイスでIPトラフィック統計を収集し、後でそれらの統計を NetFlow レコードとして少なくとも 1 つの NetFlow コレクター (通常は実際のトラフィック分析を実行するサーバー) にエクスポートできます。

ネットワークフロー

シスコ標準のNetFlowバージョン5では、フローを、フローの一意のキーを定義する7つの値を共有するパケットの単方向シーケンスとして定義しています。[ 2 ]

  1. 入力インターフェース(SNMP ifIndex)
  2. 送信元IPアドレス
  3. 宛先IPアドレス
  4. IPプロトコル番号
  5. UDPまたはTCPの場合は送信元ポート、その他のプロトコルの場合は 0
  6. UDPまたはTCPの場合は宛先ポート、 ICMPの場合はタイプとコード、その他のプロトコルの場合は 0
  7. 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プロトコルは、ルータに損失を通知しないため、ルータはパケットを再送信できません。これは、特に多数のパケットやフローを単一のレコードに集約できるNetFlow v8またはv9では深刻な問題となる可能性があります。単一の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ルーティング情報:

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レコード形式は時間の経過とともに進化しており、バージョン番号が追加されました。シスコは、異なるバージョン番号と各バージョンのパケットレイアウトの詳細を管理しています。

インターフェース

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 Catalyst でのフローごとのサンプリングなど、パケットをサンプリングするためのより複雑な方法があります。

サンプリングレートは通常、すべてのインターフェースで同じですが、一部のルーターではインターフェースごとに調整できます。Sampled NetFlowを使用する場合、サンプリングの影響を考慮してNetFlowレコードを調整する必要があります。特にトラフィック量は、実際に測定されたフロー量ではなく推定値になります。

サンプリングレートは、NetFlowバージョン5のヘッダーフィールド(すべてのインターフェースで同じサンプリングレート)またはNetFlowバージョン9のオプションレコード(インターフェースごとのサンプリングレート)で示されます。

バージョン

バージョン コメント
v1 最初の実装ですが、現在は廃止されており、IPv4 ( IP マスクAS 番号なし) に制限されています。
v2 Cisco 社内バージョン。リリースされません。
v3 Cisco 社内バージョン。リリースされません。
v4 Cisco 社内バージョン。リリースされません。
v5 最も一般的なバージョン。さまざまなブランドの多くのルーターで使用可能です (2009 年現在)。ただし、IPv4フローに制限されています。
v6 Cisco によるサポートは終了しました。カプセル化情報 (?)。
v7 バージョン5にソースルータフィールドを追加したもの。Cisco Catalystスイッチでのみ使用される。
v8 いくつかの集約形式がありますが、バージョン 5 のレコードにすでに存在する情報のみを対象としています。
v9 テンプレートベース。2009年現在、一部の最新ルーターで利用可能です。主に、IPv6MPLS、あるいはBGPネクストホップを含むIPv4などのフローを報告するために使用されます。
v10 IPFIXを識別するために使用されます。IPFIX は NetFlow に大きく依存していますが、v10 は NetFlow とは一切関係ありません。

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 ]には記載されていません)。

また、フローツールソフトウェアコレクション[ 5 ]を使用すると、CiscoおよびJuniperルータからのNetFlowエクスポートを処理および管理できます。[ 6 ]

サポート

ベンダーとタイプ モデル NetFlow バージョン 実装 コメント
Cisco IOS-XRルータ CRSASR900012000v5、v8、v9 ラインカードCPU上で実行されるソフトウェア IPv6とMPLSの包括的なサポート
Cisco IOSルータ 10000、7200、旧7500 v5、v8、v9 ルートプロセッサ上で実行されるソフトウェア IPv6またはMPLSのサポートには、最新のモデルとIOSが必要です。
Cisco Catalyst スイッチ 7600、6500、4500 v5、v8、v9 専用のハードウェア TCAM。ACL にも使用されます。 ハイエンドモデルRSP720およびSup720ではIPv6がサポートされていますが、PCFカードあたり最大128Kまたは256Kのフローがサポートされています。[ 7 ]
Cisco Nexus スイッチ 5600、7000、7700 v5、v9 専用のハードウェアTCAM(ACLにも使用)。最大512Kフロー。IPv4/IPv6/L2をサポート。 MPLSはサポートされていません
ジュニパーのレガシールーター MシリーズTシリーズMXシリーズ( DPC搭載) v5、v8 ルーティングエンジン上で実行されるソフトウェア(ソフトウェア jflowと呼ばれる)IPv6とMPLSはサポートされていません
ジュニパーのレガシールーター MシリーズTシリーズMXシリーズ( DPC搭載) v5、v8、v9 サービスPIC上で実行されるソフトウェア(ハードウェアJflowまたはサンプリングと呼ばれる)MS-DPC、MultiService-PIC、AS-PIC2 で IPv6 または MPLS がサポートされています
ジュニパールーター MXシリーズ( MPC-3D、T4000用FPC5搭載) v5、IPFIXハードウェア(トリオチップセット)、インラインjflowと呼ばれるIPv6にはJUNOS 11.4R2(バックポートターゲット)が必要、MPLSサポートは不明、MPC3Eは12.3まで除外、開始時間フィールドが正しくないためデータスループット結果が正しくない[ 8 ]
ノキアルーター 7750SR v5、v8、v9、v10 IPFIX中央プロセッサモジュール上で実行されるソフトウェア IOM3 ライン カード以上を使用した IPv6 または MPLS
Huaweiルーター NE5000E NE40E/X NE80E v5、v9 サービスカード上で実行されるソフトウェア IPv6またはMPLSのサポートは不明です
Enterasysスイッチ Sシリーズ[ 9 ] とNシリーズ[ 10 ]v5、v9 専用ハードウェア IPv6のサポートは不明です
Flowmonプローブ フローモンプローブ 1000、2000、4000、6000、10000、20000、40000、80000、100000 v5、v9、IPFIXソフトウェアまたはハードウェアアクセラレーション IPv6とMPLSの包括的なサポート、ワイヤースピード
ノーテルスイッチ イーサネット ルーティング スイッチ 5500 シリーズ (ERS5510、5520、5530) および 8600 (シャーシベース) v5、v9、IPFIX ラインカードCPU上で実行されるソフトウェア IPv6の包括的なサポート
PCとサーバー Linux FreeBSD NetBSD OpenBSDv5、v9、IPFIX fprobe、[ 11 ] ipt-netflow、[ 12 ] pflow、[ 13 ] flowd、[ 14 ] Netgraph ng_netflow [ 15 ]またはsoftflowd などのソフトウェアIPv6のサポートは使用するソフトウェアによって異なります
VMwareサーバー vSphere 5.x [ 16 ]v5、IPFIX(>5.1)[ 17 ]ソフトウェア IPv6のサポートは不明です
Mikrotik ルーターOS RouterOS 3.x、4.x、5.x、6.x [ 18 ]v1、v5、v9、IPFIX (>6.36RC3) ソフトウェアとルーターボードのハードウェア IPv6はv9でサポートされます。現在、RouterOSにはBGP AS番号は含まれていません。

変種

CiscoのNetFlowセキュリティイベントロギング

Cisco ASA 5580製品の発売と同時に導入されたNetFlowセキュリティイベントロギングは、NetFlow v9のフィールドとテンプレートを活用し、高パフォーマンス環境においてセキュリティテレメトリを効率的に提供します。NetFlowセキュリティイベントロギングは、Syslogと同等の詳細度と粒度でイベントをログに記録しながら、 Syslogよりも優れた拡張性を備えています。

スタンドアロンプ​​ローブに基づく監視

スタンドアロン プローブを使用する NetFlow アーキテクチャ。

スタンドアロンのNetFlowプローブを用いたNetFlow収集は、ルータやスイッチからのフロー収集の代替手段です。このアプローチは、ルータベースのNetFlowモニタリングにおけるいくつかの制限を克服できます。プローブは、アプライアンスのTAPポートまたはSPANポートを介して、パッシブアプライアンスとして監視対象リンクに透過的に接続されます。

歴史的に、NetFlowモニタリングはルーターよりも専用プローブに実装する方が簡単です。しかし、このアプローチにはいくつかの欠点もあります。

  • 監視する必要があるすべてのリンクにプローブを展開する必要があり、追加のハードウェア、セットアップ、およびメンテナンスのコストが発生します。
  • プローブは、ルータからのレポートのように、個別の入力および出力インターフェース情報を報告しません。
  • プローブは、ルータとまったく同じルーティング情報を使用することはほとんど期待できないため、 AS 番号IP マスクなどのルーティングに関連する NetFlow フィールドを確実にレポートできない場合があります。

上記の欠点に対処する最も簡単な方法は、ルータの手前にパケットキャプチャアプライアンスをインラインで設置し、ルータからのすべてのNetFlow出力をキャプチャすることです。この方法により、大量のNetFlowデータ(通常は数年分)を保存でき、ネットワークの再構成も不要になります。

専用プローブからの NetFlow 収集は重要なリンクの観察に適していますが、ルータ上の NetFlow は、容量計画、アカウンティング、パフォーマンス監視、およびセキュリティに使用できるネットワーク全体のトラフィックのビューを提供します。

歴史

NetFlowは、もともとCiscoルータ向けのパケットスイッチング技術であり、 1996年頃にIOS 11.xに実装されました。当初はCisco 7000、7200、7500向けのソフトウェア実装であり[ 19 ] 、当時のCisco Fast Switchingの改良版と考えられていました。NetFlowは、CiscoのDarren KerrとBarry Bruinによって発明されました[ 20 ](米国特許番号6,243,667)。

フローの最初のパケットがNetFlowスイッチングレコードを作成するという考え方です。このレコードは、フローの有効期限が切れるまで、同じフローの後続のすべてのパケットに使用されます。フローの最初のパケットのみが、ルートテーブルを調べて最も適切なルートを見つける必要があります。これは、ソフトウェア実装、特に転送情報ベース(FIB)のない古い実装では、コストのかかる処理です。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

参照

参考文献

  1. ^ 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 .
  2. ^ 「InterProjektWiki: NetFlow」 。2017年2月22日時点のオリジナルよりアーカイブ
  3. ^ 「シスコの商標」
  4. ^ 「sFlow 製品: ネットワーク機器」 . sFlow.org.
  5. ^ “Adsr/Flow-tools” . GitHub . 2021年10月5日.
  6. ^ “Adsr/Flow-tools” . GitHub . 2021年10月5日.
  7. ^ 「Cisco RSP720 Sup720 NetFlow特性」 cisco.com、2010年7月。 2012年3月8日閲覧
  8. ^ 「Juniper j-flowのppsとbpsが正しくない」 2012年8月. 2016年3月17日閲覧
  9. ^ 「Enterasys S-SerieのNetFlow」(PDF) . enterasys.com. 2012年2月. 2012年3月4日閲覧
  10. ^ 「Enterasys N-SerieのNetFlow」(PDF) . enterasys.com. 2012年2月. 2012年3月4日閲覧
  11. ^ "fprobe"
  12. ^ "ipt-netflow"
  13. ^ Henning Brauer; Joerg Goltermann (2014年3月29日). 「pflow — pflowデータエクスポート用のカーネルインターフェース」 BSD Cross Rererence . OpenBSD . 2019年8月9日閲覧
  14. ^ "flowd-0.9.1.20140828 – NetFlowコレクター" . OpenBSDポート. 2019年7月17日. 2019年8月9日閲覧
  15. ^ Gleb Smirnoff (2005). 「ng_netflow — CiscoのNetFlow実装」 BSD Cross Rererence . FreeBSD . 2019年8月9日閲覧。
  16. ^ 「vSphere 5 の新しいネットワーク機能 - NetFlow - VMware vSphere ブログ」。2011 年 8 月 15 日。
  17. ^ 「vSphere 51 ネットワーク テクニカル ホワイトペーパー」(PDF) . vmware.com . 2023年7月1日閲覧
  18. ^ 「マニュアル:IP/トラフィックフロー - MikroTik Wiki」2016年3月18日時点のオリジナルよりアーカイブ2012年8月3日閲覧。
  19. ^ 「NetFlowスイッチング拡張機能モジュール[Cisco IOSソフトウェアリリース11.1] - Cisco Systems」www.cisco.com。 2009年12月21日時点のオリジナルよりアーカイブ
  20. ^ 「ネットワーキング、クラウド、サイバーセキュリティソリューション」 . Cisco . 2023年7月1日閲覧
  21. ^ 「NetFlow、sFlow、フローの拡張性、パート1」 Kentikブログ、2016年3月28日。 2023年7月1日閲覧
  22. ^ Phaal, Peter; Lavine, Marc (2004年7月). 「sFlow バージョン5」 . sFlow.org . 2010年10月23日閲覧