OpenDaylight Heliumをインストールしてみた

こんにちわ、komeiです。

opendaylight heliumをインストールして少し見てみました。Yang Toolをもう少し調べて進めてみたいですが、なかなか前に進みません。(記載ミスがありましたら、すいません)

これを機に以下のキーワードはきっちり消化したいのですが、まずは実際にインストールから始めました。

  • Yang
  • Affinity Config
  • Large Flow Detection and steering

※ 前回のhydrogenはこちらです。

Opendaylight Helium インストールと起動

まずはインストールガイドを参照するのが一番良いと思います。

インストール要件に関して、OSなどの情報が書かれていませんのでこちらの環境を記載しておきます。

以前、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フレームワークをベースとしたランタイムです。

http://karaf.apache.org

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のデータストアを扱うためのツールです。

f:id:komeiy:20141018181857j:plain

試しに格納されている情報をYang Toolを通じて確認してみます。network-topology -> operational -> network-topologyでGETします。

f:id:komeiy:20141018181931j:plain

id: flow:1というトポロジのnode list, link listなどを確認できます。このツールにはshow previewで先ほど見たようなトポロジマップを確認する機能もあります。

f:id:komeiy:20141018181834j:plain

このYang UIを使ってNETCONF/Yangに対応した機器のNode_IDを指定したデータのPOSTなども可能ということですね。また試してみたいと思います。

おわりに/その他

  • まだOpenflowのコントローラを立ち上げただけに過ぎない
  • Yangについては頭の中が少しばかり整理された
  • VTN Coordinatorとの連携も検証してみたい
  • その他、冒頭のキーワードは実装状況含め潰していく

個人テーマとしては、中期的にSelf-Driving Network、短期的にはHybridな気がしてきました。


シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。

このエントリーをはてなブックマークに追加

マスタリングTCP/IP OpenFlow編

マスタリングTCP/IP OpenFlow編

OpenFlow徹底入門 SDNを実現する技術と知識

OpenFlow徹底入門 SDNを実現する技術と知識