Re: [tcpm] Congestion control in face of ICMP unreachable messages
Ted Faber <faber@ISI.EDU> Fri, 14 September 2007 00:54 UTC
Return-path: <tcpm-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1IVzRk-00025h-Rv; Thu, 13 Sep 2007 20:54:12 -0400
Received: from [10.90.34.44] (helo=chiedprmail1.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1IVzRj-00025U-JO for tcpm@ietf.org; Thu, 13 Sep 2007 20:54:11 -0400
Received: from boreas.isi.edu ([128.9.160.161]) by chiedprmail1.ietf.org with esmtp (Exim 4.43) id 1IVzRi-0001Hv-MY for tcpm@ietf.org; Thu, 13 Sep 2007 20:54:11 -0400
Received: from hut.isi.edu (hut.isi.edu [128.9.168.160]) by boreas.isi.edu (8.13.8/8.13.8) with ESMTP id l8E0rF4J015795 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 13 Sep 2007 17:53:15 -0700 (PDT)
Received: (from faber@localhost) by hut.isi.edu (8.14.1/8.14.1/Submit) id l8E0rFpL094767; Thu, 13 Sep 2007 17:53:15 -0700 (PDT) (envelope-from faber)
Date: Thu, 13 Sep 2007 17:53:15 -0700
From: Ted Faber <faber@ISI.EDU>
To: Daniel Schaffrath <daniel.schaffrath@mac.com>
Subject: Re: [tcpm] Congestion control in face of ICMP unreachable messages
Message-ID: <20070914005315.GL13168@hut.isi.edu>
References: <8B61F72F-2F75-4388-976F-9748F8784AB3@mac.com> <20070817162542.GA2511@hut.isi.edu> <4AD719E5-AF65-4D4C-8BE8-B070793F69C3@mac.com> <20070907004335.GB48227@hut.isi.edu> <F0EB06F1-58B9-49B1-8CC0-AFEF49ABC276@mac.com>
Mime-Version: 1.0
In-Reply-To: <F0EB06F1-58B9-49B1-8CC0-AFEF49ABC276@mac.com>
User-Agent: Mutt/1.4.2.3i
X-url: http://www.isi.edu/~faber
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: faber@hut.isi.edu
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 2e8fc473f5174be667965460bd5288ba
Cc: tcpm@ietf.org
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
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>
Content-Type: multipart/mixed; boundary="===============0919225112=="
Errors-To: tcpm-bounces@ietf.org
On Wed, Sep 12, 2007 at 08:23:32PM +0200, Daniel Schaffrath wrote: > > On 2007/09/07 , at 02:43, Ted Faber wrote: > > >Acting in no official capacity, I say: > Sorry, I don't get this. I'm one of the co-chairs of the TCPM working group. I'm just having a public conversation with you and neither you nor observers of this public conversation should take it as being an official position of this august WG. Because tempers fray and IETF participants are somewhat averse to people throwing their weight around, those of us who don't want to have those kinds of arguments try to be specific about when we're speaking ex cathedra. :-) > >If TCP has gotten to the point where a retransmission timer has > >gone off > >not only has the transmission of the packet to be retransmitted > >failed, > >but enough other packets have been lost that the fast retransmit > >algorithm (3 dupacks) has also not happened (yes, the window needs to > >have grown to 4...). In short, there's something very wrong with the > >communication between the endpoints, and drastic action is called for. > >Specifically, the sender acts as though the connection is almost new - > >window is as small as possible and the ssthresh is halved. > > > >Your text above sounds like you're saying that if a sender has > >heard the > >network say that there's a connectivity problem between the sender and > >receiver (ICMP destination unreachable) the sender is entitled to > >react > >less conservatively, even though all the evidence is that the link is > >congested. > From my understanding the evidence is that just some link is (was) > not working and that is not the same as a link is congested. Even, > there is some slight indication that there is no congestion in the > network (or at least the very part of it) as the ICMP message (as > well as the segment eliciting the ICMP message) was not dropped and > got to the TCP source. So, the TCP stack really just knows that packets are not being acknowledged, and the current design interprets that as congestion. That's a conservative approach, and one people can and do argue about. If you'd like to argue about that interpretation of loss, the end-to-end mailing list might be a better place to do so. I mean we'll talk about it, too, but I think of it as a bigger picture issue. Still and all, one could say that the ICMPs count as extra evidence that a connection isn't congested but confused and should be treated differently. I'd recommend against treating them this way because: * ICMP operates on a different timescale than TCP. It may take a router longer to decide that there's a host unreachable situation than the TCP stack would. It may also take a router longer to detect the opposite. * They're really easy to spoof. I don't think you gain very much, either. If your application believes that the connection has stuttered - a route flap or something - the easiest way to fix it may be to reconnect. I'll bet you do this a couple times a day with your browser. Hitting reload on a slow loading page does exactly this. Other applications may value continuity of connection more. I think that kind of semantics - whether it's better for my application to retry or to stick it out on a slow connection - is known by the app and shouldn't be encoded in the transport. I realize that not going into exponential backoff is a pretty small case of a change in semantics, but it complicates things and it's not intuitive to me that it's worth the cost. > >Explain to me why ICMP messages indicating that your packets are not > >being delivered indicate you should not slow down. > > I am not saying you shouldn't slow down. After RTO of course you > should reset cwnd and halve ssthresh. I was just thinking of skipping > (or delaying) doubling RTO if the retransmission after RTO does not > simply vanish in the network but is replied to with an ICMP (host/ > net) unreachable message. This seems reasonable to me if my above > finding is true. I think its extra complexity for minimal gain. But, I haven't done anything to validate that opinion. Do you have some evidence either way? > > >>Another thing is that RTO needs to expire to reach slow-start > >>recovery. If my understanding of RFC 1122 is correct, it's still > >>standard compliant to continue sending after having received the > >>first appropriate ICMP message. Maybe that's a bit too aggressive (as > >>opposed to slow-start recovery after an "ICMP induced" RTO). > > > >I believe your understanding of RFC 1122 is incorrect. I don't > >believe > >that receiving an ICMP message of any kind has any effect on the TCP > >congestion control algorithms whatsoever (other than aborting the > >connection in the case above). ICMP messages are not part of a TCP > >connection, and receiving one does not count as receiveing a TCP > >packet, much less an ACK. After all, an ICMP message may well be > >coming > >from an intermediate gateway. > Maybe my paragraph above was not clear. I am not saying that RFC 1122 > suggests ICMP messages to have effect on cwnd. I am saying that from > my understanding RFC 1122 allows a TCP to continue sending segments > after having received an ICMP host/net unreachable message. This > seems to me as a waste of bandwidth as the arrival of the ICMP > message just indicated that right now there is no route to the > destination. Doesn't that sound reasonable? But maybe continuing > sending makes sense together with some other RFC I am not aware of > but someone else on the list. I think I was unclear. There are several kinds of destination unreachable ICMP messages - subtypes of the message. RFCs 792 and 1122 list them. There are a set of them that indicate that any transport, including TCP, that get one have to shutdown the connection. If a host gets a destination unreachable message of the subtype "protocol unreachable" the host MUST abort the connection that caused it. That message indicates a long term error. If the destination unreachable message indicates an error that may not be so long term, the connection should continue to transmit, and if the transport decides to terminate the connection (e.g. a TCP timeout) it should report the ICMP error as well. That second choice is there because the subtypes in question could be caused by a single misrouted packet or something and are not strong evidence that the connection is impossible. Make sense? -- Ted Faber http://www.isi.edu/~faber PGP: http://www.isi.edu/~faber/pubkeys.asc Unexpected attachment on this mail? See http://www.isi.edu/~faber/FAQ.html#SIG
_______________________________________________ tcpm mailing list tcpm@ietf.org https://www1.ietf.org/mailman/listinfo/tcpm
- [tcpm] Congestion control in face of ICMP unreach… Daniel Schaffrath
- Re: [tcpm] Congestion control in face of ICMP unr… Ted Faber
- Re: [tcpm] Congestion control in face of ICMP unr… Joe Touch
- Re: [tcpm] Congestion control in face of ICMP unr… Daniel Schaffrath
- Re: [tcpm] Congestion control in face of ICMP unr… Daniel Schaffrath
- Re: [tcpm] Congestion control in face of ICMP unr… Ted Faber
- Re: [tcpm] Congestion control in face of ICMP unr… Joe Touch
- Re: [tcpm] Congestion control in face of ICMP unr… Daniel Schaffrath
- Re: [tcpm] Congestion control in face of ICMP unr… Daniel Schaffrath
- Re: [tcpm] Congestion control in face of ICMP unr… Joe Touch
- Re: [tcpm] Congestion control in face of ICMP unr… Joe Touch
- Re: [tcpm] Congestion control in face of ICMP unr… Daniel Schaffrath
- Re: [tcpm] Congestion control in face of ICMP unr… Daniel Schaffrath
- Re: [tcpm] Congestion control in face of ICMP unr… Ted Faber
- Re: [tcpm] Congestion control in face of ICMP unr… Joe Touch
- Re: [tcpm] Congestion control in face of ICMP unr… Joe Touch
- Re: [tcpm] Congestion control in face of ICMP unr… Daniel Schaffrath
- Re: [tcpm] Congestion control in face of ICMP unr… Joe Touch
- Re: [tcpm] Congestion control in face of ICMP unr… Ted Faber