[Xen-devel] [RFC][Re: Xen Roadmap proposal] Grant table sockets
Here's another general comment for discussion...
The bottom of page 18 in the Xen Roadmap proposal recommends considering
how to "export byte stream
(TCP) data between domains in a high performance fashion." For
communications that occur between domains on a single physical machine,
it would seem logical to setup a new address and protocol family within
Linux that could be used to create and manipulate stream sockets via the
standard interfaces (I'm focusing on Linux at this point, although
similar adaptations could be made to other kernels). Then, behind the
scenes, the Xen grant tables could be used to efficiently transfer
socket buffers between the domains. This should involve much less
overhead than directly connecting two network frontends or performing
other optimizations at lower layers, since it would truncate the
protocol stack and avoid unnecessary TCP-style flow control protocols.
An enhancement such as this could help to eliminate the network
dependence of some Xen management applications, particularly those that
rely on XML-RPC to communicate. For example, xm currently uses a UNIX
domain socket to communicate with Xend, which introduces an artificial
requirement that xend and xm be running in the same domain. Once XenSE
gains traction and management utilities are scattered across multiple
domains, UNIX domain sockets will no longer be adequate. Under this
scheme, stream sockets to specific domains could easily be constructed,
without regard for the network configuration on the system.
One important detail that I haven't yet resolved is how to address
inter-domain sockets. Of course, the most important component in the
address for each socket would be the domain ID. However, some sort of
port specification or pathname would also be necessary. I'm not sure
which of those options would be appropriate in this case. Port numbers
would be consistent with TCP and would probably ease the task of porting
applications based on TCP, but pathnames are more consistent with the
UNIX domain sockets used by xm and xend. Perhaps we could provide both,
using two address families associated with the same protocol family?
What other ideas have been floating around on how to accomplish
byte-stream transport between domains? Are any concrete efforts to
provide this functionality currently underway? Thanks!
Xen-devel mailing list