Mostly historical interest; User Mode Linux (UML) was one of the first more performant options for virtualisation of Linux.
This let you play with a network lab based on UML or other technologies without needing to set up a physical network.
This was before hardware virtualisation that we now take for granted. UML was actually the first technology that Linode used for virtualisation, then Xen came along and was a far better option.
I wrote a docker network plugin once which interfaced with a VDE virtual switch. The benefit was that the switch was user space and pipes based, so technically you could wire more things into it (like packet droppers) without messing with your hosts networking stack.
The motivation was I wanted to use more easily customized dockerized services to test bare-metal system images boot process - which required a bunch of stuff (like DHCP, config management etc.) to be "available" on the network but more easily swapped out.
This actually worked great! You could use QEMU to spin up a machine, have a DHCP container assign it an ethernet address but then reserve an IP range on the docker network for docker to launch containers into.
It also meant you could bridge into the virtual network easily and without any host IP stack interactions - just launch an interactive container onto the network (or launch it with two interfaces, one on the "real" network so you could provide internet connectivity).
I wanted to get around to testing failure states, but it never ultimately came up.
Did you release that and does it still work? I would absolutely love a way to test DHCP and PXE virtually. Or if there's a better way I'm not picky about implementation details.
I use it all the time for my QEMU VMs. It’s less hassle than OVS and allows you to configure some complex networks with just a few socket files and tunnels.
I use one VDE switch per network with each network having a single tap interface to my OS bridges. It has been a feature of QEMU since 0.15 and the performance is just as good as taps or OVS.
> Not sure what one would prefer it for now though.
VDE can be used with wirefilter to introduce programmable, non-ideal characteristics (latency, packet loss, data corruption, etc) into a network link. Obviously you wouldn't want this in a production system, but it's useful for testing.
this one is old, but this is mostly used for rootless containers or well-thought VM setups where you need to properly route things. There are a dozen flavours of user mode virtual network devices and routers to use. All of varying combinations of maturity, features, performance.
All that was out of fashion during the brief period everyone fired sysadmins and all devs got a "devops" tshirt, and then everyone just run Docker as root with bridge mode network.