Introduction to Linux interfaces for virtual networking (2018)
I think it's worth also mentioning SR-IOV.<p>Basically, a single hardware device like a network card pretends to be a whole bunch (say 16) virtual devices. Each device can be passed as a PCIe device to a guest VM, and will be handled inside as a hardware device. So your Windows VM will need the Broadcom driver or whatnot, rather than using the VirtIO one.<p>Why do this? Part because it turns out that putting your VM host's hardware interface into a Linux software bridge disables part of the hardware acceleration. This can actually make it so that you can't reach the full bandwidth of the device. On slower CPUs this may mean you can't get to 10 Gbps.<p>Part because there's overhead in the VM transition and this also greatly reduces this.<p>I also like that it doesn't need you to fiddle with the network configuration on the host.<p>It's well supported, including on some consumer motherboards but you have to do a bunch of fiddling in the BIOS config to enable it.