diff --git a/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py b/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
index faab3bc..e608d59 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
@@ -1642,6 +1642,13 @@
 
 class HealthMonitorSourceIPPortAPITest(HealthMonitorAPIBaseTest):
 
+    @classmethod
+    def skip_checks(cls):
+        super(HealthMonitorSourceIPPortAPITest, cls).skip_checks()
+        if CONF.load_balancer.provider == 'amphorav2':
+            raise cls.skipException("Amphora provider does not"
+                                    " support SOURCE_IP_PORT algorithm.")
+
     @decorators.idempotent_id('acab47f5-3006-4e84-a55f-e9dfe33113d2')
     def test_SIP_HTTP_healthmonitor_create(self):
         self._test_healthmonitor_create(
diff --git a/octavia_tempest_plugin/tests/api/v2/test_member.py b/octavia_tempest_plugin/tests/api/v2/test_member.py
index 96f555b..fb9103c 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_member.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_member.py
@@ -406,6 +406,9 @@
         self._test_member_create(4, pool_id)
 
     @decorators.idempotent_id('a2dbf216-a974-45e1-822d-859f76c89ed6')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_HTTP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -413,6 +416,9 @@
         self._test_member_create(4, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('926eeed9-ecf4-4d22-9417-ef7a7e0a7788')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_HTTP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -420,6 +426,9 @@
         self._test_member_create(4, pool_id)
 
     @decorators.idempotent_id('55da07bc-bf2c-4924-aba3-a03456843e14')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_HTTPS_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -427,6 +436,9 @@
         self._test_member_create(4, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('6773a8bd-1c51-4040-84ba-1aa2b6c4280d')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_HTTPS_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -434,6 +446,9 @@
         self._test_member_create(4, pool_id)
 
     @decorators.idempotent_id('ab462d7c-069d-4b55-b6a7-dd199bde65b3')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_PROXY_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -441,6 +456,9 @@
         self._test_member_create(4, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('b1f6f779-2535-4e47-add2-24561545ba59')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_PROXY_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -448,6 +466,9 @@
         self._test_member_create(4, pool_id)
 
     @decorators.idempotent_id('73673efc-5b70-4394-b831-1d59fe283e7d')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_TCP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -455,6 +476,9 @@
         self._test_member_create(4, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('0a08da1e-84f5-4068-84ec-1312b6b8bee3')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_TCP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -470,6 +494,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_UDP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -485,6 +512,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_UDP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -750,6 +780,9 @@
         self._test_member_create(6, pool_id)
 
     @decorators.idempotent_id('d816d324-2434-4812-9b3e-a3f0d4949008')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_HTTP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -757,6 +790,9 @@
         self._test_member_create(6, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('d4cfe315-b6d6-4940-8ff6-5f5252028eec')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_HTTP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -764,6 +800,9 @@
         self._test_member_create(6, pool_id)
 
     @decorators.idempotent_id('05684ab0-dff3-41aa-8b42-7f95fd6aa4ab')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_HTTPS_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -771,6 +810,9 @@
         self._test_member_create(6, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('ed42872c-1ffc-4210-9f69-5f7eb8ec732f')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_HTTPS_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -778,6 +820,9 @@
         self._test_member_create(6, pool_id)
 
     @decorators.idempotent_id('ab87132f-5a0e-40a1-9498-9883780d31a9')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_PROXY_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -785,6 +830,9 @@
         self._test_member_create(6, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('227d7f40-a224-4e67-8844-2d28abc5171e')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_PROXY_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -792,6 +840,9 @@
         self._test_member_create(6, pool_id)
 
     @decorators.idempotent_id('b8394de8-a898-4cab-aa0c-f3168d702ee0')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_TCP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -799,6 +850,9 @@
         self._test_member_create(6, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('7a86e00b-90bf-4fd3-8636-ae7264929106')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_TCP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -814,6 +868,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    not CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_UDP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -829,6 +886,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    not CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_UDP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1040,26 +1100,41 @@
                                const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('2f9d0974-2e55-49c1-b83a-8bdd6dfdb46c')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_list(self):
         self._test_member_list(const.HTTP,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('d31c5b8b-7ec1-4e78-a821-30e9a1e05139')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_list(self):
         self._test_member_list(const.HTTPS,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('15f8690b-f345-413c-9b4e-af39d546fbec')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_list(self):
         self._test_member_list(const.PROXY,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('db5769ce-f4b0-4a0f-92a7-4eeed66b6730')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_list(self):
         self._test_member_list(const.TCP,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('638811fa-26ce-44f3-8ac7-29cf1ef41838')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_list(self):
         self._test_member_list(const.UDP,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
@@ -1665,6 +1740,9 @@
         self._test_member_show(pool_id)
 
     @decorators.idempotent_id('7c4fcb3e-a994-4d39-97cc-929c022c001e')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -1672,6 +1750,9 @@
         self._test_member_show(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('704d04c3-e639-4dee-b55d-09ebf55f8a0d')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -1679,6 +1760,9 @@
         self._test_member_show(pool_id)
 
     @decorators.idempotent_id('69de0c60-3e4f-40cf-9bf7-d2b1e6c83715')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -1686,6 +1770,9 @@
         self._test_member_show(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('2d970b1c-c157-4974-b605-b8e08d97e874')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -1693,6 +1780,9 @@
         self._test_member_show(pool_id)
 
     @decorators.idempotent_id('28e1e3e7-454b-409d-84c3-1826f82ca9dd')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -1700,6 +1790,9 @@
         self._test_member_show(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('189ec327-b1c5-47a8-a843-10963cba0a9c')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -1707,6 +1800,9 @@
         self._test_member_show(pool_id)
 
     @decorators.idempotent_id('6953a9a4-5fac-4470-bfda-4fafbd67288b')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1714,6 +1810,9 @@
         self._test_member_show(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('6d8d546f-8c41-49b9-bd9d-8f8ea3975816')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1729,6 +1828,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1744,6 +1846,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -2101,6 +2206,9 @@
         self._test_member_update(pool_id)
 
     @decorators.idempotent_id('5215ecc4-fd47-451a-b073-399bad8b522c')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2108,6 +2216,9 @@
         self._test_member_update(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('7c89fb05-d949-4c0f-8c61-7e55e494c76f')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2115,6 +2226,9 @@
         self._test_member_update(pool_id)
 
     @decorators.idempotent_id('edff98be-6208-4f1c-9cd3-376b7ac47f80')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2122,6 +2236,9 @@
         self._test_member_update(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('a1f214fe-6c09-4298-b03e-7069b615dec2')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2129,6 +2246,9 @@
         self._test_member_update(pool_id)
 
     @decorators.idempotent_id('56a21d8e-825a-4780-a073-41061a0d55ca')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2136,6 +2256,9 @@
         self._test_member_update(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('25a24e27-218b-4dcd-99aa-e9ca9f8163e5')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2143,6 +2266,9 @@
         self._test_member_update(pool_id)
 
     @decorators.idempotent_id('d6625773-2665-423d-8500-cf9b1b38b53e')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -2150,6 +2276,9 @@
         self._test_member_update(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('87a3e3aa-580a-41ca-bc15-8cb2995c9125')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -2165,6 +2294,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -2180,6 +2312,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -2550,55 +2685,85 @@
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('617028e2-89fb-4e7e-ba62-1a8a7af697ca')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_batch_update(self):
         self._test_member_batch_update(const.HTTP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('44a2508d-ecea-4f92-ba66-a64d6d7f12da')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.HTTP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('794137e5-28c1-4b0e-bc2f-fc030d03a689')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_batch_update(self):
         self._test_member_batch_update(const.HTTPS,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('c1c8930d-0436-4075-b47a-f3bd263ab8a8')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.HTTPS,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('1ab05cf2-265e-4291-b17c-19caa0a1b6ff')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_batch_update(self):
         self._test_member_batch_update(const.PROXY,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('4de187b6-4948-4394-af6b-8828e96d8f3e')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.PROXY,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('1d171080-c7e5-4ee0-83d4-51bb1655cb21')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_batch_update(self):
         self._test_member_batch_update(const.TCP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('52328f7a-bec4-4f23-9293-f5f1283c0af9')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.TCP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('00b3ebda-c28c-471b-bbf8-01de6567b4b5')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_batch_update(self):
         self._test_member_batch_update(const.UDP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('e4a357a3-1d07-46f4-a8ff-67a279783b24')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.UDP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
@@ -2928,6 +3093,9 @@
         self._test_member_delete(pool_id)
 
     @decorators.idempotent_id('1c9f9dc5-4ba3-44cd-a840-fd0629abfddd')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2935,6 +3103,9 @@
         self._test_member_delete(pool_id)
 
     @decorators.idempotent_id('93ef7ac1-da00-420d-a367-22e86d968e1c')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2942,6 +3113,9 @@
         self._test_member_delete(pool_id)
 
     @decorators.idempotent_id('e83b9389-768f-4bcf-a650-17af01243d2b')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2949,6 +3123,9 @@
         self._test_member_delete(pool_id)
 
     @decorators.idempotent_id('eca3d41d-21bd-4547-b8b8-8f87867eb4ad')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -2964,6 +3141,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
diff --git a/octavia_tempest_plugin/tests/api/v2/test_pool.py b/octavia_tempest_plugin/tests/api/v2/test_pool.py
index 4276a44..26210e5 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_pool.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_pool.py
@@ -1572,6 +1572,13 @@
 class PoolSourceIPPortAPITest(PoolAPIBaseTest):
     """Pool with Source IP Port algorithm"""
 
+    @classmethod
+    def skip_checks(cls):
+        super(PoolSourceIPPortAPITest, cls).skip_checks()
+        if CONF.load_balancer.provider == 'amphorav2':
+            raise cls.skipException("Amphora provider does not"
+                                    " support SOURCE_IP_PORT algorithm.")
+
     @decorators.idempotent_id('265ba978-a528-429c-9ef7-c36373ee2225')
     def test_HTTP_SIP_pool_standalone_create(self):
         self._test_pool_create(listener_protocol=None,
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py b/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
index 8d4ff06..f48d5d8 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
@@ -169,6 +169,9 @@
             const.HEALTH_MONITOR_UDP_CONNECT)
 
     @decorators.idempotent_id('d5e0d1b6-7cce-4592-abce-0ac6bee18818')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_HTTP_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -183,6 +186,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('e188daac-6db9-4dc2-8ecb-b47932e1984a')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_HTTPS_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -197,6 +203,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('f9458ffd-5af7-402b-9c15-c061bf2eb9ba')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_PING_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -211,6 +220,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('b4cbe603-0a14-4778-b38c-f330053c86b6')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_TCP_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -225,6 +237,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('57714d4c-d584-4345-9ceb-becc3ae37b7f')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_TLS_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -239,6 +254,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('cc4abf84-361b-409b-b859-9a860d539deb')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_UDP_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py b/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py
index ad7ded3..c77bf5a 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py
@@ -335,16 +335,25 @@
             const.UDP, 98, const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('c11768f1-19b4-48cc-99a5-0737379b1957')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_http_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.HTTP, 99, const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('fcfe2ab1-2c36-4793-a926-1fec589a9a2a')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_tcp_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.TCP, 100, const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('80f31bc1-819e-4d9e-8820-bf3e28600540')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_udp_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.UDP, 101, const.LB_ALGORITHM_SOURCE_IP_PORT)
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
index 8a6d5d5..8e77db7 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
@@ -183,6 +183,9 @@
         self._test_listener_CRUD(const.UDP, pool1, pool2)
 
     @decorators.idempotent_id('807a421e-5e99-4556-b0eb-512d39b25eac')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_http_source_ip_port_listener_CRUD(self):
         try:
             pool1, pool2 = self._create_pools(
@@ -197,6 +200,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('6211f8ad-622d-404d-b199-8c2eb55ab340')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_tcp_source_ip_port_listener_CRUD(self):
         try:
             pool1, pool2 = self._create_pools(
@@ -211,6 +217,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('3f9a2de9-5012-437d-a907-a25e1f68ccfb')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_udp_source_ip_port_listener_CRUD(self):
         try:
             pool1, pool2 = self._create_pools(
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_member.py b/octavia_tempest_plugin/tests/scenario/v2/test_member.py
index 64f2248..d3cada1 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_member.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_member.py
@@ -699,6 +699,13 @@
 
 class MemberSourceIPPortScenarioTest(MemberScenarioBaseTest):
 
+    @classmethod
+    def skip_checks(cls):
+        super(MemberSourceIPPortScenarioTest, cls).skip_checks()
+        if CONF.load_balancer.provider == 'amphorav2':
+            raise cls.skipException("Amphora provider does not"
+                                    " support SOURCE_IP_PORT algorithm.")
+
     @decorators.idempotent_id('ab8f46fe-0c84-4755-a9a2-80cc1fbdea18')
     def test_HTTP_SIP_member_crud(self):
         pool_id = self._listener_pool_create(
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_pool.py b/octavia_tempest_plugin/tests/scenario/v2/test_pool.py
index 29bb799..958f702 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_pool.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_pool.py
@@ -530,6 +530,13 @@
 class PoolSourceIPPortScenarioTest(PoolScenarioBaseTest):
     """Pool with Source IP Port algorithm"""
 
+    @classmethod
+    def skip_checks(cls):
+        super(PoolSourceIPPortScenarioTest, cls).skip_checks()
+        if CONF.load_balancer.provider == 'amphorav2':
+            raise cls.skipException("Amphora provider does not"
+                                    " support SOURCE_IP_PORT algorithm.")
+
     @decorators.idempotent_id('fee61d34-e272-42f5-92e2-69b515c6cded')
     def test_HTTP_SIP_pool_standalone_CRUD(self):
         self._test_pool_CRUD(listener_protocol=None,
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py b/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
index 097f1fa..ea214a1 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
@@ -887,6 +887,9 @@
     @testtools.skipIf(CONF.load_balancer.test_with_noop,
                       'Traffic tests will not work in noop mode.')
     @decorators.idempotent_id('4568db0e-4243-4191-a822-9d327a55fa64')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_source_ip_tcp_traffic(self):
         pool_id = self._listener_pool_create(
             const.TCP, 90, pool_algorithm=const.LB_ALGORITHM_SOURCE_IP)[1]
@@ -910,6 +913,9 @@
     @testtools.skipIf(CONF.load_balancer.test_with_noop,
                       'Traffic tests will not work in noop mode.')
     @decorators.idempotent_id('a446585b-5651-40ce-a4db-cb2ab4d37c03')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_source_ip_port_http_traffic(self):
         # This is a special case as the reference driver does not support
         # this test. Since it runs with not_implemented_is_error, we must
@@ -932,6 +938,9 @@
     @testtools.skipIf(CONF.load_balancer.test_with_noop,
                       'Traffic tests will not work in noop mode.')
     @decorators.idempotent_id('60108f30-d870-487c-ab96-8d8a9b587b94')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_source_ip_port_tcp_traffic(self):
         # This is a special case as the reference driver does not support
         # this test. Since it runs with not_implemented_is_error, we must
@@ -956,6 +965,9 @@
     @testtools.skipIf(CONF.load_balancer.test_with_noop,
                       'Traffic tests will not work in noop mode.')
     @decorators.idempotent_id('a67dfa58-6953-4a0f-8a65-3f153b254c98')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_source_ip_port_udp_traffic(self):
         if not self.mem_listener_client.is_version_supported(
                 self.api_version, '2.1'):
@@ -1156,16 +1168,25 @@
             const.UDP, 98, const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('d198ddc5-1bcb-4310-a1b0-fa1a6328c4e9')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_http_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.HTTP, 99, const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('bbb09dbb-2aad-4281-9383-4bb4ad420ee1')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_tcp_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.TCP, 100, const.LB_ALGORITHM_SOURCE_IP_PORT, delay=0.2)
 
     @decorators.idempotent_id('70290a9d-0065-42ad-bb46-884a535d2da2')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_udp_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.UDP, 101, const.LB_ALGORITHM_SOURCE_IP_PORT, delay=0.2)
