OpenFlow Switch Specification Version 1.1.0 Implemented
communicated between tables. Table pipeline processing stops when the instruction set associated with a
matching flow entry does not specify a next table; at this point the packet is usually modified and forwarded
(see 4.7).
Flow entries may forward to a port. This is usually a physical port, but it may also be a virtual
port defined by the switch or a reserved virtual port defined by this specification. Reserved virtual ports
may specify generic forwarding actions such as sending to the controller, flooding, or forwarding using
non-OpenFlow methods, such as “normal” switch processing (see 4.9), while switch-defined virtual ports
may specify link aggregation groups, tunnels or loopback interfaces (see 4.9).
Flow entries may also point to a group, which specifies additional processing (see 4.2). Groups rep-
resent sets of actions for flooding, as well as more complex forwarding semantics (e.g. multipath, fast
reroute, and link aggregation). As a general layer of indirection, groups also enable multiple flows to forward
to a single identifier (e.g. IP forwarding to a common next hop). This abstraction allows common output
actions across flows to be changed efficiently.
The group table contains group entries; each group entry contains a list of action buckets with spe-
cific semantics dependent on group type (see 4.2.1). The actions in one or more action buckets are applied
to packets sent to the group.
Switch designers are free to implement the internals in any way convenient, provided that correct
match and instruction semantics are preserved. For example, while a flow may use an all group to forward
to multiple ports, a switch designer may choose to implement this as a single bitmask within the hardware
forwarding table. Another example is matching; the pipeline exposed by an OpenFlow switch may be
physically implemented with a different number of hardware tables.
3 Glossary
This section describes key OpenFlow specification terms:
• Byte: an 8-bit octet.
• Packet: an Ethernet frame, including header and payload.
• Pipeline: the set of linked tables that provide matching, forwarding, and packet modifications in an
OpenFlow switch.
• Port: where packets enter and exit the OpenFlow pipeline. May be a physical port, a virtual port
defined by the switch, or a virtual port defined by the OpenFlow protocol. Reserved virtual ports are
ports reserved by this specification (see 4.9). Switch-defined virtual ports are higher level abstractions
that may be defined in the switch using non-OpenFlow methods (e.g. link aggregation groups, tunnels,
loopback interfaces).
• 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: an operation that either contains a set of actions to add to the action set, contains a list
of actions to apply immediately to the packet, or modifies pipeline processing.
• Action: an operation that forwards the packet to a port or modifies the packet, such as decrementing
the TTL field. Actions may be specified as part of the instruction set associated with a flow entry or
in an action bucket associated with a group entry.
4