All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Lucina <martin@lucina.net>
To: Antti Kantee <pooka@iki.fi>
Cc: David Scott <Dave.Scott@citrix.com>,
	Wei Liu <wei.liu2@citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Anil Madhavapeddy <anil@recoil.org>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>,
	Richard Mortier <richard.mortier@cl.cam.ac.uk>,
	xen-devel@lists.xen.org, rumpkernel-users@freelists.org,
	Thomas Gazagnaire <thomas@gazagnaire.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: Re: Upstream QEMU based stubdom and rump kernel
Date: Thu, 19 Mar 2015 09:48:43 +0100	[thread overview]
Message-ID: <20150319084843.GC18697@nodbug.moloch.sk> (raw)
In-Reply-To: <5509F72B.8010304@iki.fi>

pooka@iki.fi said:
> Where do you propose to inject that faking out (and what does it
> even mean)?  Someone at Berkeley decided that socket drivers should
> be globally enumerated, and PF_UNIX leads to exactly one handler.
> Just hacking hooks as local patches into the PF_UNIX driver is
> against the whole point of having unmodified, tested drivers from
> upstream.

We do not want to "hack hooks as local patches into the PF_UNIX driver".
Rather, we'd like to develop an entirely new driver (nothing wrong with
that?), which would mimic PF_UNIX semantics but talk to hyperspace instead.

See below for the purpose we want to use it for.

> So, if you want your bus to appear as a socket to userspace, I don't
> see any shortcut to not going via NetBSD.  If you're happy with
> something else than a socket, that's another story.
> 
> Especially if the interface doesn't matter too much for whatever
> purpose you plan to use it for, it's silly to specify the interface
> so that the implementation process is as convoluted as possible ;)

By "faking out" Anil means a shim to get existing applications
which currently use PF_UNIX (and possibly PF_INET, though that will be
harder to fake) to use the hypervisor bus to talk to another colocated
unikernel instead.

The motivations for this are:

- Taking the TCP stack out of the picture entirely for intra-unikernel
  comms (eg. PHP unikernel <-> MySQL unikernel). Both of those could be
  thus be linked without the PF_INET component.
- This means that you do not need to set up and manage a TCP network in
  your infrastructure for intra-unikernel comms, which is a huge advantage
  from an operations point of view.
- It also means that unikernels which should not be talking TCP to
  anywhere, ever, can't do that.

Anil, have I missed anything?

So, the interface does matter in the sense that it should be as simple as
possible to take an existing application and get it to use the new bus.
This could be as simple as linking your unikernel against -lrumpnet_hyper
instead of -lrumpnet_local.

Taking a longer-term view, I do think that there is a wider case for
PF_HYPER and I will be happy to sell it to NetBSD (or whoever) once we are
ready to make that case.

In my mind the semantics of PF_HYPER from an application PoV are pretty
clear: exactly the same as PF_UNIX except that you substitute "filesystem
path" for "hyperspace path", with the exact semantics of "hyperspace path"
left up to your hypervisor. The application need not care, as long as you
can tell it to e.g. use "vchan/mysql" instead of "/tmp/mysql.sock" when
doing bind().

Martin

  reply	other threads:[~2015-03-19  8:48 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-17 14:29 Upstream QEMU based stubdom and rump kernel Wei Liu
2015-03-17 14:54 ` Ian Campbell
2015-03-17 14:57   ` Wei Liu
2015-03-17 15:07     ` Ian Campbell
2015-03-17 15:15 ` Anthony PERARD
2015-03-17 15:23   ` Stefano Stabellini
2015-03-17 15:27   ` Wei Liu
2015-03-17 15:38     ` Ian Campbell
2015-03-18 11:24       ` Martin Lucina
2015-03-18 11:30         ` Ian Campbell
2015-03-18 12:45           ` Stefano Stabellini
2015-03-18 16:46             ` Ian Campbell
2015-03-19 11:16   ` Ian Campbell
2015-03-17 16:06 ` Antti Kantee
2015-03-18 11:22   ` Martin Lucina
2015-03-18 13:22     ` Antti Kantee
2015-03-18 11:20 ` Martin Lucina
2015-03-18 19:05   ` Anil Madhavapeddy
2015-03-18 19:11     ` Martin Lucina
2015-03-18 20:23     ` Antti Kantee
2015-03-18 21:21       ` Anil Madhavapeddy
2015-03-18 22:07         ` Antti Kantee
2015-03-19  8:48           ` Martin Lucina [this message]
2015-03-19  9:35             ` Antti Kantee
2015-03-19 12:22               ` Anil Madhavapeddy
2015-03-19  0:19 ` Samuel Thibault

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150319084843.GC18697@nodbug.moloch.sk \
    --to=martin@lucina.net \
    --cc=Dave.Scott@citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=anil@recoil.org \
    --cc=anthony.perard@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=pooka@iki.fi \
    --cc=richard.mortier@cl.cam.ac.uk \
    --cc=rumpkernel-users@freelists.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=thomas@gazagnaire.org \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.