Device Identification Driver Management (DIDM)
Project type: Main
DIDM maintains a list of devices in the network and identifies what features and protocols they support. For example, it identifies all OpenFlow-enabled switches or routers that support BGP PCEP. It helps the ODL ensure that a correct southbound protocol is used to communicate with a device and that the commands and requests sent to this specific device are valid and supported by the device. Remember that ODL is a Model-Driven SAL (MD-SAL). It works with abstractions and orchestrations. An SDN application doesn't know about the underlying southbound protocol used for communicating with a specific switch, it doesn’t even know whether that switch supports OpenFlow version 1.o0 or 1.3 or NETCONF.
The DIDM project creates a logical infrastructure to support the following functions:
- Discovery: The infrastructure helps identify that a device exists in the controller management domain, and connectivity to the device can be established. For devices that support the OpenFlow protocol, the existing discovery mechanism in OpenDaylight suffices. Devices that do not support OpenFlow will need to be discovered through manual means, such as the operator entering device information via GUI or REST API.
- Identification: This refers to determination of the device type.
- Driver registration: This refers to registration of device drivers as routed RPCs.
- Synchronization: This refers to collection of device information, device configuration, and link (connection) information.
- Defining data models for common features: Data models will be defined to perform common features, such as VLAN configuration. For example, applications can configure a VLAN by writing VLAN data to the data store as specified by the common data model.
- Defining RPCs for common features: Configuring VLANs and adjusting Flow mods are examples of features. RPCs will define the APIs for these tasks. Drivers implement tasks for specific devices and support the APIs defined by the RPCs. There may be different driver implementations for different device types.