IPv6Service Binding using elanTag 66/43566/1
authorSridhar Gaddam <sgaddam@redhat.com>
Tue, 9 Aug 2016 07:44:12 +0000 (13:14 +0530)
committerSam Hague <shague@redhat.com>
Tue, 9 Aug 2016 21:00:19 +0000 (21:00 +0000)
commita7823122ce3c8f313d2eebb7743167a94a8f2c67
treecdae139103bc09419b9aba07815d8cc156d9f8a6
parentf099492124acf92ad409a5833afbd8d0216d9d5a
IPv6Service Binding using elanTag

This patch implements the following.
1. We do Service binding for a port only when a v6 address is
   configured on the port. IPv6Address could be part of the port
   when its initially created or later (i.e, port updated) after
   the VM is spawned. Both cases are handled and the port is
   unbinded when the v6Address-is-removed/port-deleted. Once
   Service Binding is done, packets would hit the IPV6_TABLE(45)
   for further processing.
2. Optimizes the IPv6 punt flows by matching on the elanTag.
   Previous patch implements punt flows based on the VM macaddress,
   this is not optimal as we have to add VM specific punt flows when
   a new VM is added. In this patch, we take into account the elanTag
   (i.e., network-id) and configure punt flows for
   - icmpv6 Router solicitation requests
   - icmpv6 Neighbor solicitation requests for router interface
3. Multiple IPv6 subnets can be added/deleted (even when existing VMs
   are present) on the network and those edge cases are handled in
   this patchset. IPv6Service maintains a cache of (dpnIds <--> List[ports])
   per network. We use this info, while programing flows when IPv6 subnets
   are added/deleted to handle the edge cases.

Change-Id: I84c98979e9f6f71feb934a96df68613dd6defc42
Signed-off-by: Sridhar Gaddam <sgaddam@redhat.com>
vpnservice/ipv6service/impl/pom.xml
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/IfMgr.java
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/Ipv6ServiceImpl.java
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/Ipv6ServiceInterfaceEventListener.java
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/NeutronNetworkChangeListener.java [new file with mode: 0644]
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/VirtualNetwork.java [new file with mode: 0644]
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/VirtualPort.java
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/utils/Ipv6Constants.java
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/utils/Ipv6ServiceUtils.java
vpnservice/ipv6service/impl/src/main/resources/org/opendaylight/blueprint/ipv6service.xml