On Tue, Jun 26, 2012 at 5:48 PM, Mike Lovell <m...@dev-zero.net> wrote: > On 06/26/2012 02:29 AM, Stefan Hajnoczi wrote: >> >> On Mon, Jun 25, 2012 at 5:32 PM, Mike Lovell <m...@dev-zero.net> wrote: >>> >>> >>> Oh. I forgot another reason why I decided to do this over using VDE. I'll >>> do >>> this one with an example. Say you have 3 virtual machines on 3 different >>> hosts. Each host has a vde_switch process running, Switch A, B, and C. >>> Each >>> vde_switch has connections to the other 2 through some vde_plug's and >>> netcat. In this case, VDE will disable one of the links between switches >>> to >>> prevent loops, say the link between Switch A and C. Traffic from the VM >>> connected to Switch C that is destined for the VM on Switch A will have >>> to >>> traverse through Switch B. This is a suboptimal traffic flow. Especially >>> when you consider that the traffic has to flow through 3 to 4 additional >>> processes on each host for each direction. >> >> I haven't tried VDE myself but this sounds odd. Why can't you run a >> single vde_switch instance and connect multiple guests to it (with >> netcat)? > > > you can connect multiple guests to a single vde_switch. as i understand it, > the communication happens over a local unix domain socket. this would limit > the guests on the same switch to the same host. so if you want guests on > multiple hosts to talk using vde, i think you need a vde_switch on each host > and then connect the vde_switch processes.
It can be done with socat or netcat (unix_domain_socket_a <-> TCP <-> unix_domain_socket_b): http://www.dest-unreach.org/socat/doc/socat.html Another idea is to take the QDES code and turn it into a freestanding program that speaks the net/socket.c protocol. That way it works with existing QEMUs: launch the qdes daemon, then launch qemu -netdev socket,connect=qdes-host:qdes-port. Stefan