Closed italovalcy closed 3 years ago
Hi, @italovalcy. I was able to reproduce the error, but since the flows were actually removed from the switches when the EVC was disabled and they were reinstalled by the consistecy check, this is an issue in flow_manager
, not here.
This problem occurs because the request sent to remove stored flows contains only the cookie
field. Currently, consistency checking requires the flow used to remove a flow to be the same as the flow used in the installation (except by the REST request). The process to remove flows using a range the cookie are not supported by the consistency.
When the consistency check receives a flow dictionary that contain only the cookie field the default value the table_id
, match
are used to generate "Flow"
object. Therefore, when the stored Flow of the installation the EVC
are compared to the removal request using__eq__
they are not identified as the same, resulting in a problem in the consistency check.
Currently, two flows are compared using __eq__
https://github.com/kytos/of_core/blob/master/flow.py#L214
@italovalcy suggested changing the way to check if two flows are the same, he suggested use dictionary instead of __eq__
(this method comparing several fields of the Flow # L214). In addition, @ajoaoff suggested using the matching code available at https://github.com/amlight/flow_stats/blob/master/main.py, to replicate switch matching on the controller.
This change will make the consistency check supports that the deleted occurs sending only the cookie
field or other field instead the requirement to send the complete flow. In additional some changes must be made to that the consistency check support restricted and not restricted exclusion, as specified in the OpenFlow documentation.
Hi,
When you create an EVC and disable it, after some time the flows are recreated at the flow table of the switches.
Steps to reproduce:
Expected behavior: you should see only the OF LLDP flows
Actual behavior: the flows of the disabled EVC will be recreated: