== Getting and Installing OpenDaylight === Downloading and installing OpenDaylight The default distribution can be found on the OpenDaylight software download page: http://www.opendaylight.org/software/downloads The Karaf distribution has no features enabled by default. However, all of the features are available to be installed. NOTE: For compatibility reasons, you cannot enable all the features simultaneously. We try to document known incompatibilities <<_installing_the_components,below>>. ==== Running the karaf distribution To run the Karaf distribution: . Unzip the zip file. . Navigate to the directory. . run `./bin/karaf`. For Example: [frame="none"] |=== a| ---- $ ls distribution-karaf-0.4.0-Beryllium.zip distribution-karaf-0.4.0-Beryllium.zip $ unzip distribution-karaf-0.4.0-Beryllium.zip Archive: distribution-karaf-0.4.0-Beryllium.zip creating: distribution-karaf-0.4.0-Beryllium/ creating: distribution-karaf-0.4.0-Beryllium/configuration/ creating: distribution-karaf-0.4.0-Beryllium/data/ creating: distribution-karaf-0.4.0-Beryllium/data/tmp/ creating: distribution-karaf-0.4.0-Beryllium/deploy/ creating: distribution-karaf-0.4.0-Beryllium/etc/ creating: distribution-karaf-0.4.0-Beryllium/externalapps/ ... inflating: distribution-karaf-0.4.0-Beryllium/bin/start.bat inflating: distribution-karaf-0.4.0-Beryllium/bin/status.bat inflating: distribution-karaf-0.4.0-Beryllium/bin/stop.bat $ cd distribution-karaf-0.4.0-Beryllium $ ./bin/karaf ________ ________ .__ .__ .__ __ \_____ \ ______ ____ ____ \______ \ _____ ___.__.\| \| \|__\| ____ \| \|___/ \|_ / \| \\____ \_/ __ \ / \ \| \| \\__ \< \| \|\| \| \| \|/ ___\\| \| \ __\ / \| \ \|_> > ___/\| \| \\| ` \/ __ \\___ \|\| \|_\| / /_/ > Y \ \| \_______ / __/ \___ >___\| /_______ (____ / ____\|\|____/__\___ /\|___\| /__\| \/\|__\| \/ \/ \/ \/\/ /_____/ \/ ---- * Press *tab* for a list of available commands * Typing *[cmd] --help* will show help for a specific command. * Press *ctrl-d* or type *system:shutdown* or *logout* to shutdown OpenDaylight. |=== === Installing the components The section describes a list of components in OpenDaylight Beryllium and the relevant Karaf feature to install in order to enable that component. To install a feature use the following command: ----- feature:install ----- For Example: ----- feature:install ----- Multiple features can be installed using the following command: ----- feature:install ... ----- .Beryllium Features [options="header",cols="18%,50%,18%,14%"] |==== | Feature Name | Feature Description | Karaf feature name | Compatibility | Authentication | Enables authentication with support for federation using Apache Shiro | odl-aaa-shiro | all | BGP | Provides support for Border Gateway Protocol (including Link-State Distribution) as a source of L3 topology information | odl-bgpcep-bgp | all | BMP | Provides support for BGP Monitoring Protocol as a monitoring station | odl-bgpcep-bmp | all | DIDM | Device Identification and Driver Management | odl-didm-all | all | Centinel | Provides interfaces for streaming analytics | odl-centinel-all | all | DLUX | Provides an intuitive graphical user interface for OpenDaylight | odl-dlux-all | all | Fabric as a Service (FaaS) | Creates a common abstraction layer on top of a physical network so northbound APIs or services can be more easily mapped onto the physical network as a concrete device configuration. | odl-faas-all | self+all | Group Based Policy (GBP) | Enables Endpoint Registry and Policy Repository REST APIs and associated functionality for Group Based Policy with the default renderer for OpenFlow renderers | odl-groupbasedpolicy-ofoverlay | self+all | GBP User Interface | Enables a web-based user interface for Group Based Policy | odl-groupbasedpolicy-ui | all | GBP FaaS renderer | Enables the Fabric as a Service renderer for Group Based Policy | odl-groupbasedpolicy-faas | self+all | GBP Neutron Support | Provides OpenStack Neutron support using Group Based Policy | odl-groupbasedpolicy-neutronmapper | all | L2 Switch | Provides L2 (Ethernet) forwarding across connected OpenFlow switches and support for host tracking | odl-l2switch-switch-ui | self+all | LACP | Enables support for the Link Aggregation Control Protocol | odl-lacp-ui | self+all | LISP Flow Mapping | Enables LISP control plane services including the mapping system services REST API and LISP protocol SB plugin | odl-lispflowmapping-msmr | all | NEMO CLI | Provides intent mapping and implementation with CLI for legacy devices | odl-nemo-cli-renderer | all | NEMO OpenFlow | Provides intent mapping and implementation for OpenFlow devices | odl-nemo-openflow-renderer | self+all | NetIDE | Enables portability and cooperation inside a single network by using a client/server multi-controller architecture | odl-netide-rest | all | NETCONF over SSH | Provides support to manage NETCONF-enabled devices over SSH | odl-netconf-connector-ssh | all | OF-CONFIG | Enables remote configuration of OpenFlow datapaths | odl-of-config-rest | all | OVSDB OpenStack Neutron | OpenStack Network Virtualization using OpenDaylight's OVSDB support | odl-ovsdb-openstack | all | OVSDB Southbound | OVSDB MDSAL southbound plugin for the Open_vSwitch schema | odl-ovsdb-southbound-impl-ui | all | OVSDB HWVTEP Southbound | OVSDB MDSAL hwvtep southbound plugin for the hw_vtep schema | odl-ovsdb-hwvtepsouthbound-ui | all | OVSDB NetVirt SFC | OVSDB NetVirt support for SFC | odl-ovsdb-sfc-ui | all | OpenFlow Flow Programming | Enables discovery and control of OpenFlow switches and the topology between them | odl-openflowplugin-flow-services-ui | all | OpenFlow Table Type Patterns | Allows OpenFlow Table Type Patterns to be manually associated with network elements | odl-ttp-all | all | Packetcable PCMM | Enables flow-based dynamic QoS management of CMTS use in the DOCSIS infrastructure and a policy server | odl-packetcable-policy-server | self+all | PCEP | Enables support for PCEP | odl-bgpcep-pcep | all | RESTCONF API Support | Enables REST API access to the MD-SAL including the data store | odl-restconf | all | SDNinterface | Provides support for interaction and sharing of state between (non-clustered) OpenDaylight instances | odl-sdninterfaceapp-all | all | SFC over L2 | Supports implementing Service Function Chaining using Layer 2 forwarding | odl-sfcofl2 | self+all | SFC over LISP | Supports implementing Service Function Chaining using LISP | odl-sfclisp | all | SFC over REST | Supports implementing Service Function Chaining using REST CRUD operations on network elements | odl-sfc-sb-rest | all | SFC over VXLAN | Supports implementing Service Function Chaining using VXLAN tunnels | odl-sfc-ovs | self+all | SNMP Plugin | Enables monitoring and control of network elements via SNMP | odl-snmp-plugin | all | SNMP4SDN | Enables OpenFlow-like control of network elements via SNMP | odl-snmp4sdn-all | all | SSSD Federated Authentication | Enables support for federated authentication using SSSD | odl-aaa-sssd-plugin | all | Secure tag eXchange Protocol (SXP) | Enables distribution of shared tags to network devices | odl-sxp-controller | all | Time Series Data Repository (TSDR) | Enables support for storing and querying time series data with the default data collector for OpenFlow statistics the default data store for HSQLDB | odl-tsdr-hsqldb-all | all | TSDR Data Collectors | Enables support for various TSDR data sources (collectors) including OpenFlow statistics, NetFlow statistics, SNMP data, Syslog, and OpenDaylight (controler) metrics | odl-tsdr-openflow-statistics-collector, odl-tsdr-netflow-statistics-collector, odl-tsdr-snmp-data-collector, odl-tsdr-syslog-collector, and/or odl-tsdr-controller-metrics-collector | all | TSDR Data Stores | Enables support for TSDR data stores including HSQLDB, HBase, and Cassandra | odl-tsdr-hsqldb, odl-tsdr-hbase, or odl-tsdr-cassandra | all | Topology Processing Framework | Enables merged and filtered views of network topologies | odl-topoprocessing-framework | all | Unified Secure Channel (USC) | Enables support for secure, remote connections to network devices | odl-usc-channel-ui | all | VPN Service | Enables support for OpenStack VPNaaS | odl-vpnservice-core | all | VTN Manager | Enables Virtual Tenant Network support | odl-vtn-manager-rest | self+all | VTN Manager Neutron | Enables OpenStack Neutron support of VTN Manager | odl-vtn-manager-neutron | self+all |==== ==== Other Beryllium features .Other Beryllium features [options="header",cols="18%,50%,18%,14%"] |==== | Feature Name | Description | Feature name | Compatibility | OpFlex | Provides OpFlex Agent for Open VSwitch to enforce network policy, such as GBP, for locally-attached virtual machines or containers | n/a | all | NeXt | Provides a developer toolkit for designing network-centric topology user interfaces | n/a | all |==== ==== Beryllium experimental features The following functionality is labeled as experimental in OpenDaylight Beryllium and should be used accordingly. In general, it is not supposed to be used in production unless its limitations are well understood by those deploying it. .Experimental Beryllium Features [options="header",cols="18%,50%,18%,14%"] |==== | Feature Name | Description | Karaf feature name | Compatibility | Authorization | Enables configurable role-based authorization | odl-aaa-authz | all | ALTO | Enables support for Application-Layer Traffic Optimization | odl-alto-core | self+all | CAPWAP | Enables control of supported wireless APs | odl-capwap-ac-rest | all | Clustered Authentication | Enables the use of the MD-SAL clustered data store for the authentication database | odl-aaa-authn-mdsal-cluster | all | Controller Shield | Provides controller security information to northbound applications | odl-usecplugin | all | GPB IO Visor Renderer | Provides support for rendering Group Based Policy to IO Visor | odl-groupbasedpolicy-iovisor | all | Internet of Things Data Management | Enables support for the oneM2M specification | odl-iotdm-onem2m | all | LISP Flow Mapping OpenStack Network Virtualization | Experimental support for OpenStack Neutron virtualization | odl-lispflowmapping-neutron | self+all | Messaging4Transport | Introduces an AMQP Northbound to MD-SAL | odl-messaging4transport | all | Network Intent Composition (NIC) | Provides abstraction layer for communicating network intents (including a distributed intent mapping service REST API) using either Hazelcast or the MD-SAL as the backing data store for intents | odl-nic-core-hazelcast or odl-nic-core-mdsal | all | NIC Console | Provides a Karaf CLI extension for intent CRUD operations and mapping service operations | odl-nic-console | all | NIC VTN renderer | Virtual Tenant Network renderer for Network Intent Composition | odl-nic-renderer-vtn | self+all | NIC GBP renderer | Group Based Policy renderer for Network Intent Composition | odl-nic-renderer-gbp | self+all | NIC OpenFlow renderer | OpenFlow renderer for Network Intent Composition | odl-nic-renderer-of | self+all | NIC NEMO renderer | NEtwork MOdeling renderer for Network Intent Composition | odl-nic-renderer-nemo | self+all | OVSDB NetVirt UI | OVSDB DLUX UI | odl-ovsdb-ui | all | Secure Networking Bootstrap | Defines a SNBi domain and associated white lists of devices to be accommodated to the domain | odl-snbi-all | self+all | UNI Manager | Initiates the development of data models and APIs to facilitate configuration and provisioning connectivity services for OpenDaylight applications and services | odl-unimgr | all | YANG PUBSUB | Allows subscriptions to be placed on targeted subtrees of YANG datastores residing on remote devices to obviate the need for OpenDaylight to make continuous fetch requests | odl-yangpush-rest | all |==== ==== Listing available features To find the complete list of Karaf features, run the following command: ---- feature:list ---- To list the installed Karaf features, run the following command: ---- feature:list -i ---- // Commenting out this section until we can actually provide some content. // // === Verifying your installation // TBD === Installing support for REST APIs Most components that offer REST APIs will automatically load the RESTCONF API Support component, but if for whatever reason they seem to be missing, you can activate this support by installing the `odl-restconf` feature. // Commenting out this section until we can actually provide a tutorial that a // user could follow // // === Making RESTCONF calls // RESTCONF is a protocol that provides a programmatic interface over HTTP to access data that is defin // ed in a YANG model and stored in data stores defined in the NETCONF protocol. // RESTCONF protocol is implemented in `sal-rest-connector` artifact that is packed with the Karaf bundle. // For more information on the RESTCONF protocol, refer to http://tools.ietf.org/html/draft-bierman-net // conf-restconf-02 // // RESTCONF allows access to datastores in the controller. // The datastores available are: // // * config - contains data inserted using controller // * operational - contains other data // // ==== Making a RESCONF call using cURL // // TBD // Commenting this out as it appears to be out of date and there is already // information about installing and using DLUX above. // //=== Installing the DLUX web interface // //The OpenDaylight web interface; DLUX, draws information from topology and host databases to display information about the topology of the network, //flow statistics, host locations. You can either use DLUX as a stand-alone plug-in or integrate with OpenDaylight. //To install DLUX as a standalone application, refer to https://wiki.opendaylight.org/view/OpenDaylight_DLUX:Setup_and_Run //To integrate with OpenDaylight you must enable DLUX Karaf feature. You can enable AD-SAL, MD-SAL and various other bundles within Karaf depending on the features you //would like to access using DLUX. Each feature can be enabled or disabled separately. // //[IMPORTANT] //Ensure that you have created a topology and enabled MD-SAL feature in the Karaf distribution before you use DLUX for network management. //For more information about enabling the Karaf features for DLUX, refer to https://wiki.opendaylight.org/view/OpenDaylight_DLUX:DLUX_Karaf_Feature === Installing MD-SAL clustering The MD-SAL clustering feature has "special" compatibility criteria. You *must* install clustering, before other features are installed. To install clustering, run the following command on the Karaf CLI console: ---- feature:install odl-mdsal-clustering ---- // Commenting out this section until we can actually provide a tutorial that // walks through getting everything set up. Maybe we should just point to the // L2 Switch docs? // // === Getting started with OpenFlow and Mininet // // ==== Downloading and installing Mininet // // Mininet downloads are available at: http://mininet.org // // The OVS version must be 2.1 or earlier. // // The instructions for installation are available at: http://mininet.org. // // ===== Verifying mininet installation // To verify your mininet installation run the following command: // `test=pingall` // // ---- // odluser@odl-vm:~\$ sudo mn --test=pingall // *** Creating network // *** Adding controller // *** Adding hosts: // h1 h2 // *** Adding switches: // s1 // *** Adding links: // (h1, s1) (h2, s1) // *** Configuring hosts // h1 h2 // *** Starting controller // *** Starting 1 switches // s1 OVSswitch opts: // *** Ping: testing ping reachability // h1 -> h2 // h2 -> h1 // *** Results: 0% dropped (2/2 received) // *** Stopping 1 switches // s1 .. // *** Stopping 2 hosts // h1 h2 // *** Stopping 1 controllers // c0 // *** Done // completed in 0.541 seconds // ---- // // ==== Enabling the OpenFlow plugin and L2 Switch // // To enable these features, run: // // ---- // feature:install odl-l2switch-switch-ui // ---- // // This will install the OpenFlow plugin and the L2 Switch application. // // ==== Running Mininet using OpenDaylight as the controller // // TODO