Bug 8937 : High CPU utilization of Java process due to SNAT packet looping
Description:
If we have 2 VMs with same IP belong to two different network and the
subnet associated with different routers having same external network and
external bgpvpn. In such as case, when traffic initiated using same
internal port some both the VMs, one of the VMs doesn't undergo SNAT
translation and the packet gets continously looped between Controller and OVS.
When the packet is punted to controller, check is only done if the packet
is already recevied for an given internal-ip and internal-port. As a
result, VM1 packet is processed properly and SNAT translation happens. But
when VM2 packet arrives, we see with internal-ip and internal-port already
processed and hence we sent back to OVS without SNAT translation which
resulted in looping.
Change done to have a check of router-id along with internal-ip and
internal-port to uniquely differentiate VM1 and VM2 traffic seperatly and
perform SNAT translation properly for both.
Change-Id: I29b6aef96f353bef711f3fb2c1f0b9f6d75507a6
Signed-off-by: cgowdru <chetan.arakere@altencalsoftlabs.com>