-== OpenDaylight Controller Overview
-The OpenDaylight project is a collaborative open source project that aims to accelerate adoption of Software-Defined Networking (SDN)
-and Network Functions Virtualization (NFV) with a transparent approach that fosters new innovation and reduces risk.
-
-OpenDaylight mainly consists of software designed to be run on top of a Java Virtual Machine (JVM) and can be run on any operating system
-and hardware as long as it supports Java. OpenDaylight is an implementation of the
-Software Defined Network (SDN) concept and makes use of the following third-party tools:
-
-* *Maven*: OpenDaylight uses Maven for easier build automation. Maven uses pom.xml
-(Project Object Model) to script the dependencies between bundles and also to describe
-which bundles to load and start.
-
-* *OSGi*: OSGi framework is the back-end of OpenDaylight as it allows dynamically
-loading bundles and packages JAR files, and binding bundles together for exchanging
-information.
-
-* *JAVA interfaces*: Java interfaces are usually generated by compiling the YANG project. Java interfaces are used for event listening, specifications, and forming
-patterns. This is the main way in which specific bundles implement call-back functions for events and also to indicate awareness of specific state.
-
-* *REST APIs*: Most of the REST APIs in OpenDaylight are defined using YANG tools and are RESTCONF APIs.
-
-* *Karaf*: TBD
-
-Add content related to Lithium (TBD)
-
-For a more detailed overview of the OpenDaylight controller, see the _OpenDaylight
-Developer Guide_
+[preface]
+== OpenDaylight Overview
+The OpenDaylight project is a collaborative open source project that
+aims to accelerate adoption of Software-Defined Networking (SDN) and
+Network Functions Virtualization (NFV) with a transparent approach that
+fosters new innovation.
+
+OpenDaylight mainly consists of software designed to be run on top of a
+Java Virtual Machine (JVM) and can be run on any operating system and
+hardware as there is a Java Runtime Environment (JRE) available for it.
+
+// TODO: uncomment the following lines when we have them to the point we think they're useful.
+// OpenDaylight makes use of the following third-party tools:
+//
+// * *Maven*: OpenDaylight uses Maven for easier build automation. Maven uses pom.xml
+// (Project Object Model) to script the dependencies between bundles.
+//
+// * *OSGi*: OSGi framework is the back-end of OpenDaylight as it allows dynamically
+// loading bundles and packages JAR files, and binding bundles together for exchanging
+// information.
+//
+// * *JAVA interfaces*: Java interfaces are usually generated by compiling the YANG project. Java interfaces are used for event listening, specifications, and forming
+// patterns. This is the main way in which specific bundles implement call-back functions for events and also to indicate awareness of specific state.
+//
+// * *REST APIs*: Most of the REST APIs in OpenDaylight are defined using YANG tools and are RESTCONF APIs.
+//
+// * *Karaf*: TBD
+
+For a more detailed information about OpenDaylight, see the and _OpenDaylight User Guie_, _OpenDaylight
+Developer Guide_.
== Getting and Installing OpenDaylight Lithium
-// Commenting out this section until we can actually provide some content.
-//
-// === System requirements and prerequisites
-// * *Hardware Requirements*: <To be added>
-//
-// * *Software Requirements*:
-// If you are using Oracle, JDK version 1.7.0_45 or later is required.
-//
-// ==== For Execution
-// The OpenDaylight controller source files are portable and require a Java 7-compliant JVM to run.
-//
-// ==== For Development
-// TBD
-
=== Downloading and installing OpenDaylight Lithium
-The default distribution can be found on the OpenDaylight software download page:
-http://www.opendaylight.org/software/downloads
+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, you can install all the features.
-
-NOTE: You cannot enable all the features at the same time.
+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:
----
-Press *tab* for a list of available commands and *[cmd] --help* for help on a specific command.
-Press *ctrl-d* or type *system:shutdown* or *logout* to shutdown OpenDaylight.
+* 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 Lithium and the relevant Karaf feature to install in order to enable that component.
+The section describes a list of components in OpenDaylight Lithium and
+the relevant Karaf feature to install in order to enable that component.
To install a feature use the following command:
-----
.Lithium Components
[options="header",cols="18%,50%,18%,14%"]
|====
-| Component Name | Component Description | Karaf feature name | Compatibility
-| BGPCEP | Enables support for BGP LS PCEP | odl-bgpcep-all | all
-| Defense4All | Enable DDoS detection and protection | n/a | all
-| Group Based Policy | Enable Endpoint Registry and Policy Repository REST APIs and associated functionality for the Group Based Policy Proof of Concept demonstration | odl-groupbasedpolicy-ofoverlay | self+all
-| L2 Switch | Provides L2 (Ethernet) forwarding across connected OppenFlow switches and support for host tracking | odl-l2switch-switch-ui | self+all
-| LISP Flow Mapping | Enable LISP control plane services including the mapping system services REST API and LISP protocol SB plugin | odl-lispflowmapping-all | all
-| MD-SAL Clustering | Provides support for operating a cluster of OpenDaylight instances | odl-mdsal-clustering | special
-| Netconf over SSH | Provides support to manage Netconf-enabled devices over SSH | odl-netconf-connector-ssh | 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
-| OVS Management | Enables OVS management using OVSDB plugin and its associated OVSDB northbound APIs | odl-ovsdb-all | all
-| OVSDB OpenStack Neutron | OpenStack Network Virtualization using OpenDaylight's OVSDB support | odl-ovsdb-openstack | all
-| Packetcable PCMM | Enables flow-based dynamic QoS management of CMTS using in the DOCSIS infrastructure | odl-packetcable-all | all
-| Plugin to OpenContrail | Provides OpenStack Neutron support via OpenContrail | odl-plugin2oc | self+all
-| RESTCONF API Support | Enables REST API access to the MD-SAL including the data store | odl-restconf | all
-| SDN Interface | Provides support for interaction and sharing of state between (non-clustered) OpenDaylight instances | odl-sdninterfaceapp-all | all
-| Secure Networking Bootstrap | Defines a SNBI domain and associated white lists of devices to be accommodated to the domain | odl-snbi-all | all
-| Service Flow Chaining (SFC) | Enables support for applying chains of network services to certain traffic | odl-sfc-all | all
-| SFC over LISP | Supports implementing SFC using LISP | odl-sfclisp | all
-| SFC over L2 | Supports implementing SFC using Layer 2 forwarding | odl-sfcofl2 | all
-| SFC over VXLAN | Supports implementing SFC using VXLAN via OVSDB | odl-ovsdb-ovssfc | self+all
-| SNMP4SDN | Enables monitoring and control of network elements via SNMP | odl-snmp4sdn-all | 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
+| Component Name | Component Description | Karaf feature name | Compatibility
+| ALTO | Enable support for Application-Layer Traffic Optimization | odl-alto-all | self+all
+| BGP | Enables support for BGP | odl-bgpcep-bgp-all | all
+| CAPWAP | Enables control of supported wireless APs | odl-capwap-ac-rest | all
+| DIDM | Device Identification and Driver Management | odl-didm-identification-api, odl-didm-identification, and odl-didm-drivers-api | all
+| Group Based Policy | Enable Endpoint Registry and Policy Repository REST APIs and associated functionality for Group Based Policy | odl-groupbasedpolicy-ofoverlay | self+all
+| Internet of Things Data Management | Enables support for the oneM2M specification | odl-iotdm-onem2m | all
+| L2 Switch | Provides L2 (Ethernet) forwarding across connected OppenFlow switches and support for host tracking | odl-l2switch-switch-ui | self+all
+| LACP | Enable support for the Link Aggregation Control Protocol | odl-lacp-ui | self+all
+| LISP Flow Mapping | Enable LISP control plane services including the mapping system services REST API and LISP protocol SB plugin | odl-lispflowmapping-all | all
+| MD-SAL Clustering | Provides support for operating a cluster of OpenDaylight instances | odl-mdsal-clustering | special
+| NETCONF over SSH | Provides support to manage NETCONF-enabled devices over SSH | odl-netconf-connector-ssh | all
+| Network Intent Composition | Enable support for high-level network control via intents | odl-nic-core | self+all
+| OVS Management | Enables OVS management using OVSDB plugin and its associated OVSDB northbound APIs | odl-ovsdb-all | all
+| OVSDB OpenStack Neutron | OpenStack Network Virtualization using OpenDaylight's OVSDB support | odl-ovsdb-openstack | self+all
+| OpFlex | Enables support for the OpFlex protocol | special (see user/developer guide) | 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
+| PCEP | Enables support for PCEP | odl-bgpcep-pcep-all | all
+| Packetcable PCMM | Enables flow-based dynamic QoS management of CMTS using in the DOCSIS infrastructure | odl-packetcable-all | self+all
+| Packetcable Policy Server | Enables support for the PacketCable policy server | odl-packetcable-policy-server-all | self+all
+| RESTCONF API Support | Enables REST API access to the MD-SAL including the data store | odl-restconf | all
+| SDN Interface | Provides support for interaction and sharing of state between (non-clustered) OpenDaylight instances | odl-sdninterfaceapp-all | all
+| SFC over L2 | Supports implementing SFC using Layer 2 forwarding | odl-sfcofl2 | self+all
+| SFC over LISP | Supports implementing SFC using LISP | odl-sfclisp | all
+| SFC over REST | Supports implementing SFC using REST CRUD operations on network elements | odl-sfc-sb-rest | all
+| SFC over VXLAN | Supports implementing SFC 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 | Enable support for federated authentication using SSSD | odl-aaa-sssd-plugin | 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
+| Secure tag eXchange Protocol (SXP) | Enables distribution of shared tags to network devices | odl-sxp-controller | all
+| Service Flow Chaining (SFC) | Enables support for applying chains of network services to certain traffic | odl-sfc-all | all
+| Time Series Data Repository (TSDR) | Enables historical tracking of OpenFlow statistics | odl-tsdr-all | self+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
|====
-In the table a compatibility value of *all* means that it can be run with other features. A value of *self+all* indicates that the feature can be installed with other features with a value of *all*, but not other features with a value of *self+all*.
+In the table a compatibility value of *all* means that it can be run with other features. A value of *self+all* indicates that the feature can be installed with other features with a value of *all*, but may interact badly other features with a value of *self+all*.
+
+.Experimental Lithium Components
+[options="header",cols="18%,50%,18%,14%"]
+|====
+| Component Name | Component Description | Karaf feature name | Compatibility
+| Persistence | Enables saving of data to external databases | odl-persistence-api | self+all
+| Reservation | Enables bandwidth calendaring using the TL1 protocol | odl-reservation-models | all
+|====
==== Listing available features
To find the complete list of Karaf features, run the following command:
=== 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 the Opendaylight controller.
+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 Controller you must enable DLUX Karaf feature. You can enable AD-SAL, MD-SAL and various other bundles within Karaf depending on the features you
+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.
== OpenDaylight Release Notes
-=== Key Features
-
-A list of the key functionality provided in OpenDaylight Helium can be found in the table in the <<_installing_the_components,section below>>.
-
-////
-The following table describes the key features provided by OpenDaylight Helium.
-
-[cols="2",option="headers"]
-|==============================================
-| *Feature* | *Description*
-| Maven support | Used to simplify build automation.
-| OSGi framework | Serves as the controller's back-end, allowing it to dynamically load bundles, package JAR files, and bind bundles together when exchanging information.
-| Java interface support | Used by specific bundles to implement call-back functions for events and indicate the awareness of specific states.
-| Model- Driven Service Abstraction Layer (MD-SAL) | Allows the controller to support multiple protocols (such as BGP-LS and OpenFlow) on the southbound interface. Also provides consistent services for modules and applications (which is where the business logic is embedded).
-| Switch Manager | Once a network element has been discovered, its details (such as device type, software version, etc.) are stored by the Switch Manager.
-| High Availability (HA) | The controller supports cluster-based HA, allowing you to connect multiple controllers and configure them to act as one in order to ensure the controller's continuous operation.
-|==============================================
-////
=== Target Environment
==== For Execution
additional requirements. Those are noted in the project-specific
release notes.
-// TODO: Do we want to call out specific projects that have other requirements?
-// * TCP-MD5 requires 64-bit Linux
-// * TSDR requirements for HBase?
-// * SFC requirements for OVS (also lots of Linux I think)
-// * SXP depends on TCP-MD5
-// * SNBI for Linux, Docker, C and other things
-// * OpFlex for lots of things
-// * DLUX many things for development, what browsers?
-// * AAA if you using SSSD which comes with Centos/RHEL
+Projects and features which have known additional requirements are:
+* TCP-MD5 requires 64-bit Linux
+* TSDR has extended requirements for external databases
+* Persistence has extended requirements for external databases
+* SFC requires addition features for certain configurations
+* SXP depends on TCP-MD5 on thus requires 64-bit Linux
+* SNBI has requirements for Linux and Docker
+* OpFlex requires Linux
+* DLUX requires a modern web browser to view the UI
+* AAA when using federation has additional requirements for external tools
+* VTN has components which require Linux
-NOTE: If you are using Oracle, JDK version 1.7.0_45 or later is required.
+NOTE: If you are using the Oracle JDK, version 1.7.0_45 or later is required.
==== For Development
Maven will download the appropriate tools to build this, additional
plugins may be required for IDE support.
+The projects with additional requirements for execution typically have
+similar or more extensive additional requirements for development. See
+the project-specific release notes for details.
+
=== Known Issues and Limitations
Other than as noted in project-specific release notes, we know of the