Subject: Re: Kicking TCP

From: Vernon Schryver <[email-masked]>
Date: Thu, 9 Mar 2000 16:29:03 -0700 (MST)

> From: Phil Karn <[email-masked]>

> >How does that differ from what a reasonable demand dialing PPP
> >implementation does the link goes down unexpected, whether because the
> >peer took it down or the modems (or ISDN line etc.) hiccuped?  A reasonable
> >PPP implementation queues the most recent N (for some reasonable N>0, but
> >N>typical window/negotiated MTU is good) ...

> My suggestion really doesn't differ, so perhaps all I need to do is
> to insert language into the LINK draft that says essentially this.

Regardless of whether there might be a new ICMP kick TCP type, I think
the LINK draft should say something like that.  PPP implementations that
don't queue traffic when they know the link is sick are even more common
than they are lame, and they're awfully lame.

Another way they're lame that I haven't mentioned lately is what happens
when you try to start a TCP connection that requires DNS answers.  The
initial UDP packet will wake up your demand dialed link, but if your PPP
code is stupid and discards instead of queuing it, you'll be sitting
waiting a long time after a PPP/ISDN link is up for your DNS resolver to
time out and retry.  Isn't the DNS timeout 30 seconds?  An ISDN link comes
up in 2-5 seconds and a slow v.32bis modem needs only ~28 seconds.

However, someone privately pointed out that there is a difference between
reasonable queuing and something like an ICMP kick TCP message when the
queuing drops the newest instead of oldest traffic and when the queue
is smaller than the traffic while the link is ill.  If the queue overflows
and new traffic is discarded, TCP will suffer a time out.  The old queued
traffic should kick TCP enough to shorten the timeout, but the result
won't be as quick the result of dropping the newest packets.  Worse, if
there are lots of streams and a tiny queue, some TCP connections might
not be kicked at all.

Still, I think reasonable queuing is close enough and needed regardless.
There is no need for a new ICMP kick TCP type, not to mention novel
interpretations of Redirects, new UDP messages, or other things.

Vernon Schryver    [email-masked]