フローの構成要素の一つに統計情報があります。統計情報はスイッチに実装されたカウンタの一種で、パケットの転送数やエラー数などを数えてくれます。コントローラはこのカウンタの値を使うことによってたとえば、
- ネットワーク情報の可視化
- エラーの通知や警告、予測
- トラフィックの大小に応じたユーザごとの帯域制御
- トラフィックの傾向に応じた転送パスの切り替えやスイッチの ON/OFF 制御
などを行うことができます。
統計情報の利用例
ひとつ具体的な実装例をお見せしましょう。Trema のサンプルアプリケーションのひとつ、トラフィックモニタがこの統計情報を利用しています。これは、普通のレイヤ 2 スイッチとして動作しますが、ユーザごと (MAC アドレスごと) の転送パケット数とバイト数を統計情報を利用して表示してくれます。
トラフィックモニタの実行例は次のようになります。パケットを送信したホストの MAC アドレスごとに、スイッチが転送したパケットの数とバイト数を定期的に更新して表示します。
% cd src/examples/traffic_monitor/ % trema run ./traffic-monitor.rb -c ./traffic-monitor.conf …… 00:00:00:00:00:01 10 packets (640 bytes) …… 00:00:00:00:00:02 10 packets (640 bytes) ……
トラフィックモニタのソースコードはこちらになります。統計情報の利用例として参考にしてみてください。
カウンタの種類
OpenFlow 1.0 ではカウンタはスイッチの次の 4 箇所にセットされています。取得したい情報の種類や粒度に応じて使い分けることができます。
- フローテーブルごと
- フローごと
- ポートごと
- キューごと
少し細かいですが、以下にそれぞれで定義されている統計情報をまとめます。
フローテーブルごと
- 有効なエントリの数
- パケットのルックアップ数
- パケットのマッチ数
フローごと
- 受信パケット数
- 受信バイト数
- フローが作られてからの経過時間 (秒)
- フローが作られてからの経過時間 (ナノ秒)
ポートごと
- 受信パケット数
- 転送パケット数
- 受信バイト数
- 転送バイト数
- 受信ドロップ数
- 転送ドロップ数
- 受信エラー数
- 転送エラー数
- フレームアライメントエラー数
- 受信オーバーランエラー数
- 受信 CRC エラー数
- コリジョン数
キューごと
- 転送パケット数
- 転送バイト数
- 転送オーバーランエラー数
まとめ
フローの統計情報の中身と、利用例を紹介しました。スイッチからのフィードバック情報である統計情報をうまく使うことによって、ネットワークの制御や可視化の精度を上げることができます。