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