OpenFlow Data Plane Abstraction (OF-DPA) API Guide and Reference Manual
|
OpenFlow 1.0 exposes a single table to the Controller. This table is used to store all of the L2, L3, ACL, QoS, etc. flow entries. This seriously limits the number of flows that the switch can support as it would always be limited to the maximum entries this single hardware table can accommodate. Consider the Trident2 silicon. This single hardware table would typically be the Ingress Filter Processor which can store up to 4K entries.
OpenFlow 1.3 supports multiple tables that the Controller can configure. OF-DPA maps these tables to multiple XGS pipeline hardware tables. It stores L2 entries in the L2 table which supports up to 32K entries. L3 routing entries are stored in the L3 table which supports up to 16K IPv4 entries. In addition, the 4K entries in the IFP are available for ACLs and QoS flow entries. This results in scaling up of the number of flows the switch can support by multifold.
OpenFlow 1.0 supports actions like output port, set packets fields etc. However when it comes to complex configurations like creating ECMP groups, multicast groups, etc., there are no explicit ways to do that with OpenFlow 1.0. Instead it is left as a task to the application to add flows that simulate the behavior of ECMP/multicast groups. This drastically increases the number of flows that is required for an application, as will be illustrated below.
OpenFlow 1.3 supports the Group abstraction. Groups are buckets of actions that enable flexible configuration of flow actions. OF-DPA defines various types of Groups. Amongst them are the L3 ECMP and L3 Multicast groups which are used to create L3 ECMP and L3 Multicast groups. These groups are used as actions in flows.
OpenFlow 1.0 does not support IPv6. OF-DPA+OF1.3 supports IPv6 addresses.