netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: David Miller <davem@davemloft.net>
Cc: kaber@trash.net, netdev@vger.kernel.org, hadi@cyberus.ca,
	shemminger@linux-foundation.org, greearb@candelatech.com,
	jeff@garzik.org, yoshfuji@linux-ipv6.org,
	containers@lists.osdl.org
Subject: Re: [RFD] L2 Network namespace infrastructure
Date: Sat, 23 Jun 2007 15:41:16 -0600	[thread overview]
Message-ID: <m1ir9e8i2r.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <20070623.135737.22037347.davem@davemloft.net> (David Miller's message of "Sat, 23 Jun 2007 13:57:37 -0700 (PDT)")

David Miller <davem@davemloft.net> writes:

> From: ebiederm@xmission.com (Eric W. Biederman)
> Date: Sat, 23 Jun 2007 11:19:34 -0600
>
>> Further and fundamentally all a global achieves is removing the need
>> for the noise patches where you pass the pointer into the various
>> functions.  For long term maintenance it doesn't help anything.
>
> I don't accept that we have to add another function argument
> to a bunch of core routines just to support this crap,
> especially since you give no way to turn it off and get
> that function argument slot back.
>
> To be honest I think this form of virtualization is a complete
> waste of time, even the openvz approach.
>
> We're protecting the kernel from itself, and that's an endless
> uphill battle that you will never win.  Let's do this kind of
> stuff properly with a real minimal hypervisor, hopefully with
> appropriate hardware level support and good virtualized device
> interfaces, instead of this namespace stuff.
>
> At least the hypervisor approach you have some chance to fully
> harden in some verifyable and truly protected way, with
> namespaces it's just a pipe dream and everyone who works on
> these namespace approaches knows that very well.
>
> The only positive thing that came out of this work is the
> great auditing that the openvz folks have done and the bugs
> they have found, but it basically ends right there.

Dave thank you for your candor, it looks like I have finally made
the pieces small enough that we can discuss them.

If you want the argument to compile out.  That is not a problem at all.
I dropped that part from my patch because it makes infrastructure more
complicated and there appeared to be no gain.  However having a type
that you can pass that the compiler can optimize away is not a
problem.  Basically you just make the argument:

typedef struct {} you_can_compile_me_out;  /* when you don't want it. */
typedef void * you_can_compile_me_out;     /* when you do want it. */

And gcc will generate no code to pass the argument when you compile
it out.


As far as the hardening goes.  There is definitely a point there,
short of a kernel proof subsystem that sounds correct to me.

There are some other factors that make a different tradeoff interesting.
First hypervisors do not allow global optimizations (because of the
better isolation) so have an inherent performance disadvantage.
Something like a 10x scaling penalty from the figures I have seen.

Even more interesting for me is the possibility of unmodified
application migration.  Where the limiting factor is that
you cannot reliably restore an application because the global
identifiers are not available.

So yes monolithic kernels may have grown so complex that they cannot
be verified and thus you cannot actually keep untrusted users from
doing bad things to each other with any degree of certainty.

However the interesting cases for me are cases where the users are not
aggressively hostile with each other but being stuck with one set of
global identifiers are a problem.

Eric

  parent reply	other threads:[~2007-06-23 21:42 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-22 19:39 [RFD] L2 Network namespace infrastructure Eric W. Biederman
2007-06-22 21:22 ` [PATCH] net: Basic network " Eric W. Biederman
2007-06-23 10:40 ` [RFD] L2 Network " Patrick McHardy
2007-06-23 15:20   ` Ben Greear
2007-06-23 17:26     ` Eric W. Biederman
2007-06-23 20:09       ` Ben Greear
2007-06-23 20:39         ` Eric W. Biederman
2007-06-23 20:44           ` Ben Greear
2007-06-23 17:26     ` Stephen Hemminger
2007-06-23 17:55       ` Eric W. Biederman
2007-06-23 20:03       ` Ben Greear
2007-06-27 14:41     ` [Devel] " Kirill Korotaev
2007-06-23 17:19   ` Eric W. Biederman
2007-06-23 18:00     ` Patrick McHardy
2007-06-23 19:08       ` Eric W. Biederman
2007-06-23 20:19     ` Carl-Daniel Hailfinger
2007-06-23 20:31       ` Eric W. Biederman
2007-06-23 20:57     ` David Miller
2007-06-23 21:22       ` Benny Amorsen
2007-06-24  5:39         ` David Miller
2007-06-23 21:41       ` Eric W. Biederman [this message]
2007-06-24  5:45         ` David Miller
2007-06-24 12:58           ` Eric W. Biederman
2007-06-25  2:39             ` David Miller
2007-06-26 15:32               ` Eric W. Biederman
2007-06-23 22:15       ` Jeff Garzik
2007-06-23 22:56         ` Eric W. Biederman
2007-06-24  1:28           ` Jeff Garzik
2007-06-25 15:23             ` Serge E. Hallyn
2007-06-27 15:38             ` [Devel] " Kirill Korotaev
2007-06-24  5:48           ` David Miller
2007-06-24 10:25             ` Benny Amorsen
2007-06-24 12:38             ` Eric W. Biederman
2007-06-25 15:11       ` Serge E. Hallyn
2007-06-28 14:53     ` Kirill Korotaev
2007-06-27 14:39   ` [Devel] " Kirill Korotaev
2007-06-27 14:45     ` Patrick McHardy
2007-06-27 14:56     ` Ben Greear
2007-06-28 13:12       ` Kirill Korotaev

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=m1ir9e8i2r.fsf@ebiederm.dsl.xmission.com \
    --to=ebiederm@xmission.com \
    --cc=containers@lists.osdl.org \
    --cc=davem@davemloft.net \
    --cc=greearb@candelatech.com \
    --cc=hadi@cyberus.ca \
    --cc=jeff@garzik.org \
    --cc=kaber@trash.net \
    --cc=netdev@vger.kernel.org \
    --cc=shemminger@linux-foundation.org \
    --cc=yoshfuji@linux-ipv6.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).