diff --git a/doc/source/conf.py b/doc/source/conf.py
index 4b4189d..2349713 100755
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -36,7 +36,7 @@
 master_doc = 'index'
 
 # General information about the project.
-copyright = u'2017, OpenStack Developers'
+copyright = '2017, OpenStack Developers'
 
 # openstackdocstheme options
 openstackdocs_repo_name = 'openstack/neutron-tempest-plugin'
@@ -71,8 +71,8 @@
 latex_documents = [
     ('index',
      'openstack.tex',
-     u'openstack Documentation',
-     u'OpenStack Developers', 'manual'),
+     'openstack Documentation',
+     'OpenStack Developers', 'manual'),
 ]
 
 # Example configuration for intersphinx: refer to the Python standard library.
diff --git a/neutron_tempest_plugin/api/base.py b/neutron_tempest_plugin/api/base.py
index 07fcb0b..e080d42 100644
--- a/neutron_tempest_plugin/api/base.py
+++ b/neutron_tempest_plugin/api/base.py
@@ -142,6 +142,7 @@
         cls.trunks = []
         cls.network_segment_ranges = []
         cls.conntrack_helpers = []
+        cls.ndp_proxies = []
 
     @classmethod
     def reserve_external_subnet_cidrs(cls):
@@ -161,6 +162,10 @@
             for trunk in cls.trunks:
                 cls._try_delete_resource(cls.delete_trunk, trunk)
 
+            # Clean up ndp proxy
+            for ndp_proxy in cls.ndp_proxies:
+                cls._try_delete_resource(cls.delete_ndp_proxy, ndp_proxy)
+
             # Clean up port forwardings
             for pf in cls.port_forwardings:
                 cls._try_delete_resource(cls.delete_port_forwarding, pf)
@@ -1132,6 +1137,47 @@
         client = client or cth.get('client') or cls.client
         client.delete_conntrack_helper(cth['router_id'], cth['id'])
 
+    @classmethod
+    def create_ndp_proxy(cls, router_id, port_id, client=None, **kwargs):
+        """Creates a ndp proxy.
+
+        Create a ndp proxy and schedule it for later deletion.
+        If a client is passed, then it is used for deleting the NDP proxy too.
+
+        :param router_id: router ID where to create the ndp proxy.
+
+        :param port_id: port ID which the ndp proxy associate with
+
+        :param client: network client to be used for creating and cleaning up
+        the ndp proxy.
+
+        :param **kwargs: additional creation parameters to be forwarded to
+        networking server.
+        """
+        client = client or cls.client
+
+        data = {'router_id': router_id, 'port_id': port_id}
+        if kwargs:
+            data.update(kwargs)
+        ndp_proxy = client.create_ndp_proxy(**data)['ndp_proxy']
+
+        # save client to be used later in cls.delete_ndp_proxy
+        # for final cleanup
+        ndp_proxy['client'] = client
+        cls.ndp_proxies.append(ndp_proxy)
+        return ndp_proxy
+
+    @classmethod
+    def delete_ndp_proxy(cls, ndp_proxy, client=None):
+        """Delete ndp proxy
+
+        :param client: Client to be used
+        If client is not given it will use the client used to create
+        the ndp proxy, or cls.client if unknown.
+        """
+        client = client or ndp_proxy.get('client') or cls.client
+        client.delete_ndp_proxy(ndp_proxy['id'])
+
 
 class BaseAdminNetworkTest(BaseNetworkTest):
 
