PicOS Support for OpenFlow 1.3.0

This document  contains OpenFlow 1.3.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.3.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: symmetriccontroller-to-switchasynchronous. 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_HELLOSupported 
OFPT_ERRORSupported 
OFPT_ECHO_REQUESTSupported 
OFPT_ECHO_REPLYSupported 
OFPT_EXPERIMENTERNot Supported 

Controller-to-Switch Messages

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_REQUESTSupported 

OFPT_FEATURES_REPLY

See Capabilities Supported by Datapath

  
OFPT_GET_CONFIG_REQUESTSupported 
OFPT_GET_CONFIG_REPLY  
OFPT_SET_CONFIGSupported 
OFPT_PACKET_OUTSupported 
OFPT_FLOW_MODSupported 
OFPT_GROUP_MODSupported 
OFPT_PORT_MODSupported 
OFPT_TABLE_MODSupported 

OFPT_MULTIPART_REQUEST

See Multipart Messages

Supported 

OFPT_MULTIPART_REPLY

See Multipart Messages

Supported 
OFPT_BARRIER_REQUESTSupported 
OFPT_BARRIER_REPLY  
OFPT_QUEUE_GET_CONFIG_REQUEST
Supported 
OFPT_QUEUE_GET_CONFIG_REPLY
Supported 
OFPT_ROLE_REQUESTSupported 
OFPT_ROLE_REPLY  
OFPT_GET_ASYNC_REQUESTSupported 
OFPT_GET_ASYNC_REPLYSupported 
OFPT_SET_ASYNCSupported 
OFPT_METER_MODSupported 

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. Asynchronous 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

MessageSupportComments
OFPT_PACKET_INSupported 
OFPT_FLOW_REMOVEDSupported 
OFPT_PORT_STATUSSupported 

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 4   PicOS Support for OpenFlow Multipart Messages

MessageSupportComments
OFPMP_DESCSupported 
OFPMP_FLOWSupported 
OFPMP_AGGREGATE  
OFPMP_TABLESupported 
OFPMP_PORT_STATSSupported 
OFPMP_QUEUESupported 
OFPMP_GROUPSupported 
OFPMP_GROUP_DESCSupported 
OFPMP_GROUP_FEATURESNot Supported 
OFPMP_METERSupported 
OFPMP_METER_CONFIGSupported 
OFPMP_METER_FEATURESSupported 
OFPMP_TABLE_FEATURESSupported 
OFPMT_PORT_DESCSupported 
OFPMP_EXPERIMENTERNot 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 5   PicOS Support for OpenFlow Capabilities Supported by Datapath

SpecificationSupportComments
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, and the OpenFlow specification also defines some reserved ports.

Table 6   PicOS Support for OpenFlow Ports

SpecificationSupportComments
OFPP_MAX  
OFPP_IN_PORTSupported 
OFPP_TABLESupported 
OFPP_NORMALSupported 
OFPP_FLOODSupported 
OFPP_ALLSupported 
OFPP_CONTROLLERSupported 
OFPP_LOCALSupported 
OFPP_ANYSupported 

Port Administrative Settings

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

Table 7   PicOS Support for OpenFlow Port Administrative Settings

SpecificationSupportComments
OFPPC_PORT_DOWN
 Supported 
OFPPC_NO_STPSupported 
OFPPC_NO_RECV
 Supported 
OFPPC_NO_RECV_STPSupported 
OFPPC_NO_FLOOD  
OFPPC_NO_FWD
  
OFPPC_NO_PACKET_IN  

Port States

The following table describes PicOS support for OpenFlow port states:

Table 8   PicOS Support for OpenFlow Port States

SpecificationSupportComments
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 9   PicOS Support for OpenFlow Port Features

SpecificationSupportComments
OFPPF_10MB_HD
Supported 
OFPPF_10MB_FD
Supported 
OFPPF_100MB_HDSupported 
OFPPF_100MB_FDSupported 
OFPPF_1GB_HD
Supported 
OFPPF_1GB_FDSupported 
OFPPF_10GB_FD
Supported 
OFPPF_40GB_FD
Supported 
OFPPF_100GB_FD
Supported 
OFPPF_1TB_FD  
OFPPF_OTHER  
OFPPF_COPPER
Supported 
OFPPF_FIBERSupported 
OFPPF_AUTONEGSupported 
OFPPF_PAUSESupported 
OFPPF_PAUSE_ASYM  

OpenFlow Instructions

Each flow entry contains a set of instructions that are executed when a packets matches the entry. The following table details OpenFlow instructions supported by PicOS:

Table 10   PicOS Support for OpenFlow Instructions

SpecificationSupportComments
OFPIT_GOTO_TABLESupported 
OFPIT_WRITE_METADATASupported 
OFPIT_WRITE_ACTIONSSupported 
OFPIT_APPLY_ACTIONSSupported 
OFPIT_CLEAR_ACTIONSSupported 
OFPIT_METERSupported 
OFPIT_EXPERIMENTER  

OpenFlow Action Types

The following table details OpenFlow action types supported by PicOS:

Table 11   PicOS Support for OpenFlow Action Types

SpecificationSupportComments
OFPAT_OUTPUTSupported 
OFPAT_COPY_TTL_OUTSupported 
OFPAT_COPY_TTL_INSupported 
OFPAT_SET_MPLS_TTLSupported 
OFPAT_DEC_MPLS_TTLNot Supported 
OFPAT_PUSH_VLANSupported 
OFPAT_POP_VLANSupported 
OFPAT_PUSH_MPLSSupported 
OFPAT_POP_MPLSSupported 
OFPAT_SET_QUEUESupported 
OFPAT_GROUPSupported 
OFPAT_SET_NW_TTLNot Supported 
OFPAT_DEC_NW_TTLNot Supported 
OFPAT_SET_FIELDSupported 
OFPAT_PUSH_PBBSupported 
OFPAT_POP_PBBSupported 
OFPAT_EXPERIMENTERNot Supported 

OpenFlow Match Fields

A match field may include the packet header, the ingress port, and the metadata value. A match field may use wildcards to match any value, and in some cases bitmasks. A packet is matched against a match field.

The following table details the OXM flow match field types supported by PicOS:

Table 12   PicOS Support for OpenFlow Flow Match Fields

SpecificationSupportComments
OFPXMT_OFB_IN_PORTSupported 
OFPXMT_OFB_IN_PHY_PORTSupported 
OFPXMT_OFB_METADATA  
OFPXMT_OFB_ETH_DSTSupported 
OFPXMT_OFB_ETH_SRCSupported 
OFPXMT_OFB_ETH_TYPESupported 
OFPXMT_OFB_VLAN_VIDSupported 
OFPXMT_OFB_VLAN_PCPSupported 
OFPXMT_OFB_IP_DSCPSupported 
OFPXMT_OFB_IP_ECN  
OFPXMT_OFB_IP_PROTOSupported 
OFPXMT_OFB_IPV4_SRCSupported 
OFPXMT_OFB_IPV4_DSTSupported 
OFPXMT_OFB_TCP_SRCSupported 
OFPXMT_OFB_TCP_DSTSupported 
OFPXMT_OFB_UDP_SRCSupported 
OFPXMT_OFB_UDP_DSTSupported 

OFPXMT_OFB_SCTP_SRC

  
OFPXMT_OFB_SCTP_DST  
OFPXMT_OFB_ICMPV4_TYPESupported 
OFPXMT_OFB_ICMPV4_CODESupported 
OFPXMT_OFB_ARP_OPSupported 
OFPXMT_OFB_ARP_SPASupported 
OFPXMT_OFB_ARP_TPASupported 
OFPXMT_OFB_ARP_SHA  

OFPXMT_OFB_ARP_THA

  
OFPXMT_OFB_IPV6_SRCSupported 
OFPXMT_OFB_IPV6_DSTSupported 
OFPXMT_OFB_IPV6_FLABEL  
OFPXMT_OFB_ICMPV6_TYPE  
OFPXMT_OFB_ICMPV6_CODE  
OFPXMT_OFB_IPV6_ND_TARGET  
OFPXMT_OFB_IPV6_ND_SLL  
OFPXMT_OFB_IPV6_ND_TLL  
OFPXMT_OFB_MPLS_LABELSupported 
OFPXMT_OFB_MPLS_TCSupported 
OFPXMT_OFP_MPLS_BOS  
OFPXMT_OFB_PBB_ISIDSupported 
OFPXMT_OFB_TUNNEL_IDSupported 
OFPXMT_OFB_IPV6_EXTHDR  

OpenFlow Group Types

The following table describes PicOS support for OpenFlow group types:

Table 13   PicOS Support for OpenFlow Group Types

SpecificationSupportComments
OFPGT_ALLSupported 
OFPGT_SELECTSupported 
OFPGT_INDIRECTSupported 
OFPGT_FFSupported 

Copyright © 2024 Pica8 Inc. All Rights Reserved.