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

Anthony Liguori
2007-05-18T14:31:01Z

ron minnich wrote:
> Hi Anthony,
>
> I still feel that "how about a socket interface" is still focused on
> the "how to implement", and not "what the interface should be".

Right. I'm not trying to answer that question ATM. There are a number
of paravirt devices that would be useful in a virtual setting. For
instance, a PV device for providing the guest with entropy and a shared
PV clipboard. These devices should be simple but all current
communication mechanisms are far too complicated.

> I also
> am not sure the socket system call interface is quite what we want,
> although it's a neat idea. It's also not that portable outside the
> "everything is a Linux variant" world.

A filesystem interface certainly isn't very portable outside the POSIX
world :-)

> Once it is connected, we can move data.
>
> This is similar to your socket idea, but consider that:
> o to see active vmics, I use 'ls'
> o I don't have to create a new sockaddr address type
> o I can control access with chmod
> o I am seperating the interface from the implementation
> o This is, of course, not really 'files', but in-memory data
> structures; this can
> (and will) be fast
> o No binary data structures.
> For different domains, even on the same machine, alignment rules etc.
> are not
> always the same -- I hit this when I ported Plan 9 to Xen, esp. back
> when Xen
> relied so heavily on gcc tricks such as __align__ and packed. Using
> character strings
> eliminates that problem.

The interface you're proposing is almost functionally identical to a
socket. In fact, once you open /data you've got an fd that you interact
with in the same way as you would interact with a socket.

It's not that there's an unique value for this sort of interface in
virtualization; I don't think you're making that argument. Instead,
you're making a general argument as to why this way of doing things is
better than what Unix has been doing forever (with things like
sockets). That's fine, I think you have a valid point, but that's a
larger argument to have on LKML or at a conference. This isn't the
place to shoe-horn this sort of thing.

A socket interface would provide a simple, well-understood interface
that few people in the Linux community would disagree with (it's already
there for s390). It should also be easy enough to stream p9 over the
socket so you can build these interfaces easily and continue your
attempts to expose the world as a virtual filesystem :-)

Regards,

Anthony Liguori

> This is, I think, the kind of thing Eric would also like to see, but
> he can correct me.
> Thanks
>
> ron