# 運用・管理 / sFlow

## 概要

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

sFlowはAT-AR4050S、AT-AR4050S-5Gでのみサポートです。AT-AR3050Sでは使用できません。

Note

IPv4/IPv6パケットのサンプリングはファイアウォール処理の前に実行されるため、実際には破棄されるパケットもサンプリングされることがあります。この仕様は送受信両方に当てはまります。

Note

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

## サンプリング

sFlowではパケットフローサンプリングとカウンターサンプリング（カウンターポーリング）の2種類のサンプリング方式を用いてトラフィック情報を収集します。

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

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

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

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

- Generic Interface Counters
  - ifIndex
  - ifType
  - ifSpeed
  - ifDirection（ethインターフェースでのみサポート）
  - ifStatus
  - ifPromiscuousMode
  - ifInOctets = counters.good_octets_rcv + counters.bad_octets_rcv
  - ifInUcastPkts
  - ifInMulticastPkts
  - ifInBroadcastPkts
  - ifInErrors
  - ifOutOctets
  - ifOutUcastPkts
  - ifOutMulticastPkts
  - ifOutBroadcastPkts
  - ifOutErrors
- Ethernet Interface Counters（ethインターフェースでのみサポート）
  - dot3StatsFCSErrors
  - dot3StatsMultipleCollisionFrames
  - dot3StatsLateCollisions
  - dot3StatsExcessiveCollisions
  - dot3StatsInternalMacTransmitErrors
  - dot3StatsFrameTooLongs
  - dot3StatsInternalMacReceiveErrors

## 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
本製品ではL3インターフェースごとに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エージェントである本製品のL3インターフェースeth1に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でモニタリングしたいL3インターフェースにサンプリング周期を設定します。これにはsflow sampling-rateコマンドを使います。
   ここではeth1インターフェースにサンプリング周期1000を設定します。サンプリング周期を0以外に設定することによりそのインターフェースでパケットフローサンプリングが動作可能となります。

       awplus(config)# interface eth1
       awplus(config-if)# sflow sampling-rate 1000

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

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

### sFlowコレクター

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

## その他

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