OpenDayLight is an open-source collaborative project that focuses on building a multi-vendor, multi-project ecosystem to encourage innovation and an open/transparent approach toward SDN. It is a modular platform with most modules reusing some common services and interfaces. Each module is developed under a multi-vendor sub-project.
ODL is managed by the Linux Foundation, supported & adopted by various companies like IBM, Cisco, and Avaya etc. The idea with building applications on the OpenDaylight platform is to leverage functionality in other platform bundles, each of which export important services through Java interfaces. Similar to other controllers we have seen, ODL also supports network programmability via southbound protocols, a bunch of programmable network services, a collection of northbound APIs, and a set of applications.
ODL 4th Release detailed Architecture: Beryllium
ODL Key Components
Considering the complexity of above diagram, it is better to classify key components and describe them for the better understanding of readers. ODL architecture can be simplified into following components.
- Controller Platform: Network Service Functions, Platform services (Vendor Specific Interfaces), Service Abstraction Layer (SAL)
- Southbound Protocols & Interfaces
- Northbound API
- ODL Applications
Key ODL Components & their related function
- Controller Platform Controller acts as a middleware in ODL ecosystem. It allows the applications to be device specifications agnostic. It comprises set of functions described below.
- Base Network Function Controller has various basic functions shipped with a base like a topology discovery and dissemination, a forwarding manager for managing basic forwarding rules, and a switch manager for identifying networking elements in the underlying physical topology.
- Enhanced Network Services In addition to basic network services, platform-oriented services, and other extensions are also added into the controller platform for enhanced SDN functionality. Few available services are L4-L7 Service Manager, Storage Services, VPN, Service function chaining etc
- Network Abstraction Includes the widest range of configurations for policy and intent of any controller or platform. Four methods are supported - NEMO, Application Layer Traffic Optimization (ALTO), Group Based Policy (GBP) and Network Intent Composition (NIC) - providing unparalleled flexibility for intent-based management and direction of network services and resource.
- Service Abstraction Layer It enables the abstraction of services between the services’ consumers and producers. SAL acts like a large registry of services advertised by various modules and binds them to the applications that require them. Modules providing services, or producers, can register their APIs with the registry. When an application, or a consumer, requests a service via a generic API, SAL is responsible for assembling the request by binding producer and consumer into a contract, brokered and serviced by SAL
- Southbound Protocol/Interface It is capable of supporting multiple protocols (as separate plugins), e.g. OpenFlow 1.0, OpenFlow 1.3, BGP-LS, LISP, SNMP, etc. These modules are dynamically linked to a service abstraction layer (SAL), which determines how to fulfill the service requested (by applications) irrespective of the underlying protocol used between the controller and the network devices.
- Northbound API Controller exposes open northbound APIs, which are used by applications. It supports both the OSGi framework and the bidirectional REST APIs in the northbound layer. The OSGi framework is mainly used by applications that will run in the same address space as the controller, whereas the REST (Web-based) API is used by applications that can run on the same machine as the controller or on a different machine
- ODL Application Top layer of OpenDaylight consists of business and network logic applications that control and monitor network behavior. Most of the applications are mapped to the corresponding platform services, such as a VTN coordinator and VTN Manager, an SDNI wrapper and aggregator, etc