# 運用・管理 / sFlow

## 概要

sFlowは、ネットワーク上のスイッチやルーターを流れるトラフィックをモニターする機能です。
sFlowエージェントと呼ばれるネットワーク上の装置がトラフィック情報を収集します。
収集された情報は、sFlowコレクターと呼ばれる装置に送られます。sFlowコレクターは、情報（sFlowデータグラム）を受け取り、解析・表示を行います。
sFlowではサンプリング技術を用いてトラフィック情報の収集を行っています。
本製品は、sFlowエージェントとしての動作をサポートしており、スイッチポートでEthernetフレームのサンプリングを行うことができます。
Note

sFlowとポートミラーリングを同一装置上で同時に使用することはできません。

## サンプリング

sFlowではパケットフローサンプリングとカウンターサンプリング（カウンターポーリング）の2種類のサンプリング方式を用いてトラフィック情報を収集します。
ポートにsFlowを設定しているときに、そのポートがトランクグループ（リンクアグリゲーショングループ）に所属しているポートであった場合、出力パケットのサンプリングができないことがあります。
トランクグループに所属するポートでsFlowを使用する場合は、所属するすべてのポートにsFlowを設定してください。

### パケットフローサンプリング

パケットフローサンプリングは、sFlowが有効なインターフェースにおいて入出力パケットを設定した周期でサンプリングすることにより行います。
サンプリング周期はsflow sampling-rateコマンドでインターフェースごとに設定します。
サンプリング周期が N の場合、対象インターフェースでは平均して N パケットごとに 1 パケットがサンプリングされます。サンプリング周期は入力、出力それぞれ独立して適用されます。
例えば、サンプリング周期が1000の場合、1000パケット受信すると1パケットがサンプリングされ、1000パケット送信すると1パケットがサンプリングされます。
サンプリング対象パケットの先頭からsflow max-header-sizeコマンドで設定したバイト数分がトラフィック情報を表すヘッダーサンプルとして用いられます。
Note

本製品では入力パケットに関してはマルチキャストパケット、ブロードキャストパケット、ユニキャストパケットのサンプリングができます。出力パケットに関しては学習済みユニキャストパケットのみのサンプリングとなります。

Note

入力時と出力時にパケットの内容が変化する構成（タグなしポートからタグ付きポート、ルーティング環境等）では、出力サンプリング情報のVLANタグやMACアドレス等が更新されません。

### カウンターポーリング

カウンターポーリングはシステムカウンターを設定したポーリング間隔にしたがって定期的に取得することにより行います。
本製品のポーリング間隔はsflow polling-intervalコマンドでインターフェースごとに設定します。
ポーリング間隔が S の場合、対象インターフェースでカウンター情報をS秒に1回取得します。
例えば、ポーリング間隔が30の場合、対象インターフェースのカウンター情報を30秒に1回取得します。
本製品のカウンターポーリングで取得されるカウンター情報は下記のとおりです。

- Generic Interface Counters
  - ifIndex
  - ifType
  - ifSpeed
  - ifDirection (0=unknown, 1=full-duplex, 2=half-duplex, 3=in, 4=out)
  - ifStatus
  - InOctets
  - InUcastpackets
  - InMulticast packets
  - InBroadcast packets
  - InDiscarded packets (= 0)
  - InPackets containing errors
  - InPackets containing unknown protocols (= 0)
  - OutOctets
  - OutUcast packets
  - OutMulticast packets
  - OutBroadcast packets
  - OutDiscarded packets
  - OutPackets containing errors
  - ifPromiscuous Mode
- Ethernet Interface Counters
  - dot3Stats Alignment Errors (= 0)
  - dot3Stats FCS Errors
  - dot3Stats Single Collision Frames (= 0)
  - dot3Stats Multiple Collision Frames
  - dot3Stats SQE Test Errors
  - dot3Stats Deferred Transmissions (= 0)
  - dot3Stats Late Collisions
  - dot3Stats Excessive Collisions
  - dot3Stats Internal Mac Transmit Errors
  - dot3Stats Carrier Sense Errors (= 0)
  - dot3Stats Frame Too Longs
  - dot3Stats Internal Mac Receive Errors
  - dot3Stats Symbol Errors (= 0)

## sFlowデータグラム

パケットフローサンプリングにより取得したヘッダーサンプルとカウンターポーリングにより取得したカウンターサンプルはsFlowデータグラムに入れられます。
1つのsFlowデータグラムに複数のサンプルや異なる種類のサンプルを含むことができます。
sFlowデータグラムはsFlowエージェントで作られ、sFlowコレクターに送信されます。
sFlowデータグラムはUDP（ポート番号6343：sflow collectorコマンドで変更可能）で送信されます。

## sFlowエージェント

sFlowエージェントはトラフィック情報をサンプリングし、sFlowコレクターに送信します。
sFlowエージェントの主な機能な下記のようになります。

