Enhanced Stability, Security and Network Programmability (by Ryan Goulding)

By June 12, 2017Blog

This post was originally published on Inocybe Technologies blog, reposted with their permission.

End users can rest assured that the early days of OpenDaylight releases that were jam-packed with tens-to-hundreds of new under-supported features are far gone. The latest release, Carbon, showcases the maturity and production-grade quality that Platform users have come to expect. Carbon provides significant improvements to security, stability and network programmability.

A driving goal for the OpenDaylight Carbon release is to improve the stability and reliability of ODL services.  Namely, several projects are converted to use Aries Blueprint for service activation over the bespoke configuration subsystem, an effort which was started in Boron and is improved in Carbon.  Blueprint is better documented and easier to debug, resulting in a more effective and satisfying application development experience.  Since Blueprint supports parallel service activation, there is less latency between starting the controller and utilizing the provided services.  Upgradability is improved through the Blueprint adoption, since efforts are made to separate application configuration from code wiring.  This is useful since most operators upgrading OpenDaylight wish to maintain configuration between releases, but pick up internal wiring changes.

Initial groundwork to add Apache Karaf 4.X features for each project was performed in hopes of transitioning to the newer container in the Nitrogen release.  Additionally, enhanced testing was added to ensure that features import all of the appropriate runtime bundles, improving stability of ODL features.  This groundwork should greatly help the community developers to perform the very non-trivial Karaf upgrade during the Nitrogen release cycle.

The RFC 6020 implementation of the YANG 1.0 Data Modeling Language is superseded by an implementation of RFC 7950, the YANG 1.1 Data Modeling Language.  For application developers this means that they’re now able to use YANG 1.1 constructs in their YANG models. On a similar note, interoperability with southbound NETCONF devices utilizing RFC 7950 is made possible in the Carbon release.

The clustered NETCONF implementation is greatly stabilized through re-architecture around the cluster singleton service, as well as greatly increased test coverage.  End users can expect a consistent clustered NETCONF experience to that of the Boron release, but have more peace of mind surrounding the stability of NETCONF in a distributed controller deployment.

A forward looking version of the MD-SAL Binding Specification version 2 is included in the Carbon release, though there are not yet any consuming applications.  The new version of the binding specification solves several deficiencies discovered in the original binding specification.  This implementation is Twirl-based, which has a similar function to the xtend implementation in the V1 spec, but generates the code in Scala instead of Java.  Don’t worry about running out to learn Scala; the generated Scala code is injected into the Java Runtime Environment, and is accessible to traditional Java clients.

Carbon contains an implementation of the recently (and finally) standardized RFC 8040, RESTCONF.  Hitherto, OpenDaylight users are probably most familiar interacting with the RESTCONF Draft 02 API.  The DRAFT 02 API still exists for compatibility purposes, since many pieces of software still rely on that API contract.  The new RFC 8040 RESTCONF API implementation is made available through a separate endpoint.  Users are encouraged to start exploring and using the standard version of the API, since it is still unclear how long the community should support the DRAFT 02 version.

Additionally, security of RESTCONF is improved through the addition of a model-based authorization schema in the AAA project.  Operators can now dynamically restrict sets of URL endpoints to specific classes of users at runtime.  This enhanced authorization mechanism is available for both RESTCONF versions.  AAA contributors have also added support for model-based certificate management.  Although the certificate management functionality is currently only integrated with OVSDB in the Carbon release, there are plans to provide hooks for use with other southbound protocols in the future.

An initial implementation of IETF Call Home based Draft 08 is added to the NETCONF project offering.  The implementation is currently not cluster aware, but offers the base functionality for Call Home functionality.  Overall, this improves the integration points for ODL, and enhances an operator’s ability to automate orchestration of ODL as part of a greater architecture.

Carbon debuts a new project called Daexim, a utility which allows the import and export of data from the MD-SAL datastore in JSON format.  Daexim is limited in the sense that it cannot tolerate YANG data model changes between releases.  However, developers can write external logic to manipulate data between import and export, providing for easier upgradability between releases of ODL.

Additionally, Carbon includes the first incarnation of jsonrpc, a project aimed towards enhancing external communication and federation with the controller.  For now, jsonrpc exposes a shim for ZMQ, a well tested, commodity message bus implementation.  Instead of utilizing RESTCONF, NETCONF or some other northbound interface, application developers can hook into the bus to manipulate data.  In essence, this unlocks the capability to write controller applications using non-JRE languages that support ZMQ integration.  This is compelling from the standpoint that it unlocks the ability for an entirely new set of developers to become involved with the project.

Overall, Carbon provides greater stability, security and enhanced network programability.  Groundwork is put in place to perform the Karaf upgrade in the Nitrogen release, and service activation is greatly stabilized and better tested to ensure a more consistent and friendly operational experience.  New functionality is added to help communicate with the controller, export data, and orchestrate ODL as part of a greater solution.  Dive in and download OpenDaylight’s Carbon release today from: https://www.opendaylight.org/downloads.

Written by Ryan Goulding, Senior Software Engineer at Inocybe Technologies.