sFlowとは?技術概要やNetFlow・SNMPとの違いについて解説
企業規模の拡大やシステムの増加などにより、ネットワークのトラフィック量は年々増えていきます。その中で、ネットワークのトラブル対応や帯域増強の検討などを行うために、システムの運用管理においてはトラフィック状況を監視していく必要があります。
sFlowはトラフィック状況の監視に利用できる技術の一つですが、類似するNetFlowやSNMPなどと比較してどのような特徴があるのでしょうか。この記事では、sFlowの特徴や他の技術との比較、活用方法などについて解説します。
sFlowとは
まず初めに、sFlowの概要について整理します。
フローデータ生成技術のひとつであるsFlow
sFlowは、フローデータによるネットワークトラフィックの監視を実現する技術の一つです。米InMon社が開発したものであり、同じくフローデータにより監視を実現する、Cisco社が開発したNetFlowなどと併せて「xFlow」と呼ばれることもあります。
sFlowの歴史は古く、2001年にはその仕様が策定されています。sFlowの仕様はIETF RFC 3176として特定のベンダーや機器によらず標準化されています。
※参考:IETF RFC 3176
https://datatracker.ietf.org/doc/html/rfc3176
フローデータとは?
sFlowが採用している「フローデータ」とはどのようなものなのでしょうか。フローデータとは、ネットワークのトラフィックを個々のパケットごとに把握するのではなく、送信・受信先のIPアドレスやポート、利用されているプロトコルなどによりトラフィックを分類したうえで、これらが一致しているトラフィックを「まとまり」として取り扱う方法のことです。
ネットワーク上では様々な通信内容が飛び交っています。業務システムを利用するための通信や社外のSaaSを利用するための通信など、様々です。これらは、上述した送受信IPアドレスなどの条件で区別すると取り扱いやすくなります。たとえば192.168.0.1から192.168.0.2への通信について、どの程度のトラフィックが発生しているかを計測します。
この際、たとえば30分ごとに192.168.0.1から192.168.0.2へのどの程度のトラフィックが流れているかを集計したうえで、その結果を出力します。これがフローデータです。フローデータではなく、すべての通信データ量を収集することでも総トラフィック量は把握できますが、一方で、そのようなやり方はネットワークやサーバーへ高い負荷をかけてしまいます。
一定のトラフィックを集計したうえで、その結果を出力するフローデータの方法により、ネットワークへの負荷を抑える形でトラフィックを把握することができます。
sFlowの特徴
sFlowは、フローデータの生成においてサンプリングを採用しているという特徴があります。sFlowでは、全量のトラフィックデータを収集するのではなく、設定されたサンプリングレートに基づき、一部のトラフィックデータを収集します。収集したトラフィックデータを基に、統計的にトラフィック量を算出します。
サンプリングという手法を用いることで、大規模なネットワークにおいても負荷をかけることなく、トラフィック情報の収集が可能となるというのが、sFlowの特徴です。
sFlowとNetFlow/SNMPの違い
sFlowに類似する技術として、同じくフローデータを利用した監視を実現するNetFlowや、ネットワーク監視に用いられる標準的なプロトコルであるSNMPが挙げられます。これらの技術とsFlowではどのような違いがあるのでしょうか。以下では、各技術とsFlowの比較を行います。
sFlowとNetFlowの違い
NetFlowとは、大手ネットワーク機器メーカーであるCisco社が開発した技術であり、sFlowと同様にフローデータによりトラフィック状況を把握できるものです。トラフィック状況を把握するために広く利用されている技術といえるでしょう。
なお、NetFlowについては以下の記事で紹介しておりますので、よろしければ併せてご覧ください。
以下では、sFlowとNetFlowの違いについて整理します。
標準化の有無
sFlowはInMon社が開発した技術ではありますが、早期より標準化団体であるIETFにより標準化されているという特徴があります。一方で、NetFlowは当初はCisco社が独自に開発した技術であり、当初は標準化されていませんでした。
ただし、NetFlowのVersion9(およびNetFlowのVersion9を発展させたIPFIX)は以下のとおりIETFにて標準化されています。よって、NetFlowも利用するバージョンによっては標準化されているという状況です。
参考:IETF RFC 3954
https://www.ietf.org/rfc/rfc3954.txt
参考:IETF RFC 7011
https://datatracker.ietf.org/doc/html/rfc7011
サンプリングの利用
上述のとおり、sFlowはサンプリングという考え方により、フローの全量ではなく一部を対象とすることで、ネットワークに負荷をかけずにトラフィックを収集することができます。一方で、NetFlowはトラフィックの全量を把握するように設計されています。
ただし、NetFlowにおいてもサンプリングを行うように設定することも可能です。サンプリングに基づく推定値で十分に目的を達成できるケースであれば、NetFlowでもサンプリングを行うことでネットワークへの負荷を抑えることができます。
対応している機器
ネットワーク機器により、sFlowとNetFlowのどちらに対応しているかは異なります。たとえば、NetFlowを開発したCiscoの機器であれば、基本的にはNetFlowに対応しています。
sFlowとNetFlowの両方に対応している機器であれば問題ありませんが、メーカーや製品によってはどちらかにしか対応していないケースもありますので、注意が必要です。
sFlowとSNMPの違い
SNMPとは、TCP/IPプロトコルの一つであり、ネットワーク上に存在するルーターやスイッチ、サーバーなどの機器を監視するために用いられるものです。SNMPを用いることで、トラフィックの監視も可能となります。
以下ではsFlowとSNMPの違いについて整理します。
データの収集方法
SNMPでは、ポーリングと呼ばれる方法によりネットワークのトラフィック量を収集します。これは、収集を要求する機器(SNMPマネージャ)から収集対象の機器(SNMPエージェント)へデータの送信を要求することで、データのやり取りが行われるというものです。
ポーリングによるデータ収集は、フローデータによる方法と比較して通信量が多く、ネットワークに与える負荷が大きいという特徴があります。
収集できるデータ
SNMPは汎用的なプロトコルであり、トラフィックだけではなく機器の稼働状況やパフォーマンス、リソースの利用状況など様々な情報を収集するのに利用できます。一方で、sFlowはネットワークのトラフィック情報を収集するために特化したツールであり、両者は用途が異なります。
対応している機器
HTTPなどと同じくTCP/IPプロトコルの一つであるSNMPは、標準的なプロトコルとして確立されています。よって、多くのベンダーの機器で利用することができるというメリットがあります。
sFlowは標準化されているものの、あくまで個別のベンダーが開発した技術であるため、利用することができない機器も存在する点に注意が必要です。
比較結果まとめ
ここまでの比較内容を、表にて整理したものが以下のとおりです。
観点 | sFlow | NetFlow | SNMP |
IETF標準化 | 〇 | △ ※バージョンによる | 〇 |
データ収集方法 | サンプリングデータを基に、フローデータとして出力 | 全量もしくはサンプリングデータを基に、フローデータとして出力 | ポーリング(もしくはトラップ)により出力 |
収集可能データ | トラフィック情報 | トラフィック情報 | トラフィック情報 機器リソース情報 パフォーマンス情報 など |
対応機器 | 一部機器 | 一部機器 | ほぼすべての機器 |
sFlowを利用した監視のポイント
以下では、sFlowを利用した監視のポイントについて整理します。
sFlowに対応している機器での利用
sFlowは標準化されている技術とはいえ、機器が対応していないケースもある点に注意が必要です。監視対象となるネットワークに存在する機器がsFlowに対応しているかを確認の上、利用する必要があります。
サンプリングレートの適切な設定
sFlowはサンプリングによるフローデータ生成を行いますが、この際にどの程度のサンプリングレートを設定するかで、生成されるデータの精度が変わります。統計的に許容できる誤差範囲にサンプリングレートを設定する必要があります。
なお、sFlowにおけるサンプリングレートの設定方法は、サンプリングレートをNとした場合、N個のパケットに対して1つのデータを収集する「フローサンプル」による方法と、個々のインターフェースのパケット数などをカウントし、その値により収集する間隔を制御する「カウンター・サンプル」の2つの方法が用意されています。用途に応じた使い分けが必要です。
フローコレクターの導入
sFlowによる監視を行う際には、フローデータを収集する役割を担うフローコレクターを導入する必要があります。生成されたフローデータはフローコレクターに送られ、保存されます。
フローデータは単にテキスト情報として確認するよりも、グラフにより変化を確認したり、条件を指定して特定のトラフィック情報を抽出できたりする方がネットワークの監視を行う上では使い勝手が良いといえるでしょう。よって、sFlowによる監視を行う場合には、フローデータの可視化などの機能を備えたツールを用意することをおすすめします。
sFlowによるフロー監視を実現するLogicMonitorとは?
SaaS型のIT統合運用監視サービスであるLogicMonitorは、sFlowによるトラフィック監視の実現に有効活用できるツールです。LogicMonitor collectorの機能により、フローコレクターとしてsFlowのフローはもちろん、SNMPやNetFlowなど他の様々な通信を収集できます。エージェントレス型のツールとして、簡単に環境に導入し、監視を開始することも可能です。
LogicMonitorには様々な情報を可視化する機能が用意されており、トラフィック量の可視化も実現。時系列グラフでトラフィック状況を把握することで、どの機器・ポートからの通信量が多くなっているかを簡単に理解することができます。
LogicMonitorを活用することで、sFlowを利用したネットワーク監視はもちろん、NetFlowやSNMPなど、他の手法を利用した監視も含めて、一元的な監視を実現することができるでしょう。
まとめ
この記事では、sFlowについてその概要やNetFlow、SNMPなどとの比較、sFlowを利用した監視のポイントなどについて解説しました。データフローを利用した監視方法は、ネットワークに負荷をかけずに効率的な監視を実現することができます。さらに、収集されたデータをそのまま眺めるのではなく、ツールにより可視化することで、より把握しやすくなるでしょう。