OpenFlowという技術をご存じだろうか。ソフトウエアでネットワークの構成や設定を変更するSDN(Software-Defined Networking)という考え方で中心的な役割を果たしている技術だ。OpenFlowを利用することで、WebブラウザーやIP電話、ビデオ会議といったアプリケーションの違いを判断して、ネットワーク経路の変更や回線種別の切り替え、帯域制御などを自動的に行うといった柔軟な機能を実現できる。

OpenFlowスイッチになったラズパイ
OpenFlowスイッチになったラズパイ
USB接続のLANアダプターを使って2個のイーサネットポートを増設している。
[画像のクリックで拡大表示]

 OpenFlowの特徴は、データ転送を行うハードウエア(データプレーン)とそれを制御するソフトウエア(コントロールプレーン)が明確に分離されていることだ。従来のレイヤー2(L2)スイッチなどのネットワーク機器では、これらの機能は同じ機器の中に一体で組み込まれていた。これに対し、OpenFlowでデータプレーンを担当するOpenFlowスイッチはデータ転送機能だけを持つ。このスイッチを制御するコントロールプレーンに相当するのがOpenFlowコントローラーだ。コントローラーはソフトウエアであり、通常はサーバーにインストールして使用する。コントローラーが動作するアプライアンス製品もある。

 OpenFlowコントローラーはベンダーが用意している製品もあるが、自分で作ることもできる。そのために利用するものが「OpenFlowフレームワーク」だ。フレームワークの上で動作するアプリケーションとしてコントローラーを開発する。「Ryu」「Trema」「OpenDayLight」といったフレームワークが有名だ。

 こうしたフレームワークはコントローラーに必要な基本的な機能を内蔵している。例えば、スイッチの情報を取得するための機能、スイッチに対してどのようなデータ転送を行うかを指示する機能、スイッチからの問い合わせに対する応答を実現する機能などだ。こうしたフレームワークの機能を利用することで、一から作るよりも少ない労力で独自のコントローラーを開発できる。

大変だったインストール作業

 私は日経NETWORK2016年7月号で、SDNをテーマに特集を執筆した。この特集を執筆するに当たって、OpenFlowの動作を読者に実感してもらうためのデモを誌面に掲載したいと考えた。OpenFlowコントローラーとOpenFlowスイッチを用意し、実際に通信を行うのだ。