Device Driver Framework Discussion

21
www.opendaylight.org Device Driver Framework Discussion September 2014

description

Device Driver Framework Discussion. September 2014. Introduce Myself. Steve Dean Development Engineer Hewlett-Packard Working on HP’s SDN Controller for the past 2 years Contact info: [email protected] , 916-785-3429. Agenda. What is a Device Driver Framework - PowerPoint PPT Presentation

Transcript of Device Driver Framework Discussion

Page 1: Device Driver Framework Discussion

www.opendaylight.org

Device Driver Framework DiscussionSeptember 2014

Page 2: Device Driver Framework Discussion

www.opendaylight.org2

• Steve Dean• Development Engineer• Hewlett-Packard• Working on HP’s SDN Controller for the past 2

years• Contact info: [email protected], 916-785-3429

Introduce Myself

Page 3: Device Driver Framework Discussion

www.opendaylight.org3

• What is a Device Driver Framework• Use-cases to illustrate the concept• High level description of HP’s design• Discussion, Q&A

Agenda

Page 4: Device Driver Framework Discussion

www.opendaylight.org4

• A framework that provides a standard and consistent way to implement device specific functionality

• Device Specific Functionality• Often referred to as “Drivers”, or “Facets”• Code that performs some function and is knowledgeable of the

capabilities and limitation of a Device

• Framework:• Extensible to allow dynamic support for new device types• Extensible to allow new device specific functionality to be

dynamically added

What is a Device Driver Framework?

Page 5: Device Driver Framework Discussion

www.opendaylight.org

Validate and Adjust FlowMods Validate and adjust FlowMods to be sent to a device based on

knowledge of the type of device FlowMods adjustments can be made to take advantages of

capabilities of the device VLAN Configuration

Perform VLAN CRUD operations using communication protocols such as SNMP, NetConf, CLI

VxLAN Configuration Perform VxLAN CRUD operations using communication

protocols such as SNMP, NetConf Any device specific functionality

Use-Cases

5

Page 6: Device Driver Framework Discussion

www.opendaylight.org6

Identification (Discovery) Determines the type of each device using information discovered through OpenFlow

handshakes, as well as direct interaction with the device Communicate with device to discovery configuration information that may affect the

devices capabilities and limitations

Device Type Repository Maintains identity information about the types of devices recognized by the framework Maintains the Drivers that can use be with specific Device Types

Device Management Maintain (persist) the discovered device information (eg, device type, port status) API to allow applications to obtain device information

Security Credential Repository Maintain and manage security credentials to allow interaction with devices API to allow applications to obtain security information and populate the repository

Device Drivers Device specific software components that make use of the information about the type of

device

Major Components

Page 7: Device Driver Framework Discussion

www.opendaylight.org7

Component Diagram

Application

Device Manager

Device Service

Device Supplier Service

Device Supplier Device Supplier OF Device Discovery

Device Supplier

Device Driver Manager

Device Driver Service

Device Type XML

1

27

8

Key Manager

Key Service

3

4

5

6

Driver

9

DB

DB

Page 8: Device Driver Framework Discussion

www.opendaylight.org8

Component Diagram

Application

Device Manager

Device Service

Device Supplier Service Key

Manager

Key Service

Driver

DBDB

Page 9: Device Driver Framework Discussion

www.opendaylight.org9

Device Type Repository

9

BaseSwitch.xml

HP.xml Cisco.xml

3800.xml 5400.xml 5900.xml

- Device Type Name = Default Switch

- Device Type = HP Switch- Extends Default Switch- Vendor=HP- Device Identity Handler Driver- Interface Handler Driver- Notification Handler Driver

- Device Type = 5400- Extends HP Switch- Flags = isChassis- Device Type = J9642A, Extends 5400, Product=Switch 5406zl, OID=1.3.6.1.4.1.11.2.3.7.11.50, FlowMod Driver- Device Type = J9643A, Extends 5400, Product=Switch 5412zl, OID=1.3.6.1.4.1.11.2.3.7.11.51, FlowMod Driver

Page 10: Device Driver Framework Discussion

www.opendaylight.org10

Evolution Process

BaseSwitch.xml

HP.xml

5400.xml

- Device Type = Default Switch

- Device Type = HP Switch- Extends Default Switch- Vendor=HP- DeviceIdentityHandler Driver

- Device Type = 5400- Extends HP Switch- Flags = isChassis- DeviceIdentityHandler Driver - Device Type = J9642A, Extends 5400, Product=Switch 5406zl, OID=1.3.6.1.4.1.11.2.3.7.11.50, Facet=OpenFlow- Device Type = J9643A, Extends 5400, Product=Switch 5412zl, OID=1.3.6.1.4.1.11.2.3.7.11.51, Facet=OpenFlow

Example: 5406z1 that allows V1 modules, OF info is mfr=HP, hw=5400 v1.2.3, sw=KA_1_2_3

Step 1: Use OF information (mfr=HP, hw=5400 v1.2.3, sw=KA_1_2_3) to determine the device type is HP Switch

Step 2: Use DeviceIdentityHandler Driver to fetch snmp sysOid from device

Step 3: Use sysOid to determine device is 5406zl

Step 4: We learn from the xml data that the device is a chassis

Step 5: Use DeviceIdentityHandler Driver to fetch AllowV1 mib object

Step 6: AllowV1 mib object tells us the device allows V1 modules

Page 11: Device Driver Framework Discussion