diff --git a/neutron_tempest_plugin/api/test_ndp_proxy.py b/neutron_tempest_plugin/api/test_ndp_proxy.py
new file mode 100644
index 0000000..1b2165b
--- /dev/null
+++ b/neutron_tempest_plugin/api/test_ndp_proxy.py
@@ -0,0 +1,98 @@
+# Copyright 2022 Troila
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+from neutron_lib import constants
+from tempest.lib.common.utils import data_utils
+from tempest.lib import decorators
+from tempest.lib import exceptions
+
+from neutron_tempest_plugin.api import base
+from neutron_tempest_plugin import config
+
+CONF = config.CONF
+
+
+class NDPProxyTestJSON(base.BaseNetworkTest):
+
+    credentials = ['primary', 'admin']
+    required_extensions = ['router', 'l3-ndp-proxy']
+
+    @classmethod
+    def resource_setup(cls):
+        super(NDPProxyTestJSON, cls).resource_setup()
+        cls.ext_net_id = CONF.network.public_network_id
+
+        # Create network, subnet, router and add interface
+        cls.network = cls.create_network()
+        cls.subnet = cls.create_subnet(
+            cls.network, ip_version=constants.IP_VERSION_6,
+            cidr='2002::abcd:0/112')
+        cls.router = cls.create_router(data_utils.rand_name('router'),
+                                       external_network_id=cls.ext_net_id,
+                                       enable_ndp_proxy=True)
+        cls.create_router_interface(cls.router['id'], cls.subnet['id'])
+
+    @decorators.idempotent_id('481bc712-d504-4128-bffb-62d98b88886b')
+    def test_ndp_proxy_lifecycle(self):
+        port = self.create_port(self.network)
+        np_description = 'Test ndp proxy description'
+        np_name = 'test-ndp-proxy'
+
+        #  Create ndp proxy
+        created_ndp_proxy = self.create_ndp_proxy(
+            name=np_name,
+            description=np_description,
+            router_id=self.router['id'],
+            port_id=port['id'])
+        self.assertEqual(self.router['id'], created_ndp_proxy['router_id'])
+        self.assertEqual(port['id'], created_ndp_proxy['port_id'])
+        self.assertEqual(np_description, created_ndp_proxy['description'])
+        self.assertEqual(np_name, created_ndp_proxy['name'])
+        self.assertEqual(port['fixed_ips'][0]['ip_address'],
+                         created_ndp_proxy['ip_address'])
+
+        # Show created ndp_proxy
+        body = self.client.get_ndp_proxy(created_ndp_proxy['id'])
+        ndp_proxy = body['ndp_proxy']
+        self.assertEqual(np_description, ndp_proxy['description'])
+        self.assertEqual(self.router['id'], ndp_proxy['router_id'])
+        self.assertEqual(port['id'], ndp_proxy['port_id'])
+        self.assertEqual(np_name, ndp_proxy['name'])
+        self.assertEqual(port['fixed_ips'][0]['ip_address'],
+                         ndp_proxy['ip_address'])
+
+        # List ndp proxies
+        body = self.client.list_ndp_proxies()
+        ndp_proxy_ids = [np['id'] for np in body['ndp_proxies']]
+        self.assertIn(created_ndp_proxy['id'], ndp_proxy_ids)
+
+        # Update ndp proxy
+        updated_ndp_proxy = self.client.update_ndp_proxy(
+                               created_ndp_proxy['id'],
+                               name='updated_ndp_proxy')
+        self.assertEqual('updated_ndp_proxy',
+                         updated_ndp_proxy['ndp_proxy']['name'])
+        self.assertEqual(
+            np_description, updated_ndp_proxy['ndp_proxy']['description'])
+        self.assertEqual(self.router['id'],
+                         updated_ndp_proxy['ndp_proxy']['router_id'])
+        self.assertEqual(port['id'], updated_ndp_proxy['ndp_proxy']['port_id'])
+        self.assertEqual(port['fixed_ips'][0]['ip_address'],
+                         updated_ndp_proxy['ndp_proxy']['ip_address'])
+
+        # Delete ndp proxy
+        self.delete_ndp_proxy(created_ndp_proxy)
+        self.assertRaises(exceptions.NotFound,
+                          self.client.get_ndp_proxy, created_ndp_proxy['id'])
diff --git a/neutron_tempest_plugin/api/test_ndp_proxy_negative.py b/neutron_tempest_plugin/api/test_ndp_proxy_negative.py
new file mode 100644
index 0000000..acbbdcb
--- /dev/null
+++ b/neutron_tempest_plugin/api/test_ndp_proxy_negative.py
@@ -0,0 +1,104 @@
+# Copyright 2022 Troila
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+from neutron_lib import constants
+from tempest.lib.common.utils import data_utils
+from tempest.lib import decorators
+from tempest.lib import exceptions
+
+from neutron_tempest_plugin.api import base
+from neutron_tempest_plugin import config
+
+CONF = config.CONF
+
+
+class NDPProxyNegativeTestJSON(base.BaseNetworkTest):
+
+    credentials = ['primary', 'admin']
+    required_extensions = ['router', 'l3-ndp-proxy']
+
+    @classmethod
+    def resource_setup(cls):
+        super(NDPProxyNegativeTestJSON, cls).resource_setup()
+        cls.ext_net_id = CONF.network.public_network_id
+
+        # Create network, subnet, router and add interface
+        cls.network = cls.create_network()
+        cls.subnet = cls.create_subnet(
+            cls.network, ip_version=constants.IP_VERSION_6,
+            cidr='2002::abcd:0/112')
+        cls.router = cls.create_router(
+            data_utils.rand_name('router'),
+            external_network_id=cls.ext_net_id)
+
+    @decorators.attr(type='negative')
+    @decorators.idempotent_id('a0897204-bb85-41cc-a5fd-5d0ab8116a07')
+    def test_enable_ndp_proxy_without_external_gw(self):
+        self.client.update_router(self.router['id'], external_gateway_info={})
+        self.assertRaises(exceptions.Conflict,
+            self.client.update_router,
+            self.router['id'],
+            enable_ndp_proxy=True)
+
+    @decorators.attr(type='negative')
+    @decorators.idempotent_id('26e534a0-3e47-4894-8cb5-20a078ce76a9')
+    def test_create_ndp_proxy_with_subnet_not_connect_router(self):
+        self.client.update_router(self.router['id'], enable_ndp_proxy=True)
+        port = self.create_port(self.network)
+        self.assertRaises(exceptions.Conflict,
+            self.create_ndp_proxy,
+            self.router['id'],
+            port_id=port['id'])
+
+    @decorators.attr(type='negative')
+    @decorators.idempotent_id('a0d93fd6-1219-4b05-9db8-bdf02846c447')
+    def test_create_ndp_proxy_with_different_address_scope(self):
+        self.client.update_router(self.router['id'], enable_ndp_proxy=True)
+        address_scope = self.create_address_scope(
+            "test-as", ip_version=constants.IP_VERSION_6)
+        subnet_pool = self.create_subnetpool(
+            "test-sp", address_scope_id=address_scope['id'],
+            prefixes=['2002::abc:0/112'], default_prefixlen=112)
+        network = self.create_network()
+        subnet = self.create_subnet(
+            network, ip_version=constants.IP_VERSION_6,
+            cidr="2002::abc:0/112", subnetpool_id=subnet_pool['id'],
+            reserve_cidr=False)
+        self.create_router_interface(self.router['id'], subnet['id'])
+        port = self.create_port(network)
+        self.assertRaises(exceptions.Conflict, self.create_ndp_proxy,
+                          self.router['id'], port_id=port['id'])
+
+    @decorators.attr(type='negative')
+    @decorators.idempotent_id('f9a4e56d-3836-40cd-8c05-585b3f1e034a')
+    def test_create_ndp_proxy_without_ipv6_address(self):
+        self.client.update_router(
+            self.router['id'], enable_ndp_proxy=True)
+        subnet = self.create_subnet(
+            self.network, ip_version=constants.IP_VERSION_4)
+        self.create_router_interface(self.router['id'], subnet['id'])
+        port = self.create_port(self.network)
+        self.assertRaises(exceptions.Conflict,
+                          self.create_ndp_proxy,
+                          self.router['id'], port_id=port['id'])
+
+    @decorators.attr(type='negative')
+    @decorators.idempotent_id('e035b3af-ebf9-466d-9ef5-a73b063a1f56')
+    def test_enable_ndp_proxy_and_unset_gateway(self):
+        self.assertRaises(exceptions.Conflict,
+                          self.client.update_router,
+                          self.router['id'],
+                          enable_ndp_proxy=True,
+                          external_gateway_info={})
diff --git a/neutron_tempest_plugin/common/ip.py b/neutron_tempest_plugin/common/ip.py
index 9fe49db..e2f6a4a 100644
--- a/neutron_tempest_plugin/common/ip.py
+++ b/neutron_tempest_plugin/common/ip.py
@@ -57,7 +57,7 @@
         return shell.execute(command_line, ssh_client=self.ssh_client,
                              timeout=self.timeout).stdout
 
