Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

OpenDaylight Helium SR3を試してみた 【OpenDaylight 「Helium」 概要編】

こんにちは、こんばんは miyakeです :-) みなさん、GWはいかがお過ごしでしたか?
私は、自転車でポタリングしたりしつつ、3/16にSR3がリリースされたOpenDaylight「Helium」のインストールをしたり、検証していました。

f:id:acro-engineer:20150506190724p:plain

そこで、GW中に色々調べたことを、3回に分けて書こうと思います :-)

 今回:OpenDaylight 「Helium」 概要編 < イマココ
 次回:OpenDaylight 「Helium」をインストールしてみよう
次々回:OpenDaylight 「Helium」でSDNを構築してみよう

今回は、OpenDaylight「Helium」の概要について説明します。

OpenDaylight「Helium」ってなに?

まずOpenDaylightですが、これはおおざっぱに言ってしまえば、オープンソースのSDNコントローラを実現するためのフレームワークになります。
OpenDaylightの開発はLinux FoundationのOpenDaylight Projectによって進められていて、2014/2/4に初のリリースとなる「Hydrogen」を公開し、2014/9/29に「Helium」を公開しています。
今回インストールや検証を行ったのは、この「Helium」の3回目のリリースバージョンである、SR3になります。

SDNコントローラとは?

SDNコントローラという言葉に馴染みのない人も多いかと思うので、ここでちょっと簡単に説明します :-)

SDN(Software Defined Network)とは、名前のごとくソフトウェア(プログラム)によって動的に設定/制御することが可能なネットワークの事であり、SDNコントローラとは、そのSDNを制御するための機能やサービスの事を指します。

従来のネットワークとSDNのどこが違うのか?というと、
従来のネットワークは、L2、L3スイッチやルータなどの装置によって構成されており、これらの装置ごとに個別に設定を行うことでネットワークが構築されていました。
ネットワークの規模がそんなに大きくなければ、今までのネットワークでも問題はなかったのですが、ネットワークを構成する装置の台数が何十台、何百台にもなる大規模ネットワークが当たり前のようになってきている今日では、装置ごとに個別に設定をしてネットワークを構築することが困難になってきました。

で、この問題を解決する方法として、SDNが生まれました。

SDNでは、今までのように、、ネットワークを構成する装置ごとに設定しなくて済むよう、SDNコントローラでネットワーク全体の設定/制御をまとめられるようにしました。
また、今までネットワーク装置側で行っていたネットワーク制御処理部分をSDNコントローラで行う様になっています。こうすることで、ネットワーク全体の制御を、SDNコントローラ内のプログラムで行えるようになります。
コントローラ側で、プログラムによってネットワークを制御しようという考え方が、「Software Defined Network」という名前の由来にもなっています。

このSDNという言葉が一般的になってきたのは、OpenFlowという仕様に準拠したネットワーク機器が出てきたころで、だいたい5年ぐらい前からになります。

次々回の「OpenDaylight 「Helium」で仮想ネットワークを構築してみよう」では、このOpenFlow仕様に準拠しているopen vSwitchとOpenDaylightを使って、実際にSDNを構築してみます :-)

OpenDaylightの概要

OpenDaylight 本家サイト
OpenDaylight | A Linux Foundation Collaborative Project

OpenDaylightの概要ですが、本家サイトのSoftware | OpenDaylightにある、以下の図にすべてが凝縮されています :-)

f:id:acro-engineer:20150510130028p:plain

この図の、「Controller Platform」の部分がコントローラの中心になるところで、ネットワークを制御するプログラムがプラグインとしてまとめられています。
プラグインを開発して「Controller Platform」に登録することで、OpenDaylightに独自のネットワーク制御処理を追加することができます。

「Southbound Interface&Protocol Plugins」の部分が、実際のネットワーク機器への制御を行うためのプラグインと、「Controller Platform」からの制御を受け付けるインタフェース(一般的にSouthbound APIと呼ばれている)を提供しています。
このProtocol Pluginも開発して登録することができるので、特殊なネットワーク機器に対応する必要が出てきた場合は、Protocol Pluginを開発することで対応することが出来るようになります。

