We noticed lot of SNAT packets are
getting punted to ODL which is causing delayed installation of certain
flows.
On analysis, it's been obseved that under one more scenario, packets
unnecessarily getting looped for 4 sec between ODL and OVS (threshold time we wait to flow
install before making drop decision)
1) N1-> subnet1 (10.0.0.0/24)
2) R1 and subnet1 added to R1.
3) VPN1(100:1) and R1 added to this VPN.
4) Ext-NET1 created and associated with Ext-BGPVPN.
5) Router-gw-set R1 with Ext-Net1
With this set-up, if following configuration is done(valid scenario ??),
certain packets are looped due to existing NAT bug(I will raise review for
the same)
6) create N2(20.0.0.0/24) and associated this with VPN1.
7) Initiate TCP/UDP traffic from VMs of N2.
When first packet punted to ODL Controller, we make an
entry(<routerid>:<VM-IP>:<TCP/UDP Port>) in a map and try to find if
internal-to-external mapping available which will not be available for
N2's subnet(as this is not associated with R1) and we just drop that
packet. But, at this point we not taking care of removing of earlier added
entry. Hence, when the 2nd packet is punt to ODL Controller, this packet simply loops
between ODL<->OVS for 4 sec(same will happened with subsequent packets
too).