こんにちは。
前回はSDNの簡単な紹介と、今後のビジネスアプリケーションへの応用例について書きました。
今回は、オープンソースのSDNコントローラーフレームワークであるOpenDaylightと、そのインストール方法の紹介、およびMininetを使ったOpenDaylightインストール後の疎通確認の方法をご紹介します。
OpenDaylightとは
OpenDaylightはマルチSDNプロトコルのSDNコントローラーフレームワークです。
当初の予定では2013年12月に最初の公式リリースの予定でしたが、若干ずれ込み、今年の2月4日に公式リリース版”Hydrogen”が提供開始されました。
概要は以下の図のようになっており、”Southbound Interfaces”から上(下の方の点線から上)がOpenDaylightになります。
OpenDaylightは前回の記事の「コントロールレイヤ」に相当します。
つまり、ビジネスアプリケーションからネットワークデバイスの制御をするための機能を集めたフレームワークです。
出典:http://www.opendaylight.org/project/technical-overview上記の図について簡単に説明すると、それぞれのレイヤは以下のような機能を持っています。
- OpenDaylight APIs
Controller Platformの各Controllerの機能を利用するためのREST APIです。
Northbound APIとも呼ばれます。
このAPIを利用して、Webアプリ等からOpenDaylightの各Controllerの機能を呼び出し、それらの機能を使用してネットワークデバイスを制御することができます。 - Controller Platform
これらの機能は、ユーザアプリケーションから直接呼び出せるJavaAPIです。
ユーザアプリケーションは、このAPIからSouthbound Interfacesを通じて、ネットワークデバイスを制御できます。 - Southbound Interfaces
OpenDaylightのControllerから各デバイスを制御するためのControllerとデバイスのAPIです。
ネットワークデバイスとOpenDaylightの窓口になります。
実例を紹介します。
・IBM SDN VE OpenFlow Edition
これは、Northbound APIに”OpenStack Neutron”(REST API)を使用し、Southbound InterfaceにOpenFlowを用いたネットワーク仮想化製品で、プログラミングによるルーティングの動的制御ができるようです。
JavaAPIを使用した製品は探しても見つかりませんでした。
上記のIBMの製品も発表されたばかりですが、JavaAPIを用いた製品はまだ世の中にはないようです。
OpenDaylightのインストール
では、OpenDaylightをインストールしてみましょう。
※基本的にLinuxでの作業を前提としています。
- OpenDaylightのサイトからOpenDaylightをダウンロードします。
# curl -L -O https://jenkins.opendaylight.org/controller/job/controller-merge/lastSuccessfulBuild/artifact/opendaylight/distribution/opendaylight/target/distribution.opendaylight-osgipackage.zip
- ダウンロードしたファイルを適当なディレクトリに移動して解凍します。
# unzip distribution.opendaylight-osgipackage.zip
- 解凍したディレクトリの”opendaylight”ディレクトリに移動して、OpenDaylightの起動スクリプトを実行します。
# cd opendaylight
# ./run.sh
・・・インストールするだけなら以上でおしまいです。
デフォルトのポート番号は8080になっているので、他のサービスとかぶりそうなのであれば、opendaylight/configuration/tomcat-server.xmlの設定を変更します。
起動するとこんな画面が表示されます。
Username/Passwordにはadmin/adminを入力します。
ログインするとこんな画面です。
まだ何も表示していません。
“Mininet”セットアップ
次にテスト用に”Mininet”をセットアップします。
MininetはOpenFlow(OpenDaylightでいうと、Southbound Interfacesの一つ)のテスト用のツールで、仮想的なネットワークデバイスを作成してくれます。
ファイルは以下のサイトからダウンロードできます。
http://mininet.org/download/
上記URLの”Option 1: Mininet VM Installation (easy, recommended)”の”1.Download the Mininet VM image (2.1.0 or 2.0.0. This will take some time (it’s ~800MB compressed.)”のリンクからダウンロードページにいけます。
図3:http://mininet.org/download/リンクをクリックすると、以下のページが開きます。
図4:https://bitbucket.org/mininet/mininet-vm-images/downloadsMininetはovf形式で配布されているので、そのままVirtualBoxに取り込んで起動できると思ったのですが、どうもVirtualBoxではうまくいかないようです。
MininetのSetup Notesページ(http://mininet.org/vm-setup-notes/)に以下のように記述されていたので、
“As of the latest VirtualBox, the .ovf file may not import without errors, so instead of importing it you should create a new VM of the appropriate type (e.g. Linux, Ubuntu 64-bit) and use the .vmdk file as the virtual hard disk for the new VM. “
上記の手順に従って、VirtualBoxに仮想マシンを作ってから、「すでにある仮想ハードドライブファイルを使用する(U)」を選択し、ダウンロードファイルに含まれる.vmdkファイルをハードドライブファイルに指定します。
後はVirtualBoxから上記で作成したVMを起動します。
VMはUbuntuですが、ログインユーザ/パスワードは、”mininet-2.1.0-130919-ubuntu-13.04-server-amd64-ovf.zip”の場合、mininet/mininetです。
ログインしたら、以下のコマンドを投入してみます。$ sudo mn --controller=remote,ip=192.168.1.6 --topo=linear,2
上記のIPアドレスは、先ほどセットアップしたOpenDaylightのIPアドレスです。
これで、下記のようなトポロジの仮想ネットワークが作成されます。
図5:サンプルトポロジ上記実行後、OpenDaylightの画面をリロードすると、以下のように表示されれば準備完了です。
Mininetで作成したトポロジのネットワークが表示されています。
図6:OpenDaylight Devices 2次回は、Controller Platformの各APIを用いたプログラムを実際に書いて試してみたいと思います。