VPNv6 external network support for multiple router 00/76600/21
authorKarthikeyan Krishnan <karthikeyangceb007@gmail.com>
Wed, 3 Oct 2018 09:41:24 +0000 (15:11 +0530)
committerSam Hague <shague@redhat.com>
Wed, 17 Oct 2018 20:03:27 +0000 (20:03 +0000)
commit63491aa9fa934560957d51001910e4cc188301a0
tree8ae6e55ca896eb9ac78d1140c280f7272c9cf793
parent14cd5115173a053cf6d99b7dc9c9493f0f809b8b
VPNv6 external network support for multiple router

Issue:
=======
1) Single external network/internet(public) is
sharing to more than one router is not
working as expected for IPv6 internet data traffic.

2) Before spawning the VM on the compute, internet
access was set/enabled with router already. In this
case if boot the VM on the new DPN, default V6 internet
fallback rule is not getting programmed.

Solution:
=========
RCA for issue (1):
------------------
 IPv6 internet default fall back rule(21->21) is
 not getting programmed for if external network is
 associated with more than one router due to flow-id
 is not proper for each router.

RCA for issue (2):
------------------
 When first/last VM is booted/removed from the DPN,
 there is no check for whether router is already
 been set with external/internet connectivity via
 router-gw set as a result V6 internet default
 fallback rule is missing for newly added DPN.

As part of this fix, internet default fall back rule
flow-id is constrcted based on the router-id always.
Since we can not go with either external-vpn(router)
or internet bgp-vpn.

Also addressed the issue (2) problem as well.

NAT Module Dependency:
=======================
+ RouterDpnChangeListener --> Program and un-program
the V6 internet default fallback flows on when first
VM is booted on the compute or last VM is removed from
the compute for router VPN

Issue: NETVIRT-1440

Change-Id: I2e20158368984172117597e32a5310477ad57d16
Signed-off-by: Karthikeyan Krishnan <karthikeyangceb007@gmail.com>
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/RouterDpnChangeListener.java
neutronvpn/api/src/main/java/org/opendaylight/netvirt/neutronvpn/interfaces/INeutronVpnManager.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/IPV6InternetDefaultRouteProgrammer.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronPortChangeListener.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronvpnManager.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronvpnManagerImpl.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronvpnNatManager.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronvpnUtils.java