-    def configure_vlan(self, addresses, port, vlan_tag, subport_ips):
+    def configure_vlan(self, addresses, port, vlan_tag, subport_ips, mac=None):
         port_device = get_port_device_name(addresses=addresses, port=port)
         subport_device = '{!s}.{!s}'.format(port_device, vlan_tag)
         LOG.debug('Configuring VLAN subport interface %r on top of interface '
@@ -66,6 +66,8 @@
 
         self.add_link(link=port_device, name=subport_device, link_type='vlan',
                       segmentation_id=vlan_tag)
+        if mac:
+            self.set_link_address(address=mac, device=subport_device)
         self.set_link(device=subport_device, state='up')
         for subport_ip in subport_ips:
             self.add_address(address=subport_ip, device=subport_device)
@@ -91,7 +93,8 @@
                 "Unable to get IP address and subnet prefix lengths for "
                 "subport")
 
-        return self.configure_vlan(addresses, port, vlan_tag, subport_ips)
+        return self.configure_vlan(addresses, port, vlan_tag, subport_ips,
+                                   subport['mac_address'])
 
     def configure_vlan_transparent(self, port, vlan_tag, ip_addresses):
         addresses = self.list_addresses()
@@ -133,6 +136,10 @@
             command += ['id', segmentation_id]
         return self.execute('link', *command)
 
