[NETVIRT-694] Communication is not working properly when ICMP rules are changed dynamically Created: 26/May/17  Updated: 21/Nov/17  Resolved: 28/Jun/17

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

Type: Bug
Reporter: Arthi Bhattacharjee Assignee: Arthi Bhattacharjee
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Attachments: Text File dump-flows.txt     Zip Archive karaf_logs.zip    
External issue ID: 8553

 Description   

Steps:

  • Created SG1 with ICMP all ingress and egress rules.
  • Created 2 VMs with SG1 and verified ping communication between the VMs.
  • Removed ICMP all ingress and egress rules from SG1. Verifed ping communication is not working as expected.
  • Once again added the same ICMP all ingress and egress rule to SG1.

Observation:

  • The communication between the VM is not working.

Expected behavior:

  • Ping has to succeed.

Observed the above behavior two out of three times.



 Comments   
Comment by Arthi Bhattacharjee [ 26/May/17 ]

Attachment dump-flows.txt has been added with description: Dump-flows

Comment by Arthi Bhattacharjee [ 06/Jun/17 ]

Attachment karaf_logs.zip has been added with description: Karaf logs

Comment by Vinoth B [ 12/Jun/17 ]

Additional issue found:

Steps:

  • Created SG1 with ICMP all ingress and egress rules.
  • Created 2 VMs with SG1 and verified ping communication between the VMs.
  • Removed ICMP all ingress and egress rules from SG1.
  • Verified Ping communication between VMS

Observation:

  • The communication between the VM is still working and flows are sustained.

Expected behavior:

  • Ping has to fail.

Note:
While adding/removing rules from SG1, flows are not added/removed appropriately.

Comment by Arthi Bhattacharjee [ 21/Jun/17 ]

Following is the observation for the bug:
Flows are not installed when the last rule that is removed from the Security Group and after deleting the all rules, first rule that is added to the same security group.

Patch ref:: https://git.opendaylight.org/gerrit/#/c/56279
Class: AclEventListener.java

if (!AclServiceUtils.isOfAclInterest(aclAfter) || !AclServiceUtils.isOfAclInterest(aclBefore)) {
LOG.trace("before {} and/or after {} does not have SecurityRuleAttr augmentation",
aclBefore.getAclName(), aclAfter.getAclName());
return;
}
When the event is received, the above condition checks whether before and after ACL are not empty.
If either of those are empty, deletion and addition of rules are not processed.

Scenario#1: While deleting last rule from the Security Group.
-> AclServiceUtils.isOfAclInterest(aclAfter) is false. Thus, the condition satisfied and returns from the method.
-> Because aclAfter is empty.

Scenario#2: While adding the first rule to the same Security Group after deleting the previous rules
-> AclServiceUtils.isOfAclInterest(aclAfter) will be true but, AclServiceUtils.isOfAclInterest(aclBefore) will be false. Thus, the condition satisfied and returns from the method.
-> Because aclBefore is empty.

Patch fix: https://git.opendaylight.org/gerrit/#/c/59213/

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