OpenFlowのアーキテクチャと仕様・機能

2012年2月9日(木)
前田 繁章

2.2 OpenFlowプロトコル詳細

OpenFlowプロトコルに従ってやり取りされるメッセージを列挙すると以下の表のようになります。

図4:OpenFlowプロトコルに従ってやり取りされるメッセージ(クリックで拡大)

ここではそのうち利用頻度の高いもの、OpenFlowスイッチのふるまいに大きな影響を与えるものについて詳しく説明していきます。

2.2.1 コントローラからスイッチへのメッセージ

・Flow- Mod
OpenFlowスイッチで記述されているフローを書き換えたい場合にコントローラからスイッチに対して送信するメッセージです。新しくOpenFlowスイッチにフローを追加する場合もこのFlow Modメッセージが用いられます。
OpenFlowスイッチのフローテーブルのフローを修正、追加する際にはフローのデータのうちヘッダフィールドおよびアクションを指定します。つまり、マッチングに用いるためのヘッダフィールドおよび、ヘッダフィールドが一致した際にどのように処理するかを記述したアクションをセットにして、コントローラからスイッチに送信します。
・Packet-Out
OpenFlowスイッチからパケットを送出させるために、コントローラからスイッチに対して送信するメッセージです。この際、スイッチのどのポートからどのようなパケットを送出させるかについてはOpenFlowコントローラにて自由に指定することができます。例えば、コントローラにてLLDPパケットを生成しOpenFlowスイッチの全ポートからパケットを送出するといったことが可能になります。
・Statics-Request
OpenFlowスイッチに置いて管理されている統計情報の取得をするためのメッセージです。統計情報としては、フロー単位・ポート単位などの単位でパケット数・バイト数などの情報を取得することができます。また、OpenFlowスイッチのフローテーブルで管理されているフロー数などもこのメッセージを送ることで取得することが可能です。これらの情報は後述するStatics-Replyメッセージでコントローラに通知されます。

2.2.2 スイッチからコントローラへのメッセージ

・Packet-In
OpenFlowスイッチからコントローラに対して、パケットを受信したことを通知するメッセージです。例えば、スイッチは、未知のパケット(どのフローのヘッダフィールドにも一致しなかった場合)を受け取った時に、このメッセージを用いてコントローラに対してそのパケットを通知します。コントローラは通知の内容を解析し、ふるまいを決定します(一般的には、コントローラ側ではそのパケットの内容を判断したうえで、スイッチに対してFlow-ModやPacket-Outといったメッセージを送信します)。
・Statics-Reply
OpenFlowコントローラからのStatics-Request要求(前述の通り)に対して、その統計情報を応答するメッセージです。
株式会社NTTデータ 技術開発本部

入社以来、IT基盤分野の技術開発に従事。これまで、RFIDプラットフォーム開発、NGN接続連携プラットフォーム開発などを行う。現在は、OpenFlowコントローラの開発を主とし、OpenFlowを活用した新規サービスの検討および開発に取り組んでいる。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています