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 | ||
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 | Supported | |
OFPT_MULTIPART_REPLY | 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 | ||
OFPPF_100MB_FD | Supported | |
OFPPF_1GB_HD | ||
OFPPF_1GB_FD | Supported | |
OFPPF_10GB_FD | Supported | |
OFPPF_40GB_FD | Supported | |
OFPPF_100GB_FD | Supported | |
OFPPF_1TB_FD | ||
OFPPF_OTHER | ||
OFPPF_COPPER | Supported | |
OFPPF_FIBER | Supported | |
OFPPF_AUTONEG | Supported | |
OFPPF_PAUSE | Supported | |
OFPPF_PAUSE_ASYM |
OpenFlow Instructions
Each flow entry contains a set of instructions that are executed to match a packet to an entry. The following table details OpenFlow instructions supported by PicOS:
Table 11 PicOS Support for OpenFlow Instructions
Specification | Support | Comments |
---|---|---|
OFPIT_GOTO_TABLE | Supported | only next-table-id; is executed last. |
OFPIT_WRITE_METADATA | Supported | |
OFPIT_WRITE_ACTIONS | Supported | |
OFPIT_APPLY_ACTIONS | Supported | |
OFPIT_CLEAR_ACTIONS | Supported | |
OFPIT_METER | Supported | |
OFPIT_EXPERIMENTER |
OpenFlow Action Types
The following table details OpenFlow action types supported by PicOS:
Table 12 PicOS Support for OpenFlow Action Types
Specification | Support | Comments |
---|---|---|
OFPAT_OUTPUT | Supported | |
OFPAT_COPY_TTL_OUT | Supported | |
OFPAT_COPY_TTL_IN | Supported | |
OFPAT_SET_MPLS_TTL | Supported | |
OFPAT_DEC_MPLS_TTL | Not Supported | |
OFPAT_PUSH_VLAN | Supported | |
OFPAT_POP_VLAN | Supported | |
OFPAT_PUSH_MPLS | Supported | |
OFPAT_POP_MPLS | Supported | |
OFPAT_SET_QUEUE | Supported | |
OFPAT_GROUP | Supported | |
OFPAT_SET_NW_TTL | Not Supported | |
OFPAT_DEC_NW_TTL | Not Supported | |
OFPAT_SET_FIELD | Supported | |
OFPAT_PUSH_PBB | Supported | |
OFPAT_POP_PBB | Supported | |
OFPAT_EXPERIMENTER | Not 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 13 PicOS Support for OpenFlow Flow Match Fields
Specification | Support | Comments |
---|---|---|
OFPXMT_OFB_IN_PORT | Supported | |
OFPXMT_OFB_IN_PHY_PORT | Supported | |
OFPXMT_OFB_METADATA | ||
OFPXMT_OFB_ETH_DST | Supported | |
OFPXMT_OFB_ETH_SRC | Supported | |
OFPXMT_OFB_ETH_TYPE | Supported | |
OFPXMT_OFB_VLAN_VID | Supported | |
OFPXMT_OFB_VLAN_PCP | Supported | |
OFPXMT_OFB_IP_DSCP | Supported | |
OFPXMT_OFB_IP_ECN | ||
OFPXMT_OFB_IP_PROTO | Supported | |
OFPXMT_OFB_IPV4_SRC | Supported | |
OFPXMT_OFB_IPV4_DST | Supported | |
OFPXMT_OFB_TCP_SRC | Supported | |
OFPXMT_OFB_TCP_DST | Supported | |
OFPXMT_OFB_UDP_SRC | Supported | |
OFPXMT_OFB_UDP_DST | Supported | |
OFPXMT_OFB_SCTP_SRC | ||
OFPXMT_OFB_SCTP_DST | ||
OFPXMT_OFB_ICMPV4_TYPE | Supported | |
OFPXMT_OFB_ICMPV4_CODE | Supported | |
OFPXMT_OFB_ARP_OP | Supported | |
OFPXMT_OFB_ARP_SPA | Supported | |
OFPXMT_OFB_ARP_TPA | Supported | |
OFPXMT_OFB_ARP_SHA | ||
OFPXMT_OFB_ARP_THA | ||
OFPXMT_OFB_IPV6_SRC | Supported | |
OFPXMT_OFB_IPV6_DST | Supported | |
OFPXMT_OFB_IPV6_FLABEL | Supported | |
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_LABEL | ||
OFPXMT_OFB_MPLS_TC | ||
OFPXMT_OFP_MPLS_BOS | ||
OFPXMT_OFB_PBB_ISID | Supported | |
OFPXMT_OFB_TUNNEL_ID | Supported | |
OFPXMT_OFB_IPV6_EXTHDR | ||
OFPXMT_OFB_PBB_UCA |
OpenFlow Group Types
The following table describes PicOS support for OpenFlow group types:
Table 14 PicOS Support for OpenFlow Group Types
Specification | Support | Comments |
---|---|---|
OFPGT_ALL | Supported | |
OFPGT_SELECT | Supported | |
OFPGT_INDIRECT | Supported | |
OFPGT_FF | Supported |
Copyright © 2024 Pica8 Inc. All Rights Reserved.