-
Bug
-
Resolution: Done
-
Medium
-
None
-
None
-
None
Orphaned router external gateway IP's vpn-portip-to-port entry for the after router unsets external-gateway. This entry will prevent PNF with same IP to be discovered via Subnet Route.
Version Tested: master, nitrogen
Reproduction Steps:
1) Create network/subnet
2) Create VM
3) Create Router
4) Attach subnet to router
5) create external network/subnet
Entry vpn-portip-to-port is added for the router's external gateway IP 192.168.56.13:
"neutron-vpn-portip-port-data": {
"vpn-portip-to-port": [
{ "mac-address": "fa:16:3e:e5:5f:67", "port-fixedip": "192.168.56.13", "port-name": "c7cb629c-9f61-4fa8-ac6a-ec34ef1ec33a", "subnet-ip": false, "vpn-name": "52e09bd3-84a1-495e-9f9e-0d7a99018025" }
6) Unset the router's external gateway
openstack router unset --external-gateway router1
The entry vpn-portip-to-port for external gateway IP remains even though the neutron port
for 192.168.56.13 is deleted.
7) Re-set the router's external gateway to the same external network
openstack router set --external-gateway ext-net1 router1
New entry vpn-portip-to-port for new external gateway IP (192.168.56.11) is added.
The orphaned entry for obsoleted external gateway IP (192.168.56.13) in 6) still remains:
"vpn-portip-to-port": [
,
Issue:
-------
Failure to communicate with PNF which has same IP as the obsoleted router's external gateway:
8) ssh to PNF which has same IP as the obsoleted router's external gateway (192.168.56.13)
Connection timeout, no PNF flows installed.
Reason:
Upon receiving the first packet from PNF, SubnetRoutePacketInHandler checks the neutron-vpn-portip-port-data DS if the target IP is known neutron port and ignores the packet if it is.
Since the PNF IP's is the same as the obsoleted gateways's IP, and there exists the orphaned entry in 6) the subnet route processing for the PNF target is ignored.
As a result the FIB entry for the PNF are not installed and communication to the PNF fails.
Related information from karaf.log:
2018-06-18T14:33:27,396 | INFO | pool-52-thread-1 | SubnetRoutePacketInHandler | 382 - org.opendaylight.netvirt.vpnmanager-impl - 0.7.0.SNAPSHOT | SUBNETROUTE: onPacketReceived: IPv4 Packet received with Target IP 192.168.56.13 source IP [-64, -88, 56, 11] vpnId 100006 is a valid Neutron port,ignoring subnet route processing