sFlowエージェントが送信したsFlowパケットは,sFlowコレクタが受信します。しかし,sFlowパケットを受信しただけでは,トラフィックに関する情報はほとんど解析できません。第2部で解説したRMONの場合には,取得したRMON MIBの情報だけである程度のトラフィック解析ができたのと大きく違っています。sFlowコレクタは,sFlowパケットを解析してカウンタ・サンプルとヘッダー・サンプルを取り出し, それぞれを処理します(図7)。

図7●sFlowコレクタ側での処理フロー
図7●sFlowコレクタ側での処理フロー

sFlowパケットの解析

 sFlowコレクタは,まず受信したsFlowパケットの先頭にあるsFlowヘッダーを調べ,バージョン番号などを取得します。続いて,バージョン番号やサンプル・データ数の情報を基に適切なデコードを行います。このとき,sFlowコレクタは,拡張された未知のデータや処理に対応していないデータがあった場合,そのデータを読み飛ばすようにします。そうしないと,そのデータのあとに処理すべきデータがあっても処理できない状況に陥ってしまいます。

カウンタ・サンプルの処理

 カウンタ・サンプルには,モニターしているポートごとの通信量の情報が含まれています。これは,統計的解析のための基準になるデータなので,取得したデータを保存しておきます。また,周期的に送信されてくるデータとの差分から,その期間のトラフィック量を測定することができます。

 例えば,ある時点で受信したカウンタ・サンプルでは,あるポートの受信バイト数が1万バイトで,次に60秒後に受信した同じポートの受信バイト数が7万バイトだった場合,60秒間に7万-1万=6万バイトを受信したことになります。つまり,1000バイト/秒=8Kビット/秒のトラフィック量であると計算できます。このような方法で,トラフィック量をグラフ表示できます(図8)。

図8●統計処理結果のグラフ表示例
図8●統計処理結果のグラフ表示例  [画像のクリックで拡大表示]