Bug 7020: Deletion issue when VM has multiple SGs with same rules 19/47519/9
authorSomashekar Byrappa <somashekar.b@altencalsoftlabs.com>
Tue, 25 Oct 2016 13:08:37 +0000 (18:38 +0530)
committerSam Hague <shague@redhat.com>
Fri, 11 Nov 2016 01:27:50 +0000 (01:27 +0000)
commitbf39b54c6edd4206a8297edeff41c6edd95b4c6e
tree953290e502d289ac66ad79eda157f98a80e73504
parentb3c81e37958ab951bc9aea5d45e84e82c77162cb
Bug 7020: Deletion issue when VM has multiple SGs with same rules

Issue: When VM has multiple SGs with same rules, single flow is created
on switch for the common rules. When one of the SG is dissociated from
the VM, that particular flow is deleted from the switch even though
there is another SG with same rules.

Fix:
- For all overlapping rules, individual flows are created on the switch
  with different priorities.
- Per SG, unique flow priority is created using IdManager. Pool range is
    1000-60000.
- Flow priorities are cached to avoid multiple lookups.
- Note, CT_STATE_NEW_PRIORITY_DROP is now set to value 50

Fix provided for stateful mode only.

Change-Id: I1d3c69883aeadb786536c3e7bf76534c1f137336
Signed-off-by: Somashekar Byrappa <somashekar.b@altencalsoftlabs.com>
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
24 files changed:
vpnservice/aclservice/api/src/main/java/org/opendaylight/netvirt/aclservice/api/AclServiceListener.java
vpnservice/aclservice/api/src/main/java/org/opendaylight/netvirt/aclservice/api/AclServiceManager.java
vpnservice/aclservice/impl/pom.xml
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AclServiceManagerImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/LearnEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/LearnIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/StatefulEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/StatefulIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/StatelessEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/StatelessIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/TransparentEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/TransparentIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/listeners/AclEventListener.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/utils/AclConstants.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/utils/AclDataUtil.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/utils/AclServiceUtils.java
vpnservice/aclservice/impl/src/main/resources/org/opendaylight/blueprint/aclservice.xml
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/listeners/AclEventListenerTest.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceTest.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceTestModule.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/FlowEntryObjects.xtend