[OPNFLWPLUG-518] Flow Reconciliator does not account for flow-deletions when the switch connection is disrupted Created: 29/Jul/15  Updated: 27/Sep/21  Resolved: 25/Jan/16

Status: Resolved
Project: OpenFlowPlugin
Component/s: General
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Pompina Singh Assignee: Muthukumaran Kothandaraman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: Other


External issue ID: 4062
Priority: High

 Description   

Description -

1- After creating the test setup, Connected 2 swithes to the controller.
2- Pushed 100 flows each to both the switches and the switches show the flows correctly.
3- Sever the tcp connection between the switch and the controller- ( remove LAN ).
4- Perform config_cleanup and clear all the config. The config DS is empty. Operation DS was also empty.
5- Establish the tcp connection between the switch and the controller.
6- Check the config DS and operation DS. config DS is empty but operational still has the old flows.
7- Even the switch still has the flows.

Controller Test setup - Single-node testing

Switch connected - 2 - OVS
ODL controller - stable/lithium



 Comments   
Comment by Michal Rehak [ 29/Jul/15 ]

Right - this is currently the default behavior. If there are already some flows/meters/groups on device when connection established then controller will just reflect those in DS/operational (flows will get an alien id - e.g. "#UF$TABLE*0-1") without touching them. This is especially useful in case of frequent controller restarts or device reconnections.

There was plan for implementing feature of clean-up upon connection established but that should be active based on parameter. Unfortunately this was never implemented.

Comment by Pompina Singh [ 29/Jul/15 ]

Thanks Michal for the response.But what if when the tcp connection between the controller and the switch gets severed, the existing flows on the controller are modified or deleted as per business logic of the application.

Now when the switch connects back , we have additional/conflicting flows that might lead to traffic being black-holed or dropped.This might not be the desired scenario.

Is there a plan for cleanup upon establishment feature, anytime in the future ?

Comment by Michal Rehak [ 29/Jul/15 ]

I see.
Regarding roadplan - please have a look at these:

https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:Lithium_Backlog
https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:Potential_Beryllium_Items

I guess there is currently no plan for that. This shall be discussed on ofPlugin weekly meeting.

Comment by Michal Rehak [ 06/Aug/15 ]

added to Beryllium potential items wiki

Comment by Abhijit Kumbhare [ 21/Sep/15 ]

Muthu has picked this up.

Comment by Muthukumaran Kothandaraman [ 28/Sep/15 ]

Gerrit - https://git.opendaylight.org/gerrit/#/c/27382/ - to be reviewed

Comment by Abhijit Kumbhare [ 09/Oct/15 ]

Changed to waiting for review

Comment by Michal Rehak [ 12/Oct/15 ]

Hi, in comment #2 there is also modification mentioned. I guess this is not covered in the proposal.

What is the difference in result when comparing this strategy and simple device cleanup upon connected?

Comment by Muthukumaran Kothandaraman [ 12/Oct/15 ]

Hi Michal,

This is mainly to accommodate the case where we do not want to disturb the data-path of already installed flows. If we do a full clean-up, it can result in traffic-drop

Comment by Michal Rehak [ 12/Oct/15 ]

Ok,
can this feature be turned on/off for session?
Is there any specific reason why is this incorporated in FRM?

Comment by Muthukumaran Kothandaraman [ 12/Oct/15 ]

Hi Michal,

>> can this feature be turned on/off for session?
Currently not. I see your point in having this switch. I will work on introducing the same .

>> Is there any specific reason why is this incorporated in FRM?
There are two key aspects

  • detecting if a flow/meter/table provisioning attempt is being made when switch is in disconnected-state is realized with minimal changes in FRM
  • Checking if there are any flows/meters/groups in stale-state and sending corresponding delete messages is logically part of reconciliation function. Since FRM currently performs major part of provisioning function, it would be a more appropriate module to have these changes.

Hope we are in sync

  • Muthu
Comment by Muthukumaran Kothandaraman [ 12/Oct/15 ]

Adding gerrit link for ready-reference

https://git.opendaylight.org/gerrit/#/c/27382/

Comment by Muthukumaran Kothandaraman [ 19/Oct/15 ]

Uploaded patch-set addressing Michal's comment of making the "stale-marking" function configurable via Config Subsystem

Comment by Abhijit Kumbhare [ 30/Oct/15 ]

Michal - can you review?

Comment by Abhijit Kumbhare [ 01/Dec/15 ]

Michal has reviewed this - it is good to merge (either Abhijit or Anil can merge).

Comment by Abhijit Kumbhare [ 25/Jan/16 ]

Marked as fixed as the code change is merged.

Generated at Wed Feb 07 20:32:42 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.