The flow table contains flows which are used to perform packet lookup, modification and forwarding. Each flow has a 12 tuple key. The key is used in order to classify a packet into a certain flow. The key contains the flowing fields: ingress port, source MAC, destination MAC, EtherType, VLAN ID, PCP, source IP, destination IP, IP protocol, IP ToS bits, TCP/UDP source port and TCP/UDP destination port.
The flow key can have a specific value for each field or wildcard which signals to the switch to ignore this part of the key.
Each packet passes through the flow table once a match is found; the switch performs the actions configured to the specific flow by the OpenFlow controller.
Up-keeping a flow table enables the switch to forward incoming traffic with a simple lookup on its flow table entries. OpenFlow switches perform a check for matching entries on, or ignore using a wildcard, specific fields of the ingress traffic. If the entry exists, the switch performs the action associated with that flow entry. Packets without a flow entry match are forwarded according to the normal pipeline (hybrid switch).
Every flow entry contains one of the following parameters:
- Header fields for matching purposes with each entry containing a specific value or a wildcard which could match all entries.
- Matching packet counters which are useful for statistical purposes, in order to keep track of the number of packets.
- Actions which specify the manner in which to handle the packets of a flow which can be any of the following:
• Forwarding the packet
• Dropping the packet
• Forwarding the packet to the OpenFlow controller
• Modifying the VLAN, VLAN priority (PCP), and/or stripping the VLAN header