The purpose of SDN is to enable a network to adapt to the requirements of applications deployed on it, rather than having applications be constrained by network limitations. Virtualized network functions (VNFs) and applications such as Hadoop require agile, flexible networks for full functionality, and OpenDaylight offers the implementation needed.

In the first of a series of articles, we present an overview of the OpenDaylight architecture so you can see the components and how they work together to enable SDN and NFV. Future articles will present use cases and show you how to implement the technology. But before we get into technical details, let’s take a look at the growth of OpenDaylight.

Behind OpenDaylight’s momentum

A Collaborative Project at the Linux Foundation, the OpenDaylight project was founded in April, 2013, and announced its first release in February, 2014. In September of that year, the Linux Foundation launched Open Platform for NFV (OPNFV), leveraging the OpenDaylight SDN controller for the BootStrap/Get Started! project with the goal of enabling flexible technologies consisting of VNFs. This project has the potential to open a huge SDN market and strengthens the push to make OpenDaylight the standard open source SDN controller and the central point for converging new and legacy networks.

Supporting that push is the OpenDaylight community, which is the largest among open source initiatives supporting SDN controllers. It has delivered its second stable release, “Helium,” which comes with a new user interface and a customizable installation process using the Apache Karaf container. The third release, “Lithium,” is currently in the works.

In addition to community efforts towards an open source solution, well-known networking vendors such as Cisco and Brocade are building on OpenDaylight’s foundation, using its codebase to develop commercial versions of their controllers to enable SDN and NFV. Meanwhile, other vendors are proposing customization and commercial support for OpenDaylight-based SDN solutions. With these factors in mind, let’s take a look at SDN and NFV concepts and then move on to the OpenDaylight architecture.

SDN and NFV

To create a network that adapts to application requirements, SDN separates the control plane from the data plane within the network to enable central network management while abstracting the underlying physical network. Creating an adaptive network is a work in progress, with the industry standardizing protocols such as OpenFlow, and OpenDaylight looking to leverage more open source development to create industry solutions. In addition, NFV is leveraging virtual compute, storage, and networking to improve network agility while bringing down the cost.

Controller Platform

The controller platform is a modular layer (as shown in Figure 2) and has a “northbound” and “southbound” interface. The northbound interface provides controller services and a set of common REST APIs that applications can leverage to manage networking infrastructure configuration. You can access the northbound interface using the authentication and authorization models in the AAA project shown as the top layer of the OpenDaylight architecture in Figure 1.

Figure 2: Controller components

The southbound interface implements protocols to manage and control the underlying networking infrastructure. The southbound level has multiple plugins that either implement various networking protocols or directly communicate with hardware. OpenFlow, NetConf, and SNMP are the best known and most widely used configuration and management protocols.

The controller platform communicates with the underlying network infrastructure using southbound plugins and provides basic networking services via a set of managers displayed in the Base Network Service Functions section of Figure 2, including Topology Manager, Switch Manager, and so on. Any custom application can use these network services; for example, OpenStack Networking (Neutron) can use northbound APIs and related components.

Next let’s look at details of the networking services provided by the controller platform.

Base Network Service Functions

The Base Network Service Functions are provided by the following platform managers and components:

Topology Manager – stores and handles information about the managed networking devices. When the controller starts, the Topology Manager creates the root node in the topology operational subtree. Then it listens for notifications and updates this subtree with topology details, including all discovered switches and their interconnections. Notifications from other components, such as the Switch Manager or Device Manager, may also provide relevant topology information.

In addition, the Helium release of the OpenDaylight controller allows you to configure the statistics query interval.

Switch Manager – provides network nodes (switches) and node connectors (switch ports) details. As soon as the controller discovers network components, their parameters are saved to the Switch Manager data tree . You can use northbound APIs to get information on the discovered nodes and port devices.

Inventory Manager – queries and updates information about switches and ports managed by OpenDaylight, guaranteeing that the inventory database is accurate and up-to-date.

Host Tracker – stores information about the end hosts (data layer address, switch type, port type, network address), and provides APIs that retrieve end node information. Host Tracker may work in a static or dynamic way. In case of dynamic operation, the Host Tracker uses ARP to track the status of the database. In static mode, the Host Tracker database is populated manually via northbound APIs.

Other services

Apart from the core network services above, a number of other services are on the same architectural layer, interact with core controller modules, and provide specific features for appropriate services and modules. Now that we’ve covered services, we turn to networking services abstractions.

Networking Services Abstractions

The central concept of the OpenDaylight controller is the Service Abstraction Layer (SAL), which connects the protocol plugins and Service Network Function Modules. Because the original API-Driven SAL (AD-SAL) approach proved ineffective, OpenDaylight and all dependent projects are migrating to Model-Driven SAL (MD-SAL), which is now our focus.

How the Model-Driven SAL works

The Model-Driven SAL provides a common approach to plugin development, enabling unification between both northbound and southbound APIs and the data structures used in various components of the controller. In MD-SAL, all status-related data is stored in the form of a document object model (DOM), known as a “data tree.” The following two types of data trees are used in the OpenDaylight Controller:

The configuration DOM tree, used to store the current status of the controller.

MD-SAL uses YANG, a single schema language, as a modelling language for describing all network services. YANG makes it easy to develop any controller-related core module, northbound application, or platform component providing built-in structures and types, such as containers, lists, and leaves, while a developer may specify any additional structures for certain tasks’ data types. After you define the YANG models, a compiler outputs appropriate Java interfaces, and the next step is to implement those auto-generated Java interfaces. In the next article of this series, we will focus on developing custom applications using Yang.

Now let’s look at the example of the southbound plugin and controller operations. In this case, we’ll look at the OpenFlow plugin and its interaction with MD-SAL platform services, seen in Figure 3.

Figure 3 – Interaction between southbound plugin and controller

In this example, when the switch attempts to register with the controller, it first registers with the southbound plugin, which produces a NodeUpdated notification. All controller modules – Topology Manager, Inventory Manager, Statistics Manager – listen for the NodeUpdated notification. Actions after receiving notifications include:

Inventory Manager adds the new node (switch) to the operational data tree

Still to come

Here we’ve covered OpenDaylight architecture and components, and the general communication approach between MD-SAL services and the OpenDaylight Control platform. In the next installations of this series, we’ll provide further details on OpenDaylight internals and how to develop custom applications using YANG and OpenDaylight for innovative SDN services for enterprise and service provider networks.

3 responses to “What’s in OpenDaylight?”

Does ODL request for flow statistics periodically (say every 5 seconds) from the OpenFlow enabled switches or ODL will only request for flow stats only when and application request through Northbound RPC?
Thanks in advance.

Hi, Borasy!
In the described version of ODL Controller the Statistics Service requested stats periodically. (For “HELIUM” it was once per 10 seconds, later this interval became configurable.)
Thank you!