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

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

4.2 OpenFlow ver1.1の活用例

OpenFlow ver1.1で新たに追加された機能を活用した例として、LAN環境から広域網までを一括で管理して経路を制御する場合を紹介します。

図2:OpenFlow ver1.1を追加された機能を活用した構成例

なお、各サーバー、クライアント端末のMACアドレスおよびIPアドレスが以下のようになっているものと仮定します。

図3:各サーバー、クライアント端末のMACアドレスとIPアドレス

この例においては、エンドユーザー側のクライアント端末に応じて接続先のデータセンターを切り替えて通信することが可能になります。ここでは、OpenFlowコントローラからOpenFlowスイッチのフローテーブルおよびグループテーブルに対して、下図のような情報が書き込まれているものとして説明します。説明を簡単にするため、インストラクションとしては「アクションの追加」のみ記述されているものとします。

図4:OpenFlowコントローラから、OpenFlowスイッチのフローテーブルとグループテーブルに対して書き込まれている情報(クリックで拡大)

なお、これらの情報はあらかじめOpenFlowスイッチからコントローラに接続した際に書き込んでも良いです(Proactive型と呼ばれます)し、Packet-Inとしてスイッチからコントローラに対して問い合わせがあった際の回答として書き込んでも良いです(Reactive型と呼ばれます)。

このような場合に、クライアントAおよびクライアントBから宛先IPアドレスが192.168.0.10、宛先MACアドレスがeのパケットを送信した場合を考えます。

クライアントAからパケットを送出した場合

  • (1)OpenFlowスイッチ1は、フローテーブル0を検索する。その結果、宛先IPアドレスが192.168.0.10であるためMPLSラベル100を付与しパケットをport3から送出する(OpenFlowスイッチ2に届く)。
  • (2)OpenFlow スイッチ2は、フローテーブル0を検索する。その結果、グループgの処理をするものと判断する。そこでグループテーブルを検索する。その結果、グループgの処理として記述されているとおりport2もしくはport3からパケットを送出する(OpenFlowスイッチ3もしくは4に届く)。この時の転送先はOpenFlowコントローラに問い合わせることなくOpenFlowスイッチが自身で決定する(負荷分散)。
  • (3)
    OpenFlowスイッチ3は、フローテーブル0を検索する。その結果、MPLSラベルが100であるためパケットをport2から送出する。(OpenFlowスイッチ5に届く)。

    OpenFlowスイッチ4は、フローテーブル0を検索する。その結果、MPLSラベルが100であるためパケットをport2から送出する。(OpenFlowスイッチ5に届く)。
  • (4)OpenFlowスイッチ5は、フローテーブル0、1を順に検索する。その結果、MPLSラベルが100かつ送信元MACアドレスがaであるため、MPLSラベルを削除してパケットをport3から送出する(OpenFlowスイッチ6に届く)。
  • (5)OpenFlowスイッチ6はフローテーブル0を検索する。その結果、宛先IPアドレスが192.168.0.10であるため宛先MACアドレスをcに書き換えたパケットをport2から送出する(サーバーCに届く)。

クライアントBからパケットを送出した場合(1から3は上記と同様)

  • (4')OpenFlowスイッチ5は、フローテーブル0、1を順に検索する。その結果、MPLSラベルが100かつ送信元MACアドレスがbであるため、MPLSラベルを削除してパケットをport4から送出する(OpenFlowスイッチ7に届く)。
  • (5')OpenFlowスイッチ7はフローテーブル0を検索する。その結果、宛先IPアドレスが192.168.0.10であるため宛先MACアドレスをdに書き換えたパケットをport2から送出する(サーバーDに届く)。

このように、宛先IPアドレスが同じでも、異なるサーバーに転送することが可能です(なお、この点についてはOpenFlow ver1.0でも可能です)。このように送信元MACアドレスが違うだけでも、宛先を自由に振り分けられるのがOpenFlowの特徴だと言えます。

今回の例ではさらに、OpenFlow ver1.1を利用したことで以下の3点の特徴があります。

・負荷分散の実現
上記の動作2において、同じパケット(マッチングに用いられる要素が同一)であってもOpenFlowスイッチが振り分けを行います。このことで複数経路への負荷の分散が行えます。
・MPLSを使ったスイッチング
上記の動作1から3の処理においては、MPLSのラベリングおよびMPLSラベルのみを利用した経路制御を行っています。これによりスイッチでのマッチング処理の負荷が減り高速な伝送が期待できます。
・複数フローテーブルの活用
上記の動作4および4’の処理においては複数のフローテーブルの処理を順に行っています。フローテーブル0でMPLSに関するマッチング処理を行い、その後フローテーブル1で送信元MACアドレスベースのマッチング処理を行っています。このように、別々のテーブルに分けることでフロー数を抑えることができるようになります。
株式会社NTTデータ 技術開発本部

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

連載バックナンバー

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

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

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

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