Re: [tcpm] Congestion control in face of ICMP unreachable messages

Joe Touch <touch@ISI.EDU> Thu, 13 September 2007 03:15 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 1IVfBL-0005Cd-VU; Wed, 12 Sep 2007 23:15:55 -0400
Received: from [10.90.34.44] (helo=chiedprmail1.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1IVfBL-00057o-Af for tcpm@ietf.org; Wed, 12 Sep 2007 23:15:55 -0400
Received: from vapor.isi.edu ([128.9.64.64]) by chiedprmail1.ietf.org with esmtp (Exim 4.43) id 1IVfBK-0006rf-LG for tcpm@ietf.org; Wed, 12 Sep 2007 23:15:55 -0400
Received: from [127.0.0.1] (pool-71-106-89-188.lsanca.dsl-w.verizon.net [71.106.89.188]) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id l8D3FnWC024191; Wed, 12 Sep 2007 20:15:49 -0700 (PDT)
Message-ID: <46E8AB52.9060506@isi.edu>
Date: Wed, 12 Sep 2007 20:15:30 -0700
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird 2.0.0.6 (Windows/20070728)
MIME-Version: 1.0
To: Daniel Schaffrath <daniel.schaffrath@mac.com>
Subject: Re: [tcpm] Congestion control in face of ICMP unreachable messages
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>
In-Reply-To: <F0EB06F1-58B9-49B1-8CC0-AFEF49ABC276@mac.com>
X-Enigmail-Version: 0.95.3
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 6640e3bbe8a4d70c4469bcdcbbf0921d
Cc: tcpm@ietf.org, Ted Faber <faber@ISI.EDU>
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="===============1203409623=="
Errors-To: tcpm-bounces@ietf.org


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.

Ted is chair of the working group; he's taking that hat off in this
reply ;-)

...
>> Assuming you believe these are valid messages, those codes indicate that
>> the entity you want to talk to is not there or has gone away and isn't
>> coming back.  The sender is required to terminate the connection because
>> the network has told it that the receiver cannot be reached and that
>> further packets will not be delivered.  Sending any packets under those
>> conditions will just take up space until they're dropped.
>
> I was actually joking about the term "congestion control". To me
> _congestion_ control is about how much to send and not whether to send
> at all. Of course, I understand that the latter is included in the
> former... in some way :)

Congestion is "packets that slows down or drops other packets".

Packets sent to unavailable ports may have nothing to do with congestion
- they don't have to compete for resources. It's not about relieving the
network from congestion - congestion control handles that.

A good example: UDP has no congestion control, but can generate ICMP
responses.

...
>> 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.

The ICMP travels on the reverse path; there could be congestion in the
forward path.

...
>> 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.

Host/net unreachable means that you sent some packets along a path that
couldn't reach that host/net. That's not to say that other packets
wouldn't be delivered properly.

It's like hitting a roadblock on the way across town. It doesn't say the
endpoint is dead; that's why you don't give up, and also why you need
not change your congestion parameters. Finding a bad path could happen
by a routing transient - if you get these replies over a RTT, then maybe
you give up. Or two RTTs. That's why 1122 doesn't say to ignore these -
it says to use them as a hint. They're a hint that something can't be
reached - not that there's congestion.

...
> 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. 

Correct.

> 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.

It's consistent within 1122. The message doesn't say there's congestion;
it says routing doesn't work for the packet you sent. It may be a waste
of bandwidth, but that's not the same as congestion - if you're actually
competing for resources others need, your data packet would have been
dropped and you wouldn't get an ICMP at all. Getting the ICMP
effectively says you are NOT experiencing congestion.

Joe

-- 
----------------------------------------------------------------------
Joe Touch                Sr. Network Engineer, USAF TSAT Space Segment
               Postel Center Director & Research Assoc. Prof., USC/ISI

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