Controller flows — flow in hardware and processing software

Flows with an action to send matching traffic to controller are installed on hardware. But, the actual traffic forwarding takes place in software, since we must add the required OpenFlow specific headers. Due to this characteristic, the actual forwarding does not take place at the line rate. A sample controller flow looks like:


In this example, any packet that comes on port A1, is forwarded to the controller after adding required OpenFlow packet headers (as the packet is sent as a packet_in) to the controller. Since this processing is done on software, we cannot send the incoming traffic at line rate.

switch(openflow)# show openflow instance test flows
Flow 1
  Incoming Port          : A1                    Ethernet Type    : Any
  Source MAC             : Any                   Destination MAC  : Any
  Destination MAC Mask   : 000000-000000
  VLAN ID                : Any                   VLAN Priority    : Any
  Source IP Address      : Any
  Destination IP Address : Any
  IP Protocol            : Any                   IP ToS Bits      : Any
  Source Port            : Any                   Destination Port : Any
  Priority               : 55000                 Duration         : 4 seconds
  Hard Timeout           : 0 seconds             Idle Timeout     : 0 seconds
  Byte Count             : 0                     Packet Count     : 0
  Controller ID          : listen-port           Cookie           : 0x0
  Flow Location          : Hardware
  Hardware Index         : 0
  Reason Code            : 12
  Reason Description     : Rule is in hardware.
    Controller Port