OpenFlow ver1.1およびver1.2の追加機能と活用例

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

前回までは、OpenFlow ver1.0をベースにして、プロトコルで規定されている仕様、およびその仕様に沿った使い方、活用事例を紹介しました。最終回である今回は、OpenFlow ver1.1およびver1.2の仕様の内容に言及するとともに、それによって新たに実現できる活用例を紹介します。

4.1 OpenFlow ver 1.1の追加機能

OpenFlow ver 1.1 では表のような機能が追加されています。その内容について、特に大きなものを中心に見ていきます。

図1:OpenFlow ver1.1で追加された機能

4.1.1 複数テーブル

OpenFlow ver1.1では、OpenFlowスイッチが単一のテーブルではなく複数のテーブルを持つ場合を想定しており、複数テーブル間の処理(パイプライン処理と呼ばれます)も規定されています。また、グループテーブルと呼ばれる特殊なテーブルも定義されています(グループについては後述)。複数のテーブルを持つ場合に、OpenFlowスイッチがパケット受信した時の処理は以下のようになります。

  1. OpenFlowスイッチがパケットを受信する。
  2. テーブル0に遷移する。
  3. そのテーブルに記述されているマッチングルール(OpenFlow ver1.0の用語ではヘッダフィールドと定義されていましたがOpenFlow ver1.1の正式な用語としてはマッチフィールドとして定義されます)を検索する。
  4. 一致するものがあれば、記述されているインストラクション(「アクションの追加」、「アクションの削除」、「別のテーブルへ遷移」など)に沿った処理を行う
  5. 次のテーブル(テーブル1)に遷移する
  6. 上記の3~5をテーブル2、3、・・・という風に、OpenFlowスイッチで保持されているテーブルの上限まで繰り返す
  7. 各テーブルでの処理によって完成したアクションを実行する

アクションとしては、OpenFlow ver1.0と同様にパケットを転送する、パケットを破棄する、フィールドの値を書き換えるなどの記述が可能です。加えて、ver 1.1 ではTTLの値を変える、VLANやMPLSのTagを追加・削除するなどの記述もできるようになっています。また、アクションとして「グループ処理を行う」と記述することで、グループテーブルで定義されたグループ処理を行うことができるようになります。

複数テーブルに対応することで、マッチングルールの記述に意味を持たせやすくなります。例えば、テーブル0ではVLAN IDを見て処理を決定し、テーブル1では宛先MACアドレスを見て処理を決定するといったことができます。

スイッチの実装の面から言えば、OpenFlowスイッチで管理するフロー数が少なくなる、スイッチのTCAMを有効活用できるなどのメリットがあります。また、コントローラを開発する立場から見ると、QoSのみを考慮した処理・ルーティングのみを考慮した処理を個別に実装し、それをあとから組み合わせるなどが行いやすくなります。

4.1.2 グループ

OpenFlow ver1.1においては、グループという概念を用いて複数のポートをグループ化して処理を定義することが可能です。これにより、OpenFlowコントローラからに毎回問い合わせを行わなくても、OpenFlowスイッチが能動的に動作することで、複数経路を実現したり、マルチキャストを実現したりすることができるようになります。このためのグループのタイプとして、以下の4つが定義されています。

・all
グループとして定義されているポートの、すべてのポートからパケットを送出します。マルチキャストやブロードキャストを実現するために用いられます。
・select
グループとして定義されているポートのうち、一つのポートを選択してパケットを送出します。同じマッチングルールを持つパケットの場合でも、その都度ポートを選択することになりますので経路の負荷分散が可能になります。
・indirect
グループとして定義されている、特定の一つのポートからパケットを送出します。これによりわざわざポートを直接指定するのではなく、グループという枠組みの中でポートを扱うことが可能になります。特定のポートを利用する場合でもそれを一つのグループとみなすことで、一つのポートに対する処理も複数のポートに対する処理もグループによる処理として同じように実装できるようになります。
・fast failover
グループとして定義されているポートのうち、特定のポートを選択してパケットを送出します。そのポートが利用不可能な時(リンクダウン時等)は、グループ内の別のポートからパケットを送出します。これにより、コントローラに逐一問い合わせを行うことなくフェールオーバー(経路の迂回)が実現できます。

どんなグループがあり、そのタイプは上記のどれか、といった情報は、OpenFlowスイッチのグループテーブルで管理されます。

4.1.3 MPLS

OpenFlow ver1.1では、MPLSプロトコルに新たに対応しています。パケットのマッチングにMPLSのラベルを利用できるほか、MPLSタグの追加、修正、削除も行うことが可能です。これにより、データセンター内やキャンパスネットワークといったLANを中心とした活用だけでなく、広域網など、WAN分野での活用も今後広がっていくと考えられます。

株式会社NTTデータ 技術開発本部

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

連載バックナンバー

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

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

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

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