Re: [tcpm] TCP, multiple addresses and soft errors when connecting

Pekka Savola <pekkas@netcore.fi> Fri, 09 April 2004 01:16 UTC

Received: from optimus.ietf.org (optimus.ietf.org [132.151.1.19]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id VAA19606 for <tcpm-archive@odin.ietf.org>; Thu, 8 Apr 2004 21:16:05 -0400 (EDT)
Received: from localhost.localdomain ([127.0.0.1] helo=www1.ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 1BBkcL-0003F7-Gv for tcpm-archive@odin.ietf.org; Thu, 08 Apr 2004 21:15:37 -0400
Received: (from exim@localhost) by www1.ietf.org (8.12.8/8.12.8/Submit) id i391FbPR012460 for tcpm-archive@odin.ietf.org; Thu, 8 Apr 2004 21:15:37 -0400
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 1BBkcH-0003Et-Lw for tcpm-web-archive@optimus.ietf.org; Thu, 08 Apr 2004 21:15:37 -0400
Received: from ietf-mx (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id VAA19520 for <tcpm-web-archive@ietf.org>; Thu, 8 Apr 2004 21:15:31 -0400 (EDT)
Received: from ietf-mx ([132.151.6.1]) by ietf-mx with esmtp (Exim 4.12) id 1BBkcD-0000li-00 for tcpm-web-archive@ietf.org; Thu, 08 Apr 2004 21:15:29 -0400
Received: from exim by ietf-mx with spam-scanned (Exim 4.12) id 1BBkKO-0006pf-00 for tcpm-web-archive@ietf.org; Thu, 08 Apr 2004 20:57:08 -0400
Received: from [65.246.255.50] (helo=mx2.foretec.com) by ietf-mx with esmtp (Exim 4.12) id 1BBk74-0004JV-00 for tcpm-web-archive@ietf.org; Thu, 08 Apr 2004 20:43:18 -0400
Received: from optimus22.ietf.org ([132.151.6.22] helo=optimus.ietf.org) by mx2.foretec.com with esmtp (Exim 4.24) id 1BBjuD-0005KF-Bq for tcpm-web-archive@ietf.org; Thu, 08 Apr 2004 20:30:02 -0400
Received: from localhost.localdomain ([127.0.0.1] helo=www1.ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 1BBjtm-0005RY-N9; Thu, 08 Apr 2004 20:29:34 -0400
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 1BBjmY-0002Fu-Kx for tcpm@optimus.ietf.org; Thu, 08 Apr 2004 20:22:08 -0400
Received: from ietf-mx (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id UAA14683 for <tcpm@ietf.org>; Thu, 8 Apr 2004 20:22:04 -0400 (EDT)
Received: from ietf-mx ([132.151.6.1]) by ietf-mx with esmtp (Exim 4.12) id 1BBjmV-0002Kf-00 for tcpm@ietf.org; Thu, 08 Apr 2004 20:22:03 -0400
Received: from exim by ietf-mx with spam-scanned (Exim 4.12) id 1BBj4g-0005QC-00 for tcpm@ietf.org; Thu, 08 Apr 2004 19:36:47 -0400
Received: from netcore.fi ([193.94.160.1]) by ietf-mx with esmtp (Exim 4.12) id 1BBhxN-0005EN-00 for tcpm@ietf.org; Thu, 08 Apr 2004 18:25:09 -0400
Received: from localhost (pekkas@localhost) by netcore.fi (8.11.6/8.11.6) with ESMTP id i38MONN07411; Fri, 9 Apr 2004 01:24:24 +0300
Date: Fri, 09 Apr 2004 01:24:23 +0300
From: Pekka Savola <pekkas@netcore.fi>
To: Fernando Gont <fernando@gont.com.ar>
cc: tcpm@ietf.org, v6ops@ops.ietf.org, sebastien.roy@sun.com
Subject: Re: [tcpm] TCP, multiple addresses and soft errors when connecting
In-Reply-To: <4.3.2.7.2.20040405201058.02a45d80@mail.daleclick.com>
Message-ID: <Pine.LNX.4.44.0404090030400.6477-100000@netcore.fi>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"
Sender: tcpm-admin@ietf.org
Errors-To: tcpm-admin@ietf.org
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.0.12
Precedence: bulk
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-Spam-Checker-Version: SpamAssassin 2.60 (1.212-2003-09-23-exp) on ietf-mx.ietf.org
X-Spam-Status: No, hits=0.0 required=5.0 tests=AWL autolearn=no version=2.60

On Mon, 5 Apr 2004, Fernando Gont wrote:
> At 09:25 05/04/2004 +0300, Pekka Savola wrote:
> > > >  2) state the desire for getting a better higher-level API which would
> > > >handle all of this and much more (instead of/in addition to 1), but
> > > >mention why this is not an only practical solution.
> > > What do you mean "this is not an only practical solution"?
> >What I should have said if "but mention why this is would not be a
> >practical solution, if there were no other solutions".
> 
> Actually, I think it is the only real solution to the problem.
> Having the API report ICMP errors to the application is moving the problem 
> from the API to the application, but *not* solving it.
>
> If you leave connect() as is, then you may have the delay problem you 
> describe (i.e., you may suffer undesirable delays to use a service).
> If you make it report ICMP errors to the application, you still have a 
> problem I mentioned in the other e-mails. You might even say that you'll 
> have application programmers (probably *not* knowledgeable on TCP/IP 
> internals) handling issues of the underlying protocols.

I have to disagree here.  Writing getaddrinfo() loops which include
loops around socket() and even connect() are commonplace so this is
nothing new.  Actually this was discussed in
draft-ietf-v6ops-application-transition-02.txt which we just shipped
off to the IESG.  Section 6.3.2 gives a specific example and section
6.3 describes alternative means; the user does not -- necessarily --
need to know anything and the coder only needs to know to build the
right logic. (Which is required anyway for proper v6/v4 applications.)

Again, high-level API which makes it smoother to use either v4 or v6 
would not hurt either, and could be achieved in one shot.  But again, 
this is not here and now.

> So a real solution is to hide all this stuff from the application 
> programmer. Let him just concentrate on actually using a service, and 
> handle all the protocol-related issues inside the API.

For long-term, yes, that would be preferable (even though I think 
still there should be low-level equivalents, but not necessarily 
integrated with connect()).

But the problem is that the IETF has avoided specifying APIs whereever 
it has been able to, and even if we made these here (or elsewhere), 
there would have to be significant vendor buy-in (so that they could 
be used to create portable code), and implementation.  Even if there 
would be significant interest, this would take 3 years (minimum).

So, for all the good having such APIs would do, I fail to see how it 
could provide sufficiently short-term fix to this particular problem, 
and which is why we're documenting the connect() semantics change some 
have already done.

> >That is, new APIs would be great, but we cannot stop fixing problems
> >current APIs until we have something more concrete out there.
> >Otherwise we'd end up with no practically (in short term) deployable
> >solution.
> 
> If you consider it useful, I could try to continue thinking on the 
> "abstract" API. I'm just thinking about writting some stuff down, so that 
> there's a place from which which can move things forward. It may take me 
> some time (say, months), but...

I certainly think this is interesting work (actually, I've seen some
abstractization libraries for Unix already a couple of years ago,
doing something like you say -- but I can't find it now; maybe it was
something along the lines of http://thf.ath.cx/snl), but as I stated
above, there are significant barriers to be torn down first..

-- 
Pekka Savola                 "You each name yourselves king, yet the
Netcore Oy                    kingdom bleeds."
Systems. Networks. Security. -- George R.R. Martin: A Clash of Kings



_______________________________________________
tcpm mailing list
tcpm@ietf.org
https://www1.ietf.org/mailman/listinfo/tcpm