こんな夜中にOpenFlowでネットワークをプログラミング!

第2回 ネットワークアーキテクチャを一変させるOpenFlowのパケット制御技術

この記事を読むのに必要な時間:およそ 4.5 分

システムを見える化する

OpenFlowではすべてのパケットの制御をOpenFlowコントローラが行います。それはつまり,OpenFlowコントローラから情報を収集すれば,すべてのパケットの動きを見える化できるということです。

仮想化され,故障に備えて多重化されたシステムでは,パケットがどのスイッチを経由して転送されているのか把握することが困難です。しかし,OpenFlowであればパケットの経路をGUI上に表示することも可能です。また,OpenFlowスイッチにはトラフィックなどの統計情報が随時蓄えられるため,OpenFlowコントローラで各OpenFlowスイッチの統計情報を吸い上げ,GUIで表示することも可能です。また,トラフィックが多い通信を他の通信とは異なる経路も設定できます。

新しいネットワークアーキテクチャ

OpenFlowを利用するとルータ機能やロードバランサ機能を仮想的に実現できると説明しましたが,実はDHCP機能や監視機能も実現できます。

制御方式3(図3)で説明したとおり,OpenFlowコントローラは受信したパケットのあらゆる個所を書き換えることができます。つまり,サーバから送信されたDHCPリクエストを制御方式3の要領でOpenFlowコントローラに転送し,OpenFlowコントローラからサーバに対してDHCPレスポンスを返すようにコントローラを実装すれば,OpenFlowによりDHCPサーバを実現できてしまいます。OpenFlowを用いているので,DHCPサーバを各L2セグメントに配置する必要はありません。DHCPリレーエージェントも必要ありません。共通基盤上にDHCPサーバ機能を実装したOpenFlowコントローラが1つあれば,すべてのサーバにIPアドレスを払い出すことができます。

また,OpenFlowコントローラは任意のパケットをコントローラ独自の判断でサーバに向けて送信することも可能です。つまり,Pingによる監視機能やHTTP監視機能をOpenFlowコントローラに実装できます。

これまでの仮想化技術では,ロードバランサソフトやルータソフトをインストールした仮想マシンをテナントごとに用意するのが一般的でした注7⁠。また,⁠ロードバランサ用の仮想マシン」⁠ファイアウォール用の仮想マシン」のように機能ごとに仮想マシンを分離するのが一般的です。しかし,OpenFlowではロードバランサやファイアウォールのために仮想マシンを用意する必要はありません。すべては,OpenFlowスイッチによるパケット書き換えと,OpenFlowコントローラによるパケット書き換えで実現できます。

従来は各テナントのロードバランサやファイアウォールのリソースを監視し,足りなくなれば増強を行うという運用が必要でした。しかし,OpenFlowではこれまでとはまったく異なる方法でネットワーク機能を増強できます。

OpenFlowコントローラがスケールアウトされていることが前提ですが,⁠ルータ」⁠ファイアウォール」⁠ロードバランサ」⁠DHCP」⁠監視」などのネットワークリソースが不足する場合は,図6のようにOpenFlowコントローラを追加するだけです。どのテナントのリソースが不足しているのか? ロードバランサのリソースが不足しているのか?などと難しいことを考える必要はありません。OpenFlowコントローラのリソースを監視し,足りなくなったら,OpenFlowコントローラを追加すればよいのです。

図6 ネットワーク機能のリソースが足りない場合の対処方法

図6 ネットワーク機能のリソースが足りない場合の対処方法

注7)
1つの仮想マシン上で複数テナントの処理を行うパターンもあります。

コラム OpenFlowでは帯域拡張をルールベースで行う

一般的なネットワーク機器ではリンクアグリゲーションによる帯域拡張を「ラウンドロビン方式」⁠ポートベース方式」⁠アドレスベース方式」から選択できます。ポートベース方式やアドレスベース方式と同様の帯域拡張はOpenFlowのバージョン1.0で実現できます。

ラウンドロビン方式は一般的に「1つ目のパケットはケーブル1を通る,2つ目のパケットはケーブル2を通る」という動作になりますが,このような動作をOpenFlowプロトコルバージョン1.0で行うことはできません。しかし,OpenFlowプロトコルバージョン1.1では,複数ポートを1つの仮想ポートのように扱えるようになるため,ラウンドロビン方式を利用できるようになる可能性はあります。

まとめ

今回はOpenFlowのパケット制御方式を説明し,OpenFlowで実現可能な新アーキテクチャについて説明しました。OpenFlowコントローラ内部のしくみや,OpenFlowコントローラとOpenFlowスイッチ間でやりとりする情報について,まだ十分に説明できていません(連載の後半で説明する予定です⁠⁠。また,OpenFlowコントローラにどのような機能を実装するかは各ベンダが決定することであり,本稿で示した機能のすべてが市販のOpenFlowコントローラに実装されるわけではないので注意が必要です。

OpenFlowは仮想化におけるさまざまな問題を解決します。また,まったく新しいサービスやコンセプトを実現する力も秘めています。しかし,OpenFlowの適用にまったく課題がないわけでもありません。次回は,OpenFlowが業界に与えるインパクトやクラウドへのOpenFlow適用について説明します。

著者プロフィール

樋口晋也(ひぐちしんや)

(株)NTTデータ 技術開発本部