SlideShare uma empresa Scribd logo
1 de 20
OpenDaylightアプリケーションの
バージョンアップ対応について
Acroquest Technology 株式会社
飯田 樹生
目次
1. プロジェクトの背景と目的
2. OpenDaylightとは
3. 取り組んだ課題
4. アプリのパッケージング方式の変更
5. アプリで使用するAPIの見直し
6. まとめ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
2
1.プロジェクトの背景と目的
• とあるベアメタルクラウドに携わる
ことになり、OpenDaylight
Lithiumを用いてOpenFlowスイッ
チをコントロールし、ネットワークを
制御することになった
• しかしOpenDaylightは変化が激
しく、使用しているAPIが非推奨に
なる、アプリのパッケージングの
方式が変わるなど、最新版の
Berylliumへの対応が求められる
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
3
※本資料の内容は2016年9月時点の情報に基づいています。
2.OpenDaylightとは
• OSSのSDNコントローラプラットフォーム
• 2013年4月にLinux Foundationによって
プロジェクトが発足し、2014年2月に最初のバージョン
であるHydrogenが、2016年4月に最新版のBeryllium
がリリースされた
• 主要なSDN関連ベンダがプロジェクトに参加しており、
製品のベースとして利用されるようになってきているが、
ドキュメントなどの情報が少なく、アプリ開発までのハー
ドルはまだまだ高い
• リポジトリが頻繁に変更されるので、今までビルドできていた
ものが急にできなくなることもある
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
4
2.OpenDaylightとは
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
5
SAL(Service Abstraction Layer)
と呼ばれるフレームワークを持っており、
様々な機能の追加が可能
https://www.opendaylight.org/odlbe
• OpenDaylightのアーキテクチャは以下の通り
2.OpenDaylightとは
• SALの中でもMD-SAL(Model-Driven SAL)での実装
が主流となっている
• MD-SALではツリー状のデータモデルを中心とし、デー
タの更新や取得、変更の通知、RPC(Remote
Procedure Call)の実行などによって処理が行われる
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6
3.取り組んだ課題
• Beryllium対応で以下の課題に取り組んだ
① アプリのパッケージング方式の変更
今までOSGi Bundleとして作成していたものをKaraf
Featureに変更する
② アプリで使用するAPIの見直し
MD-SALについて、バージョンアップによって変更されたAPI
があるので、主に通知の受信について改めて見直す
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
7
4.アプリのパッケージング方式の変更
• OSGi BundleからKaraf Featureへ変更するに際し、プ
ロジェクトの構成を見直す
• 従来は、データモデルの定義を行う「model」と、実際に
アプリを実装する「impl」に分けるのが一般的だった
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
8
Project
│
├─model
│ └─src/main/yang
│ └─sample-model.yang
│
└─impl
└─src/main/java
├─Activator.java
└─SampleApp.java
データモデルをYANGで定義する
(Javaのエンティティクラスが自動
生成される)
アプリを起動するActivatorと、実
際の処理を行うクラスを実装する
4.アプリのパッケージング方式の変更
• 従来の実装のイメージ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
9
YANGモデル
エンティティ
クラス等
自動生成
Activator
Consumer
or Provider
独自
アプリケーション
起動
使用、実現
実装箇所
他にアプリケーシ
ョンの起動順序
の制御等も考慮
する必要がある。
implの範囲
modelの範囲
4.アプリのパッケージング方式の変更
• Karaf Featureでは従来に加え、「config」、「feature」、
「distribution」を作成する
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
10
Project
├─application
│ ├─model
│ ├─impl
│ │ └─src/main/yang
│ │ └─sample-app.yang
│ └─config
│ └─src/main/resources/initial
│ └─51-sample-app.xml
├─feature
│ └─src/main/resources
│ └─features.xml
└─distribution
├─karaf-branding
│ └─src/main/resources/org/apache/karaf/branding
│ └─branding.properties
└─opendaylight-karaf
アプリケーション自体も
YANGで記述し、その起動
設定をxmlで定義する
アプリのKaraf Featureを作成する
アプリを含んだOpenDaylightを作成する
4.アプリのパッケージング方式の変更
• 今回の実装のイメージ
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
11
YANGモデル
エンティティ
クラス等
自動生成
Module
独自
アプリケーション
起動
使用、実現
実装箇所
YANGモデル
自動生成
modelの範囲
implの範囲
configの範囲
アプリケーション
の管理をconfig
が担当する
4.アプリのパッケージング方式の変更
• 「config」では「Config Subsystem」と呼ばれる管理機
能に従い、アプリ自体のYANGモジュール化とその設
定を定義する
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
12
module sample-app {
...
augment "/config:modules/config:module/config:configuration" {
case sample-app {
when "/config:modules/config:module/config:type = ‘sample-app'";
container data-broker { ... }
container rpc-registry { ... }
container notification-service { ... }
<modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
<module>
<type xmlns:prefix="urn:jp:co:acroquest:odl:sample:sample-app">prefix:sample-app</type>
<name>sample-app</name>
<data-broker> ... </data-broker>
<rpc-registry> ... </rpc-registry>
<notification-service> ... </notification-service>
sample-app.yang
51-sample-app.xml
sample-appという名前のアプリが起動した時、
3つのインスタンスをインジェクトする
xmlにも同様の定義を記述する
(xmlファイルの先頭の数字はアプリの起動順序
を表す)
4.アプリのパッケージング方式の変更
• ビルドするとModuleクラス(Activatorに相当)とその
Factoryクラスが生成されるので、Moduleの
createInstanceメソッドにアプリの起動処理を実装する
(必要なインスタンスを取得してアプリのインスタンスを
生成するだけ)
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
13
public class SampleAppModule extends
jp.co.acroquest.odl.sample.impl.AbstractSampleAppModule {
...
@Override
public java.lang.AutoClosable createInstance() {
DataBroker dataBroker = getDataBrokerDependency();
RpcProviderRegistry rpcProviderRegistry = getRpcRegistryDependency();
NotificationProviderService notification = getNotificationServiceDependency();
SampleApp sampleApp = new SampleApp(dataBroker, rpcProviderRegistry, notification);
4.アプリのパッケージング方式の変更
• 各種設定で記述していたオブジェクトの概要は以下の
通り
• いずれも、アプリが使用しない場合は設定や実装を省
略可能
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
14
オブジェクト名 説明
DataBroker MD-SALデータストアへアクセスするために必要
RpcProviderRegistry RPCの登録や、他のアプリが提供するRPCを利用
するために必要
NotificationProviderService 通知を発行または受信するために必要
4.アプリのパッケージング方式の変更
• プロジェクトをビルドすると、作成したアプリケーションの
Featureを含んだOpenDaylight Beryllium本体が
「distribution」に生成される
(動作に必要なFeatureやBundleが全て含まれている
ので、オフライン環境でもそのまま使用可能)
• アプリケーションのKar(Karaf Feature)ファイルを作成
し、既存のOpenDaylightに機能を追加する方法もある
が、私が試した限りではLithiumとBerylliumでは動作し
ないので非推奨(中のファイルが展開されない)
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
15
5.アプリで使用するAPIの見直し
• 作成したアプリケーションに特定のListenerを継承し、メ
ソッドをオーバーライドすることによって、様々な通知を
受け取ることができるようになる
• バージョンアップによって変更されたAPIがあるので、見
直しを行った
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
16
独自
アプリケーション
Listener ListenerListener
5.アプリで使用するAPIの見直し
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
17
Listener メソッド 説明
OpenDaylight
InventoryListener
onNodeUpdated /
Removed
スイッチ(Node)の登録/削除のイベ
ントを受け取る
onNodeConnectorUpdated /
Removed
ポート(NodeConnector)の登録/削
除のイベントを受け取る
PacketProcessing
Listener
onPacketReceived コントローラが受信したパケットの情
報を受け取る
DataChange
Listener
onDataChanged データモデル中のデータの変更の通
知を受け取る
• 今回検証したListenerは以下の通り
5.アプリで使用するAPIの見直し
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
18
新しいスイッチやポートの登録:
OpenDaylight
InventoryListener
パケットの受信:
PacketProcessing
Listener
データモデルのデータの変化:
DataChangeListener
• 検知するイベントとListenerの例を以下に示す
6.まとめ
• OpenDaylightのアプリの開発はまだまだハードルが高
い
• 1から作るよりは既存のプロジェクトをベースにした方が
良い
• アプリを開発する時には、Config Subsystemを用いて
「model(モデル)」と「impl(実装)」と「config(管理)」の
3つを作成する
• バージョンアップの際には既存のAPIにも修正が入って
いる可能性があるので、動作を確認する
• リポジトリも頻繁に変更されるので、ビルドエラーが起き
たら疑ってみる
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
19
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
20
今後もOpenDaylightの最新情報を追いかけていきます!
Infrastructures Evolution

Mais conteúdo relacionado

Semelhante a Open daylightバージョンアップ対応

Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)irix_jp
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud AutomationEtsuji Nakai
 
JTF2014:OpenStackの概要と最新技術動向
JTF2014:OpenStackの概要と最新技術動向JTF2014:OpenStackの概要と最新技術動向
JTF2014:OpenStackの概要と最新技術動向irix_jp
 
QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践Weibo Corporation
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送Google Cloud Platform - Japan
 
Building andobservingcloudnativeappliactionusingazure elastic-terraform
Building andobservingcloudnativeappliactionusingazure elastic-terraformBuilding andobservingcloudnativeappliactionusingazure elastic-terraform
Building andobservingcloudnativeappliactionusingazure elastic-terraformShotaro Suzuki
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介NilOne Ltd.
 
SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用QlikPresalesJapan
 
Spring Integration 超入門
Spring Integration 超入門Spring Integration 超入門
Spring Integration 超入門Yasutaka Sugamura
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Hironao Sekine
 
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)NTT DATA Technology & Innovation
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Etsuji Nakai
 
Continuous delivery chapter13
Continuous delivery chapter13Continuous delivery chapter13
Continuous delivery chapter13favril1
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisitedUptime Technologies LLC (JP)
 
インタークラウドシステムの実用化に向けて
インタークラウドシステムの実用化に向けてインタークラウドシステムの実用化に向けて
インタークラウドシステムの実用化に向けてMasaharu Munetomo
 

Semelhante a Open daylightバージョンアップ対応 (20)

Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
 
Gaej Explorer
Gaej ExplorerGaej Explorer
Gaej Explorer
 
JTF2014:OpenStackの概要と最新技術動向
JTF2014:OpenStackの概要と最新技術動向JTF2014:OpenStackの概要と最新技術動向
JTF2014:OpenStackの概要と最新技術動向
 
QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
 
Building andobservingcloudnativeappliactionusingazure elastic-terraform
Building andobservingcloudnativeappliactionusingazure elastic-terraformBuilding andobservingcloudnativeappliactionusingazure elastic-terraform
Building andobservingcloudnativeappliactionusingazure elastic-terraform
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
 
SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用
 
Spring Integration 超入門
Spring Integration 超入門Spring Integration 超入門
Spring Integration 超入門
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発
 
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
 
OpenCL Overview JP Translation
OpenCL Overview JP TranslationOpenCL Overview JP Translation
OpenCL Overview JP Translation
 
Continuous delivery chapter13
Continuous delivery chapter13Continuous delivery chapter13
Continuous delivery chapter13
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
 
インタークラウドシステムの実用化に向けて
インタークラウドシステムの実用化に向けてインタークラウドシステムの実用化に向けて
インタークラウドシステムの実用化に向けて
 

Open daylightバージョンアップ対応