diff --git a/ironic_tempest_plugin/common/waiters.py b/ironic_tempest_plugin/common/waiters.py
index 673e646..d80ba18 100644
--- a/ironic_tempest_plugin/common/waiters.py
+++ b/ironic_tempest_plugin/common/waiters.py
@@ -12,6 +12,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import time
+
 from oslo_log import log
 from tempest import config
 from tempest.lib.common.utils import test_utils
@@ -194,3 +196,64 @@
                % {'node_id': node_id, 'timeout': timeout,
                   'field': field, 'value': value})
         raise lib_exc.TimeoutException(msg)
+
+
+def wait_for_deleted_status_or_not_found(
+        show_client, id, status_key, check_interval, check_timeout,
+        root_tag=None, **kwargs):
+    """Waits for an object to reach a DELETED status or be not found (404).
+
+    :param show_client: The tempest service client show method.
+                        Ex. cls.os_primary.servers_client.show_server
+    :param id: The id of the object to query.
+    :param status_key: The key of the status field in the response.
+                       Ex. provisioning_status
+    :param check_interval: How often to check the status, in seconds.
+    :param check_timeout: The maximum time, in seconds, to check the status.
+    :param root_tag: The root tag on the response to remove, if any.
+    :raises CommandFailed: Raised if the object goes into ERROR and ERROR was
+                           not the desired status.
+    :raises TimeoutException: The object did not achieve the status or ERROR in
+                              the check_timeout period.
+    :returns: None
+    """
+    start = int(time.time())
+    LOG.info(
+        "Waiting for %s status to update to DELETED or be not found (404)",
+        show_client.__name__,
+    )
+    while True:
+        try:
+            response = show_client(id, **kwargs)
+        except lib_exc.NotFound:
+            LOG.info("Object with ID %s is not found.", id)
+            return
+
+        if root_tag:
+            object_details = response[root_tag]
+        else:
+            object_details = response
+
+        if object_details[status_key] == 'DELETED':
+            LOG.info(
+                "%s's status updated to DELETED.",
+                show_client.__name__,
+            )
+            return
+        if int(time.time()) - start >= check_timeout:
+            message = (
+                '{name} {field} failed to update to DELETED or become not '
+                'found (404) within the required time {timeout}. Current '
+                'status of {name}: {status}'.format(
+                    name=show_client.__name__,
+                    timeout=check_timeout,
+                    status=object_details[status_key],
+                    field=status_key
+                ))
+            caller = test_utils.find_test_caller()
+            if caller:
+                message = '({caller}) {message}'.format(caller=caller,
+                                                        message=message)
+            raise lib_exc.TimeoutException(message)
+
+        time.sleep(check_interval)
diff --git a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
index e8fc064..54ad41d 100644
--- a/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
+++ b/ironic_tempest_plugin/tests/scenario/baremetal_manager.py
@@ -14,6 +14,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import socket
 import time
 
 from oslo_log import log as logging
@@ -246,6 +247,45 @@
         res = test_utils.call_until_true(ping_remote, timeout, 1)
         self.assertTrue(res)
 
+    def verify_l4_connectivity(self, destination_ip=None, port=None,
+                               conn_expected=True, timeout=15):
+        """Verify L4 connectivity to the pool member through the load balancer.
+
+        Connect to destination_ip:port (LB VIP) and read the
+        first bytes from the connection. The pool member listens on port 22
+        (SSH), so the member sends an SSH banner (e.g. "SSH-2.0-...")
+        """
+        SSH_BANNER_PREFIX = b'SSH-2.0'
+
+        def probe_through_lb():
+            sock = None
+            try:
+                LOG.debug(
+                    "Connecting to %s:%s to verify path through LB to member",
+                    destination_ip, port
+                )
+                sock = socket.create_connection(
+                    (destination_ip, port), timeout=5)
+                sock.settimeout(5)
+                data = sock.recv(256)
+                return SSH_BANNER_PREFIX in data
+            except (socket.timeout, ConnectionRefusedError, OSError) as e:
+                LOG.debug(
+                    "Error connecting to LB or reading from member: %s", e
+                )
+                return False
+            finally:
+                if sock is not None:
+                    sock.close()
+
+        res = test_utils.call_until_true(probe_through_lb, timeout, 1)
+        self.assertEqual(
+            conn_expected,
+            res,
+            f"Connect to {destination_ip}: {port} and receive SSH banner "
+            f"from member through LB expected {conn_expected}",
+        )
+
     def boot_instance(self, clients=None, keypair=None,
                       net_id=None, fixed_ip=None, **create_kwargs):
         if clients is None:
diff --git a/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy_hybrid.py b/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy_hybrid.py
index 3bdcc97..70043f4 100644
--- a/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy_hybrid.py
+++ b/ironic_tempest_plugin/tests/scenario/test_baremetal_multitenancy_hybrid.py
@@ -13,6 +13,8 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import time
+
 import netaddr
 from oslo_log import log as logging
 from tempest.api.network import base
@@ -22,12 +24,17 @@
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
+from tempest.lib import exceptions as lib_exc
 
+from ironic_tempest_plugin.common import waiters as ironic_waiters
 from ironic_tempest_plugin.tests.scenario import baremetal_manager
 
 LOG = logging.getLogger(__name__)
 CONF = config.CONF
 
