The Device Identification and Driver Management (DIDM) project addresses the need to provide device-specific functionality. Device-specific functionality is code that performs a feature, and the code is knowledgeable of the capability and limitations of the device. For example, configuring VLANs and adjusting FlowMods are features, and there may be different implementations for different device types. Device-specific functionality is implemented as Device Drivers. Device Drivers need to be associated with the devices they can be used with. To determine this association requires the ability to identify the device type.
The DIDM project creates the infrastructure to support the following functions:
The Atrium implements an open source router that speaks BGP to other routers, and forwards packets received on one port/vlan to another, based on the next-hop learnt via BGP peering. A BGP peering application for the Open Daylight Controller and a new model for flow objective drivers for switches integrated with the Open Daylight Atrium distribution was developed for this project. The implementation has the same level of feature partly that was introduced by the Atrium 2015/A distribution on the ONOS controller. An overview of the architecture is available at here (https://github.com/onfsdn/atrium-docs/wiki/ODL-Based-Atrium-Router-16A).
Atrium stack is implemented in OpenDaylight using Atrium and DIDM project. Atrium project provides the application implementation for BGP peering and the DIDM project provides implementation for FlowObjectives. FlowObjective provides an abstraction layer and present the pipeline agnostic api to application to consume.
Flow Objectives describe an SDN application’s objective (or intention) behind a flow it is sending to a device.
Application communicates the flow installation requirement using Flow Objectives. DIDM drivers translates the Flow Objectives to device specific flows as per the device pipeline.
There are three FlowObjectives (already implemented in ONOS controller) :
To install DIDM, download OpenDaylight and use the Karaf console to install the following features:
odl-didm-all installs the following required features:
This section shows an example configuration steps for installing a driver (HP 3800 OpenFlow switch driver).
feature:install odl-didm-identification-api
feature:install odl-didm-drivers
In order to identify the device, device driver needs to be installed first. Identification Manager will be notified when a new device connects to the controller.
feature:install odl-didm-hp-all installs the following features
Now at this point, the driver has written all of the identification information in to the MD-SAL datastore. The identification manager should have that information so that it can try to identify the HP 3800 device when it connects to the controller.
Configure the switch and connect it to the controller from the switch CLI.
http://<CONTROLLER-IP:8181>/restconf/operational/opendaylight-inventory:nodes
Flow mod driver for HP 3800 device
This driver adjusts the flows and push the same to the device. This API takes the flow to be adjusted as input and displays the adjusted flow as output in the REST output container. Here is the REST API to adjust and push flows to HP 3800 device:
http://<CONTROLLER-IP:8181>/restconf/operations/openflow-feature:adjust-flow
FlowObjective presents the OpenFlow pipeline agnostic API to Application to consume. Application communicate their intent behind installation of flow to Drivers using the FlowObjective. Driver translates the FlowObjective in device specific flows and uses the OpenFlowPlugin to install the flows to the device.