OpenFlowのフローテーブル

フローという考え方

OpenFlowでいう「フロー」とは、以下の例のように、同じルールを持つ通信の集合体のことをフローといいます。

  • 宛先ポート番号がTCPの80番の通信
  • 宛先MACアドレスがxx:xx:xx:xx:xxの通信
  • 宛先IPアドレスがxx.xx.xx.xxの通信

OpenFlowコントローラは、管理者が定義したフローをOpenFlowスイッチに指示することで、OpenFlowスイッチは「フローエントリ」として内部に保存します。

このフローエントリは、有効期限の間 OpenFlowスイッチ内で保存され、OpenFlowスイッチはこのフローエントリを参照して、フレーム/パケットを処理します。

この時に、受信したフレームがフローテーブルのルールにマッチしない場合、OpenFlowコントローラに問い合わせます。

OpenFlowコントローラはどのように処理するかを決定して、結果をメッセージとしてOpenFlowスイッチに送信します。

メッセージを受信したOpenFlowスイッチは、指示に従ってフレームを処理します。

フローテーブル

OpenFlowスイッチが保持するフローテーブルは、OpenFlowスイッチがフレームを転送する際に参照されます。

そういう意味でもフローテーブルは、従来のルーティングテーブルやアドレステーブルと同様の役割をします。

また、フローテーブルに保存される情報は、データ転送の「条件」とその条件にマッチした時の「動作条件」がセットで保持されます。

この「どういったパケット(Match)を、どう処理する(Instruction)というルール」を「フローエントリ」と呼び、フローエントリの集合のことを「フローテーブル」と呼んでいます。

フローテーブルの構成

フローテーブルの構成は、先ほど説明した「マッチ条件(Match)」と「動作条件(Instruction)」の他に、いくつかのオプションがあります。

フローテーブル

  • Match Field
    Match Fieldsは、このフローエントリがどのようなフローを識別するのかの条件。
    OpenFlowでは、ヘッダに含まれる情報を条件に用いることが出来ます。
  • Priority
    フローエントリごとの優先度で、優先度の高いフローエントリから適用される。
  • Counters
    マッチしたパケットに関する統計情報
  • Instruction
    Match Fieldにマッチしたフレームに対して行う処理
  • Timeouts
    フローエントリごとの保持時間で、この時間を過ぎるとフローエントリが削除される。
  • Cookie
    コントローラが使用する情報

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: