Cloudstack seems to let you create guest traffic types on multiple physical networks. However, when I try this with KVM I end up always bridging to whatever device is used for guest.network.device.
It looks like the issue is in plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java, in the plug function. if (nic.getType() == Networks.TrafficType.Guest) { if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan && !vlanId.equalsIgnoreCase("untagged")) { String brName = createVlanBr(vlanId, _pifs.get("private")); that is, if nic is a guest traffic type, create its bridge on "private", which is found by searching for guest.network.device. We are passed the physicalnetwork bridge that we should be using (or at least the KVM traffic label that should be used for the nic, which is the same thing, no?) in StartCommand, so I'm not getting why it's hardcoded to use the guest.network.device. I'll look at fixing this, but as usual I'd like any background on this that I can get, so I don't break it for others. Also, should we not change the cloudVirBr prefix to include a physical network identifier? It sort of seems like there's support for adding vlans as well to each guest traffic on each physical network (e.g. vlan 100-200 on physical network 1, vlan 100-200 on physical network 2, etc), but with the existing naming convention the bridge names will collide. Perhaps there's more to it than that, but it seems like changing the naming would be a first step. Feedback?