Re: Adopting draft-tuexen-tsvwg-sctp-sack-immediately as WG item?

Michael Tüxen <Michael.Tuexen@lurchi.franken.de> Mon, 22 August 2011 17:28 UTC

Return-Path: <Michael.Tuexen@lurchi.franken.de>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6018921F8BA7 for <tsvwg@ietfa.amsl.com>; Mon, 22 Aug 2011 10:28:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.299
X-Spam-Level:
X-Spam-Status: No, score=-2.299 tagged_above=-999 required=5 tests=[AWL=-0.000, BAYES_00=-2.599, MIME_8BIT_HEADER=0.3]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4v3yaZYnshuq for <tsvwg@ietfa.amsl.com>; Mon, 22 Aug 2011 10:28:54 -0700 (PDT)
Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) by ietfa.amsl.com (Postfix) with ESMTP id 2DC3821F8BA6 for <tsvwg@ietf.org>; Mon, 22 Aug 2011 10:28:54 -0700 (PDT)
Received: from [192.168.1.103] (p5481B166.dip.t-dialin.net [84.129.177.102]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTP id 9802A1C0C0BD8; Mon, 22 Aug 2011 19:29:58 +0200 (CEST)
Subject: Re: Adopting draft-tuexen-tsvwg-sctp-sack-immediately as WG item?
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="iso-8859-1"
From: Michael Tüxen <Michael.Tuexen@lurchi.franken.de>
In-Reply-To: <4E528957.3040509@oracle.com>
Date: Mon, 22 Aug 2011 19:29:57 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <59C5CC47-9251-426A-A6F4-B02D227EE6A3@lurchi.franken.de>
References: <20110817120441.82D6747CA6B@lawyers.icir.org> <112A2FE7-D88A-41CB-A82E-7473A008A888@lurchi.franken.de> <4E528957.3040509@oracle.com>
To: Kacheong Poon <ka-cheong.poon@oracle.com>
X-Mailer: Apple Mail (2.1084)
Cc: tsvwg@ietf.org
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tsvwg>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 22 Aug 2011 17:28:55 -0000

On Aug 22, 2011, at 6:52 PM, Kacheong Poon wrote:

> On 08/18/11 03:29 AM, Michael Tüxen wrote:
> 
>> Well, it depends. One particular example which comes up to my mind is
>> a simple request/response protocol running on top of SCTP.
>> Without pipelining the request (which is a good thing) you would
>> expect a rate of 1 response per RTT. What people run into is the
>> following. They test with small request size (small means that
>> it fits into an MTU) and get the expected behavior. When the request
>> size is larger than an MTU but smaller than two MTUs they get
>> 5 responses per second. Why? Because the SCTP stack sends the first
>> fragment to the peer, but delays sending the second fragment since
>> there is outstanding data due to the Nagle algorithm. The peer
>> does delay the SACK for 200ms. After sending the SACK, the second
>> fragment of the request gets sent and the response comes back.
>> The use can avoid this by:
>> 1. Disabling Nagle at all.
>> 2. Pipelining multiple requests.
>> The first is doable in any case, the second depends on the application.
>> However, the problem shows up only if the number of packets for the
>> request is even. Based on questions I got in the past, it is not
>> clear for the app writer to deal with these problems. So letting the
>> stack doing it seems useful.
>> We could also disable Nagle by default, but this is a bad idea I think.
> 
> 
> The above scenario was discussed in the context of TCP
> many years ago.  And AFAIK, most current TCP stacks do
> not have this issue anymore because the aforementioned
> way to implement Nagle algorithm has been determined to
> be the wrong way.  There is now no delay in sending the
> second TCP segment in the above scenario.  There is no
> need to modify the TCP protocol.  It is just an
> implementation issue.  If there is no issue in TCP, I
> guess there should also be no issue in SCTP.
So you are arguing that you can change the implementation
of the Nagle algorithm. That is correct. However, that
does not help in the other scenarios:
1. You need to delay the sending of a SHUTDOWN chunk until
   you received a SACK, which might be delayed.
2. You need to wait for a possibly delayed SACK timer if
   you ware waiting for a SENDER_DRY event.
3. You have no chance to deal with misconfigured peers
   in case the RTO values have been lowered on your side,
   but the SACK delay on the peer not. Unfortunately,
   I have seen this multiple times in production networks.
> 
> In fact, it is much easier to fix the SCTP implementation
> than to deploy a protocol level change.  The former
As said above: This only helps if the Nagle algorithm is
involved.
BTW: Is there a description (ID/RFC) available on the
Nagle algorithm you describe? At least on FreeBSD we
don't use that, but the old one.
> only requires the sender SCTP stack to be fixed while the
> latter requires both sides to support it plus app level
> changes.
> 
> Is a protocol level change really needed?
"Needed" is the crucial point here.
Needed in the sense that the protocol is broken without
the change: No.
Needed in the sense the the protocol shows a good performance
in some situations: Yes.
In particular taking the complexity of the change involved:
1. For the receiver: trivial.
2. For the sender: very easy.

Best regards
Michael

> 
> 
> -- 
> 
> 					K. Poon.
> 					ka-cheong.poon@oracle.com
>