+LB_WAIT_INTERVAL = 5
+LB_WAIT_TIMEOUT = 120
+
 
 class BaremetalMultitenancyHybridBase(
         baremetal_manager.BaremetalScenarioTest,
@@ -36,16 +43,17 @@
 
     ---- fip network -----
                        |
-                     ( r1 ) ------- netB --------
-                       |              |       |
-    --------- netA ------------    (vmB1)   (vmB2)
-            |        |      |       fipB1
-          (bmA)    (vmA1) (vmA2)
-         fipbmA    fipA1
+                     ( r1 ) ------- netB ----------------
+                       |              |       |       |
+    --------- netA ------------    (vmB1)   (vmB2)  (lbB)
+     |       |        |      |       fipB1
+   (lbA)   (bmA1)   (vmA1) (vmA2)
+          fipbmA1   fipA1
 
     * Test can ping fips fipbmA, fipA1, fipB1
     * Test each VM can reach other VMs via FIPs
     * Test each VM can reach other VMs via private IPs
+    * Test connectivity through lbA/lbB to different backends
     """
 
     credentials = ['primary', 'admin', 'system_admin']
@@ -93,6 +101,15 @@
         cls.keypairs_client = cls.os_admin.keypairs_client
         cls.servers_client = cls.os_admin.servers_client
         cls.floating_ips_client = cls.os_admin.compute_floating_ips_client
+        cls.security_groups_client = cls.os_admin.security_groups_client
+        cls.security_group_rules_client = (
+            cls.os_admin.security_group_rules_client)
+        cls.loadbalancers_client = (
+            cls.os_admin.load_balancer_v2.LoadbalancerClient()
+        )
+        cls.listeners_client = cls.os_admin.load_balancer_v2.ListenerClient()
+        cls.pools_client = cls.os_admin.load_balancer_v2.PoolClient()
+        cls.members_client = cls.os_admin.load_balancer_v2.MemberClient()
 
     @classmethod
     def _delete_keypair(cls, keypair_name, **params):
@@ -137,7 +154,8 @@
             key_name=key_name,
             flavor=flavor,
             wait_until=wait_until,
-            name=name)
+            name=name,
+            security_groups=[{'name': cls.security_group['name']}])
 
         cls.addClassCleanup(test_utils.call_and_ignore_notfound_exc,
                             waiters.wait_for_server_termination,
@@ -166,13 +184,120 @@
         return floating_ip
 
     @classmethod
+    def wait_for_loadbalancer_status(
+        cls,
+        lb_id,
+        expected_status="ACTIVE",
+        interval=LB_WAIT_INTERVAL,
+        timeout=LB_WAIT_TIMEOUT
+    ):
+        start = int(time.time())
+        LOG.info(
+            "Waiting for load balancer %s to reach %s status",
+            lb_id,
+            expected_status,
+        )
+
+        while True:
+            try:
+                lb = cls.loadbalancers_client.show_loadbalancer(lb_id)
+            except lib_exc.NotFound:
+                if expected_status.upper() == "DELETED":
+                    LOG.info("Load balancer %s successfully deleted.", lb_id)
+                    return
+                time.sleep(interval)
+                continue
+
+            lb_status = lb['provisioning_status'].upper()
+
+            if lb_status == expected_status.upper():
+                LOG.info(
+                    "Load balancer %s reached desired status: %s",
+                    lb_id,
+                    expected_status,
+                )
+                return lb
+
+            if lb_status == "ERROR":
+                caller = test_utils.find_test_caller()
+                msg = (
+                    f"Load balancer {lb_id} entered ERROR provisioning status"
+                )
+                if caller:
+                    msg = f"({caller}) {msg}"
+                raise lib_exc.UnexpectedResponseCode(msg)
+
+            if int(time.time()) - start >= timeout:
+                caller = test_utils.find_test_caller()
+                msg = (
+                    f"Load balancer {lb_id} failed to reach "
+                    f"{expected_status} status within {timeout}s. "
+                    f"Current status: {lb_status}"
+                )
+                if caller:
+                    msg = f"({caller}) {msg}"
+                raise lib_exc.TimeoutException(msg)
+
+            time.sleep(interval)
+
+    @classmethod
+    def _cleanup_loadbalancer(cls, lb_id):
+        cls.loadbalancers_client.delete_loadbalancer(lb_id, cascade=True)
+        ironic_waiters.wait_for_deleted_status_or_not_found(
+            cls.loadbalancers_client.show_loadbalancer,
+            lb_id,
+            'provisioning_status',
+            LB_WAIT_INTERVAL,
+            LB_WAIT_TIMEOUT
+        )
+
+    def cleanup_lb_obj(self, lb_id, delete_func, delete_args, show_func,
+                       obj_id, show_kwargs=None):
+        self.wait_for_loadbalancer_status(lb_id, "ACTIVE")
+        test_utils.call_and_ignore_notfound_exc(delete_func, *delete_args)
+        show_kwargs = show_kwargs or {}
+        ironic_waiters.wait_for_deleted_status_or_not_found(
+            show_func,
+            obj_id,
+            'provisioning_status',
+            LB_WAIT_INTERVAL,
+            LB_WAIT_TIMEOUT,
+            **show_kwargs
+        )
+        self.wait_for_loadbalancer_status(lb_id, "ACTIVE")
+
+    @classmethod
+    def create_loadbalancer(cls, subnet_id):
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__class__.__name__ + '-lb')
+        lb = cls.loadbalancers_client.create_loadbalancer(
+            name=name, vip_subnet_id=subnet_id)
+        cls.addClassCleanup(test_utils.call_and_ignore_notfound_exc,
+                            cls._cleanup_loadbalancer, lb['id'])
+        cls.wait_for_loadbalancer_status(lb["id"], "ACTIVE")
+        return lb
+
+    @classmethod
+    def attach_fip_to_lb(cls, lb):
+        vip_port_id = lb['vip_port_id']
+        floating_ip = cls.os_admin.floating_ips_client.create_floatingip(
+            floating_network_id=cls.ext_net_id,
+            port_id=vip_port_id,
+        )['floatingip']
+        cls.addClassCleanup(test_utils.call_and_ignore_notfound_exc,
+                            cls.os_admin.floating_ips_client.delete_floatingip,
+                            floating_ip['id'])
+        return floating_ip["floating_ip_address"]
+
+    @classmethod
     def resource_setup(cls):
         netA_cidr = netaddr.IPNetwork("192.168.10.0/24")
         netB_cidr = netaddr.IPNetwork("192.168.11.0/24")
         cls.ext_net_id = CONF.network.public_network_id
         vm_flavor = CONF.baremetal.vm_flavor_id
         cls.ping_timeout = 60
-        netA_kwargs = {"port_security_enabled": False}
+        netA_kwargs = {"port_security_enabled": True}
         if cls.netA_type:
             netA_kwargs["provider:network_type"] = cls.netA_type
 
@@ -187,7 +312,7 @@
             cls.routers_client.remove_router_interface,
             cls.r1['id'], subnet_id=cls.subnetA['id'])
 
-        netB_kwargs = {"port_security_enabled": False}
+        netB_kwargs = {"port_security_enabled": True}
         if cls.netB_type:
             netB_kwargs["provider:network_type"] = cls.netB_type
         cls.netB = cls.create_network(**netB_kwargs)
@@ -203,6 +328,32 @@
         cls.snat_check_ip = (cls.r1["external_gateway_info"]
                                    ["external_fixed_ips"][0]["ip_address"])
 
+        sg_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__class__.__name__ + '-sg')
+        cls.security_group = cls.security_groups_client.create_security_group(
+            name=sg_name
+        )['security_group']
+        cls.addClassCleanup(test_utils.call_and_ignore_notfound_exc,
+                            cls.security_groups_client.delete_security_group,
+                            cls.security_group['id'])
+
+        cls.security_group_rules_client.create_security_group_rule(
+            security_group_id=cls.security_group['id'],
+            direction='ingress',
+            remote_ip_prefix="0.0.0.0/0",
+            protocol='icmp',
+        )
+
+        cls.security_group_rules_client.create_security_group_rule(
+            security_group_id=cls.security_group['id'],
+            direction='ingress',
+            remote_ip_prefix="0.0.0.0/0",
+            protocol='tcp',
+            port_range_min=22,
+            port_range_max=22,
+        )
+
         cls.bmA1, cls.bmA1_ip, cls.bmA1_fip = cls.create_server(
             key_name=cls.keypair['name'],
             flavor=None,
@@ -242,6 +393,70 @@
             cls.vmB1_fip,
             private_key=cls.keypair['private_key'])
 
+        # Create load balancers
+        cls.lbA = cls.create_loadbalancer(cls.subnetA['id'])
+        cls.lbA_fip = cls.attach_fip_to_lb(cls.lbA)
+        cls.lbB = cls.create_loadbalancer(cls.subnetB['id'])
+        cls.lbB_fip = cls.attach_fip_to_lb(cls.lbB)
+
+    def _create_listener_and_pool(
+        self,
+        lb_id,
+        member_ip,
+        member_subnet_id,
+        listener_port,
+    ):
+        pool_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-pool')
+        pool = self.pools_client.create_pool(
+            name=pool_name,
+            lb_algorithm='ROUND_ROBIN',
+            protocol='TCP',
+            loadbalancer_id=lb_id)
+        self.addCleanup(
+            self.cleanup_lb_obj,
+            lb_id,
+            self.pools_client.delete_pool,
+            (pool['id'],),
+            self.pools_client.show_pool,
+            pool['id'])
+        self.wait_for_loadbalancer_status(lb_id, "ACTIVE")
+
+        member = self.members_client.create_member(
+            pool_id=pool['id'],
+            address=member_ip,
+            protocol_port=22,
+            subnet_id=member_subnet_id)
+        self.addCleanup(
+            self.cleanup_lb_obj,
+            lb_id,
+            self.members_client.delete_member,
+            (member['id'], pool['id']),
+            self.members_client.show_member,
+            member['id'],
+            {'pool_id': pool['id']})
+        self.wait_for_loadbalancer_status(lb_id, "ACTIVE")
+
+        listener_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-listener')
+        listener = self.listeners_client.create_listener(
+            name=listener_name,
+            loadbalancer_id=lb_id,
+            protocol='TCP',
+            protocol_port=listener_port,
+            default_pool_id=pool['id'])
+        self.addCleanup(
+            self.cleanup_lb_obj,
+            lb_id,
+            self.listeners_client.delete_listener,
+            (listener['id'],),
+            self.listeners_client.show_listener,
+            listener['id']
+        )
+        self.wait_for_loadbalancer_status(lb_id, "ACTIVE")
+
     def _test_connectivity_fip_vma1(self):
         self.assertTrue(
             self.ping_ip_address(
@@ -326,6 +541,246 @@
             self.snat_check_ip, conn_expected=True, timeout=self.ping_timeout,
             jump_host_ip=self.vmB1_fip)
 
+    def _test_connectivity_lbA_to_bmA1(self):
+        listener_port = 2201
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.bmA1_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_bmA1_fip(self):
+        listener_port = 2202
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.bmA1_fip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_vmA1(self):
+        listener_port = 2203
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.vmA1_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_vmA1_fip(self):
+        listener_port = 2204
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.vmA1_fip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_vmA2(self):
+        listener_port = 2205
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.vmA2_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_vmB1(self):
+        listener_port = 2206
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.vmB1_ip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_vmB1_fip(self):
+        listener_port = 2207
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.vmB1_fip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_vmB2(self):
+        listener_port = 2208
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.vmB2_ip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_bmA1(self):
+        listener_port = 2201
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.bmA1_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_bmA1_fip(self):
+        listener_port = 2202
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.bmA1_fip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_vmA1(self):
+        listener_port = 2203
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.vmA1_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_vmA1_fip(self):
+        listener_port = 2204
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.vmA1_fip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_vmA2(self):
+        listener_port = 2205
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.vmA2_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_vmB1(self):
+        listener_port = 2206
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.vmB1_ip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_vmB1_fip(self):
+        listener_port = 2207
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.vmB1_fip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_vmB2(self):
+        listener_port = 2208
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.vmB2_ip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
 
 class BaremetalMultitenancyHybridGeneveGeneve(
         BaremetalMultitenancyHybridBase):
@@ -397,6 +852,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('c6ddf5f8-60d2-4ec1-84a3-9471b7f26b3b')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('fa3c2bcb-03f1-4c71-9ef5-3a9f67f747ff')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('4ef0d4ff-b6d4-4b77-bcae-bf28cc546ba6')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('16572a41-f0d1-43f7-850a-0fdd2f4cce13')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('f245b178-471f-47c3-a721-0c8eeb445177')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('0a58a1b6-57a0-4d36-a46e-62d5ea6a2b3c')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('f7407c0a-9c2b-4cf2-8e53-57f40cbba9b6')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('2b84b6b7-b593-4450-851c-8d69db5e9f44')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('0c9e10f1-4e42-46e0-b8bb-5b9e928b0532')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('305c58a0-14bb-4e8f-b022-0978d3187c27')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('19e4c72a-5d4e-4e5a-a17d-9339c318f6a2')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('44a3875b-732c-4b35-8b2d-bd5b6f9324df')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('816b0894-5883-47fc-91a6-87fef78a88af')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('df22f6b6-6d31-45b6-9d01-d5bcb6472702')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('67d6e973-89f0-472d-a2b3-66fc8d64dca8')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('f39cfd83-cb87-4d36-a3c5-6d681f14efac')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridVxlanVxlan(
         BaremetalMultitenancyHybridBase):
@@ -468,6 +987,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('b2d1444d-1b92-4da3-91af-35c0b2149e9c')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('e2e1d2ed-13b8-45d5-bcbb-f09ff3f2ff4c')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('77db61a0-9a49-4653-9dcb-8a12bfa04649')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('fdd8d98f-b244-4a5a-808f-9b85a54e5db3')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('4bba2101-1de6-4b90-9c14-3990a197f254')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('05e23248-6a42-4a45-b329-1620bb3d3674')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('52a7d061-2e39-478a-b5d4-18fa6dff453d')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('4a4ce46b-3334-4e80-b63e-29b7b7a6f7c9')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('f6a06e1d-87ed-4f70-917a-49f9c7d8d5a5')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('f236f403-ec5c-4d59-8c62-0c216d52f409')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('a6c0f9cf-8b65-46b3-b7c1-7ea4a9ecda7f')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('5bcf7c1e-7c8d-4de0-bc92-1a426b067282')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('bc3647a5-3f7f-463b-9d5a-9dd83d7fc02e')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('02ddca1f-6ff6-49b5-92cd-44714a6190a1')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('2fb0989f-1d93-46b2-bdbe-1aefb6d3c0f1')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('9f6d3a9c-b2fc-4d2c-8c82-7f79aa5360b1')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridVlanVlan(
         BaremetalMultitenancyHybridBase):
@@ -539,6 +1122,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('98d035a8-027f-4dfe-8f2f-75a27c31324f')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('5125ea04-2352-407f-ac4a-dc6713e4ee74')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('3448ac17-d428-4086-980f-293bba35e79b')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('e36b17d5-acab-485a-8a41-d028062c7e73')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('f369fdda-bd91-4948-84c4-071cb0b2d821')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('8a157a46-7db2-4733-ae68-5ac1eeda3e6d')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('df2e1508-de1b-43a9-8853-4cff500de035')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('e91473bf-fc1a-4e04-acaf-b556591fdc46')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('25a738b8-fe92-46d7-9c26-085678685f7f')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('0c30b479-cdd3-4a6c-ab04-e17c6d272cb2')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('c07ea54d-50ec-4818-96de-b92697032d4f')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('b3777955-a25a-43e4-82dd-36ea82245c33')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('4dae2535-9918-4dee-86fe-3ba1353241b0')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('0018551c-99ad-4fce-8085-5367e2e7397b')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('0018551c-99ad-4fce-8085-5367e2e7397b')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('a5441070-9796-4816-83a2-7b8ea25bbd13')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridVlanGeneve(
         BaremetalMultitenancyHybridBase):
@@ -610,6 +1257,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('e7312dc7-26a4-4a03-b8d2-56b53f263b58')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('2a46c3be-f4fc-4900-8790-ea014365d107')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('0f27b6f7-e4d7-4aaf-8d67-dcccfef1f9a6')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('f3943a5e-1b69-4ff4-b40a-ec3e77d2559a')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('0a6fc1ef-49fc-499d-9eb5-1992d07a0aa1')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('dfdc70e0-b2b3-4864-b21d-55c109bc186d')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('27b5bb73-2ec3-4c5c-8965-c39a82c2c29a')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('46343127-9b53-471a-bb95-80d758d9babe')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('8c0be7b3-0a27-4c0c-bb32-4b6c0f6b0641')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('a2695bbf-0c93-4f0f-82a2-049a21a0ff1c')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('445ec6f8-5897-44e2-9d4f-5fa567362e1f')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('1a6b92d6-8b02-4da0-9ebd-e041f30433b4')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('8f20d302-9141-49d8-931a-54b26e200c83')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('d841fb39-6711-497c-85a7-4a0a7a42f6ad')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('6d41c139-145d-4cd4-a3c0-3790d13c739a')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('db01f1a8-7c16-4b45-bf8c-3cd62a7c8d0e')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridGeneveVlan(
         BaremetalMultitenancyHybridBase):
@@ -681,6 +1392,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('2c58913e-65b6-43dc-b760-6923ad228f5a')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('e5ff8265-35b5-4574-8f61-d5a114217b95')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('71c29953-3e36-4b4b-b1d4-5e96080f2855')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('d7a2847b-31de-4050-8985-0d7f7507c4fc')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('41a4f7c9-c9f1-41ab-b1cf-f9f8a41406a7')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('c2f35131-6e24-4d6c-ae3a-2d790aa1eb01')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('6e84cf2f-c364-4922-85e6-7e635428a6f2')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('04143ef0-d865-4c07-9c16-4d6941fc6286')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('1688de2c-1f67-496b-8be6-96dbdff203d3')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('a773b9ef-9c5c-49be-81c7-6df9eec3b9ed')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('38a5dc36-0d84-4a0d-94f3-f8ebdb8dfcb3')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('1e9dff34-1f89-45c2-9aef-11660b4b99f1')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('7eb2f235-34aa-4af4-b5dc-c9fa00ae3db0')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('ec7fbb63-4c26-4f65-b3bb-5e19db7f497d')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('b5b0f379-3393-4216-83c0-b2279da1f373')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('a3a25913-8bc0-4537-b6b5-0e205f93b052')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridGeneveVxlan(
         BaremetalMultitenancyHybridBase):
@@ -752,6 +1527,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('ce86700a-fbed-4cfb-b2d7-b45e984f26b5')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('6bf5e717-5208-4c4b-ac75-7eab5f092f34')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('e37de781-3fcb-4b64-8317-47502f71ba2e')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('070cf827-028e-4d93-8964-6bf1104d2d04')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('826cd2f6-6fed-4920-99a6-eab1c439b015')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('cd4e30bb-3024-418a-bf1d-d7ac459a20c6')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('51b4f544-81cd-49c3-9c20-6150ee3706a2')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('90b30f6d-8bb3-4b83-97cf-83f339c75545')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('fa6ab8e5-b52a-463d-807a-0dfc0fe6a80b')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('ea1d03d5-5393-41a1-94f0-5f79e33b38a4')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('6da7f19c-13f5-40a6-92a0-f849c3dd1f32')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('f9b7cb73-5287-4313-bccf-dbe054d01f3f')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('31e00e9c-f472-401b-9ac2-51b2f92b1a3f')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('2b2a8355-348c-41b1-a335-91bbdb9f12f6')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('49f60c3f-8b67-4de5-83b6-b3a4f4e1bbd6')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('0e9cb5fc-b17f-4a36-b4be-b0e0cc7f1128')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridVxlanGeneve(
         BaremetalMultitenancyHybridBase):
@@ -823,6 +1662,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('d9aeffed-c5dd-4dd8-b210-440db06747db')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('9f417045-85ce-4225-a5c0-4c645c0d9688')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('fb5011ff-a09a-40ab-97c1-338b71ab8dcb')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('62fb2597-4095-4b66-8d1f-e98d314a0dfc')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('16407d7c-c943-48ed-8160-38c62fa87594')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('50b23561-aa1f-4671-8078-9cceb547d813')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('5d38b022-2290-4ca4-9883-b36d8ec24807')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('463f9859-41b9-4f2c-94d0-61639978df7d')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('97f490f6-44ed-44e9-9640-c6090108f179')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('44b14440-91c6-4fe5-81cd-bb19015637d4')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('fe4e7b4d-774c-4950-bd42-e755ff4294f8')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('ba91a18d-8a45-4f18-8c4f-6ac3290e36c0')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('9db32019-7f8a-4e92-8c9f-cd6fe447eb12')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('289c77a0-5c6b-4f34-ae3b-d3f3345e13c5')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('82d238c1-5d9f-4b3f-8417-05a7a9e26e7b')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('28a1620c-89d9-4de1-9ac0-174f4e00fbf4')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridVxlanVlan(
         BaremetalMultitenancyHybridBase):
@@ -894,6 +1797,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('d962e877-0e28-44b4-a0e8-d6f77433d609')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('6588092a-1edf-49b7-95aa-8045d0f527b4')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('29633360-b0d5-48e4-8c59-8a20be7af30d')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('a612512b-7947-484c-a009-7c579292b0bb')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('876914b2-da75-4481-a7d0-d2fd013e5777')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('917f28a9-56d3-48f8-a679-f39d51d69918')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('e63d46d4-8903-4b38-b56b-dc0ea73f2b92')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('1476f8da-e9fb-4ba6-9a3f-e94cbda154de')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('de2b29d1-4a7f-4f07-83a1-c4496ad012e6')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('080b18c6-bc80-4cbb-bd49-fc2ebc42e77a')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('c06be401-d79a-47cb-8ec0-9d905ec35327')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('29986f26-5c8a-41f8-8a42-12b16cf05742')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('8ed6eac4-1f31-44c1-b51c-59312b5e0d61')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('8d4af63b-2fbc-4ad3-9e9e-d14441494021')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('ec1a7e6a-d994-40a0-b74e-e74c72099b3f')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('f99be086-f4d4-4599-bccc-39f0a74f8f9e')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridVlanVxlan(
         BaremetalMultitenancyHybridBase):
@@ -965,6 +1932,70 @@
     def test_connectivity_vmb2_snat(self):
         self._test_connectivity_vmb2_snat()
 
+    @decorators.idempotent_id('1425312c-6e23-4b23-a90e-6d12bb0aaed5')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('184ecd60-69ad-4703-837d-60bb55e64b7f')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('ad4274dd-a0be-4358-b240-1f1518a901b0')
+    def test_connectivity_lbA_to_vmA1(self):
+        self._test_connectivity_lbA_to_vmA1()
+
+    @decorators.idempotent_id('a9fa2c83-6930-433b-b213-5e4871d7305c')
+    def test_connectivity_lbA_to_vmA1_fip(self):
+        self._test_connectivity_lbA_to_vmA1_fip()
+
+    @decorators.idempotent_id('e74e90b7-4274-46c8-829d-c1c8e9c17da0')
+    def test_connectivity_lbA_to_vmA2(self):
+        self._test_connectivity_lbA_to_vmA2()
+
+    @decorators.idempotent_id('fa2afb68-4d35-49b6-a67f-17df3d0098c3')
+    def test_connectivity_lbA_to_vmB1(self):
+        self._test_connectivity_lbA_to_vmB1()
+
+    @decorators.idempotent_id('9bef2e6e-dc7e-4c8b-834e-f0a143b07501')
+    def test_connectivity_lbA_to_vmB1_fip(self):
+        self._test_connectivity_lbA_to_vmB1_fip()
+
+    @decorators.idempotent_id('01aa395d-52ad-4066-8289-43cdafcc5565')
+    def test_connectivity_lbA_to_vmB2(self):
+        self._test_connectivity_lbA_to_vmB2()
+
+    @decorators.idempotent_id('aed60289-92fa-4b59-82f2-f0f9b63e6273')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('c7662247-69e3-4da9-8063-12ffb6f5edfb')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('c7b22259-73ef-444d-8a05-0f78a5467fb8')
+    def test_connectivity_lbB_to_vmA1(self):
+        self._test_connectivity_lbB_to_vmA1()
+
+    @decorators.idempotent_id('cae3abb6-d173-43e7-9bcc-dfd51be53209')
+    def test_connectivity_lbB_to_vmA1_fip(self):
+        self._test_connectivity_lbB_to_vmA1_fip()
+
+    @decorators.idempotent_id('b564fc90-a61a-4886-a584-658dfd2d5a0b')
+    def test_connectivity_lbB_to_vmA2(self):
+        self._test_connectivity_lbB_to_vmA2()
+
+    @decorators.idempotent_id('f7faf19f-89df-4e19-9885-32d2ecb2c9a7')
+    def test_connectivity_lbB_to_vmB1(self):
+        self._test_connectivity_lbB_to_vmB1()
+
+    @decorators.idempotent_id('0c829a96-6370-4dc4-9c64-1c21bd455965')
+    def test_connectivity_lbB_to_vmB1_fip(self):
+        self._test_connectivity_lbB_to_vmB1_fip()
+
+    @decorators.idempotent_id('1fa1a576-c7b7-461c-be91-cc242eedbb0e')
+    def test_connectivity_lbB_to_vmB2(self):
+        self._test_connectivity_lbB_to_vmB2()
+
 
 class BaremetalMultitenancyHybridBaseBM(
         BaremetalMultitenancyHybridBase):
@@ -972,11 +2003,11 @@
 
     ---- fip network -----
                        |
-                     ( r1 ) ------- netB --------
-                       |              |       |
-    --------- netA ------------    (bmB1)   (bmB2)
-            |        |              fipbmB1
-          (bmA1)   (bmA2)
+                     ( r1 ) ------- netB --------------
+                       |              |       |       |
+    --------- netA ------------    (bmB1)   (bmB2)   (lbB)
+     |      |        |              fipbmB1
+   (lbA)  (bmA1)   (bmA2)
          fipbmA1
 
     * Test can ping fips fipbmA, fipA1, fipB1
@@ -1000,7 +2031,7 @@
         netB_cidr = netaddr.IPNetwork("192.168.11.0/24")
         cls.ext_net_id = CONF.network.public_network_id
         cls.ping_timeout = 60
-        netA_kwargs = {"port_security_enabled": False}
+        netA_kwargs = {"port_security_enabled": True}
         if cls.netA_type:
             netA_kwargs["provider:network_type"] = cls.netA_type
 
@@ -1015,7 +2046,7 @@
             cls.routers_client.remove_router_interface,
             cls.r1['id'], subnet_id=cls.subnetA['id'])
 
-        netB_kwargs = {"port_security_enabled": False}
+        netB_kwargs = {"port_security_enabled": True}
         if cls.netB_type:
             netB_kwargs["provider:network_type"] = cls.netB_type
         cls.netB = cls.create_network(**netB_kwargs)
@@ -1031,6 +2062,32 @@
         cls.snat_check_ip = (cls.r1["external_gateway_info"]
                                    ["external_fixed_ips"][0]["ip_address"])
 
+        sg_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__class__.__name__ + '-sg')
+        cls.security_group = cls.security_groups_client.create_security_group(
+            name=sg_name
+        )['security_group']
+        cls.addClassCleanup(test_utils.call_and_ignore_notfound_exc,
+                            cls.security_groups_client.delete_security_group,
+                            cls.security_group['id'])
+
+        cls.security_group_rules_client.create_security_group_rule(
+            security_group_id=cls.security_group['id'],
+            direction='ingress',
+            remote_ip_prefix="0.0.0.0/0",
+            protocol='icmp',
+        )
+
+        cls.security_group_rules_client.create_security_group_rule(
+            security_group_id=cls.security_group['id'],
+            direction='ingress',
+            remote_ip_prefix="0.0.0.0/0",
+            protocol='tcp',
+            port_range_min=22,
+            port_range_max=22,
+        )
+
         cls.bmA1, cls.bmA1_ip, cls.bmA1_fip = cls.create_server(
             key_name=cls.keypair['name'],
             flavor=None,
@@ -1064,6 +2121,12 @@
             cls.bmB2_fip,
             private_key=cls.keypair['private_key'])
 
+        # Create load balancers
+        cls.lbA = cls.create_loadbalancer(cls.subnetA['id'])
+        cls.lbA_fip = cls.attach_fip_to_lb(cls.lbA)
+        cls.lbB = cls.create_loadbalancer(cls.subnetB['id'])
+        cls.lbB_fip = cls.attach_fip_to_lb(cls.lbB)
+
     def _test_connectivity_fip_bma1(self):
         self.assertTrue(
             self.ping_ip_address(
@@ -1108,6 +2171,186 @@
             self.snat_check_ip, conn_expected=True, timeout=self.ping_timeout,
             jump_host_ip=self.bmB1_fip)
 
+    def _test_connectivity_lbA_to_bmA1(self):
+        listener_port = 2201
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.bmA1_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_bmA1_fip(self):
+        listener_port = 2202
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.bmA1_fip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_bmA2(self):
+        listener_port = 2203
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.bmA2_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_bmB1(self):
+        listener_port = 2204
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.bmB1_ip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_bmB1_fip(self):
+        listener_port = 2205
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.bmB1_fip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbA_to_bmB2(self):
+        listener_port = 2206
+        self._create_listener_and_pool(
+            self.lbA['id'],
+            self.bmB2_ip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbA_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_bmA1(self):
+        listener_port = 2201
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.bmA1_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_bmA1_fip(self):
+        listener_port = 2202
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.bmA1_fip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_bmA2(self):
+        listener_port = 2203
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.bmA2_ip,
+            self.subnetA['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_bmB1(self):
+        listener_port = 2204
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.bmB1_ip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_bmB1_fip(self):
+        listener_port = 2205
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.bmB1_fip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
+    def _test_connectivity_lbB_to_bmB2(self):
+        listener_port = 2206
+        self._create_listener_and_pool(
+            self.lbB['id'],
+            self.bmB2_ip,
+            self.subnetB['id'],
+            listener_port
+        )
+        self.verify_l4_connectivity(
+            destination_ip=self.lbB_fip,
+            port=listener_port,
+            conn_expected=True,
+            timeout=self.ping_timeout
+        )
+
 
 class BaremetalMultitenancyHybridBaseBMGeneveGeneve(
         BaremetalMultitenancyHybridBaseBM):
@@ -1147,6 +2390,54 @@
     def test_connectivity_bmb2_snat(self):
         self._test_connectivity_bmb2_snat()
 
+    @decorators.idempotent_id('07db19f1-4208-40ad-a985-6c43752f21b2')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('63c2bcf7-f32c-4628-9ac9-11cd2ff4c1c8')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('5d8b7c67-44d1-4b27-a20b-4e5d2c889c34')
+    def test_connectivity_lbA_to_bmA2(self):
+        self._test_connectivity_lbA_to_bmA2()
+
+    @decorators.idempotent_id('f6cf8f1f-0834-48e3-a4a0-8c2f0101dc8e')
+    def test_connectivity_lbA_to_bmB1(self):
+        self._test_connectivity_lbA_to_bmB1()
+
+    @decorators.idempotent_id('62e8a54f-62b2-43b3-8895-b2468e7e1925')
+    def test_connectivity_lbA_to_bmB1_fip(self):
+        self._test_connectivity_lbA_to_bmB1_fip()
+
+    @decorators.idempotent_id('26f0d62b-8ed6-4225-b94a-e64f0b21c986')
+    def test_connectivity_lbA_to_bmB2(self):
+        self._test_connectivity_lbA_to_bmB2()
+
+    @decorators.idempotent_id('2e4f23c5-0a91-4698-933d-1a0c46c87214')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('df2a0d1a-1486-4690-9245-6f90f7c18c60')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('c8c8f1ec-c76e-46a6-84ad-87c943622d52')
+    def test_connectivity_lbB_to_bmA2(self):
+        self._test_connectivity_lbB_to_bmA2()
+
+    @decorators.idempotent_id('60c62f0d-4065-47c9-a7e1-c1dce501c796')
+    def test_connectivity_lbB_to_bmB1(self):
+        self._test_connectivity_lbB_to_bmB1()
+
+    @decorators.idempotent_id('a9e02bb1-5682-42c5-bd9b-53ff9c8dbb0a')
+    def test_connectivity_lbB_to_bmB1_fip(self):
+        self._test_connectivity_lbB_to_bmB1_fip()
+
+    @decorators.idempotent_id('9b82a77f-5b77-44c1-9160-5244072b49f4')
+    def test_connectivity_lbB_to_bmB2(self):
+        self._test_connectivity_lbB_to_bmB2()
+
 
 class BaremetalMultitenancyHybridBaseBMVxlanVxlan(
         BaremetalMultitenancyHybridBaseBM):
@@ -1186,6 +2477,54 @@
     def test_connectivity_bmb2_snat(self):
         self._test_connectivity_bmb2_snat()
 
+    @decorators.idempotent_id('59f3dc3d-36a5-41a0-b44b-21d2790fc352')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('e0b7b09c-2ab1-42d4-b0d6-2b98eeb5f53d')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('1ef35ff7-82cb-4535-bd9d-45e5c14f39f3')
+    def test_connectivity_lbA_to_bmA2(self):
+        self._test_connectivity_lbA_to_bmA2()
+
+    @decorators.idempotent_id('4c2a0d9b-579a-4b20-b1c6-0ed97953d31b')
+    def test_connectivity_lbA_to_bmB1(self):
+        self._test_connectivity_lbA_to_bmB1()
+
+    @decorators.idempotent_id('ce5441bb-80fb-4e43-98db-f93e63ee2b89')
+    def test_connectivity_lbA_to_bmB1_fip(self):
+        self._test_connectivity_lbA_to_bmB1_fip()
+
+    @decorators.idempotent_id('38f15bb3-4cc0-42f6-9d3b-0cf8cb3641b1')
+    def test_connectivity_lbA_to_bmB2(self):
+        self._test_connectivity_lbA_to_bmB2()
+
+    @decorators.idempotent_id('da89439d-145c-468a-9020-17d78eddb21c')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('8ea5cf89-9042-45d4-8d72-fec4d63f2eb6')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('8d1584b7-839c-43c5-a048-7dbcb779c282')
+    def test_connectivity_lbB_to_bmA2(self):
+        self._test_connectivity_lbB_to_bmA2()
+
+    @decorators.idempotent_id('5f6a47f1-45bc-4480-b43e-2eb6f3172201')
+    def test_connectivity_lbB_to_bmB1(self):
+        self._test_connectivity_lbB_to_bmB1()
+
+    @decorators.idempotent_id('d8f21a6f-08a7-4789-86c3-690e76b205a0')
+    def test_connectivity_lbB_to_bmB1_fip(self):
+        self._test_connectivity_lbB_to_bmB1_fip()
+
+    @decorators.idempotent_id('7a5376cb-fd61-47b4-bd02-d7b1735f1fc2')
+    def test_connectivity_lbB_to_bmB2(self):
+        self._test_connectivity_lbB_to_bmB2()
+
 
 class BaremetalMultitenancyHybridBaseBMVlanVlan(
         BaremetalMultitenancyHybridBaseBM):
@@ -1225,6 +2564,54 @@
     def test_connectivity_bmb2_snat(self):
         self._test_connectivity_bmb2_snat()
 
+    @decorators.idempotent_id('d0e9f8a7-6f5e-4e4f-9a3f-4e5b6c7d8a9f')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('f2a1b0c9-8b7a-4a5b-1c5b-6a7d8e9f0c1b')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('e1f0a9b8-7a6f-4f5a-0b4a-5f6c7d8e9b0a')
+    def test_connectivity_lbA_to_bmA2(self):
+        self._test_connectivity_lbA_to_bmA2()
+
+    @decorators.idempotent_id('a3b2c1d0-9c8b-4b5c-2d6c-7b8e9f0a1d2c')
+    def test_connectivity_lbA_to_bmB1(self):
+        self._test_connectivity_lbA_to_bmB1()
+
+    @decorators.idempotent_id('94fab4f6-de97-4974-98b7-c6860d84d2b2')
+    def test_connectivity_lbA_to_bmB1_fip(self):
+        self._test_connectivity_lbA_to_bmB1_fip()
+
+    @decorators.idempotent_id('b4c3d2e1-0d9c-4c5d-3e7d-8c9f0a1b2e3d')
+    def test_connectivity_lbA_to_bmB2(self):
+        self._test_connectivity_lbA_to_bmB2()
+
+    @decorators.idempotent_id('c5d4e3f2-1e0d-4d5e-4f8e-9d0a1b2c3f4e')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('d6e5f4a3-2f1e-4e5f-5a9f-0e1b2c3d4a5f')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('e7f6a5b4-3a2f-4f6a-6b0a-1f2c3d4e5b6a')
+    def test_connectivity_lbB_to_bmA2(self):
+        self._test_connectivity_lbB_to_bmA2()
+
+    @decorators.idempotent_id('a9b8c7d6-5c4b-4b6c-8d2c-3b4e5f6a7d8c')
+    def test_connectivity_lbB_to_bmB1(self):
+        self._test_connectivity_lbB_to_bmB1()
+
+    @decorators.idempotent_id('f8a7b6c5-4b3a-4a6b-7c1b-2a3d4e5f6c7b')
+    def test_connectivity_lbB_to_bmB1_fip(self):
+        self._test_connectivity_lbB_to_bmB1_fip()
+
+    @decorators.idempotent_id('b0c9d8e7-6d5c-4c6d-9e3d-4c5f6a7b8e9d')
+    def test_connectivity_lbB_to_bmB2(self):
+        self._test_connectivity_lbB_to_bmB2()
+
 
 class BaremetalMultitenancyHybridBaseBMGeneveVLAN(
         BaremetalMultitenancyHybridBaseBM):
@@ -1264,6 +2651,54 @@
     def test_connectivity_bmb2_snat(self):
         self._test_connectivity_bmb2_snat()
 
+    @decorators.idempotent_id('a9f6f5b2-3f49-4c62-86d8-23d6d2cb57e1')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('c8f7f9d3-6a3b-49b2-9511-bf91e2d74caa')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('9d4f2f7c-2d4b-493a-8b2c-5e6f1f4c2f1b')
+    def test_connectivity_lbA_to_bmA2(self):
+        self._test_connectivity_lbA_to_bmA2()
+
+    @decorators.idempotent_id('0c5a3f4b-7b2e-4d2f-84d2-1f9c6e2a4d2f')
+    def test_connectivity_lbA_to_bmB1(self):
+        self._test_connectivity_lbA_to_bmB1()
+
+    @decorators.idempotent_id('e7b2c4f6-1d3e-44b5-9f1d-9c2b6a7f5d1c')
+    def test_connectivity_lbA_to_bmB1_fip(self):
+        self._test_connectivity_lbA_to_bmB1_fip()
+
+    @decorators.idempotent_id('b2f1c6a4-3e5b-4d2a-8c7b-1f6d2e7c5a3b')
+    def test_connectivity_lbA_to_bmB2(self):
+        self._test_connectivity_lbA_to_bmB2()
+
+    @decorators.idempotent_id('3c4f2e1a-7b5d-4c2e-9d3b-2f6c1e7d4a2b')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('5e7d1f2c-6b3a-4c5d-8e2f-1d7b2c3a4f5e')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('7f2c5b4d-8a3e-4d6f-9b1c-3d2e4f7b6a8c')
+    def test_connectivity_lbB_to_bmA2(self):
+        self._test_connectivity_lbB_to_bmA2()
+
+    @decorators.idempotent_id('1a3b7c5d-4e2f-4b6d-8c2f-5e1d7b3a4c6e')
+    def test_connectivity_lbB_to_bmB1(self):
+        self._test_connectivity_lbB_to_bmB1()
+
+    @decorators.idempotent_id('2b4c6d5e-3a1b-4f5c-9d2e-7f3a1b6c4d8e')
+    def test_connectivity_lbB_to_bmB1_fip(self):
+        self._test_connectivity_lbB_to_bmB1_fip()
+
+    @decorators.idempotent_id('3d5e7f6a-2c1b-4e3f-8b6d-9a4c2f5b7e1d')
+    def test_connectivity_lbB_to_bmB2(self):
+        self._test_connectivity_lbB_to_bmB2()
+
 
 class BaremetalMultitenancyHybridBaseBMGeneveVXLAN(
         BaremetalMultitenancyHybridBaseBM):
@@ -1302,3 +2737,51 @@
     @decorators.idempotent_id('c2811a5b-cf2b-48c4-a33f-c844855d89be')
     def test_connectivity_bmb2_snat(self):
         self._test_connectivity_bmb2_snat()
+
+    @decorators.idempotent_id('b6a7c8d9-5f3e-4a2d-9b8c-1e2f3d4c5a6b')
+    def test_connectivity_lbA_to_bmA1(self):
+        self._test_connectivity_lbA_to_bmA1()
+
+    @decorators.idempotent_id('c9d8e7f6-4a3b-2c1d-8e9f-0a1b2c3d4e5f')
+    def test_connectivity_lbA_to_bmA1_fip(self):
+        self._test_connectivity_lbA_to_bmA1_fip()
+
+    @decorators.idempotent_id('e7f6d5c4-3b2a-1c0d-9e8f-7d6c5b4a3f2e')
+    def test_connectivity_lbA_to_bmA2(self):
+        self._test_connectivity_lbA_to_bmA2()
+
+    @decorators.idempotent_id('f1e2d3c4-5b6a-7d8c-9e0f-1a2b3c4d5e6f')
+    def test_connectivity_lbA_to_bmB1(self):
+        self._test_connectivity_lbA_to_bmB1()
+
+    @decorators.idempotent_id('a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d')
+    def test_connectivity_lbA_to_bmB1_fip(self):
+        self._test_connectivity_lbA_to_bmB1_fip()
+
+    @decorators.idempotent_id('b1c2d3e4-5f6a-7b8c-9d0e-1f2a3b4c5d6e')
+    def test_connectivity_lbA_to_bmB2(self):
+        self._test_connectivity_lbA_to_bmB2()
+
+    @decorators.idempotent_id('c1d2e3f4-6a7b-8c9d-0e1f-2a3b4c5d6e7f')
+    def test_connectivity_lbB_to_bmA1(self):
+        self._test_connectivity_lbB_to_bmA1()
+
+    @decorators.idempotent_id('d1e2f3a4-7b8c-9d0e-1f2a-3b4c5d6e7f8a')
+    def test_connectivity_lbB_to_bmA1_fip(self):
+        self._test_connectivity_lbB_to_bmA1_fip()
+
+    @decorators.idempotent_id('e1f2a3b4-8c9d-0e1f-2a3b-4c5d6e7f8a9b')
+    def test_connectivity_lbB_to_bmA2(self):
+        self._test_connectivity_lbB_to_bmA2()
+
+    @decorators.idempotent_id('f2a3b4c5-9d0e-1f2a-3b4c-5d6e7f8a9b0c')
+    def test_connectivity_lbB_to_bmB1(self):
+        self._test_connectivity_lbB_to_bmB1()
+
+    @decorators.idempotent_id('a3b4c5d6-0e1f-2a3b-4c5d-6e7f8a9b0c1d')
+    def test_connectivity_lbB_to_bmB1_fip(self):
+        self._test_connectivity_lbB_to_bmB1_fip()
+
+    @decorators.idempotent_id('b3c4d5e6-1f2a-3b4c-5d6e-7f8a9b0c1d2e')
+    def test_connectivity_lbB_to_bmB2(self):
+        self._test_connectivity_lbB_to_bmB2()
