PicOS Support for OpenFlow 1.4.0

PicOS Support for OpenFlow 1.4.0

 


OpenFlow is a communication protocol used in software-defined networking (SDN). It enables an SDN controller to communicate instructions to the forwarding plane of network switches and routers, including virtual switches and routers. Using OpenFlow, the SDN controller can make changes to the switch and router flow tables, enabling administrators to quickly make network changes such as to optimize network performance or test new configurations. OpenFlow is intended to be an extensible protocol, enabling SDN programmers to define additional elements, such as actions or port properties that address new network technologies as they emerge. OpenFlow is maintained by the Open Network Foundation’s Open Datapath project, which is seeking to build a foundation for a rich SDN ecosystem and software development lifecycle. The Pica8 PICOS network operating system supports OpenFlow.

This document contains OpenFlow 1.4.0 features supported by the Pica8 PICOS software. For clarity, the feature names in this table are identical to the feature names found in OpenFlow Switch Specification, Version 1.4.0.

OpenFlow Messages

Each OpenFlow message begins with the OpenFlow header. The OpenFlow header has several fields, including the type field. The type field identifies the type of OpenFlow message.

The OpenFlow protocol has three message types: symmetric, controller-to-switch, and asynchronous. Each message type has multiple sub-types.

Symmetric Messages

Symmetric messages are unsolicited messages that may be initiated by either the switch or the controller. Symmetric messages are sent without explicit solicitation in either direction. The following table describes PicOS support for symmetric messages:

Table 1   PicOS Support for OpenFlow Symmetric Messages

Message

Support

Comments

OFPT_HELLO

Supported

 

OFPT_ERROR

Supported

 

OFPT_ECHO_REQUEST

Supported

 

OFPT_ECHO_REPLY

Supported

 

OFPT_EXPERIMENTER

Not Supported

 

Controller-to-Switch Messages

As the title suggests, Controller-to-switch messages are sent from the controller to the switch. These messages are used to directly manage the state of a switch. Controller-to-switch messages may or may not require a response from the switch.

The following table describes PicOS support for controller-to-switch messages:

Table 2   PicOS Support for OpenFlow Controller-to-Switch Messages

Message

Support

Comments

OFPT_FEATURES_REQUEST

Supported

 

OFPT_FEATURES_REPLY

See Capabilities Supported by Datapath

 

 

OFPT_GET_CONFIG_REQUEST

Supported

 

OFPT_GET_CONFIG_REPLY

 

 

OFPT_SET_CONFIG

Supported

 

OFPT_PACKET_OUT

Supported

 

OFPT_FLOW_MOD

Supported

 

OFPT_GROUP_MOD

Supported

 

OFPT_PORT_MOD

Supported

 

OFPT_TABLE_MOD

Supported

 

OFPT_MULTIPART_REQUEST

See Multipart Messages

Supported

 

OFPT_MULTIPART_REPLY

See Multipart Messages

Supported

 

OFPT_BARRIER_REQUEST

Supported

 

OFPT_BARRIER_REPLY

 

 

OFPT_ROLE_REQUEST

Supported

 

OFPT_ROLE_REPLY

 

 

OFPT_GET_ASYNC_REQUEST

Supported

 

OFPT_GET_ASYNC_REPLY

Supported

 

OFPT_SET_ASYNC

Supported

 

OFPT_METER_MOD

Supported

 

Asynchronous Messages 

Asynchronous messages are sent from the switch to the controller. These messages are used to communicate network events and switch state changes to the controller. Asychronous messages are sent without a controller explicitly requesting them from a switch.

The following table describes PicOS support for asynchronous messages:

Table 3   PicOS Support for OpenFlow Asynchronous Messages

Message

Support

Comments

OFPT_PACKET_IN

Supported

 

OFPT_FLOW_REMOVED

Supported

 

OFPT_PORT_STATUS

Supported

 

OFPT_ROLE_STATUS

Supported

 

OFPT_TABLE_STATUS

Supported

 

OFPT_REQUESTFORWARD

 

 

Bundle Operations 

The following table describes PicOS support for bundle operations:

Table 4   PicOS Support for OpenFlow Bundle Operations

Message

Support

Comments

OFPT_BUNDLE_CONTROL

