diff --git a/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py b/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
index da14ec6..ead8935 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
@@ -1645,6 +1645,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 079e988..b1c0e21 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_member.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_member.py
@@ -416,6 +416,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,
@@ -423,6 +426,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,
@@ -430,6 +436,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,
@@ -437,6 +446,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,
@@ -444,6 +456,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,
@@ -451,6 +466,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,
@@ -458,6 +476,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,
@@ -465,6 +486,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,
@@ -480,6 +504,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,
@@ -495,6 +522,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,
@@ -760,6 +790,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,
@@ -767,6 +800,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,
@@ -774,6 +810,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,
@@ -781,6 +820,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,
@@ -788,6 +830,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,
@@ -795,6 +840,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,
@@ -802,6 +850,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,
@@ -809,6 +860,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,
@@ -824,6 +878,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,
@@ -839,6 +896,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,
@@ -1056,26 +1116,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)
@@ -1681,6 +1756,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,
@@ -1688,6 +1766,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,
@@ -1695,6 +1776,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,
@@ -1702,6 +1786,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,
@@ -1709,6 +1796,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,
@@ -1716,6 +1806,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,
@@ -1723,6 +1816,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,
@@ -1730,6 +1826,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,
@@ -1745,6 +1844,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,
@@ -1760,6 +1862,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,
@@ -2122,6 +2227,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,
@@ -2129,6 +2237,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,
@@ -2136,6 +2247,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,
@@ -2143,6 +2257,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,
@@ -2150,6 +2267,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,
@@ -2157,6 +2277,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,
@@ -2164,6 +2287,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,
@@ -2171,6 +2297,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,
@@ -2186,6 +2315,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,
@@ -2201,6 +2333,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,
@@ -2577,55 +2712,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,
@@ -2966,6 +3131,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,
@@ -2973,6 +3141,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,
@@ -2980,6 +3151,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,
@@ -2987,6 +3161,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,
@@ -3002,6 +3179,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 bc717a7..d85d593 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_pool.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_pool.py
@@ -1575,6 +1575,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 eff0e1f..0b7b33e 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 d4eaa86..b27b8fc 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
@@ -345,16 +345,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 f1a9c04..9683244 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
@@ -193,6 +193,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(
@@ -207,6 +210,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(
@@ -221,6 +227,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 90c49e7..5a01eab 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 8615e02..6e054aa 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_pool.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_pool.py
@@ -535,6 +535,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 c03d7df..fb10313 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
@@ -897,6 +897,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]
@@ -920,6 +923,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
@@ -942,6 +948,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
@@ -966,6 +975,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'):
@@ -1166,16 +1178,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)