www.opendaylight.org11

Device Service Interface Get Device object

Eg, Set<Device> getDevice(DeviceFilter filter) Get Interface information

Eg, List<Interface> getInterfaces(Device device) Device and Interface notifications

Eg, addListener(DeviceListener listener)

Device Interface Eg, Boolean isOnline() Eg, Set<String> getDriverrClassNames() Eg, Boolean isSupprted(Class<? extends Driver> driverClass) Eg, <T extends Driver> T getDriver(DriverClass<T> driverClass)

Application Usage

Page 12: Device Driver Framework Discussion

12

Q & A Is this something you think is useful? Is there work in other areas to accomplish the same thing that I’m

not aware of?

Page 13: Device Driver Framework Discussion

13

Backup Slides

Page 14: Device Driver Framework Discussion

www.opendaylight.org14

Device Type Repository How to represent device type information (eg, xml) How and where to store in-memory device type information (MD-SAL data

store) Define how new device type information can be dynamically added to the

system

Identification (Discovery) Define phase 1 discovery components (OpenFlow, Manual) Define “evolution” process

Device Management Do we want to maintain device information Define how to store in-memory device information and what should be stored

(MD-SAL data store) Define API

ODL Architecture and Design Decisions

Page 15: Device Driver Framework Discussion

www.opendaylight.org15

Security Repository Define how to store security information (MD-SAL data store) Define how to populate security repository Define API

Device Drivers Define how to implement device drivers Can device drivers be implemented as “routed” RPCs and associated with a device

inventory node in the MD-SAL data store? Define how new device drivers can be dynamically added to the system

ODL Architecture and Design Decisions continued

Page 16: Device Driver Framework Discussion

www.opendaylight.org16

ODL Component Diagram – Option 1

MD-SAL

Identification (Discovery)

GUI/REST/Notification

Identification (Discovery) determines device type and augments data store and registers Routed RPC. Applications use MD-SAL services.

RegisterRPCs

Nodes

Node

Driver3800

Driver 5400

38005400

Application

Credential Manager

Device Driver

Manager

ID Driver

5400 VLAN Driver 5400

3800 VLAN Driver 3800

Routed RPCS

Augment Data Store

Page 17: Device Driver Framework Discussion

www.opendaylight.org17

ODL Component Diagram – Option 2

MD-SAL

Identification (discovery)

GUI/REST/Notification

Hide MD-SAL from Applications

RegisterRPCs

Nodes

Node

Driver3800

Driver 5400

38005400

Device Manager

Application

Credential Manager

Device Driver

Manager

ID Driver

5400 VLAN Driver 5400

3800 VLAN Driver 3800

Routed RPCS

Augment Data Store

Page 18: Device Driver Framework Discussion

www.opendaylight.org18

ODL Component Diagram – Option 3

MD-SAL

Identification (Discovery)

GUI/REST/Notification

Device Manger provides Application API and Identification API. Device Manager is the only component that is MD-SAL aware.

RegisterRPCs

Nodes

Node

Driver3800

Driver 5400

3800 5400

Application

Credential Manager

Device Driver

Manager

ID Driver

5400 VLAN Driver 5400

3800 VLAN Driver 3800

Routed RPCS

Augment Data Store

Device Manager

Augment Data Store Register

RPCs

Page 19: Device Driver Framework Discussion

www.opendaylight.org19

• Facet: Software that is used to perform a function that does not require interaction with the device, but required knowledge of the device.

• Eg, FlowMod Facet (validate and adjust FlowMods based on hardware capabilities and limitations).

• HandlerFacet: Software that is used to perform a function that requires interaction with a device.

• Eg, interact with a device to discover how it’s configured.• Eg, VxLAN Tunnel Endpoint configuration.

• Facets and HandlerFacets are associated with a specific type of device and their implementation is specified in the Device Type XML file.

Terminology

Page 20: Device Driver Framework Discussion

www.opendaylight.org20

HP.xml

<deviceDriver description="HP device driver for switches">

<type name="HP Switch" extends="Default Switch">

<facet name="com.hp.device.DeviceIdentityHandler" class="com.hp.sdn.dvc.facet.impl.HpDeviceIdentityHandler"/>

<facet name="com.hp.sdn.dvc.facet.InterfaceHandler" class="com.hp.sdn.dvc.facet.impl.SnmpInterfaceHandler"/>

<facet name="com.hp.sdn.dvc.facet.NotificationHandler" class="com.hp.sdn.dvc.facet.impl.SnmpNotificationHandler"/>

<vendor>HP</vendor> </type>

</deviceDriver>

Page 21: Device Driver Framework Discussion

www.opendaylight.org21

5400.xml<deviceDriver description="HP 5400 Switch">

<type name="5400" extends="HP Switch">

<facet name="com.hp.sdn.dvc.facet.FlowModFacet" class="com.hp.sdn.dvc.facet.impl.FlowModFacetFactory"/>

<family>ProCurve 5400zl</family> <product>5400</product> <flag name="isChassis" /> </type>

<type name="J9642A" extends="5400" description="5406zl"> <oid>.1.3.6.1.4.1.11.2.3.7.11.50</oid> <model>J9642A</model> <product>Switch 5406zl</product> </type> <type name="J9643A" extends="5400" description="5412zl"> <oid>.1.3.6.1.4.1.11.2.3.7.11.51</oid> <model>J9643A</model> <product>Switch 5412zl</product> </type>

</deviceDriver>