Re: [PATCH/RFC 7/9] Virtual network guest device driver

Avi Kivity
2007-05-14T12:32:07Z

Christian Bornträger wrote:
> On Monday 14 May 2007 14:05, Avi Kivity wrote:
>
>> But I agree that the growing code base is a problem. With the block
>> driver we can probably keep the host side in userspace, but to do the
>> same for networking is much more work. I do think (now) that it is doable.
>>
>
> Interesting. What kind of userspace networking do you have in mind?
>
> One of the first trys from Carsten was to use tun/tap, which proved to be slow
> performance-wise.
>

tun/tap, but extended with:

- true aio
- aio with scatter/gather (IO_CMD_PWRITEV/IO_CMD_PREADV)
- qemu support for native Linux aio (not the glibc hackaround currently
in place), so we get event coalescing and cheap multi request submission
- tap support for tso

With these, we could conceivably reach speeds close to an in-kernel
driver. Unfortunately we'd only know after all the hard work was done.

> What I had in mind was some kind of switch in userspace. That would allow
> non-root guests to define there own private networks. We could use Linux fast
> pipe implementation for guest-to-guest communication.
>
> The questions is how to connect user space networks to the host ones?
> - tun/tap is quite slow
> - last time we checked, netfiler offered only IP hooks (if you dont use the
> bridging code)
> - raw sockets get tricky if you do in/out at the same time because you have to
> manually deal with loops
>

qemu has some support for this, see the '-net socket' option.

--
error compiling committee.c: too many arguments to function