NetFlowによるフロー監視の実現 バージョンによる違いや収集できる情報とは
ネットワークのフローを監視できるNetFlowは、トラフィックの監視などにおいて広く利用されている技術です。NetFlowには様々なバージョンが存在し、それぞれ機能も異なります。この記事では、NetFlowへの理解を深められるように、NetFlowの概要や各バージョンの違いについて紹介していきます。
NetFlowとは何か?
まず初めに、NetFlowの概要やその必要性についてご紹介します。
NetFlowの概要
NetFlowとは、大手ネットワーク機器メーカーであるCisco社が開発した技術であり、トラフィック情報を収集するために用いられるものです。NetFlowは同社のネットワーク機器を動作させるオペレーティングシステム「Cisco IOS」における機能の一つとして用意されています。
NetFlowの特徴は、トラフィックをフローデータとして取り扱うことにあります。これにより、効率的なトラフィック情報の収集を実現しています。
NetFlowにおけるフローデータとは?
それでは、フローデータとはいったいどのようなものなのでしょうか。端的に言うと、送信元から送信先への一連の通信を「ひとまとめ」に集約したものです。
ネットワーク上においては様々な通信が同時に行われています。これらのトラフィック状況を把握するためには、条件に基づき分類したうえで、総量としてとらえることが有効となります。たとえば「ルーターA」から「サーバーA」へ行った通信のトラフィックと、「ルーターA」から「サーバーB」に行った通信のトラフィックを区別してとらえることで、ネットワークの詳細な利用状況が見えてきます。さらに、「ルーターA」から「サーバーA」へ行った通信であったとしても、HTTPリクエストなのかFTPによるファイル通信なのか、データベースへのアクセスなのかによって区別することで、さらに詳しく内容を把握できます。
たとえば、輻輳が発生した際に、その原因を分析するには「どの機器から大量の通信が発生しているか」を突き止める必要があるでしょう。その際に、どの機器・ポートからどの機器・ポートへ、どの程度のトラフィックが流れているかが重要な情報となります。
バージョンにもよりますが、NetFlowにおいては以下のような基準でトラフィックデータを集約し、フローデータとして把握することができます。これらにより通信を分類し、その通信量をまとめてフローデータとして取り扱うことで、トラフィック状況の分析がしやすくなります。
- 送信元IPアドレス・ポート番号
- 送信先IPアドレス・ポート番号
- プロトコル
- 入力インターフェース など
なぜNetFlowが必要なのか?
NetFlowの最も大きなメリットは、フローデータとしてトラフィック情報を分析することで、効率的なトラフィック監視を実現できることです。
ネットワークトラフィックを分析する方法として、SNMPを用いる方法やパケットキャプチャを実施する方法なども存在します。SNMPは標準的なプロトコルであり、あらゆる機器で利用できるといったメリットもありますが、ネットワークに関する詳細な情報が取得できないというデメリットや、ネットワークの規模によっては負荷が高まりやすいといった問題点もあります。
パケットキャプチャは、個々のパケットを取得してその内容を分析する方法であり、詳細な情報を取得できます。一方で、処理するデータ量が多くなり、大規模な環境においては利用しにくく、常時パケットキャプチャによるトラフィック監視を行うのは難しいというデメリットがあります。
NetFlowは、取り扱うデータ量を抑えてネットワークへの負荷を軽減しつつ、詳細なトラフィック情報を収集できる技術として活用されています。
NetFlowの主要なバージョンと収集できる情報
現在利用されているNetFlowの主なバージョンとして、version 5、version 9、Flexible NetFlowなどが挙げられます。これらにはどのような違いがあるのでしょうか。また、どのように使い分けるべきなのでしょうか。以下で整理します。
version 5
NetFlowのversion 5は、シンプルでコンパクトなフォーマットでフローを監視することができます。比較的古いバージョンであり、IPv6に対応していないなどの課題もありますが、そのシンプルさから現在でも利用されています。
NetFlowのversion 5では、以下の項目によりフローを識別し、フローデータとして出力します。
- 送信元IPアドレス
- あて先IPアドレス
- TCP/UDPポート送信元番号
- TCP/UDPポートあて先番号
- L3プロトコル
- ToSバイト
- 入力インターフェース
これらの値がいずれか異なるものであれば、別のフローとして識別されます。例えば、送信元・送信先IPアドレスが同じであったとしても、利用しているプロトコルが異なる場合は別フローとして認識されます。よって、サーバーAとサーバーBの通信であったとしても、HTTPリクエストかFTPリクエストかにより送信先のポートが異なれば、別のデータフローとして出力されます。
各フローデータには、パケットの総数や総バイト数、フローの開始時刻・終了時刻などの情報が格納されています。これらを基に、トラフィック状況を把握することができます。
version 9
NetFlowのversion 9の最大の特徴は、テンプレートベースによるフローデータの収集です。上記で紹介したversion 5では収集できるデータは固定のものでしたが、version 9ではテンプレートを指定することで、収集するデータを任意に設定できます。
また、収集できる項目もversion5や他のversionと比較して増加しており、104種類のフィールドタイプが定義されています。収集できるデータの例として、たとえばversion 5ではL3プロトコル層の情報までしか収集できなかったが、L2プロトコル層(データリンク層)の識別も可能となっています。また、version 5では対応できなかったIPv6にも対応しています。
このように、version 9はversion 5よりも機能が向上しており、version 5では収集できないような詳細な情報まで収集したい場合に利用されます。なお、version 9はIETF RFC 3954にて標準化されています。
※参考:Cisco Systems NetFlow Services Export Version 9
https://datatracker.ietf.org/doc/html/rfc3954
IPFIX(version 10)
IPFIXはNet Flowのversion 9をベースに、IETF RFC7011にて標準化された技術です。IPFIXは「IP Flow Information Export:インターネットプロトコルフロー情報エクスポート」の略称です。version 9に加えて機能拡張もされており、version 10と呼ばれることもあります。
NetFlowは基本的にCisco機器で利用されるものですが、IPFIXは、幅広いベンダーの機器で利用できるように修正がされています。
※参考:Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of Flow Information
https://datatracker.ietf.org/doc/html/rfc7011
Flexible NetFlow
Flexible NetFlowは、version 9をベースとして機能拡張が行われた技術です。”Flexible”という名称のとおり、柔軟性が高められている点に特徴があります。
具体的には、NetFlowのversion 5やversion 9ではフローに含められるデータがフィールドタイプにより固定化されていましたが、Flexible NetFlowではフィールドを細かく設定することができるという特徴があります。
NetFlowによる監視におけるポイント
NetFlowの技術を活用することで、効率的なトラフィック監視を実現することができます。NetFlowによる監視を実施する際には、どのような点に気を付けるべきなのでしょうか。
NetFlow対応機器の確認
NetFlowの技術はCisco社により開発されたものであり、基本的にはCisco社のネットワーク機器で利用できます。(ただし、Cisco社以外にもNetFlowに対応している製品も多く存在します)
監視対象となるネットワーク機器がNetFlowに対応していない場合、そもそもNetFlowによるトラフィック情報の収集は不可能です。
各ベンダーでは、NetFlowの代替機能として、sFlowやjFlow、AppFlowなどのフロー型トラフィック収集技術を提供しており、必要に応じてそちらを利用することとなります。
適切な設定
NetFlowによるフローデータの収集を行う際には、対象機器への設定を適切に行う必要があります。どのバージョンのNetFlowを利用するか、タイムアウトの設定をどうするか、といった観点を検討の上、収集対象とする機器やIPアドレス、インターフェースなどを設定します。
トラフィックの監視においては、ネットワークに負荷をかけないように注意する必要があります。
フローコレクターの導入
NetFlowによる監視を行う際には通常、フローデータを収集する役割を担うフローコレクターを導入することとなります。フローコレクターにより、フローデータを保存し、グラフによる可視化などを行うことができます。
フローデータは単にテキスト情報として確認するよりも、時系列グラフにより変化を確認したり、条件を指定して特定のトラフィック情報を抽出できたりする方が使い勝手が良いといえるでしょう。フローデータの収集と可視化を実現するツールの導入を検討すべきです。
NetFlowによるフロー監視を実現するLogicMonitorとは?
LogicMonitorは、NetFlowによるフロー監視を実現できる、SaaS型のIT統合運用監視サービスです。LogicMonitor collectorの機能により、NetFlowのフローのみなならず、SNMPやsFlowなど他の様々な通信を収集可能であり、トラフィック状況の把握を実現します。
エージェントレス型のツールとして、簡単に環境に導入し、監視を開始することができる点もメリットといえるでしょう。
サーバーやネットワーク、ストレージなどに対する一般的な監視項目をあらかじめ設定したテンプレート「LogicModules」により、設定も容易です。NetFlowを活用したトラフィック監視についても、素早く開始することができます。
まとめ
この記事では、トラフィック監視に活用できるNetFlowについて、その技術概要やバージョンによる違い、監視におけるポイントをご紹介しました。現代におけるトラフィック監視においては、NetFlowをはじめとしたフロー技術の利用は一般的なものとなっています。フロー監視を効果的に行うためには、フローデータの収集・可視化を実現するツールの活用を検討するべきです。