Bug 6721: first few ping requests to a floating IP are receiving multiple responses 06/46406/2
authorVivekanandan Narasimhan <n.vivekanandan@ericsson.com>
Thu, 22 Sep 2016 17:23:59 +0000 (22:53 +0530)
committerSam Hague <shague@redhat.com>
Mon, 3 Oct 2016 20:28:42 +0000 (20:28 +0000)
commitaa82462012880009a07e55143a73d8f877ab57ef
treeaa115c94a89a8221a58e1f97ac1c58aa210c7112
parent94efae87c009cdb7c63bb8113bb1676326a0c1e1
Bug 6721: first few ping requests to a floating IP are receiving multiple responses

This fix attempts to prevent multiple Datapaths replicating
an IP response from external network to floating ip hosted
inside the cloud.

As part of this fix, we install floatingipportmac into
MyMac Table (Table 19 at the time of this commit),
only on those hypervisors where that floating-ip hosted
VM is present.

Please note that the duplicate IP response packets
replication problem does not exists when external network
uses tunnels (instead of VLANs) as the floatingip destined
response packets from external network will be directed
to only one hypervisor (ie., only one datapath).

The fix also makes sure that when a floatingip is
disassociated the corresponding floatingipportmac entry
is removed from MyMac Table.

There are still general bugs where floatingip rules in some
tables (including MyMac table) are not removed when:

a. Floating IP is deleted
b. VM hosting the Floating IP is deleted (without disassociating).

The workaround for both the above is to disassociate floatingip
first before embarking on a (or) b . Issue a and b will
be addressed with a different bug, as it needs a more deeper
fix.

Change-Id: Ic0eb7994a9829aa89aee5d8400e0d0be94dfac36
Signed-off-by: Vivekanandan Narasimhan <n.vivekanandan@ericsson.com>
vpnservice/natservice/natservice-impl/src/main/java/org/opendaylight/netvirt/natservice/internal/VpnFloatingIpHandler.java
vpnservice/vpnmanager/vpnmanager-api/src/main/java/org/opendaylight/netvirt/vpnmanager/api/IVpnManager.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/ArpScheduler.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnManagerImpl.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnUtil.java