こんにちは、こんばんは miyakeです :-) みなさん、GWはいかがお過ごしでしたか?
私は、自転車でポタリングしたりしつつ、3/16にSR3がリリースされたOpenDaylight「Helium」のインストールをしたり、検証していました。
そこで、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にある、以下の図にすべてが凝縮されています :-)
この図の、「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つのリリースイメージがリリースされていました。
- 個人や学術機関向けの「Base Edition」
- データセンター向けの「Virtualization Edition」
- 通信事業者やサービス事業者向けの「Service Provider Edition」
「Helium」からは、1つのリリースイメージに統一され、必要な機能(Feature)を選んでインストールする仕様に変わりました。
その他注意点など
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の開発に携わりたい。
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
キャリア採用ページ