OpenDaylight Heliumをインストールしてみた
こんにちわ、komeiです。
opendaylight heliumをインストールして少し見てみました。Yang Toolをもう少し調べて進めてみたいですが、なかなか前に進みません。(記載ミスがありましたら、すいません)
これを機に以下のキーワードはきっちり消化したいのですが、まずは実際にインストールから始めました。
- Yang
- Affinity Config
- Large Flow Detection and steering
※ 前回のhydrogenはこちらです。
Opendaylight Helium インストールと起動
まずはインストールガイドを参照するのが一番良いと思います。
インストール要件に関して、OSなどの情報が書かれていませんのでこちらの環境を記載しておきます。
- ubuntu 13.04
- virtualbox 1core/4096MB
- java 1.7.0
以前、hydrogenを試したときのmininetが入った環境を使用しました。
※ 海外のサイトを見ているとCentosでインストールしてもguiにアクセスできないという問い合わせが何件か見えたので注意してください。周りで問題なく起動・アクセスできた方もいました。
ダウンロードは、今日現在、以下公式ページのzip or tarファイルを落としてきてください。0.2.0を使用します。
wget http://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.0-Helium/distribution-karaf-0.2.0-Helium.tar.gz
任意の場所に回答してbinディレクトリの中のkarafを立ち上げます。opendaylightのログが確認できたらodlのプロンプトに入っている状態を確認できると思います。
./bin/karaf
karafとは?
heliumはKaraf-based distributionです。karafとはapacheのプロジェクトの一つで、OSGiフレームワークをベースとしたランタイムです。
featureという形で新しいアプリケーションやライブラリを追加していくことが可能です。
必要なfeatureをインストールする
デフォルトで以下の状態になっているはずです。ここからodlに必要なfeatureをインストールします。
>feature:list -i Name | Version | Installed | Repository | Description ------------------------------------------------------------------------------------------------------ standard | 3.0.1 | x | standard-3.0.1 | Karaf standard feature config | 3.0.1 | x | standard-3.0.1 | Provide OSGi ConfigAdmin support package | 3.0.1 | x | standard-3.0.1 | Package commands and mbeans kar | 3.0.1 | x | standard-3.0.1 | Provide KAR (KARaf archive) support ssh | 3.0.1 | x | standard-3.0.1 | Provide a SSHd server on Karaf management | 3.0.1 | x | standard-3.0.1 | Provide a JMX MBeanServer and a set of MBeans in K
以下をインストールします。
- odl-dlux-core
- odl-restconf
- odl-mdsal-apidocs
※追記 - odl-l2switch-switch
opendaylight-user@root>feature:install odl-dlux-core odl-restconf odl-mdsal-apidocs odl-l2switch-switch
Success!!のような表示はないので、feature:list -iで正しくインストールされているか確認してください。
※追記:念のためlistの結果を張り付けておきます
opendaylight-user@root>feature:list -i Name | Version | Installed | Repository | Description ------------------------------------------------------------------------------------------------------------------------------------------------------------- odl-netconf-api | 0.2.5-Helium | x | odl-netconf-0.2.5-Helium | OpenDaylight :: Netconf :: API odl-netconf-mapping-api | 0.2.5-Helium | x | odl-netconf-0.2.5-Helium | OpenDaylight :: Netconf :: Mapping API odl-netconf-util | 0.2.5-Helium | x | odl-netconf-0.2.5-Helium | odl-netconf-impl | 0.2.5-Helium | x | odl-netconf-0.2.5-Helium | OpenDaylight :: Netconf :: Impl odl-config-netconf-connector | 0.2.5-Helium | x | odl-netconf-0.2.5-Helium | OpenDaylight :: Netconf :: Connector odl-netconf-netty-util | 0.2.5-Helium | x | odl-netconf-0.2.5-Helium | OpenDaylight :: Netconf :: Netty Util odl-netconf-monitoring | 0.2.5-Helium | x | odl-netconf-0.2.5-Helium | OpenDaylight :: Netconf :: Monitoring standard | 3.0.1 | x | standard-3.0.1 | Karaf standard feature config | 3.0.1 | x | standard-3.0.1 | Provide OSGi ConfigAdmin support package | 3.0.1 | x | standard-3.0.1 | Package commands and mbeans http | 3.0.1 | x | standard-3.0.1 | Implementation of the OSGI HTTP Service war | 3.0.1 | x | standard-3.0.1 | Turn Karaf as a full WebContainer kar | 3.0.1 | x | standard-3.0.1 | Provide KAR (KARaf archive) support ssh | 3.0.1 | x | standard-3.0.1 | Provide a SSHd server on Karaf management | 3.0.1 | x | standard-3.0.1 | Provide a JMX MBeanServer and a set of MBeans in K odl-nsf-all | 0.4.2-Helium | x | nsf-0.4.2-Helium | OpenDaylight :: NSF :: All Network Service Functio odl-nsf-managers | 0.4.2-Helium | x | nsf-0.4.2-Helium | OpenDaylight :: AD-SAL :: Network Service Function odl-adsal-northbound | 0.4.2-Helium | x | nsf-0.4.2-Helium | OpenDaylight :: AD-SAL :: Northbound APIs odl-yangtools-models | 0.6.2-Helium | x | odl-yangtools-0.6.2-Helium | OpenDaylight :: Yangtools :: Models odl-yangtools-data-binding | 0.6.2-Helium | x | odl-yangtools-0.6.2-Helium | OpenDaylight :: Yangtools :: Data Binding odl-yangtools-binding | 0.6.2-Helium | x | odl-yangtools-0.6.2-Helium | OpenDaylight :: Yangtools :: Binding odl-yangtools-common | 0.6.2-Helium | x | odl-yangtools-0.6.2-Helium | OpenDaylight :: Yangtools :: Common odl-yangtools-binding-generator | 0.6.2-Helium | x | odl-yangtools-0.6.2-Helium | OpenDaylight :: Yangtools :: Binding Generator odl-flow-model | 1.1-Helium | x | odl-flow-1.1-Helium | OpenDaylight :: Flow :: Model odl-flow-services | 1.1-Helium | x | odl-flow-1.1-Helium | OpenDaylight :: Flow :: Services odl-config-netty | 0.2.5-Helium | x | odl-config-persister-0.2.5-Helium | OpenDaylight :: Config-Netty odl-mdsal-broker | 1.1-Helium | x | odl-mdsal-1.1-Helium | OpenDaylight :: MDSAL :: Broker odl-aaa-authn | 0.1.0-Helium | x | odl-aaa-0.1.0-Helium | OpenDaylight :: AAA :: Authentication odl-config-persister | 0.2.5-Helium | x | odl-config-persister-0.2.5-Helium | OpenDaylight :: Config Persister odl-config-startup | 0.2.5-Helium | x | odl-config-persister-0.2.5-Helium | OpenDaylight :: Config Persister:: Config Startup odl-restconf | 1.1-Helium | x | odl-controller-1.1-Helium | OpenDaylight :: Restconf odl-restconf-noauth | 1.1-Helium | x | odl-controller-1.1-Helium | OpenDaylight :: Restconf odl-mdsal-apidocs | 1.1-Helium | x | odl-controller-1.1-Helium | OpenDaylight :: MDSAL :: APIDOCS odl-mdsal-common | 1.1-Helium | x | odl-config-0.2.5-Helium | OpenDaylight :: Config :: All odl-config-api | 0.2.5-Helium | x | odl-config-0.2.5-Helium | OpenDaylight :: Config :: API odl-config-netty-config-api | 0.2.5-Helium | x | odl-config-0.2.5-Helium | OpenDaylight :: Config :: Netty Config API odl-config-core | 0.2.5-Helium | x | odl-config-0.2.5-Helium | OpenDaylight :: Config :: Core odl-config-manager | 0.2.5-Helium | x | odl-config-0.2.5-Helium | OpenDaylight :: Config :: Manager odl-base-all | 1.4.2-Helium | x | odl-base-1.4.2-Helium | OpenDaylight Controller odl-base-dummy-console | 1.1.0-Helium | x | odl-base-1.4.2-Helium | Temporary Dummy Console odl-base-felix-dm | 3.1.0 | x | odl-base-1.4.2-Helium | Felix Dependency Manager odl-base-aries-spi-fly | 1.0.0 | x | odl-base-1.4.2-Helium | Aries SPI Fly odl-base-netty | 4.0.23.Final | x | odl-base-1.4.2-Helium | odl-base-jersey | 1.17 | x | odl-base-1.4.2-Helium | Jersey odl-base-jackson | 2.3.2 | x | odl-base-1.4.2-Helium | Jackson JAX-RS odl-base-slf4j | 1.7.2 | x | odl-base-1.4.2-Helium | SLF4J Logging odl-base-apache-commons | 1.4.2-Helium | x | odl-base-1.4.2-Helium | Apache Commons Libraries odl-base-eclipselink-persistence | 2.0.4.v201112161009 | x | odl-base-1.4.2-Helium | EclipseLink Persistence API odl-base-gemini-web | 2.2.0.RELEASE | x | odl-base-1.4.2-Helium | Gemini Web odl-base-tomcat | 7.0.53 | x | odl-base-1.4.2-Helium | OpenDaylight Tomcat odl-base-spring | 3.1.3.RELEASE | x | odl-base-1.4.2-Helium | Opendaylight Spring Support odl-base-spring-web | 3.1.3.RELEASE | x | odl-base-1.4.2-Helium | OpenDaylight Spring Web odl-base-spring-security | 3.1.3.RELEASE | x | odl-base-1.4.2-Helium | OpenDaylight Spring Security odl-l2switch-switch | 0.1.0-Helium | x | l2switch-0.1.0-Helium | OpenDaylight :: L2Switch :: Switch odl-l2switch-hosttracker | 0.1.0-Helium | x | l2switch-0.1.0-Helium | OpenDaylight :: L2Switch :: HostTracker odl-l2switch-addresstracker | 0.1.0-Helium | x | l2switch-0.1.0-Helium | OpenDaylight :: L2Switch :: AddressTracker odl-l2switch-arphandler | 0.1.0-Helium | x | l2switch-0.1.0-Helium | OpenDaylight :: L2Switch :: ArpHandler odl-l2switch-loopremover | 0.1.0-Helium | x | l2switch-0.1.0-Helium | OpenDaylight :: L2Switch :: LoopRemover odl-l2switch-packethandler | 0.1.0-Helium | x | l2switch-0.1.0-Helium | OpenDaylight :: L2Switch :: PacketHandler odl-openflowjava-protocol | 0.5-Helium | x | odl-openflowjava-0.5-Helium | OpenDaylight :: Openflow Java :: Protocol odl-openflowplugin-southbound | 0.0.3-Helium | x | openflowplugin-0.0.3-Helium | OpenDaylight :: Openflow Plugin :: SouthBound odl-openflowplugin-flow-services | 0.0.3-Helium | x | openflowplugin-0.0.3-Helium | OpenDaylight :: Openflow Plugin :: Flow Services odl-dlux-core | 0.1.0-Helium | x | odl-dlux-0.1.0-Helium | odl-protocol-framework | 0.5.0-Helium | x | odl-protocol-framework-0.5.0-Helium | OpenDaylight :: Protocol Framework transaction | 1.0.1 | x | enterprise-3.0.1 | OSGi Transaction Manager pax-jetty | 8.1.14.v20131031 | x | org.ops4j.pax.web-3.1.0 | Provide Jetty engine support pax-http | 3.1.0 | x | org.ops4j.pax.web-3.1.0 | Implementation of the OSGI HTTP Service pax-http-whiteboard | 3.1.0 | x | org.ops4j.pax.web-3.1.0 | Provide HTTP Whiteboard pattern support pax-war | 3.1.0 | x | org.ops4j.pax.web-3.1.0 | Provide support of a full WebContainer odl-adsal-all | 0.8.1-Helium | x | adsal-0.8.1-Helium | OpenDaylight AD-SAL All Features odl-adsal-core | 0.8.1-Helium | x | adsal-0.8.1-Helium | OpenDaylight :: AD-SAL :: Core odl-adsal-networkconfiguration | 0.0.3-Helium | x | adsal-0.8.1-Helium | OpenDaylight :: AD-SAL :: Network Configuration odl-adsal-connection | 0.1.2-Helium | x | adsal-0.8.1-Helium | OpenDaylight :: AD-SAL :: Connection odl-adsal-clustering | 0.5.1-Helium | x | adsal-0.8.1-Helium | OpenDaylight :: AD-SAL :: Clustering odl-adsal-configuration | 0.4.3-Helium | x | adsal-0.8.1-Helium | OpenDaylight :: AD-SAL :: Configuration odl-adsal-thirdparty | 0.8.1-Helium | x | adsal-0.8.1-Helium | OpenDaylight :: AD-SAL :: Third-Party Depenencies
"http://<ip-address>:8181/dlux/index.html"へアクセスすると、ログイン画面が表示されるはずです。
MD-SALとは?Yangとは?
MD-SALはより抽象化された形でトポロジー情報や管理対象の機器の情報をデータストアに収容しています。モデル構造はYangをベースに定義されており、そのデータはnorthboundからrest-apiを通してGET/POST/DELETEなどの操作が可能です。
Yangですが、brocadeがopendaylightベースのコントローラであるvyatta controllerを発表してから耳にした人も多いのではないでしょうか。
YangはRFC6020で規定されています。
YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)
NETCONFのデータモデル言語で通知、RPC、ノードの状態、設定などを定義しています。
brocadeのYang Reference Manualはstatusやflagsなどデータ構造の解説も簡単に記載があるのでイメージは掴みやすいのではと思います。
openflowスイッチ起動とopendaylight GUI確認
今回もmininetを使用します。openflow1.3のスイッチを3階層で起動します。
mininet@mininet-vm:~\> sudo mn --mac --switch=ovsk,protocols=OpenFlow13 --controller=remote,ip=127.0.0.1,port=6653 --topo=tree,3 *** Creating network *** Adding controller *** Adding hosts: h1 h2 h3 h4 h5 h6 h7 h8 *** Adding switches: have protcol params! s1 have protcol params! s2 have protcol params! s3 have protcol params! s4 have protcol params! s5 have protcol params! s6 have protcol params! s7 *** Adding links: (h1, s3) (h2, s3) (h3, s4) (h4, s4) (h5, s6) (h6, s6) (h7, s7) (h8, s7) (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s5, s6) (s5, s7) *** Configuring hosts h1 h2 h3 h4 h5 h6 h7 h8 *** Starting controller *** Starting 7 switches s1 OVSswitch opts: protocols=OpenFlow13 s2 OVSswitch opts: protocols=OpenFlow13 s3 OVSswitch opts: protocols=OpenFlow13 s4 OVSswitch opts: protocols=OpenFlow13 s5 OVSswitch opts: protocols=OpenFlow13 s6 OVSswitch opts: protocols=OpenFlow13 s7 OVSswitch opts: protocols=OpenFlow13
odlで見ると以下のようなトポロジマップが表示されます。mininetでリンクを操作するとトポロジマップに反映されていたので問題なさそうです。
mininet> link s1 s2 down
Yang UIを操作してみる
Yang UIというタブがありますので早速アクセスします。これは先ほどのMD-SALのデータストアを扱うためのツールです。
試しに格納されている情報をYang Toolを通じて確認してみます。network-topology -> operational -> network-topologyでGETします。
id: flow:1というトポロジのnode list, link listなどを確認できます。このツールにはshow previewで先ほど見たようなトポロジマップを確認する機能もあります。
このYang UIを使ってNETCONF/Yangに対応した機器のNode_IDを指定したデータのPOSTなども可能ということですね。また試してみたいと思います。
おわりに/その他
- まだOpenflowのコントローラを立ち上げただけに過ぎない
- Yangについては頭の中が少しばかり整理された
- VTN Coordinatorとの連携も検証してみたい
- その他、冒頭のキーワードは実装状況含め潰していく
個人テーマとしては、中期的にSelf-Driving Network、短期的にはHybridな気がしてきました。
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
- 作者: あきみち,宮永直樹,岩田淳
- 出版社/メーカー: オーム社
- 発売日: 2013/07/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
- 作者: 馬場達也,大上貴充,関山宜孝,?畑知也
- 出版社/メーカー: 翔泳社
- 発売日: 2013/09/13
- メディア: 大型本
- この商品を含むブログ (3件) を見る