4
{ (Required.) Output—The Output action forwards a packet to the specified OpenFlow port.
OpenFlow switches must support forwarding packets to physical ports, logical ports, and
reserved ports.
{ (Required.) Drop—There is no explicit action to represent drops. Packets whose action
sets have no output actions are dropped. Typically, packets are dropped due to empty
instruction sets, empty action sets, or the executing a Clear-Actions instruction.
{ (Required.) Group—Process the packet through the specified group. The exact
interpretation depends on group type.
{ (Optional.) Set-Queue—The Set-Queue action sets the queue ID for a packet. When the
packet is forwarded to a port by using the output action, the queue ID determines which
queue attached to this port is used for scheduling and forwarding the packet. The
forwarding behavior is dictated by the configuration of the queue and is used to provide
basic QoS support.
{ (Optional.) Set-Field—The Set-Field actions are identified by their field type and modify
the values of corresponding header fields in the packet. Set-Field actions are always
applied to the outermost header. For example, a Set VLAN ID action always sets the ID of
the outermost VLAN tag.
• Timeouts—Maximum amount of idle time or hard time for the flow entry.
{ idle time—The flow entry is removed when it has matched no packets during the idle time.
{ hard time—The flow entry is removed when the hard time timeout is exceeded, whether or
not it has matched packets.
• Cookie—Flow entry identifier specified by the controller.
Table-miss flow entry
Every flow table must support a table-miss flow entry to process table misses. The table-miss flow
entry specifies how to process packets that were not matched by other flow entries in the flow table.
The table-miss flow entry wildcards all match fields (all fields omitted) and has the lowest priority 0.
The table-miss flow entry behaves in most ways like any other flow entry.
OpenFlow pipeline
The OpenFlow pipeline processing defines how packets interact with flow tables contained by a
switch.
The flow tables of an OpenFlow switch are sequentially numbered, starting at 0. The packet is first
matched against flow entries of the first flow table, which is flow table 0. A flow entry can only direct a
packet to a flow table number that is greater than its own flow table number.
When a packet matches a flow entry, the OpenFlow switch updates the action set for the packet and
passes the packet to the next flow table. In the last flow table, the OpenFlow switch executes all
actions to modify packet contents and specify the output port for packet forwarding. If the instruction
set of one of the flow tables contains an action list, the OpenFlow switch executes the actions to
modify a copy of the packet immediately in this table.
Figure 3 OpenFlow forwarding workflow