diff --git a/tests/run.yml b/tests/run.yml
index 2cab332838..e9bdfece58 100644
--- a/tests/run.yml
+++ b/tests/run.yml
@@ -21,7 +21,7 @@
         need_build_image: false
         build_image_tag: "change_{{ zuul.change | default('none') }}"
         openstack_core_enabled: "{{ openstack_core_enabled }}"
-        openstack_core_tested: "{{ scenario in ['core', 'ceph-ansible', 'zun', 'cells', 'swift'] }}"
+        openstack_core_tested: "{{ scenario in ['core', 'ceph-ansible', 'zun', 'cells', 'swift', 'linuxbridge'] }}"
         dashboard_enabled: "{{ openstack_core_enabled }}"
         # TODO(mgoddard): Remove when previous_release is ussuri.
         playbook_python_version: "{{ '2' if is_upgrade and previous_release == 'train' else '3' }}"
@@ -102,6 +102,7 @@
       loop:
         - cinder
         - glance
+        - neutron
         - nova
         - bifrost
         - swift
@@ -124,6 +125,10 @@
         - src: "tests/templates/nova-compute-overrides.j2"
           dest: /etc/kolla/config/nova/nova-compute.conf
           when: "{{ openstack_core_enabled }}"
+        # neutron.conf
+        - src: "tests/templates/neutron-server-overrides.j2"
+          dest: /etc/kolla/config/neutron.conf
+          when: "{{ openstack_core_enabled }}"
         # bifrost/dib.yml
         - src: "tests/templates/bifrost-dib-overrides.j2"
           dest: /etc/kolla/config/bifrost/dib.yml
diff --git a/tests/templates/globals-default.j2 b/tests/templates/globals-default.j2
index 664be05b24..4d8639a972 100644
--- a/tests/templates/globals-default.j2
+++ b/tests/templates/globals-default.j2
@@ -120,3 +120,7 @@ openstack_cacert: "/usr/local/share/ca-certificates/kolla-customca-haproxy-inter
 openstack_cacert: "/etc/pki/ca-trust/source/anchors/kolla-customca-haproxy-internal.crt"
 {% endif %}
 {% endif %}
+
+{% if scenario == 'linuxbridge' %}
+neutron_plugin_agent: "linuxbridge"
+{% endif %}
diff --git a/tests/templates/neutron-server-overrides.j2 b/tests/templates/neutron-server-overrides.j2
new file mode 100644
index 0000000000..ca84372fda
--- /dev/null
+++ b/tests/templates/neutron-server-overrides.j2
@@ -0,0 +1,2 @@
+[DEFAULT]
+global_physnet_mtu={{ ansible_vxlan0.mtu }}
diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml
index 9f25b7c230..47310801d1 100644
--- a/zuul.d/base.yaml
+++ b/zuul.d/base.yaml
@@ -144,3 +144,13 @@
     voting: false
     vars:
       scenario: cells
+
+- job:
+    name: kolla-ansible-linuxbridge-base
+    parent: kolla-ansible-base
+    voting: false
+    files:
+      - ^ansible/roles/neutron/
+      - ^tests/test-core-openstack.sh
+    vars:
+      scenario: linuxbridge
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 429eec1d2d..cdf8361d84 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -336,3 +336,19 @@
     vars:
       base_distro: centos
       install_type: source
+
+- job:
+    name: kolla-ansible-centos-source-linuxbridge
+    parent: kolla-ansible-linuxbridge-base
+    nodeset: kolla-ansible-centos
+    vars:
+      base_distro: centos
+      install_type: source
+
+- job:
+    name: kolla-ansible-ubuntu-source-linuxbridge
+    parent: kolla-ansible-linuxbridge-base
+    nodeset: kolla-ansible-bionic
+    vars:
+      base_distro: ubuntu
+      install_type: source
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 6e84c31a75..7749d5e789 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -50,6 +50,8 @@
         - kolla-ansible-ubuntu-source-ceph-ansible
         - kolla-ansible-centos-source-upgrade-ceph-ansible
         - kolla-ansible-ubuntu-source-upgrade-ceph-ansible
+        - kolla-ansible-centos-source-linuxbridge
+        - kolla-ansible-ubuntu-source-linuxbridge
     check-arm64:
       jobs:
         - kolla-ansible-debian-source-aarch64