broadcom OF-DPA
https://www.broadcom.com/products/ethernet-connectivity/software/of-dpa
http://broadcom-switch.github.io/of-dpa/doc/html/OFDPA_OVERVIEW.html
OpenFlow Data Plane Abstraction (OF-DPA) is an application software component that implements an adaptation layer between OpenFlow and the Broadcom Silicon SDK. OF-DPA enables scalable implementation of OpenFlow 1.3 on Broadcom switch devices. Figure 1 shows the OF-DPA software component and its relation to other OpenFlow system components.
OF-DPA software is available in two packages:
- An OEM & ODM Development Package (ODP), which is a full source code package distributed under Broadcom SLA.
- A Community Development Package (CDP), which is an Open API library with Application Development Kit distributed on GitHub.
API: http://broadcom-switch.github.io/of-dpa/doc/html/group__GLOFDPAAPI.html
- API Layer: Provides the northbound OF-DPA APIs. These are available via RPC in the inter-process mode or as direct function calls to a user application that links with the OF-DPA libraries. OF-DPA does not have a user interface (e.g. a CLI). All control is done via APIs. All APIs calls are synchronous and control is returned to the caller after changes are committed to the hardware.
- OFDB Layer: This is the OF-DPA database layer. OFDB is the software database for the flow, group and port tables. It provides APIs to manage these tables. OFDB APIs are invoked by the following layers of OF-DPA:
- API: OFDB stores the management state of the system. OFDB APIs are invoked by the API layer for configuration updates like flow addition, deletion, etc.
- Mapping: OFDB also stores system status information like port link status, etc. The mapping layer receives these port state updates from the hardware and invokes OFDB APIs to update the port tables in the database.
- Datapath: The datapath layer invokes OFDB APIs to traverse through flow tables etc. and perform housekeeping operations like flow aging.
- Datapath Layer: Implements a task that wakes up periodically and traverses flow tables to perform flow aging operations. On detecting aged flows, it sends event notifications to client applications.
- Mapping/Driver Layer: Provides system mapping and driver functions.
- All system initialization is done here. The driver, OFDB, and datapath layers are initialized during system startup. Functions to retrieve system specific information like table sizes, valid VLANs, etc. are implemented in this layer.
- The driver functions provide an abstraction layer over the Broadcom SDK. These functions are invoked to program and query the hardware. The driver layer defines the interface OF-DPA requires when ported to other platforms.
- Platform Layer: Provides platform specific initialization structures and functions. These functions are invoked during system startup.