Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Copyright 2015 FUJITSU LABORATORIES LIMITED
2015年12月12日
株式会社富士通研究所
李 忠翰 (lee.chunghan@jp.fujitsu.com)
OpenDaylight上でApplic...
Copyright 2015 FUJITSU LABORATORIES LIMITED11
以前、MPLS JAPAN 2015では
MLPS JAPAN 2015ではOpenDaylightでGroup
based Policy(GBP)を...
Copyright 2015 FUJITSU LABORATORIES LIMITED22
今日のTramaDay#8では
 OpenDaylightのApplication(feature)を作るために必要な
知識に関して紹介
 Apac...
Copyright 2015 FUJITSU LABORATORIES LIMITED33
Apache Karaf (OSGi)
 Apache Karafって何?
 OSGiに基づいた実行環境であり、 OSGiを使いやすくしたもの
 ...
Copyright 2015 FUJITSU LABORATORIES LIMITED44
SAL (AD-SAL/MD-SAL)
 Service Abstraction Layer (SAL)って何?
 SALはOSのKernelのよう...
Copyright 2015 FUJITSU LABORATORIES LIMITED55
Yang
 Yangって何?
 Data modeling languageの一つで、代表的にNetconfで利用される
 なぜ、Yangが必要か...
Copyright 2015 FUJITSU LABORATORIES LIMITED66
RESTconf
 RESTconfって何?
 MD-SALで利用されるNorthboundのProtocolであり,Rest + Netconf
...
Copyright 2015 FUJITSU LABORATORIES LIMITED77
Yang and RESTconf
 YangとRESTconfの関係
 Yangで記述したものがRESTconfで確認できる
 じゃ、Yangだ...
Copyright 2015 FUJITSU LABORATORIES LIMITED88
JAVA – (1)
 なぜJAVA concurrent programmingの知識が必要か?
 ODLはJAVAで実装
 FeatureはM...
Copyright 2015 FUJITSU LABORATORIES LIMITED99
JAVA – (2)
 なぜGenericの知識が必要か?
 Yangtoolsで変換されてDataStoreに保存されたObjectの中で
必要な...
Copyright 2015 FUJITSU LABORATORIES LIMITED1010
Maven
 Mavenって何?
 作ったアプリケーション(feature)をコンパイルする時に利用されるtool
 コンパイル時、遠隔のRe...
Copyright 2015 FUJITSU LABORATORIES LIMITED1111
 Featureを実装するための全体的な手順
① Data Storeのために、YangでData modelを記述
② Data Storeで保...
Copyright 2015 FUJITSU LABORATORIES LIMITED1212
まとめ
OpenDaylightでApplication(feature)を実装するた
めに、必要な知識に関して紹介
 YangとJAVAをちゃ...
Copyright 2015 FUJITSU LABORATORIES LIMITED1313
Upcoming SlideShare
Loading in …5
×

How to implement OpenDaylight application ?

632 views

Published on

Chunghan Lee
https://sites.google.com/site/lch2244/

Published in: Engineering
  • Be the first to comment

How to implement OpenDaylight application ?

  1. 1. Copyright 2015 FUJITSU LABORATORIES LIMITED 2015年12月12日 株式会社富士通研究所 李 忠翰 (lee.chunghan@jp.fujitsu.com) OpenDaylight上でApplicationを 実装してみよう!
  2. 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. 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. 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. 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. 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. 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. 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. 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. 10. Copyright 2015 FUJITSU LABORATORIES LIMITED99 JAVA – (2)  なぜGenericの知識が必要か?  Yangtoolsで変換されてDataStoreに保存されたObjectの中で 必要なObjectだけを取り出して保存するために必要  内部実装でGoogleのpackage(com.google.common.collect)も 良く使われるので覚えたほうが良い  なぜOOPの知識が必要か?  多くの内部実装がJAVA classの単一継承や複数のInterfaceを利用した 多重継承を普通に使用
  11. 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. 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. 13. Copyright 2015 FUJITSU LABORATORIES LIMITED1212 まとめ OpenDaylightでApplication(feature)を実装するた めに、必要な知識に関して紹介  YangとJAVAをちゃんと理解したら、Applicationを作れます! 上の知識をベースにOpenDaylightでApplication (feature)を実装する全体的な手順に関して紹介
  14. 14. Copyright 2015 FUJITSU LABORATORIES LIMITED1313

×