Tech Sketch Bucket of Technical Chips by TIS Inc.

ネットワーク管理を大きく変えるOpenFlowとは (1)

Pocket

ここ1年ほどで、ネットワークの分野において「OpenFlow」というキーワードを目にする機会が急激に増えてきました。
昨年4月に世界初のOpenFlow対応製品の販売が開始されて以来、様々なネットワーク機器ベンダがネットワークスイッチのOpenFlow対応を発表しています。また日経コミュニケーションや日経NETWORKといった雑誌においても、昨年から何度も特集が組まれるようになりました。ネットワークに携わる方であれば、OpenFlowとは何なのか、どのような変化をもたらすのか気になっている方も多いでしょう。
本記事では、OpenFlowの概要について簡単に整理した内容を紹介します。


OpenFlowとは

OpenFlowとは一言で言うと、ネットワーク機器を制御するための標準化された手続きを定めたプロトコルです。
従来のネットワーク機器は、ベンダごとに機器の仕様や設定方法が大きく異なり、外部から共通の手続きで機器の制御を行うことは出来ませんでした。OpenFlowでは、OpenFlowに対応したネットワーク機器であれば、標準化された同じ手順でネットワーク機器を制御することができます。即ち、従来は人間が個々の機器に対して行っていた設定作業を、ソフトウェアによって自動化できるようになります。

ネットワーク機器をソフトウェアによって制御可能になるという変化は、従来のネットワーク管理に様々な変革をもたらします。すぐに思いつくものだけでも、以下のような効果が期待できるでしょう。

  • 設定作業の自動化による作業工数の削減
  • 設定作業の自動化によるヒューマンエラーの削減
  • 人が介在しないことにより、変更要求があがってから実際にネットワーク設定変更が反映されるまでの時間を大幅に短縮
  • ネットワーク全体を1つのソフトウェアで統合管理することにより、全体が協調して動作するように設定を適宜調整可能に
  • ソフトウェアの実装次第で、外部システムとの連携が容易に
  • e.t.c.

ネットワーク全体を1つのソフトウェアによって管理・制御するこのようなアーキテクチャは Software Defined Network (SDN) と呼ばれています。OpenFlowはこのSDNを実現するための有力なプロトコルとして、近年注目されています。

OpenFlowの簡単な仕組み

OpenFlowを採用したネットワークは、「OpenFlowコントローラ」と「OpenFlowスイッチ」という2種類の機器から構成されます。

openflow_fig1.png

OpenFlowスイッチは、従来のネットワーク機器におけるスイッチと同様に、パケットの転送処理を行います。ただし従来と大きく異なるのは、OpenFlowスイッチはパケットをどのように扱うかという判断を自身では一切行わないという点です。従来のスイッチでは、ユーザが投入した設定内容に従って、スイッチに搭載されたOSがパケットをどのように処理するかを判断していましたが、OpenFlowスイッチではパケット転送に関する設定内容を個別に保持していません。その代わりに、OpenFlowスイッチは未知のパケットを受け取るとその都度、それをどのように処理すべきか、OpenFlowコントローラと呼ばれる機器に問い合わせを行います。

OpenFlowコントローラはOpenFlowスイッチからの問い合わせを受け取ると、そのパケットをどのように扱うかを判断してOpenFlowスイッチに回答します。この時、OpenFlowコントローラはOpenFlowスイッチに、今後同じ条件のパケットを受け取った際には同じように処理するようにスイッチに記憶させておくことが出来ます。このパケットを特定する条件に当てはまる一連の通信のことを、OpenFlowでは「フロー」と呼びます。OpenFlowコントローラ側で各スイッチの各フローごとにどのような処理を行うかを規定しておくことで、そのOpenFlowコントローラの管理下にある全てのOpenFlowスイッチの動作を制御することができます。

openflow_fig2.png

以上がOpenFlowにおける最も基本となる動作です。
上記の流れではOpenFlowコントローラはOpenFlowスイッチからの問い合わせを待つだけになっていますが、
OpenFlowコントローラの実装次第では、それ以外に能動的にスイッチに様々な働きかけを行うことも可能になります。

OpenFlowで解決できそうな問題の例

例1: ネットワーク機器の増加・複雑化による、管理コストと対応にかかる時間の増加

ネットワーク機器と一口に言っても、現在は多種多様なネットワーク機器が使用されています。
スイッチだけでもL2スイッチ, L3スイッチなど様々なものがありますし、無線AP, UTM, IPS/IDS, ファイアウォール, VPN装置, ロードバランサなど、ネットワーク管理者が管理しなければならない機器は年々多様化が進んでいます。さらに現在では物理的な機器だけでなく、仮想化環境のハイパバイザ内で動作する仮想スイッチなども、ネットワーク全体を正しく動作させる上で重要になってきています。そして残念なことに、これらの機器は種類が異なれば設定内容が大きく違うのはもちろんのこと、同じ種類の機器でもベンダが異なれば設定方法が大きく変わってきます。

現状これらのネットワーク機器は、ネットワーク全体が協調して正しく動くように設計を行った上で、ネットワーク管理者が一つ一つの機器に対して手作業で設定を行うことで管理されています。ネットワークには多種多様な機器があるため設定作業の自動化は困難で、どこか一箇所設定を変えるだけでも、他に影響が無いか入念に確認が必要になります。またネットワーク機器同士が連携できていないため、どれか一つの機器でも設定を間違えれば、最悪の場合ネットワーク全体が停止する恐れがあります。

