Jump to: navigation, search

OpenDaylight OpenFlow Plugin:OF13+ Single Layer Serialization

OpenFlow 1.3+ single layer serialization approach

Currently, OpenFlowPlugin supports 2 types of serialization, and that is Multi Layer Serialization and Single Layer Serialization.

IMPORTANT! Single Layer Serialization is supported only on OpenFlow 1.3 and greater and only with Lithium design. In other case it will fall back to Multi Layer Serialization. Also, when Single Layer Serialization is turned on, RPC statistics compatibility services are not working (they are deprecated anyway, and should not be used when we have direct statistics). So if you want to use statistics compatibility services, make sure that Single Layer Serialization is turned off.


Multi Layer Serialization

Multi Layer Serialization first converts OpenFlowPlugin models to OpenFlowJava models and then serializing them to bytes and then sends them to device, and vice-versa when messages are coming back. Because of this, it is adding unnecessary overhead during this process, but is less error-prone than Single Layer Serialization, because it depends on OpenFlowJava models what are modelled to match OpenFlow specification as close as possible.


Single Layer Serialization

Single Layer Serialization is directly serializing OpenFlowPlugin models to bytes and sends them to device. This implementation should be faster than Multi Layer Serialization, but as it is serializing OpenFlowPlugin models to bytes, without depending on OpenFlow specification models, it is more error-prone.

Enabling/Disabling Single Layer Serialization

Single Layer Serialization can be turned on and off by changing leaf use-single-layer-serialization in openflow-provider-config.yang or openflowplugin.cfg to true or false.

Enabled

openflow-provider-config.yang

   leaf use-single-layer-serialization {
       type boolean;
       default "true";
   }

openflowplugin.cfg

   use-single-layer-serialization=true
Disabled

openflow-provider-config.yang

   leaf use-single-layer-serialization {
       type boolean;
       default "false";
   }

openflowplugin.cfg

   use-single-layer-serialization=false


Plugin initialization with/without Single Layer Serialization

Single layer initialization.png

Sending messages with/without Single Layer Serialization

Single layer send message.png

Receiving messages with/without Single Layer Serialization

Single layer multipart receive.png