+    def set_link_address(self, address, device):
+        command = ['set', 'address', address, 'dev', device]
+        return self.execute('link', *command)
+
     def set_link(self, device, state=None):
         command = ['set', 'dev', device]
         if state:
diff --git a/neutron_tempest_plugin/common/utils.py b/neutron_tempest_plugin/common/utils.py
index 4ccec72..c28ce74 100644
--- a/neutron_tempest_plugin/common/utils.py
+++ b/neutron_tempest_plugin/common/utils.py
@@ -155,6 +155,8 @@
         self.port = target_port
         self.connection_started = False
         self.test_attempt = 0
+        self.test_timeout = 10
+        self.test_sleep = 1
 
     def __enter__(self):
         return self
@@ -173,13 +175,21 @@
 
         self.server_ssh.exec_command(
                 'echo "{}" > input.txt'.format(self.test_str))
-        server_exec_method('tail -f input.txt | nc -lp '
+        server_exec_method('tail -f input.txt | sudo nc -lp '
                 '{} &> output.txt &'.format(self.port))
         self.client_ssh.exec_command(
                 'echo "{}" > input.txt'.format(self.test_str))
-        client_exec_method('tail -f input.txt | nc {} {} &>'
+        client_exec_method('tail -f input.txt | sudo nc {} {} &>'
                 'output.txt &'.format(self.ip, self.port))
 
+    def _nc_is_running(self):
+        server = process_is_running(self.server_ssh, 'nc')
+        client = process_is_running(self.client_ssh, 'nc')
+        if client and server:
+            return True
+        else:
+            return False
+
     def _test_connection(self):
         if not self.connection_started:
             self._start_connection()
@@ -188,6 +198,9 @@
                     'echo "{}" >> input.txt'.format(self.test_str))
             self.client_ssh.exec_command(
                     'echo "{}" >> input.txt & sleep 1'.format(self.test_str))
+        wait_until_true(self._nc_is_running,
+                        timeout=self.test_timeout,
+                        sleep=self.test_sleep)
         try:
             self.server_ssh.exec_command(
                     'grep {} output.txt'.format(self.test_str))
@@ -209,8 +222,11 @@
 
     def test_connection(self, should_pass=True, timeout=10, sleep_timer=1):
         self.should_pass = should_pass
-        wait_until_true(
-                self._test_connection, timeout=timeout, sleep=sleep_timer)
+        self.test_timeout = timeout
+        self.test_sleep = sleep_timer
+        wait_until_true(self._test_connection,
+                        timeout=self.test_timeout,
+                        sleep=self.test_sleep)
 
     def __exit__(self, type, value, traceback):
         self.server_ssh.exec_command('sudo killall nc || killall nc || '
diff --git a/neutron_tempest_plugin/scenario/base.py b/neutron_tempest_plugin/scenario/base.py
index cf68224..b9bf36f 100644
--- a/neutron_tempest_plugin/scenario/base.py
+++ b/neutron_tempest_plugin/scenario/base.py
@@ -12,7 +12,7 @@
 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 #    License for the specific language governing permissions and limitations
 #    under the License.
-import distutils
+
 import re
 import subprocess
 
@@ -21,6 +21,7 @@
 from neutron_lib.api import validators
 from neutron_lib import constants as neutron_lib_constants
 from oslo_log import log
+from packaging import version as packaging_version
 from paramiko import ssh_exception as ssh_exc
 from tempest.common.utils import net_utils
 from tempest.common import waiters
@@ -55,7 +56,7 @@
         m = re.match(r"Ncat: Version ([\d.]+) *.", version_result)
     # NOTE(slaweq): by default lets assume we have ncat 7.60 which is in Ubuntu
     # 18.04 which is used on u/s gates
-    return distutils.version.StrictVersion(m.group(1) if m else '7.60')
+    return packaging_version.Version(m.group(1) if m else '7.60')
 
 
 def get_ncat_server_cmd(port, protocol, msg=None):
@@ -79,7 +80,7 @@
         udp = '-u'
     cmd = 'echo "knock knock" | nc '
     ncat_version = get_ncat_version()
-    if ncat_version > distutils.version.StrictVersion('7.60'):
+    if ncat_version > packaging_version.Version('7.60'):
         cmd += '-z '
     cmd += '-w 1 %(udp)s %(host)s %(port)s' % {
         'udp': udp, 'host': ip_address, 'port': port}
diff --git a/neutron_tempest_plugin/services/network/json/network_client.py b/neutron_tempest_plugin/services/network/json/network_client.py
index e177e10..a917b4f 100644
--- a/neutron_tempest_plugin/services/network/json/network_client.py
+++ b/neutron_tempest_plugin/services/network/json/network_client.py
@@ -391,6 +391,8 @@
             update_body['ha'] = kwargs['ha']
         if 'routes' in kwargs:
             update_body['routes'] = kwargs['routes']
+        if 'enable_ndp_proxy' in kwargs:
+            update_body['enable_ndp_proxy'] = kwargs['enable_ndp_proxy']
         update_body = dict(router=update_body)
         update_body = jsonutils.dumps(update_body)
         resp, body = self.put(uri, update_body)
@@ -1132,3 +1134,44 @@
         self.expected_success(200, resp.status)
         return service_client.ResponseBody(
             resp, jsonutils.loads(response_body))
+
+    def create_ndp_proxy(self, **kwargs):
+        uri = '%s/ndp_proxies' % self.uri_prefix
+        post_body = jsonutils.dumps({'ndp_proxy': kwargs})
+        resp, response_body = self.post(uri, post_body)
+        self.expected_success(201, resp.status)
+        body = jsonutils.loads(response_body)
+        return service_client.ResponseBody(resp, body)
+
+    def list_ndp_proxies(self, **kwargs):
+        uri = '%s/ndp_proxies' % self.uri_prefix
+        if kwargs:
+            uri += '?' + urlparse.urlencode(kwargs, doseq=1)
+        resp, response_body = self.get(uri)
+        self.expected_success(200, resp.status)
+        body = jsonutils.loads(response_body)
+        return service_client.ResponseBody(resp, body)
+
+    def get_ndp_proxy(self, ndp_proxy_id):
+        uri = '%s/ndp_proxies/%s' % (self.uri_prefix, ndp_proxy_id)
+        get_resp, response_body = self.get(uri)
+        self.expected_success(200, get_resp.status)
+        body = jsonutils.loads(response_body)
+        return service_client.ResponseBody(get_resp, body)
+
+    def update_ndp_proxy(self, ndp_proxy_id, **kwargs):
+        uri = '%s/ndp_proxies/%s' % (self.uri_prefix, ndp_proxy_id)
+        get_resp, _ = self.get(uri)
+        self.expected_success(200, get_resp.status)
+        put_body = jsonutils.dumps({'ndp_proxy': kwargs})
+        put_resp, response_body = self.put(uri, put_body)
+        self.expected_success(200, put_resp.status)
+        body = jsonutils.loads(response_body)
+        return service_client.ResponseBody(put_resp, body)
+
+    def delete_ndp_proxy(self, ndp_proxy_id):
+        uri = '%s/ndp_proxies/%s' % (
+            self.uri_prefix, ndp_proxy_id)
+        resp, body = self.delete(uri)
+        self.expected_success(204, resp.status)
+        return service_client.ResponseBody(resp, body)
diff --git a/releasenotes/source/conf.py b/releasenotes/source/conf.py
index 24a38a4..5bf1fe1 100644
--- a/releasenotes/source/conf.py
+++ b/releasenotes/source/conf.py
@@ -52,7 +52,7 @@
 master_doc = 'index'
 
 # General information about the project.
-copyright = u'2017, Neutron Tempest Plugin Developers'
+copyright = '2017, Neutron Tempest Plugin Developers'
 
 # openstackdocstheme options
 openstackdocs_repo_name = 'openstack/neutron-tempest-plugin'
@@ -190,8 +190,8 @@
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
     ('index', 'NeutronTempestPluginReleaseNotes.tex',
-     u'Neutron Tempest Plugin Release Notes Documentation',
-     u'Neutron Tempest Plugin Developers', 'manual'),
+     'Neutron Tempest Plugin Release Notes Documentation',
+     'Neutron Tempest Plugin Developers', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -221,8 +221,8 @@
 # (source start file, name, description, authors, manual section).
 man_pages = [
     ('index', 'NeutronTempestPluginrereleasenotes',
-     u'Neutron Tempest Plugin Release Notes Documentation',
-     [u'Neutron Tempest Plugin Developers'], 1)
+     'Neutron Tempest Plugin Release Notes Documentation',
+     ['Neutron Tempest Plugin Developers'], 1)
 ]
 
 # If true, show URL addresses after external links.
@@ -236,8 +236,8 @@
 #  dir menu entry, description, category)
 texinfo_documents = [
     ('index', 'Neutron Tempest Plugin ReleaseNotes',
-     u'Neutron Tempest Plugin Release Notes Documentation',
-     u'Neutron Tempest Plugin Developers',
+     'Neutron Tempest Plugin Release Notes Documentation',
+     'Neutron Tempest Plugin Developers',
      'NeutronTempestPluginReleaseNotes',
      'One line description of project.',
      'Miscellaneous'),
diff --git a/requirements.txt b/requirements.txt
index 21f14cc..f25caec 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -10,6 +10,7 @@
 oslo.log>=3.36.0 # Apache-2.0
 oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
 oslo.utils>=3.33.0 # Apache-2.0
+packaging>=20.4  # Apache-2.0
 paramiko>=2.0.0 # LGPLv2.1+
 tempest>=29.2.0 # Apache-2.0
 tenacity>=3.2.1 # Apache-2.0
diff --git a/zuul.d/master_jobs.yaml b/zuul.d/master_jobs.yaml
index 56bd6b2..56f7a6c 100644
--- a/zuul.d/master_jobs.yaml
+++ b/zuul.d/master_jobs.yaml
@@ -79,8 +79,10 @@
         - floatingip-pools
         - ip-substring-filtering
         - l3-conntrack-helper
+        - l3-ext-ndp-proxy
         - l3-flavors
         - l3-ha
+        - l3-ndp-proxy
         - l3_agent_scheduler
         - metering
         - multi-provider
@@ -140,6 +142,7 @@
         neutron-port-forwarding: true
         neutron-conntrack-helper: true
         neutron-tag-ports-during-bulk-creation: true
+        neutron-ndp-proxy: true
         br-ex-tcpdump: true
         br-int-flows: true
         # Cinder services
@@ -208,6 +211,8 @@
       - ^neutron_lib/tests/unit/.*$
       - ^neutron_tempest_plugin/scenario/.*$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -216,6 +221,7 @@
     parent: neutron-tempest-plugin-base-nested-switch
     timeout: 10000
     vars:
+      configure_swap_size: 2048
       devstack_services:
         # Disable OVN services
         br-ex-tcpdump: false
@@ -298,6 +304,8 @@
       - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
       - ^neutron_tempest_plugin/services/bgp/.*$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -306,6 +314,7 @@
     parent: neutron-tempest-plugin-base-nested-switch
     timeout: 10000
     vars:
+      configure_swap_size: 2048
       devstack_services:
         # Disable OVN services
         br-ex-tcpdump: false
@@ -396,6 +405,8 @@
       - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
       - ^neutron_tempest_plugin/services/bgp/.*$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -443,6 +454,7 @@
       - zuul: openstack/neutron
     pre-run: playbooks/linuxbridge-scenario-pre-run.yaml
     vars:
+      configure_swap_size: 2048
       devstack_services:
         # Disable OVN services
         br-ex-tcpdump: false
@@ -490,6 +502,8 @@
               l3_ha: true
             AGENT:
               debug_iptables_rules: true
+            EXPERIMENTAL:
+              linuxbridge: true
           # NOTE(slaweq): We can get rid of this hardcoded absolute path when
           # devstack-tempest job will be switched to use lib/neutron instead of
           # lib/neutron-legacy
@@ -540,6 +554,8 @@
       - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
       - ^neutron_tempest_plugin/services/bgp/.*$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -675,6 +691,8 @@
       - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
       - ^neutron_tempest_plugin/services/bgp/.*$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -924,6 +942,8 @@
       - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
       - ^neutron_tempest_plugin/services/bgp/.*$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -986,6 +1006,8 @@
       - ^tools/.*$
       - ^tox.ini$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -1044,6 +1066,8 @@
       - ^tools/.*$
       - ^tox.ini$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -1107,6 +1131,8 @@
       - ^tools/.*$
       - ^tox.ini$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -1164,6 +1190,8 @@
       - ^tools/.*$
       - ^tox.ini$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -1223,6 +1251,8 @@
       - ^tools/.*$
       - ^tox.ini$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
 
@@ -1329,5 +1359,7 @@
       - ^tools/.*$
       - ^tox.ini$
       - ^rally-jobs/.*$
+      - ^roles/.*functional.*$
+      - ^playbooks/.*functional.*$
       - ^vagrant/.*$
       - ^zuul.d/(?!(project)).*\.yaml
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 604e5d2..307355a 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -198,7 +198,6 @@
     templates:
       - build-openstack-docs-pti
       - neutron-tempest-plugin-jobs
-      - neutron-tempest-plugin-jobs-victoria
       - neutron-tempest-plugin-jobs-wallaby
       - neutron-tempest-plugin-jobs-xena
       - neutron-tempest-plugin-jobs-yoga
@@ -208,23 +207,19 @@
     check:
       jobs:
         - neutron-tempest-plugin-sfc
-        - neutron-tempest-plugin-sfc-victoria
         - neutron-tempest-plugin-sfc-wallaby
         - neutron-tempest-plugin-sfc-xena
         - neutron-tempest-plugin-sfc-yoga
         - neutron-tempest-plugin-bgpvpn-bagpipe
-        - neutron-tempest-plugin-bgpvpn-bagpipe-victoria
         - neutron-tempest-plugin-bgpvpn-bagpipe-wallaby
         - neutron-tempest-plugin-bgpvpn-bagpipe-xena
         - neutron-tempest-plugin-bgpvpn-bagpipe-yoga
         - neutron-tempest-plugin-dynamic-routing
-        - neutron-tempest-plugin-dynamic-routing-victoria
         - neutron-tempest-plugin-dynamic-routing-wallaby
         - neutron-tempest-plugin-dynamic-routing-xena
         - neutron-tempest-plugin-dynamic-routing-yoga
         - neutron-tempest-plugin-fwaas
         - neutron-tempest-plugin-vpnaas
-        - neutron-tempest-plugin-vpnaas-victoria
         - neutron-tempest-plugin-vpnaas-wallaby
         - neutron-tempest-plugin-vpnaas-xena
         - neutron-tempest-plugin-vpnaas-yoga
diff --git a/zuul.d/ussuri_jobs.yaml b/zuul.d/ussuri_jobs.yaml
index 540ddfa..28fccc6 100644
--- a/zuul.d/ussuri_jobs.yaml
+++ b/zuul.d/ussuri_jobs.yaml
@@ -6,7 +6,7 @@
     required-projects: &required-projects-ussuri
       - openstack/neutron
       - name: openstack/neutron-tempest-plugin
-        override-checkout: 1.8.0
+        override-checkout: 1.6.0
       - openstack/tempest
     vars:
       devstack_services:
@@ -113,6 +113,12 @@
         Q_ML2_TENANT_NETWORK_TYPE: vxlan
         Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
         ML2_L3_PLUGIN: router
+        # NOTE(bcafarel) guestmount binary not available on host OS
+        IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
+        ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
+        ADVANCED_INSTANCE_TYPE: ds512M
+        ADVANCED_INSTANCE_USER: ubuntu
+        CUSTOMIZE_IMAGE: false
       devstack_local_conf:
         post-config:
           # NOTE(slaweq): We can get rid of this hardcoded absolute path when
@@ -276,7 +282,7 @@
     required-projects:
       - openstack/neutron
       - name: openstack/neutron-tempest-plugin
-        override-checkout: 1.8.0
+        override-checkout: 1.6.0
       - openstack/tempest
       - openstack/designate-tempest-plugin
     vars:
@@ -313,7 +319,7 @@
       - openstack/neutron-fwaas
       - openstack/neutron
       - name: openstack/neutron-tempest-plugin
-        override-checkout: 1.8.0
+        override-checkout: 1.6.0
       - openstack/tempest
     vars:
       branch_override: stable/ussuri
diff --git a/zuul.d/victoria_jobs.yaml b/zuul.d/victoria_jobs.yaml
index 10d58e1..67737a7 100644
--- a/zuul.d/victoria_jobs.yaml
+++ b/zuul.d/victoria_jobs.yaml
@@ -2,6 +2,11 @@
     name: neutron-tempest-plugin-api-victoria
     parent: neutron-tempest-plugin-base
     override-checkout: stable/victoria
+    required-projects: &required-projects-victoria
+      - openstack/neutron
+      - name: openstack/neutron-tempest-plugin
+        override-checkout: 1.6.0
+      - openstack/tempest
     vars:
       devstack_services:
         # Disable OVN services
@@ -107,6 +112,12 @@
         Q_ML2_TENANT_NETWORK_TYPE: vxlan
         Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
         ML2_L3_PLUGIN: router
+        # NOTE(bcafarel) guestmount binary not available on host OS
+        IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
+        ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
+        ADVANCED_INSTANCE_TYPE: ds512M
+        ADVANCED_INSTANCE_USER: ubuntu
+        CUSTOMIZE_IMAGE: false
       devstack_local_conf:
         post-config:
           # NOTE(slaweq): We can get rid of this hardcoded absolute path when
@@ -126,6 +137,7 @@
     name: neutron-tempest-plugin-scenario-openvswitch-victoria
     parent: neutron-tempest-plugin-openvswitch
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       branch_override: stable/victoria
       tempest_test_regex: "\
@@ -136,6 +148,12 @@
       network_available_features: *available_features
       devstack_localrc:
         NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
+        # NOTE(bcafarel) guestmount binary not available on host OS
+        IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
+        ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
+        ADVANCED_INSTANCE_TYPE: ds512M
+        ADVANCED_INSTANCE_USER: ubuntu
+        CUSTOMIZE_IMAGE: false
       devstack_local_conf:
         test-config:
           $TEMPEST_CONFIG:
@@ -148,6 +166,7 @@
     name: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-victoria
     parent: neutron-tempest-plugin-openvswitch-iptables_hybrid
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       branch_override: stable/victoria
       tempest_test_regex: "\
@@ -158,6 +177,12 @@
       network_available_features: *available_features
       devstack_localrc:
         NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
+        # NOTE(bcafarel) guestmount binary not available on host OS
+        IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
+        ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
+        ADVANCED_INSTANCE_TYPE: ds512M
+        ADVANCED_INSTANCE_USER: ubuntu
+        CUSTOMIZE_IMAGE: false
       devstack_local_conf:
         test-config:
           $TEMPEST_CONFIG:
@@ -170,6 +195,7 @@
     name: neutron-tempest-plugin-scenario-linuxbridge-victoria
     parent: neutron-tempest-plugin-linuxbridge
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       branch_override: stable/victoria
       tempest_test_regex: "\
@@ -180,6 +206,12 @@
       network_available_features: *available_features
       devstack_localrc:
         NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
+        # NOTE(bcafarel) guestmount binary not available on host OS
+        IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
+        ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
+        ADVANCED_INSTANCE_TYPE: ds512M
+        ADVANCED_INSTANCE_USER: ubuntu
+        CUSTOMIZE_IMAGE: false
       devstack_local_conf:
         test-config:
           $TEMPEST_CONFIG:
@@ -192,6 +224,7 @@
     name: neutron-tempest-plugin-scenario-ovn-victoria
     parent: neutron-tempest-plugin-ovn
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       branch_override: stable/victoria
       tempest_test_regex: "\
@@ -201,6 +234,12 @@
       network_api_extensions: *api_extensions
       devstack_localrc:
         NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
+        # NOTE(bcafarel) guestmount binary not available on host OS
+        IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
+        ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
+        ADVANCED_INSTANCE_TYPE: ds512M
+        ADVANCED_INSTANCE_USER: ubuntu
+        CUSTOMIZE_IMAGE: false
       devstack_local_conf:
         test-config:
           $TEMPEST_CONFIG:
@@ -211,6 +250,7 @@
     name: neutron-tempest-plugin-dvr-multinode-scenario-victoria
     parent: neutron-tempest-plugin-dvr-multinode-scenario
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       network_api_extensions_common: *api_extensions
       branch_override: stable/victoria
@@ -219,14 +259,29 @@
     name: neutron-tempest-plugin-designate-scenario-victoria
     parent: neutron-tempest-plugin-designate-scenario
     override-checkout: stable/victoria
+    required-projects:
+      - openstack/neutron
+      - name: openstack/neutron-tempest-plugin
+        override-checkout: 1.6.0
+      - openstack/tempest
+      - name: openstack/designate-tempest-plugin
+        override-checkout: 0.12.0
     vars:
       branch_override: stable/victoria
       network_api_extensions_common: *api_extensions
+      devstack_localrc:
+        # NOTE(bcafarel) guestmount binary not available on host OS
+        IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
+        ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
+        ADVANCED_INSTANCE_TYPE: ds512M
+        ADVANCED_INSTANCE_USER: ubuntu
+        CUSTOMIZE_IMAGE: false
 
 - job:
     name: neutron-tempest-plugin-sfc-victoria
     parent: neutron-tempest-plugin-sfc
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       branch_override: stable/victoria
       network_api_extensions_common: *api_extensions
@@ -235,6 +290,7 @@
     name: neutron-tempest-plugin-bgpvpn-bagpipe-victoria
     parent: neutron-tempest-plugin-bgpvpn-bagpipe
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       branch_override: stable/victoria
       network_api_extensions: *api_extensions
@@ -243,6 +299,7 @@
     name: neutron-tempest-plugin-dynamic-routing-victoria
     parent: neutron-tempest-plugin-dynamic-routing
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       branch_override: stable/victoria
       network_api_extensions_common: *api_extensions
@@ -251,6 +308,7 @@
     name: neutron-tempest-plugin-vpnaas-victoria
     parent: neutron-tempest-plugin-vpnaas
     override-checkout: stable/victoria
+    required-projects: *required-projects-victoria
     vars:
       branch_override: stable/victoria
       network_api_extensions_common: *api_extensions
