Weitere ähnliche Inhalte
Ähnlich wie How to implement OpenDaylight application ? (20)
How to implement OpenDaylight application ?
- 1. Copyright 2015 FUJITSU LABORATORIES LIMITED
2015年12月12日
株式会社富士通研究所
李 忠翰 (lee.chunghan@jp.fujitsu.com)
OpenDaylight上でApplicationを
実装してみよう!
- 2. Copyright 2015 FUJITSU LABORATORIES LIMITED11
以前、MPLS JAPAN 2015では
MLPS JAPAN 2015ではOpenDaylightでGroup
based Policy(GBP)を用いて仮想・物理ネットワーク
機器を同時に制御してコンテナの仮想ネットワーク
設定とトラヒックのQoS制御を行うデモを紹介しま
した
OpenDaylightを用いたグループベースドポリシーによる仮想ネットワ
ークの制御, 李 忠翰(株式会社富士通研究所)
http://www.mpls.jp/presentations/lch_MPLS_JP.pdf
今日は、OpenDaylight上でどうすれば
Applicationを作れるかに関して紹介します!
- 3. Copyright 2015 FUJITSU LABORATORIES LIMITED22
今日のTramaDay#8では
OpenDaylightのApplication(feature)を作るために必要な
知識に関して紹介
Apache Karaf (OSGi)
SAL (AD-SAL/MD-SAL)
YANG
RESTconf
Yang and RESTconf
JAVA
Concurrent programming (Multithreading)
Generic
Object Orient Programming (OOP)
Maven
- 4. Copyright 2015 FUJITSU LABORATORIES LIMITED33
Apache Karaf (OSGi)
Apache Karafって何?
OSGiに基づいた実行環境であり、 OSGiを使いやすくしたもの
ODLはKaraf基盤であり、Karaf上で動くApplicationをfeatureと言う
Karafのコマンドを利用してfeatureを動的にinstall/uninstallなどが
可能
例えば、OpenFlowとOVSDBを同時に使いたい時には、それらに
関連するfeatureをODL上でInstallして使用
< ODL on Karaf >
- 5. Copyright 2015 FUJITSU LABORATORIES LIMITED44
SAL (AD-SAL/MD-SAL)
Service Abstraction Layer (SAL)って何?
SALはOSのKernelのようなもの
Featureとして存在
AD-SAL/MD-SALの違い
AD-SAL : Application(Feature)のData modelの構造を個別に設計・
実装する必要があり、RESTAPIのmessageを個別のData storeに保存
MD-SAL : Data modelをYangで記述して必要なAPIなどをYangtools
が自動生成したりRESTconfのmessageを共通のData storeに保存
ODL(AD-SAL)
Feature
Data
Store
Feature
Data
Store
RESTAPI (Northbound)
・個別のDatastoreでDataの管理
・必要なAPIなどの直接設計・実装
ODL(MD-SAL)
Data
Store
Feature
Feature
RESTconf (Northbound)
・共通のDatastoreでDataの管理
・必要なAPIなどの自動生成
- 6. Copyright 2015 FUJITSU LABORATORIES LIMITED55
Yang
Yangって何?
Data modeling languageの一つで、代表的にNetconfで利用される
なぜ、Yangが必要か?
ODL(Lithium)ではAD-SALが完全になくなり、MD-SALに移行
MD-SALで内部のデータ構造がYangで記述されているので、
必ず理解する必要がある
Yangで記述したものがJAVAのClassやObjectとしてマップされる
参考文献&資料
YangのRFC
https://tools.ietf.org/html/rfc6020
- 7. Copyright 2015 FUJITSU LABORATORIES LIMITED66
RESTconf
RESTconfって何?
MD-SALで利用されるNorthboundのProtocolであり,Rest + Netconf
Endpoint/Policyなどで必要な機能を追加してPUT/POST/DELETE/GET
を利用してODLのData storeを操作
参考資料
RESTconfのRFC
•https://tools.ietf.org/id/draft-bierman-netconf-restconf-04.txt
ODL APIdoc
•http://your host ip:8181/apidoc/explorer/index.html
>feature:install odl-mdsal-apidocs (ODL(karaf)で以下のcommandで有効)
•使用するRESTconf messageがどのType(PUT/POST/DELETE/GET)をサポートして
いるかを記述
- 8. Copyright 2015 FUJITSU LABORATORIES LIMITED77
Yang and RESTconf
YangとRESTconfの関係
Yangで記述したものがRESTconfで確認できる
じゃ、Yangだけ記述できたら何となくODLで作成できるか?
→ NO, Yangで記述できたらYangtoolsがJAVA Codeは生成して
くれるが、MD-SALのData storeから必要なデータを取り出す部分と
Southbound protocolまでの部分は全部実装する必要がある
< pyangによるpolicy.yang(GBP)の一部 >
< RESTconfのPolicy messageの一部 >
- 9. Copyright 2015 FUJITSU LABORATORIES LIMITED88
JAVA – (1)
なぜJAVA concurrent programmingの知識が必要か?
ODLはJAVAで実装
FeatureはMultithreading構造になっていて複数のThreadが
同時に実行されるケースが頻繁に存在
Callback methodもかなり登場
実際よく登場するケースと対策
Methodの最初にObjectがNULLであるかどうかをCheckしてNULLで
あればそのままThreadが終了されるケースが頻繁に存在
→どこで終了されたのかを把握することがとても困難
複数のThreadの中で一部だけ止めても、非同期のThreadは普通に動く
最後にThreadが終了された部分を探す時にLogger(Debug mode)を
利用すると割と役に立つ
- 10. Copyright 2015 FUJITSU LABORATORIES LIMITED99
JAVA – (2)
なぜGenericの知識が必要か?
Yangtoolsで変換されてDataStoreに保存されたObjectの中で
必要なObjectだけを取り出して保存するために必要
内部実装でGoogleのpackage(com.google.common.collect)も
良く使われるので覚えたほうが良い
なぜOOPの知識が必要か?
多くの内部実装がJAVA classの単一継承や複数のInterfaceを利用した
多重継承を普通に使用
- 11. Copyright 2015 FUJITSU LABORATORIES LIMITED1010
Maven
Mavenって何?
作ったアプリケーション(feature)をコンパイルする時に利用されるtool
コンパイル時、遠隔のRepositoryから新しいSource(MD-SALなど)の
差分とかを取ってくる
→ ControllerのCore部分(MD-SALなど)がたまたま変わることもあり、
突然ODL上でちゃんとFeatureをinstallできない状況がある
なぜMavenの知識が必要か?
単純にコンパイルだけできれば良いのではないか?
→ NO,コンパイルする際にいろいろoptionがあり、POM.XMLを修正して
作ったfeatureを新たにODL(karaf)上でfeatureとしてDeployするために必要
覚えておくと役に立つ機能
-Dmaven.test.skip=true
Unit testをSkip (Skipしたくなければ、test codeを実装すればOK)
-o
Offline modeで実行 (差分を無理可能)
- 12. Copyright 2015 FUJITSU LABORATORIES LIMITED1111
Featureを実装するための全体的な手順
① Data Storeのために、YangでData modelを記述
② Data Storeで保存されている複数のobjectから必要な部分だけを
取り出すためのMethodを実装
③ ObjectをSouthbound protocolとやり取りするためのMethodを実装
④ Mavenを利用してコンパイルして、Karaf上でFeatureをinstall
⑤ RESTconf message (Northbound)を作成してSouthbound protocol
までちゃんとmessageが降りてくることを確認
Application(Feature)の実装の流れ
MD-SAL(RESTconf) ⑤
MD-SAL(Data Store) ①
Feature ②
Feature (southbound) ③
OpenDaylightRESTconf
protocol
User
Southbound
Protocol
Network
device
④
- 13. Copyright 2015 FUJITSU LABORATORIES LIMITED1212
まとめ
OpenDaylightでApplication(feature)を実装するた
めに、必要な知識に関して紹介
YangとJAVAをちゃんと理解したら、Applicationを作れます!
上の知識をベースにOpenDaylightでApplication
(feature)を実装する全体的な手順に関して紹介