いま盛んに議論されているSDNあるいは仮想ネットワークは、おおまかに言うと3種類のコンポーネントからなる。仮想ネットワークの構成要素であるスイッチと、その経路制御などを担う制御機構、そして仮想ネットワーク上にクラウドを構成するための「クラウドコントローラー」である。代表的なものに、オープンソースの仮想スイッチ「Open vSwitch」、経路制御機構の「OpenFlowコントローラー」、そしてクラウドコントローラーの「OpenStack」がある。
OpenFlowは、ネットワーク仮想化の基盤として最も重要視されている技術。OpenStackは2010年7月に米国大手クラウド事業者のラックスペース(RackSpace)とNASA(米航空宇宙局)により開始されたIaaS相当の機能を提供するオープンソースのクラウド基盤開発プロジェクトで、ネットワーク機器ベンダーなども多数参加している注目の組織である。このOpenStackで開発されたクラウドコントローラーにOpenFlowを組み合わせることで、ユーザーからの指示で点在するスイッチを論理的につなぎ合わせ、仮想ネットワークを作り上げることができるようになる。
これらは今、ネットワーク仮想化のけん引役とも言える。そこで本パートでは、OpenFlowとOpenStackについて解説する。
OpenFlowはルールとアクションで経路制御
OpenFlowは、2007年にスタンフォード大学で学術用のネットワーク技術として開発が始まった。現在はOpen Networking Foundation(ONF)で標準化を進めている。
基本的な発想では、集中制御を行うコントローラーが、OpenFlow仕様に準拠するスイッチに対してプログラムを配布し、各スイッチがそのプログラムに基づいて動作する(図3)。厳密には、コントローラーからスイッチ内のフローテーブルを書き換える。
OpenFlowによる制御は、このフローテーブルで管理する「ルール」と「アクション」の組み合わせで指定する。ルールは処理対象とするパケットを特定するもので、TCPポート80番のパケットなど、レイヤー1(L1)からレイヤー4(L4)のヘッダー内容を条件として指定できる。
アクションはルールに合致したパケットに対し行う動作を規定するもので、他ポートへの転送や、ヘッダー書き換え、破棄などを指定できる。これにより、特定のポート番号に到着したパケットは破棄するといった処理を記述できる。
見方を変えると、コントローラーからスイッチに単純なプログラムを配布するだけで、スイッチを目的に応じて、ルーターやファイアウォール、ロードバランサーに変化させられる。フローの設定次第で、ユーザーごと、アプリケーションごとに独立した仮想ネットワークも実現できる。この柔軟性がOpenFlowが着目されている一つの理由と言える。