外部からOpenDaylightに対して制御を行う場合は、OpenDaylight APIs(REST APIを通して行います。
このAPIも、必要であればプラグインとして独自APIを追加できるようになっています。

OpenDaylightは、SDNコントローラを実現するために必要なフレームワークプラグインを提供しており、これらを用いて、自分たちの目的に合ったSDNコントローラを実現することができます。

なお、OpenDaylightフレームワークプラグイン機能にはOSGiが使用されており、現バージョンの「Helium」では「Apache Karaf」が使用されています。karaf.apache.org

「Helium」で変わったこと

OpenDaylightの情報をWeb上で調べる時、最初にリリースされた「Hydrogen」と「Helium」の違いを知っていると色々便利なので、「Hydrogen」から「Helium」になって、大きく変わった点について簡単にまとめてみました。

リリースイメージが一本化された

「Hydrogen」では、利用ケースに合わせて以下の3つのリリースイメージがリリースされていました。

  1. 個人や学術機関向けの「Base Edition」
  2. データセンター向けの「Virtualization Edition」
  3. 通信事業者やサービス事業者向けの「Service Provider Edition」

「Helium」からは、1つのリリースイメージに統一され、必要な機能(Feature)を選んでインストールする仕様に変わりました。

OSGiフレームワークがKarafに変更された

「Hydrogen」では、OSGiフレームワークに「Apache Felix Framework+Eclipse Equinox」が使用されていましたが、「Helium」から「Apach Karaf」に変更されました。
Eclipse Equinoxは、Javaプログラム開発でおなじみの、Eclipse内のプラグイン機構のフレームワークです :-)

GUIがDULXに変更された

「Helium」から、GUIが「DLUX」に変更され、「Hydrogen」のGUIから大きな変更がありました。
以下が、「DLUX」で表示されたネットワーク構成図です。
f:id:acro-engineer:20150506184659j:plain
「Hydrogen」のものと比べると、まだ発展途上な感じで、今後の機構拡張に期待です。

その他注意点など

OpenDaylight「Helium」のインストールなどを行う上で注意する点について、簡単にまとめました。

Java8に対応していない

OpenDaylight「Helium」SR3をインストールする際、Java8への対応状況を確認したところ、まだJava8では動作しませんでした。
「Apach Karaf」の3.0.1は、すでにJava8に対応しているで、OpenDaylightのコア部分の問題だと思われます。

以下が実際に実行した時の出力で、無条件にMaxPermSizeを設定して起動していることが原因の警告が出ています。
起動スクリプト自体、まだJava8に対応していないことがこれでわかります。

[miyake@centos7-dev opendaylight]$ ./bin/karaf
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0

    ________                       ________                .__  .__       .__     __
    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_
     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \<   |  ||  | |  |/ ___\|  |  \   __\
    /    |    \  |_> >  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  >   Y  \  |
    \_______  /   __/ \___  >___|  /_______  (____  / ____||____/__\___  /|___|  /__|
            \/|__|        \/     \/        \/     \/\/            /_____/      \/


Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown OpenDaylight.

opendaylight-user@root>list
Error executing command: java.lang.NullPointerException
opendaylight-user@root>

起動したあと、"list"コマンドを実行したらNullPointerExceptionが出るなど、正常に起動していませんでした....orz

試しにMaxPermSizeを外して起動してみたのですが、コマンドを打った段階でNullPointerExceptionになってしまった...orz

プラグイン開発の方式が色々変更されている

少し実装寄りの細かい話になってしまいますが、Helium向けにプラグインを開発する際、内部のデータモデルにアクセスするクラスライブラリのクラス名称やAPIが大きく変更されていました。
このためWeb上で公開されている、「Hydrogen」の頃に書かれているコードやサンプルはコンパイル時にエラーになるため、そのまま使用することができなくなっています。

また、OpenDaylightのプラグイン方式である、AD-SALとMD-SALの2つのうち、MD-SALへの移行が促されています。
OpenDaylight Controller:MD-SAL:Application Migration Guide - Daylight Project

これは、「Controller Platform」で提供しているモデルへのアクセス方式に統一することで、プラグイン間でデータの共有、統一がとれるようにすることを目的としているようです。
今後、独自プラグインを開発する際は、MD-SAL方式で開発することが必要とされると思われます。


次回は、OpenDaylight Helium SR3のインストール手順などを説明します :-)
それでは。

Acroquest Technologyでは、キャリア採用を行っています。


  • 日頃勉強している成果を、Hadoop、Storm、NoSQL、HTML5/CSS3/JavaScriptといった最新の技術を使ったプロジェクトで発揮したい。
  • 社会貢献性の高いプロジェクトに提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や対外的な勉強会の開催を通した技術の発信や、社内勉強会での技術情報共有により、技術的に成長したい。
  • OSSの開発に携わりたい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
 キャリア採用ページ