Assume the following setup. Xen Hypervisor, Linux on dom0, 2+ domUs with potentially different operating systems (PVs or HVMs with PV drivers).
Is it possible to somehow directly connect vifs between the domUs, bypassing dom0, as if the domUs were directly connected with a cable?
Illustration:
+-----------------------------------------------------------+
| Xen Hypervisor |
| |
|+---------------+ +------------------------------+|
|| dom1 [eth0]+----------+[vif1.0]-+ dom0 ||
|| [eth1]+----+ | | ||
|| [eth2]+--+ | | | ||
|+---------------+ | | | | ||
| | | | | ||
|+---------------+ | | | +-[xenbr0] ||
|| dom2 [eth0]+--+ | | | ||
|+---------------+ | | | ||
| | | | ||
|+---------------+ | | | ||
|| dom3 [eth0]+----+ | +--------------[eth0]||
|+---------------+ +------------------------------+|
+-----------------------------------------------------------+
I know I can create bridges in dom0 and connect the domains there, but this seems to have some drawbacks:
+-----------------------------------------------------------+
| Xen Hypervisor |
| |
|+---------------+ +-----------------------------------+|
|| dom1 [eth0]+-----+[vif1.0]---------------+ dom0 ||
|| [eth1]+-----+[vif1.1]---+ | ||
|| [eth2]+-----+[vif1.2]-+ | | ||
|+---------------+ | | | | ||
| | |-)-[dom12br] | ||
|+---------------+ | | | +-[xenbr0] ||
|| dom2 [eth0]+-----+[vif2.0]-+ +-[dom13br] | ||
|+---------------+ | | | ||
| | | | ||
|+---------------+ | | | ||
|| dom3 [eth0]+-----+[vif3.0]---+ +-----[eth0]||
|+---------------+ +-----------------------------------+|
+-----------------------------------------------------------+
- The traffic between dom1 and dom2 needs to be explicitly routed at dom0, can’t be just “passed through”.
I believe this in turn requires explicit use of dom0 cores and interrupt time. - dom12br and dom13br are MAC addresable from dom2 and dom3; that’s not the case in my desired configuration.
Even without DHCP they would receive MAC broadcasts I believe. - Reduced throughput (?)
There must be a way to solve this “more intelligently” than by passing through physical ports (when NICs permit) and connecting them via a physical cable.
Even a dumb pipe in dom0 shoud be better (would it be?) than creating an unnecessary bridge.
I assume I’m just missing an important keyword here. For instance, the links between domU vifs and veths on dom0 look just like the thing I want to have between domUs, but without involving dom0 in the connection.
I can assume that domUs start in a predefined order, i.e. dom1 first, then dom2 and dom3 afterwards.
What I checked
- Xen Networking - Xen only considers networking where VMs are connected to external network; dom0 is always present either as a bridge, switch or router.
- Xen FAQ Networking - Xen mostly just redirects to XenNetworking on interesting issues
- Some serverfault.com Q&As but none of them offered remotely helpful solution
- Network Throughput and Performance Guide - Xen makes me sceptical if this can be done without major changes to Xen