Supported

 

OFPT_BUNDLE_ADD_MESSAGE

Supported

 

Multipart Messages

The following table describes PicOS support for multipart messages: a single OpenFlow message cannot be larger than 64 kilobytes. Multipart messages are used to encode requests or replies that would carry a large amount of data, and would not always fit in a single OpenFlow message. The sender encodes the request or reply as a sequence of multipart messages with a specific multipart type. The receiver re-assembles the request or reply.

Table 5   PicOS Support for OpenFlow Multipart Messages

Message

Support

Comments

OFPMP_DESC

Supported

 

OFPMP_FLOW

Supported

 

OFPMP_TABLE

Supported

 

OFPMP_TABLE_DESC

Supported

 

OFPMP_TABLE_FEATURES

Supported

 

OFPMP_PORT_STATS

Supported

 

OFPMP_PORT_DESCRIPTION

Supported

 

OFPMP_QUEUE_STATS

Not Supported

 

OFPMP_QUEUE_DESC

Supported

 

OFPMP_GROUP

Supported

 

OFPMP_GROUP_DESC

Supported

 

OFPMP_GROUP_FEATURES

Supported

 

OFPMT_METER

Supported

 

OFPMT_METER_CONFIG

Supported

 

OFPMT_METER_FEATURES

Supported

 

OFPMP_FLOW_MONITOR

Supported

 

OFPMP_EXPERIMENTER

Not Supported

 

Capabilities Supported by Datapath

The controller sends an OFPT_FEATURES_REQUEST message to the switch once a session is established. The switch responds to the OFPT_FEATURES_REQUEST message with an OFPT_FEATURES_REPLY message. The OFPT_FEATURES_REPLY message has several fields, including the capabilities field. The capabilities field identifies the capabilities supported by the switch datapath.

The capabilties field is a combination of the following bits/flags:

Table 6   PicOS Support for OpenFlow Capabilities Supported by Datapath

Specification

Support

Comments

OFPC_FLOW_STATS

Supported

 

OFPC_TABLE_STATS

Supported

 

OFPC_PORT_STATS

Supported

 

OFPC_GROUP_STATS

Supported

 

OFPC_IP_REASM

 

 

OFPC_QUEUE_STATS

 

 

OFPC_PORT_BLOCKED

 

 

OpenFlow Ports

OpenFlow ports are abstract network interfaces used for passing traffic between the OpenFlow switch and the rest of the network. An OpenFlow switch makes a number of OpenFlow ports available. The set of OpenFlow ports does not have to be identical to the set of physical network interfaces on the switch hardware.

Port Descriptions

The OpenFlow switch receives and sends packets on OpenFlow ports. The switch may define physical and logical ports. OpenFlow specification also defines some reserved ports.

Table 7   PicOS Support for OpenFlow Ports

Specification

Support

Comments

OFPP_MAX

 

 

OFPP_IN_PORT

Supported

 

OFPP_TABLE

Supported

 

OFPP_NORMAL

Supported

 

OFPP_FLOOD

Supported

 

OFPP_ALL

Supported

 

OFPP_CONTROLLER

Supported

 

OFPP_LOCAL

Supported

 

OFPP_ANY

Supported

 

Port Administrative Settings

The following table describes PicOS support for administrative settings of OpenFlow ports:

Table 8   PicOS Support for OpenFlow Port Administrative Settings

Specification

Support

Comments

OFPPC_PORT_DOWN

Supported

 

OFPPC_NO_RECV

 

 

OFPPC_NO_FWD

 

 

OFPPC_NO_PACKET_IN

 

 

Port States

The following table describes PicOS support for OpenFlow port states:

Table 9   PicOS Support for OpenFlow Port States

Specification

Support

Comments

OFPPS_LINK_DOWN

Supported

 

OFPPS_BLOCKED

 

 

OFPPS_LIVE

 

 

Port Features

The following table describes PicOS support for OpenFlow port features available in the datapath:

 Table 10   PicOS Support for OpenFlow Port Features

Specification

Support

Comments

OFPPF_10MB_HD

 

 

OFPPF_10MB_FD

Supported

 

OFPPF_100MB_HD

 

Copyright © 2025 Pica8 Inc. All Rights Reserved.