それでも従来は、ネットワークの設定変更は頻繁に行われるものではなく、ネットワーク管理者はなんとか準備に必要な時間を確保してきました。しかし現在では、サーバ仮想化によって仮想マシンの即時調達が可能になったことにより、ネットワークの変更もそれと同じ速度で対応して欲しいというニーズが出てきています。特に大規模なクラウド環境を提供している事業者にとっては、こうしたニーズにどのように対応するかは重要な課題となっていることでしょう。

openflow_fig3.png

OpenFlowでは、OpenFlowスイッチは自身ではパケットの制御に関する判断を行わず、OpenFlowコントローラに指示された通りにパケットの制御を行います。つまり、OpenFlowコントローラの設定だけを切り替えれば、大量のOpenFlowスイッチ一つ一つに設定を施す必要がありません。

また、設定がOpenFlowコントローラにおいて集中管理されているため、各スイッチ間での設定の整合性を維持するのも容易になると考えられます。OpenFlowコントローラの実装次第では、あらかじめ規定しておいたルールに従って自動的に設定を切り替えることも可能でしょう。

さらに、OpenFlowではフローに対して様々なアクションを指定することが出来るため、OpenFlowコントローラ側の設定次第で、OpenFlowスイッチにファイアウォールやロードバランサーのような機能を持たせる事も可能になります。このような機能を駆使すれば、多種多様であった機器の一部を統一できる可能性があります。

具体的にOpenFlowコントローラがどのような制御を行うかはOpenFlowコントローラ製品の実装に依存するため、実際にどのような機能が盛り込まれているかは製品ごとに異なると思いますが、OpenFlowを活用することでネットワーク管理者の負荷を大きく軽減する効果が期待できます。

例2: ネットワーク機器と外部システムとの連携

従来のネットワーク機器では、設定変更作業は基本的に手動で行われます。そのため、例えばネットワーク負荷が高まった時だけ経路を切り替えたり、特定の時間帯だけ設定を切り替えたりといったことは困難でした。
OpenFlowでは、OpenFlowコントローラという1つのソフトウェアによって、ネットワーク全体の設定が統括されています。そのため、OpenFlowコントローラに外部システムと連携する機能を持たせておけば、外部システムの状況が変わったり、何かしらのイベントが発生した際にネットワークの設定を切り替えるといったことも可能になります。

例えば監視システムと連携すれば、何らかのシステムに障害が発生した際に、そのシステムへのアクセスを別のサーバへ転送するように自動的に切り替えるといったこともできるでしょう。認証システムと連携すれば、認証に成功してから一定時間だけ、そのホストからの通信を許可すると言ったこともできるでしょう。

このように、OpenFlowコントローラというソフトウェアを通してネットワーク全体を制御できるようになることで、考え方次第で様々な新しいサービスが生まれる可能性があります。

OpenFlowの現状

OpenFlowが期待できる技術であることは間違い無さそうですが、現状で実際に導入に踏み切るには、以下の点がまだ懸念事項になるのではないかと思います。

課題1: OpenFlowコントローラ製品の選択肢が少ない

OpenFlowスイッチについては、ネットワーク機器ベンダ各社から対応製品が発表されており、選択肢が揃ってきたと言えると思います。一方で、OpenFlowコントローラ製品については、まだ非常に選択肢に乏しい状態にあります。

OpenFlowではネットワーク機器を制御する際の手続きについては定めていますが、その手続きを使ってどのような制御を行うかについては、OpenFlowコントローラの実装に任されています。そのため、OpenFlowを使って具体的に何が出来るようになるのかというのは、基本的にはOpenFlowコントローラ製品の実装に依存することになります。

OpenFlowは使い方次第で様々な効果が期待できるため、OpenFlowコントローラ製品に期待される機能もまた、導入する環境によって様々なものになるでしょう。導入する環境に合った製品を選ぶためにも、今後のOpenFlowコントローラ製品の拡充が期待されます。

課題2: 事例や情報がまだ少ない

前述の課題と関連する部分でもありますが、事例や情報がまだ少ないというのも導入における懸念事項になります。

OpenFlowの導入事例としては日本通運(株)での事例が取り上げられることが多いですが、まだOpenFlow自体が新しい技術であることもあり、全体の総数としては多くありません。OpenFlowコントローラ製品を提供している所がまだ少ないと言う所からもわかるように、現段階ではOpenFlowでどのような価値が提供できるのか各社が模索している段階と言えるでしょう。OpenFlowの仕様自体も現在更新作業が続けられており、今後大きな変更がある可能性も残っています。

先にも述べましたが、OpenFlowは頻繁にネットワークの設定変更を行っていたり、何かと連携して自動的に設定変更を反映したい場面で有用な技術であると思います。一般的な企業内のネットワークであれば、まだそこまでネットワークの設定変更は頻繁に起こらないため、導入を考え始めるのはOpenFlowでどのようなことが出来そうか情報が出揃ってきてからとなるでしょう。一方で、ネットワークの設定変更が頻繁に起こりうる、パブリッククラウド、もしくは大規模なプライベートクラウドを持つ事業者にとっては、積極的に情報を集めて導入の是非を検討する価値はあると思います。

まとめ

本稿では、最近話題のOpenFlowとはどのようなものなのか、何が変わりそうなのかを簡単に整理しました。

ただし本稿で説明した内容はソフトウェアによるネットワーク機器の制御による恩恵という観点が強く、OpenFlowのもう一つの大きな特徴とも言える「フロー」についてはあまり言及できていません。この記事を読んで、「ネットワーク機器の制御」という抽象的な表現が具体的にどのようなものなのか気になった方もいるでしょう。

次回は、OpenFlowにおけるネットワーク機器制御の中核と言えるフローの概要と、フローの設定に利用できる具体的な条件やアクションについて触れてみたいと思います。

エンジニア採用中!私たちと一緒に働いてみませんか?