OpenFlowの本質は「プログラマブルであること」

2011年8月8日

ネットワークの新しいスイッチングアーキテクチャとして登場した「OpenFlow」。ネットワークの分野で注目されている技術の1つです。なぜOpenFlowが注目されているのでしょうか?

OpenFlowの本質は「プログラマブルであること」

先週行われた「オープンクラウドキャンパス」では、OpenFlowについて現在取り組んでいるさまざまな企業、NTTデータ、NEC、ミドクラ、シトリックスなどから発表があったのですが、その最後の質疑応答で次のような質問がありました。

会場 「フローベースのネットワーク制御は、例えばMPLSなどでも可能だと思うのですが、なぜOpenFlowなのでしょうか?」

NECの岩田淳氏がこの質問に次のように答えています。

岩田氏 「OpenFlowの本質は『プログラマブルであること』なんです」

OpenFlowがなぜ重要なのか、なぜクラウドの時代にOpenFlowが開発され注目されているのか、この岩田氏の答えは文字通り本質を突いた指摘だと思います。

この質疑応答ではこれ以上詳しい説明はなかったのですが、プログラマブルなことがなぜ重要なのか、岩田氏の回答から理解した自分なりの解釈を少し書こうと思います。

その前に、少しだけOpenFlowの概略を紹介しておきましょう。

OpenFlowの簡単な概略

fig

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つ貼っておきます。


Video streaming by Ustream


Video streaming by Ustream

あわせて読みたい

ハードウェア 仮想化 OpenFlow ネットワーク




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本