100 likes | 294 Views
OpenFlow Plugin. Experimenter Framework Ericsson AB. Background. Openflow specification defines Experimenter a s the way of allowing vendor defined extensions to action and match fields.
E N D
OpenFlow Plugin Experimenter Framework Ericsson AB
Background • Openflow specification defines Experimenter as the way of allowing vendor defined extensions to action and match fields. • OpenDaylight needs a experimenter framework defined, which will allow end user to plugin there extension seamlessly. • The framework should be flexible enough and not mandate the end user to submit the code back as per ODL licensing T & C. • This framework will span across MD-SAL, Openflowplugin and Openflowjava modules.
MD-SAL : Yang Model Experimenter Support
Yang augmentation • Yang model needs to be augmented to support vendor defined experimenter action and matches. • Pushed couple of review for sample action augmentation • https://git.opendaylight.org/gerrit/#/c/7976/ • This gerrit needs to be pushed in. • This will allow augmentation to existing action types. • https://git.opendaylight.org/gerrit/#/c/7978/ • This gerrit will give an example on how to augment the action. • This gerrit will not be pushed into ODL.
YANG : Action Augmentation Example module opendaylight-action-types { container action-types{ uses action-list; } grouping action-list { list action { key "order"; leaf order { type int32; } uses action; } } grouping action { choiceaction{ case output-action-case { container output-action { leaf output-node-connector { type inet:uri; } leaf max-length { type uint16; } } } } } } module experimenter-action-types { namespace "urn:ericsson:experimenter:action:types"; prefix experimenter-action-type; import opendaylight-action-types {prefix ofaction;revision-date "2013-11-12";} import yang-ext {prefix ext; revision-date "2013-07-09";} revision "2014-02-28" { description "Initial revision of experimenter action types augments"; } grouping new-action-group { leaf eth-type { type uint16; } } augment "/ofaction:action-types/ofaction:action/ofaction:action" { ext:augment-identifier "experimenter-action-type"; case experimenter-action-type { choice action-type { case new-xyz-action { uses new-action-group; } } } }
OpenFlow Plugin Experimenter Support
Overview • Plugin needs experimentation support in 2 use cases • Messages sent from North to south like Add/Delete/update flow/groups/meters etc. • While processing messages coming from Switch like Statistics replies. • So converters and translators in plugin need to be extended to support experimenter messages. • But these experimenter messages processing should happen outside plugin bundle(say “PluginExperimenter”) since • Vendors can handle extensions without breaking the ODL license. • No overhead of maintenance over period of time like merging the code in future since we do not accept Vendors to submit back there extensions to ODL community. • If Vendors embed there code in plugin than maintenance will be overhead. • So in plugin converter and translator code whenever plugin hits the message type ”experimenter” plugin makes a function call outside the plugin bundle(PluginExperimenter) to process / decode the experimenter message. This would be normal function call. • Once the experimenter code is processed the converter and translator code will take the usual path again. • So plugin will have reference to external bundle (pluginExperimenter).
Openflow Plugin Bundle Experimenter Bundle Flow Convertor Match Convertor Experimenter Match Convertor Action Convertor Experimenter Action Convertor Group Convertor Plugin: Experimenter Support
Thanks Manohar SL Gaurav Bhagwani Srikar R Prasanna Huddar