OpenFlowとネットワーク仮想化とSoftware-Defined Network。そしてネットワークOSの主導権争いが始まる
実はこれまでぼんやりとしか分かっていなかったOpenFlowとネットワーク仮想化とSoftware-Defined Network(ソフトウェアで定義されたネットワーク)の関係について、少し整理がついてきました。ここで簡単にまとめておきます。
「Software-Defined Network」というトレンド
ネットワーク業界でいま起きている大きなトレンドの名前が「Software-Defined Network」(SDN)です。これを推進する団体として、グーグル、マイクロソフト、Yahoo!、ドイツテレコム、ベライゾン、Facebookらが3月に「Open Networking Foudation」という団体を立ち上げています。
SDNとは、これまで個々のネットワーク機器に対するコンフィグレーションを行う形で行われていたネットワークの設定を、ネットワーク全体を1つのプラットフォームとみなして、ソフトウェアで制御してしまおうというもの。
Nick McKeown氏が講演に用いた以下のスライドが、そのコンセプトをよく表していると思います。
図の左がこれまでのネットワーク機器。ハードウェアの上に、シスコならIOS、ジュニパーならJUNOSと言ったベンダごとのOSが乗っています。この構造だと個々のネットワーク機器はソフトウェアで制御できるでしょうが、ネットワーク全体をソフトウェアで制御する構造にはなっていません。
それに対して右側がSDNのアーキテクチャ。ネットワーク全体を覆う「ネットワークOS」が、個々のネットワーク機器を隠蔽してしまっています。そしてネットワークOSに対してコマンドを入力したり、アプリケーションを開発したりすることで簡単にネットワーク全体を制御できる、ということになるわけです。
Packet Fowardingで示された個々のネットワーク機器とネットワークOSのあいだを結ぶのがOpenFlowプロトコルです。
この図で重要なのは、個々のネットワーク機器が抽象化され隠蔽されるおかげで、(個々のネットワーク機器を制御するのではなく)ネットワーク全体を制御するソフトウェアが容易に記述できる、という点でしょう。
SDNを実現する唯一のアーキテクチャがこれだ、というわけではないようですが、OpenFlowを用いた場合にはこのようなアーキテクチャになると。
OpenFlowはネットワークのハイパーバイザ
ネットワークOSの下で個々のネットワーク機器の抽象化を行う大事な役割を果たしているのがOpenFlowです。
ネットワークOSは、つねにOpenFlowプロトコルを通じてネットワーク機器に対して命令を行い結果を受け取ることになっているため、あえて例えるとすればネットワークの基本的な命令セットということになるでしょうか。CPUの命令セットに似ている気がします。
OpenFlowは、下位レイヤがどんなハードウェア(ネットワーク機器)であっても、上位レイヤには同一の命令セットを提供するという意味で、仮想化ハイパーバイザと非常に似た、ネットワークのハイパーバイザと呼ぶべき役割を果たしているともいえるでしょう。
ネットワーク仮想化はSDNのアプリケーションの1つ
では、ネットワーク仮想化とは何でしょうか。
サーバ仮想化が物理サーバの上に論理的なサーバを自由に再構築できることだとすると、ネットワーク仮想化も物理的なネットワークの上位レイヤに、論理的なネットワークを再構築できることだと定義できます。
具体的には、1台の物理サーバの上に、A社用の論理サーバ、B社用の論理サーバが分離されつつ同居できるように、1つのネットワークの上にA社用の論理ネットワーク、B社用の論理ネットワークなどが構築され、それぞれ違ったトポロジーやIPアドレスなどの構成を備えることが、仮想ネットワークを構築することだといえるでしょう。
もちろんこうした論理ネットワークの構築は、OpenFlowをベースにしたSDNで実現できます。実際、NTTデータが10月にOpenFlowとNTTデータで開発中のOpenFlowコントローラーを用いた実証実験として、論理ネットワークによるマルチテナントの構築に成功しています。
SDNでできるのは、こうした論理ネットワークの構築だけではありません、通常のルーティングプロトコルなどはもちろんのこと、Nick McKeown氏の講演では、SDNを用いてキャンパスレベルでのロードバランスを実現していましたし、ACLの設定やファイアウォール、そしていままでなかった新しいネットワークサービスなど、SDNではソフトウェアによってさまざまな機能を実現できるわけです。
つまり、ネットワークの仮想化というのは、SDNでできることの1つでしかない、ネットワークOS上の1つのアプリケーションでしかない、ということになります。
まとめると、SDNによってネットワーク全体がプログラミング可能になり、ネットワーク仮想化はそのアプリケーションの1つである。そして、OpenFlowはプログラミングを実現するネットワークOSを支える基本的な命令セットであると。
ネットワークOSの主導権争いが始まる
ここまで考えると次に気になるのが、ネットワークOSの存在です。
SDNのプログラミングはネットワークOSを基盤にする、つまりネットワークOSのAPIに依存するわけですから、ネットワークOSを支配することは、SDNの時代のネットワークで主導権を握ることになります。
マイクロソフトがWindowsで成功し、VMwareがESXで成功したように、ネットワーク市場でもネットワークOSで成功する企業が現れるはずです。
現在、ネットワークOSすなわちOpenFlowコントローラでもっとも有名なのは「NOX」と呼ばれるオープンソースソフトウェアですが、 サーバOSにLinuxやWindowsやSolarisがあるように、ネットワークOSにもオープンソースやプロプライエタリなどもが複数登場することでしょう。
今月インタビューに成功したNicira Networksや、4月にインタビューしたミドクラなどのベンチャー企業は、いちはやくこの分野に取り組んでネットワークOSの主導権を握ろうとしているに違いありません。さらにネットワークOSはOpenStackのようなクラウド基盤ソフトウェアとの連係も重要ですので、このあたりの動向も見逃せません(まだそこまでウォッチしきれていませんが……)
長くなってきたのでこの話の続きはまた別の機会に書こうと思いますが、今後はネットワークOS(≒OpenFlowコントローラ)の覇権をめぐってベンチャーから大企業までさまざまな企業や組織が主導権争いを繰り広げることになるでしょう。どこが主導権を握るかによって、ネットワーク市場はがらりと様相が変わる可能性を秘めています。