diff --git a/playbooks/multinode-devstack-ovs-tempest.yaml b/playbooks/multinode-devstack-ovs-tempest.yaml
new file mode 100644
index 0000000..d399eb3
--- /dev/null
+++ b/playbooks/multinode-devstack-ovs-tempest.yaml
@@ -0,0 +1,7 @@
+- hosts: all
+  vars:
+    install_ovs: false
+  roles:
+    # For ovs from source jobs we need to reconfigure bridges after devstack setup
+    - multi-node-bridge
+    - multi-node-setup
diff --git a/zuul.d/base-nested-switch.yaml b/zuul.d/base-nested-switch.yaml
index 16d270f..011ca14 100644
--- a/zuul.d/base-nested-switch.yaml
+++ b/zuul.d/base-nested-switch.yaml
@@ -1,4 +1,52 @@
 # Base nested switch job for 2023.1 and later
+- nodeset:
+    name: whitebox-neutron-five-node-centos-9-stream
+    nodes:
+      - name: controller
+        label: nested-virt-centos-9-stream
+      - name: controller2
+        label: nested-virt-centos-9-stream
+      - name: controller3
+        label: nested-virt-centos-9-stream
+      - name: compute1
+        label: nested-virt-centos-9-stream
+      - name: compute2
+        label: nested-virt-centos-9-stream
+    groups:
+      # Node where tests are executed and test results collected
+      - name: tempest
+        nodes:
+          - controller
+      # Nodes running the controller service
+      - name: controller
+        nodes:
+          - controller
+          - controller2
+          - controller3
+      # Nodes running the compute service
+      - name: compute
+        nodes:
+          - compute1
+          - compute2
+      # Nodes that are not controller
+      - name: subnode
+        nodes:
+          - compute1
+          - compute2
+          - controller2
+          - controller3
+      # Switch node for multinode networking setup
+      - name: switch
+        nodes:
+          - controller
+      # Peer nodes for multinode networking setup
+      - name: peers
+        nodes:
+          - controller2
+          - controller3
+          - compute1
+          - compute2
+
 - job:
     name: whitebox-neutron-tempest-plugin-base-nested-switch
     parent: whitebox-neutron-tempest-plugin-base
@@ -7,7 +55,7 @@
       regex: ^(unmaintained|stable/(victoria|wallaby|xena|yoga|zed)).*$
       negate: true
     # Comment nodeset and vars to switch back to non nested nodes
-    nodeset: devstack-single-node-centos-9-stream
+    nodeset: whitebox-neutron-five-node-centos-9-stream
     vars: &nested_virt_vars
       devstack_localrc:
         LIBVIRT_TYPE: kvm
diff --git a/zuul.d/master_jobs.yaml b/zuul.d/master_jobs.yaml
index 8825458..a8a838c 100644
--- a/zuul.d/master_jobs.yaml
+++ b/zuul.d/master_jobs.yaml
@@ -6,6 +6,7 @@
       Perform setup common to all Neutron tempest tests
     roles:
       - zuul: openstack/devstack
+      - zuul: openstack/neutron-tempest-plugin
     required-projects:
       - openstack/neutron
       - openstack/neutron-tempest-plugin
@@ -195,6 +196,22 @@
               image_is_advanced: true
               available_type_drivers: flat,geneve,vlan,gre,local,vxlan
               provider_net_base_segm_id: 1
+    group-vars:
+      subnode:
+        devstack_plugins:
+          neutron: https://opendev.org/openstack/neutron.git
+        devstack_services:
+          # Cinder services
+          c-api: false
+          c-bak: false
+          c-sch: false
+          c-vol: false
+          cinder: false
+          # Swift services
+          s-account: false
+          s-container: false
+          s-object: false
+          s-proxy: false
     irrelevant-files:
       - ^\.pylintrc$
       - ^(test-|)requirements.txt$
@@ -225,6 +242,8 @@
     name: whitebox-neutron-tempest-plugin-ovn
     parent: whitebox-neutron-tempest-plugin-base-nested-switch
     timeout: 10800
+    # TODO(mblue): Remove line when changing ovn job to be HA job as well.
+    nodeset: devstack-single-node-centos-9-stream
     vars:
       network_api_extensions_ovn:
         - vlan-transparent
@@ -298,6 +317,34 @@
         '/var/log/ovn': 'logs'
         '/var/log/openvswitch': 'logs'
         '/var/lib/ovn': 'logs'
+    group-vars:
+      subnode:
+        devstack_services:
+          br-ex-tcpdump: true
+          br-int-flows: true
+          ovn-controller: true
+          ovn-northd: false
+          ovs-vswitchd: true
+          ovsdb-server: true
+          q-fake: true
+          q-svc: false
+          q-agt: false
+          q-dhcp: false
+          q-l3: false
+          q-meta: false
+          q-metering: false
+          q-ovn-metadata-agent: true
+          tls-proxy: true
+          dstat: true
+        devstack_localrc:
+          Q_AGENT: ovn
+          Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn,logger
+          Q_ML2_TENANT_NETWORK_TYPE: geneve
+          Q_USE_PROVIDERNET_FOR_PUBLIC: true
+          PHYSICAL_NETWORK: public
+          ENABLE_CHASSIS_AS_GW: false
+          OVN_DBS_LOG_LEVEL: dbg
+          ENABLE_TLS: True
     irrelevant-files:
       - ^\.pylintrc$
       - ^(test-|)requirements.txt$
@@ -348,6 +395,7 @@
 - job:
     name: whitebox-neutron-tempest-plugin-openvswitch
     parent: whitebox-neutron-tempest-plugin-base-nested-switch
+    pre-run: playbooks/multinode-devstack-ovs-tempest.yaml
     timeout: 10000
     vars:
       configure_swap_size: 2048
@@ -367,6 +415,17 @@
         q-l3: true
         q-meta: true
         q-metering: true
+        # Cinder services
+        c-api: false
+        c-bak: false
+        c-sch: false
+        c-vol: false
+        cinder: false
+        # Swift services
+        s-account: false
+        s-container: false
+        s-object: false
+        s-proxy: false
       network_api_extensions_openvswitch:
         - dhcp_agent_scheduler
         - local_ip
@@ -398,6 +457,19 @@
             neutron_plugin_options:
               available_type_drivers: flat,vlan,local,vxlan
               firewall_driver: openvswitch
+    group-vars:
+      subnode:
+        devstack_localrc:
+          Q_ML2_TENANT_NETWORK_TYPE: vxlan
+          Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch,linuxbridge
+          Q_AGENT: openvswitch
+        devstack_services:
+          q-agt: true
+          # OVN services
+          ovn-controller: false
+          ovs-vswitchd: false
+          ovsdb-server: false
+          q-ovn-metadata-agent: false
     irrelevant-files:
       - ^\.pylintrc$
       - ^(test-|)requirements.txt$