Flow handling in multiple flow tables


kals
 

Hi experts,

  am trying to integrate Broadcom's OFDPA (OpenFlow Data Path Abstraction) into my data-plane. As you all know, OFDPA supports multiple flow tables for programming multiple flow entries.

Okay, here the problem starts... when multiple flow tables are supported in the data plane hardware, we might face 2 issues as show below.

1) Flow deletion:
   Assume, Ingress flow table and VLAN flow table supported in the hardware.
   So, when you get a flow entry as shown below, using their match criteria the entry would be added into both the tables.

---------------------------------------------------------------------------------
Flow entry                     |             Match criteria           |
---------------------------------------------------------------------------------
 Entry 1                        |          inport : eth0,
                                    |          vlan  : 10    
---------------------------------------------------------------------------------

 This is fine. When you want to delete the same match criteria would be used to uniquely find a flow entry {eth0 is key for ingress flow table and vlan10 is the key for vlan table) in each of the flow table.

Now, if you get 2 flow entry as shown below, how the hardware will behave.

---------------------------------------------------------------------------------
Flow entry                     |             Match criteria           |
---------------------------------------------------------------------------------
 Entry 1                         |          inport : eth0,
                                     |          vlan  : 10    
---------------------------------------------------------------------------------
 Entry 2                         |          inport : eth0,
                                    |          vlan  : 20    
---------------------------------------------------------------------------------

If you look at the flow tables in hardware, it looks as shown below.

--------------------------------------------------------------------------------------------------------------
Flow entry                     |            ingress table            |           vlan table 
-------------------------------------------------------------------------------------------------------------
 Entry 1                         |          inport : eth0               |            vlan 10
                                                                                |            vlan 20                                      
--------------------------------------------------------------------------------------------------------------