- パケットフローサンプリング
- カウンターポーリング
- 上記で取得したヘッダーサンプルとカウンター情報をsFlowデータグラムに入れ、sFlowコレクターに送信する。

本製品は、RFC3176 (sFlow version 4)とそれをアップデートした最新の仕様 sFlow version 5 (2004/7発行)に基づいて実装されています。
http://www.sflow.org/sflow_version_5.txt
本製品ではスイッチポートごとにsFlowエージェントを設定できます。
Note

sFlowエージェントの設定はスイッチポートに対してのみ可能で、トランクグループ（スタティックチャンネルグループ、LACPチャンネルグループとも）やVLANインターフェースには設定できません。トランクグループやVLANインターフェースに対してsFlowの設定を行う場合は、所属するスイッチポートに設定してください。

## sFlowコレクター

sFlowコレクターはsFlowエージェントから送信されるヘッダーサンプルやカウンター情報を含んだsFlowデータグラムを受信し、解析・表示を行います。
1台のsFlowコレクターで複数のsFlowエージェントからのトラフィック情報を管理できます。
sFlowコレクターはソフトウェアやアプライアンスの形で提供されています。設定変更や情報取得を行うためにSNMPマネージャー機能の一部を有するsFlowコレクターもあります。
Note

本製品ではsFlowコレクターを5台まで登録できます。各コレクターには同じ情報が送信されます。

## sFlow MIB

本製品はマルチベンダー&エンドユーザフォーラム sFlow.org が提供するsFlow用プライベートMIBである sFlow MIB をサポートします。
sFlow MIBファイルの入手はsFlow.orgの下記のページより行ってください。
http://www.sflow.org/SFLOW-MIB5.txt
Note

sFlow MIBのsFlowFsReceiverとsFlowCpReceiverの値を変更後、初期値に戻すためにはsFlowを無効にする必要があります。

## 基本設定

sFlowを使用するための基本的な手順について説明します。
sFlowエージェントとsFlowコレクターが各1台ずつ設置された次のようなネットワーク構成を例に解説します。
sFlowエージェントである本製品のスイッチポート1.0.1にsFlowを設定し、このポートで送受信するトラフィックをsFlowでモニタリングします。

### sFlowエージェント

sFlowエージェントの設定は、CLIを用いて直接設定することも、SNMPを用いてSNMPマネージャーやSNMPマネージャー機能を有するsFlowコレクターから行うこともできます。
ここでは通常通りCLIを用いて設定します。
すでに必要なVLANとIPアドレスは設定してあることとします。また、SNMPによる設定や監視を行う場合には、別途SNMPの項を参照しながら設定してください。

1. 筐体全体でsFlowを有効にします。これにはsflow enableコマンドを使います。

       awplus(config)# sflow enable

2. sFlowエージェントのIPアドレスを設定します。これにはsflow agentコマンドを使います。
   sFlowコレクターではこのIPアドレスをsFlowエージェントの識別子として利用します。

       awplus(config)# sflow agent ip 192.168.1.1

3. sFlowコレクターのIPアドレスを登録します。これにはsflow collectorコマンドを使います。
   コレクターは5台まで登録できるため、それぞれに1～5の番号をidパラメーターで割り当てる必要があります。
   同コマンドでは、オプションのportパラメーター（コレクターのUDPポート）やmax-datagram-sizeパラメーター（コレクターに送信するsFlowデータグラムの最大サイズ）を指定することもできます。オプションパラメーターの未指定時はそれぞれのデフォルト値が使われます。

       awplus(config)# sflow collector id 1 ip 192.168.1.100

4. sFlowでモニタリングしたいスイッチポートにサンプリング周期を設定します。これにはsflow sampling-rateコマンドを使います。
   ここではポート1.0.1にサンプリング周期1000を設定します。サンプリング周期を0以外に設定することによりそのポートでパケットフローサンプリングが動作可能となります。

       awplus(config)# interface port1.0.1
       awplus(config-if)# sflow sampling-rate 1000

5. sFlowでモニタリングしたいスイッチポートにポーリング間隔を設定します。これにはsflow polling-intervalコマンドを使います。
   ここではポート1.0.1にポーリング間隔30秒を設定します。ポーリング間隔を0以外に設定することによりそのポートでカウンターポーリングが動作可能となります。

       awplus(config-if)# sflow polling-interval 30

### sFlowコレクター

使用するsFlowコレクターにより設定方法は異なるため、使用するsFlowコレクターのマニュアル等を参考に設定してください。

## その他

Ethernetフレームの先頭何バイトをヘッダーサンプルとして使用するかは、ポートごとにsflow max-header-sizeコマンドで設定できます。初期設定は128バイトです。
sFlowエージェントに関する全体的な情報を表示するには、show sflowコマンドを使用します。
sFlowエージェントの各インターフェースに関する情報を表示するには、show sflow interfaceコマンドを使用します。