All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rick Jones <rick.jones2@hp.com>
To: Howard Chu <hyc@symas.com>
Cc: Eric Dumazet <dada1@cosmosbay.com>, netdev@vger.kernel.org
Subject: Re: TCP 2MSL on loopback
Date: Tue, 06 Mar 2007 12:41:00 -0800	[thread overview]
Message-ID: <45EDD1DC.2010200@hp.com> (raw)
In-Reply-To: <45EDC00E.8020805@symas.com>

>> With transparant bridging, nobody knows how long the datagram may be 
>> out there.  Admittedly, the chances of a datagram living for a full 
>> two minutes these days is probably nil, but just being in the same IP 
>> subnet doesn't really mean anything when it comes to physical locality.
> 
> 
> Bridging isn't necessarily a problem though. The 2MSL timeout is 
> designed to prevent problems from delayed packets that got sent through 
> multiple paths. In a bridging setup you don't allow multiple paths, 
> that's what STP is designed to prevent. If you want to configure a 
> network that allows multiple paths, you need to use a router, not a bridge.

Well, there is trunking at the data link layer, and in theory there 
could be an active-standby where the standby took a somewhat different path.

The timeout is also to cover datagrams which just got "stuck" somewhere 
too (IIRC) and may not necessarily require a multiple path situation.

> 
>> SPECweb benchmarking has had to deal with the issue of attempted 
>> TIME_WAIT reuse going back to 1997.  It deals with it by not relying 
>> on the client's configured local/anonymous/ephemeral port number range 
>> and instead making explicit bind() calls in the (more or less) entire 
>> unpriv port range (actually it may just be from 5000 to 65535 but still)
> 
> 
> That still doesn't solve the problem, it only ~doubles the available 
> port range. That means it takes 0.6 seconds to trigger the problem 
> instead of only 0.3 seconds...

True.  Thankfully, the web learned to use persistent connections so 
later versions of SPECweb benchmarking make use of persistent connections.

> In an environment where connections are opened and closed very quickly 
> with only a small amount of data carried per connection, it might make 
> sense to remember the last sequence number used on a port and use that 
> as the floor of the next randomly generated ISN. Monotonically 
> increasing sequence numbers aren't a security risk if there's still a 
> randomly determined gap from one connection to the next. But I don't 
> think it's necessary to consider this at the moment.

I thought that all the "security types" started squawking if the ISN 
wasn't completely random?

I've not tried this, but if a client does want to cycle through 
thousands of connections per second, and if it is the one to initiate 
connection close, would it be sufficient to only use something like:

socket()
bind()
loop:
connect()
request()
response()
shudtown(SHUT_RDWR)
goto loop

ie not call close on the FD so there is still a direct link to the 
connection in TIME_WAIT so one could in theory initiate a new connection 
from TIME_WAIT?  Then in theory the randomness could be _almost_ the 
entire sequence space, less the previous connection's window (IIRC).

rick jones

rick jones

  reply	other threads:[~2007-03-06 20:41 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-05 11:20 TCP 2MSL on loopback Howard Chu
2007-03-05 14:28 ` Eric Dumazet
2007-03-05 15:09   ` [PATCH] twcal_jiffie should be unsigned long, not int Eric Dumazet
2007-03-05 21:33     ` David Miller
2007-03-06  9:22   ` TCP 2MSL on loopback Howard Chu
2007-03-06 10:42     ` Eric Dumazet
2007-03-06 18:39       ` Howard Chu
2007-03-06 20:07         ` Eric Dumazet
2007-03-06 20:28           ` Howard Chu
2007-03-06 20:39             ` Eric Dumazet
2007-03-06 21:05               ` Howard Chu
2007-03-06 21:25                 ` Rick Jones
2007-03-06 21:35                   ` David Miller
2007-03-06 22:07                     ` Howard Chu
2007-03-06 22:54                       ` Stephen Hemminger
2007-03-06 23:22                         ` Howard Chu
2007-03-06 18:04     ` David Miller
2007-03-06 18:46     ` Rick Jones
2007-03-06 19:25       ` Howard Chu
2007-03-06 20:41         ` Rick Jones [this message]
2007-03-07  3:36           ` Howard Chu
2007-03-05 20:59 ` David Miller

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=45EDD1DC.2010200@hp.com \
    --to=rick.jones2@hp.com \
    --cc=dada1@cosmosbay.com \
    --cc=hyc@symas.com \
    --cc=netdev@vger.kernel.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.