OpenFlowプロトコルのシーケンス

OpenFlowプロトコルは、メッセージのやり取りを行うシーケンスを規定しています。

OpenFlowコントローラとOpenFlowスイッチ間のコネクション確立

OpenFlowコントローラとOpenFlowスイッチ間のコネクション確立

コネクションが確立したら、OpenFlowコントローラ、OpenFlowスイッチともに双方で「HELLOメッセージ」を送信します。

メッセージには、パラメータとしてOpenFlowのバージョン情報などが交換されます。

Helloメッセージの交換が終了したら、OpenFlowコントローラからOpenFlowスイッチに対して「FEATURES_REQUESTメッセージ」を送信します。

FEATURESメッセージは、OpenFlowスイッチの機能や特徴の問い合わせに使用するメッセージです。

FEATURES_REQUESTメッセージを受信したOpenFlowスイッチは、OpenFlowコントローラに対してFEATURES_REPLYを返信します。

以上のやり取りを行うことで、OpenFlowコネクションが確立し,新規にOpenFlowスイッチが検出されたと判断されます。

フローエントリー設定のシーケンス

OpenFlowコントローラからOpenFlowスイッチへ、フローエントリーをインストールする場合のシーケンスを見てみましょう。

OpenFlowコントローラからOpenFlowコントローラへ、フローエントリーをインストールする場合、OpenFlowコントローラからフローエントリーの変更メッセージ(Flow ModifyやModify Flow Entryメッセージ)を送信します。

フローエントリー設定のシーケンス

未知のパケットを受信した場合

OpenFlowスイッチのフローテーブル内に受信データと合致するフローエントリーがないときは、その都度OpenFlowコントローラに処理方法を聞くという動作になります。

未知のパケットを受信した場合

未知のパケットを受信したOpenFlowスイッチは、受信したデータを自身のバッファに格納し、Packet-inメッセージをOpenFlowコントローラに送信して、データの処理方法を問い合わせます。

OpenFlowコントローラは仕様に従って、データを転送するか破棄するかを選択し、OpenFlowスイッチにフローエントリー変更メッセージを返信します。

通常、フローエントリー変更メッセージ(Flow ModifyやModify Flow Entryメッセージ)は、フローエントリーを更新するためのメッセージで、バッファに格納されたデータを転送する処理を指示しているわけではありません。

追加されたフローエントリーは次のデータ処理のときに利用されることになります。

そのため、OpenFlowコントローラはバッファに格納されたデータの転送処理を指示するために、Packet_outメッセージを送信します。

関連記事

メールマガジン

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

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

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

もちろん無料です!!

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

メールアドレス: