> > I actually think that all applications that expect to keep associations
> > around more than some well-known (and explicitly chosen) lifetime need
> > to have mechanisms for surviving renumbering.   And unless/until
> > we introduce renumbering support into TCP, UDP, and SCTP, this means
> > providing that support in layer 7.
> >
> 
> Isn't this really the End-to-End argument, which I think pretty much
> summarises to "if you want something done properly, you've got to do it
> yourself".

There is a similarity between my argument about association liftimes
and the end-to-end argument, but I think you're mis-characterizing
both of those arguments :)

I see the end-to-end argument as being about separation of function.
Let the network do what it can do best, but don't try to make it do things
(like provide reliable and in-order delivery of messages between hosts) 
that it can never do well.

A similar but less-often-stated argument can be applied to hosts: let hosts 
do what they can do well (like ordering messages and recovering from dropped 
messages), but don't try to make them do things (like routing) that they can 
never do well.  

It doesn't scale to expect the network to keep track of every connection
between hosts.  Neither does it scale to expect all hosts to maintain
enough information to let them do routing. 

My argument about association lifetimes is also a separation-of-function
argument.  The idea here is that it's perfectly reasonable to expect
the network to maintain addresses for some well-chosen period of time;
applications that don't need addresses to be stable for longer than
that shouldn't have to worry about renumbering.  On the other hand
it's clearly unreasonable to expect the network to make addresses
stable indefinitely - first because it's too much overhead and second
because there are too many other factors that would cause associations
to break anyway.   But by providing a certain level of address-to-host 
binding stability, most applications would be spared the complexity
and security risks (etc.) of recovering from renumberings.

> We are focusing on renumbering being an event that will disrupt TCP
> sessions, which obviously it will. But what about the interface failing
> that the operating system chose to use as the local end-point IP address
> for the TCP session ?

Well that gets back to the 'other factors' that I mentioned above.
one of the things that should inform the choice of that max reliable
lifetime constant is a survey of other sources of failure and an 
estimate of how likely they are to fail within that chosen lifetime.

However regardless of whether we pick a max reliable address lifetime 
constant or not OS designers and users clearly want to their systems 
to avoid picking an interface that is likely to fail.  For instance,
this argues for things like not having multiple interfaces configured
to talk to large networks.  (isn't it interesting how adding multiple
interfaces can degrade reliability?)  

(there are other ways to solve that problem also.  if interface A
goes down, have B register A's address with A's home agent via 
mobile IP)

> Are we trying to solve a problem at the network layer, which impacts the
> transport layer, which really is best and most appropriately solved at
> the application layer ?

The overhead of recovering from renumbering is close to requiring each
application to implement TCP at layer 7.   (for instance, if a connection
fails due to an address change, and you don't get a clean close, the app
has no idea whether the data it has sent to its peer really got there.
So the app needs explicit acks and to explicitly buffer all un-ack'd
data in case it needs to retransmit).

Do you really think that it is is optimal to burden all apps with this?

> In the context of the End-to-End argument, could TCP/SCTP be seen to be
> a performance enhancement for the application, rather than trying to
> provide "perfect" reliability ?
> 
> Should it really be "dumb network, smart hosts, wise applications" ?

Why not have each layer doing its job without trying to outsmart the others?

Keith

p.s. another option would be to create extensions to TCP and UDP and
SCTP to securely handle renumbering.   I don't claim that this isn't
doable, and it might even be the best solution overall.  But offhand
it looks like a fair amount of hair, and IMHO it would be an even 
more drastic departure from the current architecture than trying to get 
the network to provide some assurance of address stability.
(the latter requires few protocol changes and mostly affects operations)
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to