Outline Glossary OpenFlow Ports Reserved ports OpenFlow Tables(Pipeline Processing) Group Table Group Types Meter Table Meter Bands Instructions Action Set Actions
Glossary This section describes key OpenFlow specification terms: Byte : an 8-bit octet. Packet : an Ethernet frame, including header and payload. Port : where packets enter and exit the OpenFlow pipeline Pipeline : the set of linked flow tables that provide matching, forwarding, and packet modifications in an OpenFlow switch. Flow Table : A stage of the pipeline, contains flow entries. Flow Entry : an element in a flow table used to match and process packets.
Match Field : a field against which a packet is matched, including packet headers, the ingress port, and the metadata value. Metadata : a maskable register value that is used to carry information from one table to the next. Instruction : Instructions are attached to a flow entry and describe the OpenFlow processing that happen when a packet matches the flow entry. Action : an operation that forwards the packet to a port or modifies the packet, such as decrementing the TTL field.
Action Set : a set of actions associated with the packet that are accumulated while the packet is processed by each table and that are executed when the instruction set instructs the packet to exit the processing pipeline. Group : a list of action buckets and some means of choosing one or more of those buckets to apply on a per-packet basis. Action Bucket : a set of actions and associated parameters, defined for groups.
Tag : a header that can be inserted or removed from a packet via push and pop actions. Outermost Tag : the tag that appears closest to the beginning of a packet. Controller : An entity interacting with the OpenFlow switch using the OpenFlow protocol. Meter : a switch element that can measure and control the rate of packets. The meter trigger a meter band if the packet rate or byte rate passing through the meter exceed a predefined threshold. If the meter band drops the packet, it is called a Rate Limiter.
OpenFlow Ports An OpenFlow switch makes a number of OpenFlow ports available for OpenFlow processing. OpenFlow packets are received on an ingress port and processed by the OpenFlow pipeline which may forward them to an output port. The packet ingress port is a property of the packet throughout the OpenFlow pipeline and represents the OpenFlow port on which the packet was received into the OpenFlow switch. The ingress port can be used when matching packets. The OpenFlow pipeline can decide to send the packet on an output port using the output action, which defines how the packet goes back to the network.
Reserved ports A switch is not required to support all reserved ports, just those marked “Required" below. Required: ALL : Represents all ports the switch can use for forwarding a specific packet. Required: CONTROLLER : Represents the control channel with the OpenFlow controller. Required: TABLE : Represents the start of the OpenFlow pipeline. Required: IN PORT : Represents the packet ingress port.
Required: ANY : Special value used in some OpenFlow commands when no port is specified (port wildcarded). Optional: LOCAL : Represents the switch's local networking stack and its management stack. Optional: NORMAL : Represents the traditional non-OpenFlow pipeline of the switch. Optional: FLOOD : Represents flooding using the normal pipeline of the switch.
OpenFlow Tables(Pipeline Processing) OpenFlow-compliant switches come in two types: OpenFlow-only, and OpenFlow-hybrid. OpenFlow-only switches support only OpenFlow operation, in those switches all packets are processed by the OpenFlow pipeline, and can not be processed otherwise. OpenFlow-hybrid switches support both OpenFlow operation and normal Ethernet switching operation.
Group Table A group table consists of group entries. The ability for a flow entry to point to a group enables OpenFlow to represent additional methods of forwarding. group identifier : a 32 bit unsigned integer uniquely identifying the group group type : to determine group semantics counters : updated when packets are processed by a group action buckets : an ordered list of action buckets, where each action bucket contains a set of actions to execute and associated parameters
Group Types A switch is not required to support all group types, just those marked “Required" below. The controller can also query the switch about which of the “Optional" group type it supports. Required: all : Execute all buckets in the group. Optional: select : Execute one bucket in the group. Required: indirect : Execute the one defined bucket in this group. Optional: fast failover : Execute the first live bucket.
Meter Table A meter table consists of meter entries, defining per-flow meters. Per-flow meters enable OpenFlow to implement various simple QoS operations. meter identifier : a 32 bit unsigned integer uniquely identifying the meter meter bands : an unordered list of meter bands, where each meter band specifies the rate of the band and the way to process the packet counters : updated when packets are processed by a meter
Meter Bands Each meter may have one or more meter bands. Each band specifies the rate at which the band applies and the way packets should be processed. band type : defines how packet are processed rate : used by the meter to select the meter band, defines the lowest rate at which the band can apply counters : updated when packets are processed by a meter band type specific arguments : some band types have optional arguments Optional: drop : Drop (discard) the packet. Can be used to define a rate limiter band. Optional: dscp remark : decrease the drop precedence of the DSCP field in the IP header of the packet.
Instructions Each flow entry contains a set of instructions that are executed when a packet matches the entry. Optional Instruction: Meter meter_id : Direct packet to the specified meter. Optional Instruction: Apply-Actions action(s ): Applies the specific action(s) immediately, without any change to the Action Set. Optional Instruction: Clear-Actions : Clears all the actions in the action set immediately. Required Instruction: Write-Actions action(s): Merges the specified action(s) into the current action set. Optional Instruction: Write-Metadata metadata / mask : Writes the masked metadata value into the metadata field. Required Instruction: Goto-Table next-table-id : Indicates the next table in the processing pipeline.
Action Set An action set is associated with each packet. This set is empty by default. 1. copy TTL inwards: apply copy TTL inward actions to the packet 2. pop: apply all tag pop actions to the packet 3. push-MPLS: apply MPLS tag push action to the packet 4. push-PBB: apply PBB tag push action to the packet 5. push-VLAN: apply VLAN tag push action to the packet 6. copy TTL outwards: apply copy TTL outwards action to the packet 7. decrement TTL: apply decrement TTL action to the packet 8. set: apply all set-field actions to the packet 9. qos: apply all QoS actions, such as set queue to the packet 10. group: if a group action is specified, apply the actions of the relevant group bucket(s) in the order specified by this list 11. output: if no group action is specified, forward the packet on the port specified by the output action
Actions Required Action: Output. The Output action forwards a packet to a specified OpenFlow port. Optional Action: Set-Queue. The set-queue action sets the queue id for a packet. Required Action: Drop. There is no explicit action to represent drops. Instead, packets whose action sets have no output actions should be dropped. Required Action: Group. Process the packet through the specified group. Optional Action: Push-Tag/Pop-Tag. Switches may support the ability to push/pop tags
Optional Action: Set-Field. The various Set-Field actions are identified by their field type and modify the values of respective header fields in the packet. Optional Action: Change-TTL. The various Change-TTL actions modify the values of the IPv4 TTL, IPv6 Hop Limit or MPLS TTL in the packet.
References Open Networking Foundation, “OpenFlow Switch Specification Version 1.3.0”, June 25, 2012