OpenFlowの本質は「プログラマブルであること」
ネットワークの新しいスイッチングアーキテクチャとして登場した「OpenFlow」。ネットワークの分野で注目されている技術の1つです。なぜOpenFlowが注目されているのでしょうか?
OpenFlowの本質は「プログラマブルであること」
先週行われた「オープンクラウドキャンパス」では、OpenFlowについて現在取り組んでいるさまざまな企業、NTTデータ、NEC、ミドクラ、シトリックスなどから発表があったのですが、その最後の質疑応答で次のような質問がありました。
会場 「フローベースのネットワーク制御は、例えばMPLSなどでも可能だと思うのですが、なぜOpenFlowなのでしょうか?」
NECの岩田淳氏がこの質問に次のように答えています。
岩田氏 「OpenFlowの本質は『プログラマブルであること』なんです」
OpenFlowがなぜ重要なのか、なぜクラウドの時代にOpenFlowが開発され注目されているのか、この岩田氏の答えは文字通り本質を突いた指摘だと思います。
この質疑応答ではこれ以上詳しい説明はなかったのですが、プログラマブルなことがなぜ重要なのか、岩田氏の回答から理解した自分なりの解釈を少し書こうと思います。
その前に、少しだけOpenFlowの概略を紹介しておきましょう。
OpenFlowの簡単な概略
OpenFlowは「OpenFlowスイッチ」「OpenFlowコントローラ」の2つから構成され、そのあいだを「OpenFlowプロトコル」がつないでいます。いままでのネットワーク機器は一般にスイッチ部分とコントローラが一体化していましたから、ここが分かれたのがOpenFlowの最大の特徴といえます。
OpenFlowスイッチは、あらかじめコントローラが生成したフローテーブルに従って実際のパケットのスイッチを行います。フローテーブルは、前述のようにスイッチのポートや送信元MACアドレス、VLAN ID、宛先IPアドレスなど12種類の情報(OpenFlow 1.1では15種類になるそうです)を組み合わせて定義できます。
こうしたさまざまな情報(Tuple:タプルと呼ばれます)を組み合わせた制御によってOpenFlowスイッチは、レイヤ2スイッチやルータ、ロードバランサ、ファイアウォールなどさまざまな振る舞いが可能になります。また、どんなパケットがどこをどれだけ通ったか、といった統計情報も持っているため、統計情報に合わせた状態の変更も可能です。
OpenFlowでスイッチをプログラムする
OpenFlowがプログラマブルである、という意味の1つ目は、多くのタプルとルールを組み合わせてさまざまなネットワーク機器を単一のアーキテクチャで実現できる点です。
ネットワークを構築するには、ルータ、ロードバランサー、ファイアウォール、スイッチなどの多様なネットワーク機器が必要です。それがOpenFlowスイッチを用意してOpenFlowコントローラでその機器の動作をプログラムすれば、OpenFlowスイッチがルータにもスイッチにもロードバランサーにも、そのほかさまざまなネットワーク機器に変身します。
これまでできなかったようなループやメッシュ状のトポロジーネットワークに対応した機器にもなるわけですし、同じIPアドレスでもポートの違いを見て、DNS宛て、SMTP宛て、Web宛てにトラフィックを振り分けるといったスイッチにもなります(これはNTTデータ 樋口晋也氏によるソフトウェアデザイン誌 2011年5月号の記事「こんな夜にOpenFlowでネットワークをプログラミング!」に掲載されていた例)。
OpenFlowでは、これまで機能別に用意しなければならなかったさまざまなネットワーク機器の機能を、OpenFlowに対応した単一のアーキテクチャに乗っ取った機器を調達し、プログラミングすることで、さまざまな機能を持った機器に変身させられるのです。調達と運用がずっとシンプルになると予想されます。
OpenFlowスイッチはソフトウェアでも実現できます。オープンソースで開発されている「Open vSwitch」は、XenやKVMなどのハイパーバイザ上で動作する仮想スイッチアプライアンスでOpenFlowにも対応しています。オープンソースのOpenFlowコントローラも「NOX」や「Trema」などがあります。
OpenFlowでネットワーク全体をプログラミングする
OpenFlowがプログラマブルである、というもう1つの意味は、ネットワークそのものをプログラミングできる、という点です。
例えば、クラウド内で仮想マシンを1つ生成したとします。すると、そのサーバ向けにトラフィックを分配するルータ、ファイアウォール、スイッチなども新たに設定しなければなりません。その後、もしもその仮想サーバがライブマイグレーションで別の物理サーバへ移動したら、それに合わせてネットワーク機器も設定を変更しなければなりません。
OpenFlowでは、ルータやファイアウォール、スイッチなどの役割を果たしている複数のOpenFlowスイッチに向けて、OpenFlowコントローラからこうした設定を一括で動的に変更できるため、ネットワーク全体のトラフィックの流れをプログラミングできるようになります。
ロードバランスなども、サーバ側から「ちょっと負荷があがってきたのでトラフィックを減らして」とか「まだまだ処理できる」といった状態をOpenFlowコントローラに伝えれば、そこからサーバの前段のルータやスイッチにすぐに反映できるでしょう。
サーバの状態やトラフィックの状態に合わせてネットワーク全体を動的に組み替えることも可能ですから、これまで想像もできなかったような新たなアプリケーションが登場するかもしれません。
サーバとネットワークが動的に連係する
いままでサーバの状態とネットワークの状態を連係させることはそれほど簡単ではありませんでした。一般にはルータやVLAN、ファイアウォールなどの設定をコンソールなどから手動で変更していたケースが多いでしょう。
しかしサーバが仮想化し、ネットワーク上の物理的な位置が流動的になれば、ネットワークもそれに合わせて動的に変わって行かなくてはなりません。クラウドになれば、それがさらに大規模に行われることになるわけです。
OpenFlowはネットワークを「プログラマブル」にすることで、そうしたことを実現するための標準的な環境を実現しようとしています。クラウド時代のネットワークにはこうした標準技術が不可欠で、だからこそネットワーク分野で注目される技術の1つなのだと考えています。
OpenFlowの解説動画
「オープンクラウドキャンパス」で行われたセミナーの内容が公開されています。主なセッションを2つ貼っておきます。
あわせて読みたい
「仮想ネットワーク」をソフトウェアで構築し、クラウドを越えた仮想マシンの移動に成功。NTT
≪前の記事
2011年7月の人気記事「IT系上場企業の平均給与は?」「まつもとゆきひろ氏がHerokuのチーフアーキテクト就任」「ストレージにおける破壊的テクノロジー」