Pocket

こんにちは。

前回はSDNの簡単な紹介と、今後のビジネスアプリケーションへの応用例について書きました。
今回は、オープンソースのSDNコントローラーフレームワークであるOpenDaylightと、そのインストール方法の紹介、およびMininetを使ったOpenDaylightインストール後の疎通確認の方法をご紹介します。

OpenDaylightとは

OpenDaylightはマルチSDNプロトコルのSDNコントローラーフレームワークです。
当初の予定では2013年12月に最初の公式リリースの予定でしたが、若干ずれ込み、今年の2月4日に公式リリース版”Hydrogen”が提供開始されました。
概要は以下の図のようになっており、”Southbound Interfaces”から上(下の方の点線から上)がOpenDaylightになります。
OpenDaylightは前回の記事の「コントロールレイヤ」に相当します。
つまり、ビジネスアプリケーションからネットワークデバイスの制御をするための機能を集めたフレームワークです。出典OpenDaylight.org

出典:http://www.opendaylight.org/project/technical-overview

上記の図について簡単に説明すると、それぞれのレイヤは以下のような機能を持っています。

  1. OpenDaylight APIs
    Controller Platformの各Controllerの機能を利用するためのREST APIです。
    Northbound APIとも呼ばれます。
    このAPIを利用して、Webアプリ等からOpenDaylightの各Controllerの機能を呼び出し、それらの機能を使用してネットワークデバイスを制御することができます。
  2. Controller Platform
    これらの機能は、ユーザアプリケーションから直接呼び出せるJavaAPIです。
    ユーザアプリケーションは、このAPIからSouthbound Interfacesを通じて、ネットワークデバイスを制御できます。
  3. 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での作業を前提としています。

  1. OpenDaylightのサイトからOpenDaylightをダウンロードします。
    # curl -L -O https://jenkins.opendaylight.org/controller/job/controller-merge/lastSuccessfulBuild/artifact/opendaylight/distribution/opendaylight/target/distribution.opendaylight-osgipackage.zip
  2. ダウンロードしたファイルを適当なディレクトリに移動して解凍します。
    # unzip distribution.opendaylight-osgipackage.zip
  3. 解凍したディレクトリの”opendaylight”ディレクトリに移動して、OpenDaylightの起動スクリプトを実行します。
    # cd opendaylight
    # ./run.sh

・・・インストールするだけなら以上でおしまいです。
デフォルトのポート番号は8080になっているので、他のサービスとかぶりそうなのであれば、opendaylight/configuration/tomcat-server.xmlの設定を変更します。

起動するとこんな画面が表示されます。

OpenDaylight Login画面

図1:OpenDaylight Login画面

Username/Passwordにはadmin/adminを入力します。

ログインするとこんな画面です。

図2:OpenDaylight Devices画面

図2:OpenDaylight Devices画面

まだ何も表示していません。

“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.)”のリンクからダウンロードページにいけます。
Mininetダウンロード画面

図3:http://mininet.org/download/

リンクをクリックすると、以下のページが開きます。
Mininet VM Images

図4:https://bitbucket.org/mininet/mininet-vm-images/downloads

Mininetは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:サンプルトポロジ

図5:サンプルトポロジ

上記実行後、OpenDaylightの画面をリロードすると、以下のように表示されれば準備完了です。
Mininetで作成したトポロジのネットワークが表示されています。
図6:OpenDaylight Devices 2

図6:OpenDaylight Devices 2

次回は、Controller Platformの各APIを用いたプログラムを実際に書いて試してみたいと思います。