lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 19 Jan 2012 14:31:05 -0500 (EST)
From:	David Miller <davem@...emloft.net>
To:	equinox@...c24.net
Cc:	hans.schillstrom@...csson.com, netdev@...r.kernel.org,
	ebiederm@...ssion.com
Subject: Re: RFC Hanging clean-up of a namespace

From: David Lamparter <equinox@...c24.net>
Date: Thu, 19 Jan 2012 20:25:41 +0100

> On Thu, Jan 19, 2012 at 02:06:21PM -0500, David Miller wrote:
>> From: David Lamparter <equinox@...c24.net>
>> > On Thu, Jan 19, 2012 at 12:40:02PM -0500, David Miller wrote:
>> >> From: Hans Schillstrom <hans.schillstrom@...csson.com>
>> >> > Closing of a namespace (container) can be delayed by ~ 2 minutes 
>> >> > due to tcp timers ex tcp time wait (and of cource other things too).
>> >> > 
>> >> > I think there should be some kind of "forced close" of the Network stack
>> >> > in ex free_nsproxy() 
>> >> 
>> >> I think this is unwise.
>> >> 
>> >> Keeping the timewait sockets around is necessary to absorb any lingering
>> >> packets in the network meant for those sockets.
>> >> 
>> >> If you truncate this activity, and then try to create another socket with
>> >> the same ID you'll run into the very problems time-wait is meant to
>> >> solve.
>> > 
>> > A network namespace is for practical matters a separate host on the
>> > network. Killing the namespace therefore is akin to shutting down that
>> > host, which on a real metal host doesn't wait for timewait sockets
>> > either.
>> > 
>> > Creating a socket with the same parameters would actually require
>> > installing a network environment similar to the closed namespace first;
>> > if an user really does that he can reasonably anticipate the same issues
>> > as arise from removing a host from the network and giving its address to
>> > another host.
>> 
>> The assumption is that the address is moving, which might not be true.
> 
> I don't understand what you mean, what address may not be moving?
> 
> We're talking about dropping a netns. All of its addresses disappear,
> all of its soft devices disappear. Its hard devices fall back into the
> init namespace, is that what you're referring to?

And then you immediately start up a new netns with the same address
and then resets go back to lingering TCP packets the time-waits would
have consumed.

The reason this is different from a host reboot is that a host reboot
takes some amount of time, which even if around 30 seconds is superior
in behavior to what can happen with netns which can be created almost
instantly.

I totally disagree with the idea to truncate time-wait under the
circumstances being suggested here in this thread.

Maybe what you want it to keep a small lingering mini-netns state
around so that the time-wait sockets can stay and do their job yet you
can still clear out the main netns object.

Then if a new netns is created that tries to reuse the address used by
the mini-netns which hasn't cleared yet, you give -EAGAIN until all
the timewaits expire.

That's much more acceptable to me than what it being proposed, which is
complete gatbage.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