diff --git a/scripts/runqemu b/scripts/runqemu
index 66e035c9af..ec6889e6e5 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -208,6 +208,7 @@ class BaseConfig(object):
         # slirp qemus are running.
         self.mac_tap = "52:54:00:12:34:"
         self.mac_slirp = "52:54:00:12:35:"
+        self.mac_bridge = "52:54:00:12:36:"
         # pid of the actual qemu process
         self.qemupid = None
         # avoid cleanup twice
@@ -1046,8 +1047,27 @@ class BaseConfig(object):
         self.nfs_running = True
 
     def setup_net_bridge(self):
-        self.set('NETWORK_CMD', '-netdev bridge,br=%s,id=net0,helper=%s -device virtio-net-pci,netdev=net0 ' % (
-            self.net_bridge, os.path.join(self.bindir_native, 'qemu-oe-bridge-helper')))
+        """Setup bridged tap networking"""
+
+        # In this case there is no good source for deterministic unique mac
+        # generation.  Allocation of the tap interface is delegated to qemu, so
+        # we cannot use the tap number as a hint as in setup_tap(), nor are
+        # there port forward options as in setup_slirp().  Instead, the user
+        # must provide a unique suffix to the "bridge=" option delimited with a
+        # colon to start multiple qemus, e.g.,
+        #     runqemu bridge=virbr0      # no suffix; default to mac+0
+        #     runqemu bridge=virbr0:1    # mac+1
+        #     runqemu bridge=virbr0:2    # mac+2
+        #     ... and so on ...
+        try:
+            net_bridge, mac = self.net_bridge.split(":")
+            mac = int(mac)
+        except ValueError:
+            net_bridge, mac = self.net_bridge, 0
+        mac = '%s%02x' % (self.mac_bridge, mac)
+        self.set('NETWORK_CMD', '%s -netdev bridge,br=%s,id=net0,helper=%s' % (
+            self.network_device.replace("@MAC@", mac), net_bridge,
+            os.path.join(self.bindir_native, 'qemu-oe-bridge-helper')))
 
     def setup_slirp(self):
         """Setup user networking"""
