Re: [Tsvwg] Re: SCTP socket semantics (buffer size / send failures / MSG_TRUNC / PRSCTP control)

Mark Butler <butlerm@middle.net> Sat, 31 December 2005 00:10 UTC

Received: from localhost.cnri.reston.va.us ([127.0.0.1] helo=megatron.ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1EsUK5-00053k-Uy; Fri, 30 Dec 2005 19:10:13 -0500
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1EsUK5-00053f-8X for tsvwg@megatron.ietf.org; Fri, 30 Dec 2005 19:10:13 -0500
Received: from ietf-mx.ietf.org (ietf-mx [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id TAA02710 for <tsvwg@ietf.org>; Fri, 30 Dec 2005 19:09:01 -0500 (EST)
Received: from webmail.readytek.net ([65.73.233.22]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1EsUOd-0008LF-Aa for tsvwg@ietf.org; Fri, 30 Dec 2005 19:14:55 -0500
Received: from [192.168.0.2] ([67.137.150.193]) by webmail.readytek.net (Readytek Broadband Web Mail) with ESMTP id IMP96804; Fri, 30 Dec 2005 17:10:04 -0700
Message-ID: <43B5CC7A.400@middle.net>
Date: Fri, 30 Dec 2005 17:10:34 -0700
From: Mark Butler <butlerm@middle.net>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Randall Stewart <randall@stewart.chicago.il.us>
Subject: Re: [Tsvwg] Re: SCTP socket semantics (buffer size / send failures / MSG_TRUNC / PRSCTP control)
References: <43AA9BE2.7070901@stewart.chicago.il.us> <1135727735.6321.32.camel@w-sridhar2.beaverton.ibm.com> <559909A9-DBF0-48ED-92F0-093A49E63D41@fh-muenster.de> <43B3186D.7020106@us.ibm.com> <43B40DA2.4030605@stewart.chicago.il.us> <43B4BB92.60905@middle.net> <43B5320D.8080105@stewart.chicago.il.us>
In-Reply-To: <43B5320D.8080105@stewart.chicago.il.us>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 9ed51c9d1356100bce94f1ae4ec616a9
Content-Transfer-Encoding: 7bit
Cc: tsvwg@ietf.org
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
Sender: tsvwg-bounces@ietf.org
Errors-To: tsvwg-bounces@ietf.org

Randall Stewart wrote:

>
> I would think a minimum of 64k.. but really its a Implementation choice
> IMO.. having a guideline is ok.. but it really is up to an
>  implementation.

The problem is one-to-many sockets with small default shared buffers.  
Whatever the default is, SOCK_DGRAM socket creation should fail if  
messages of the default maximum size cannot be received atomically.  
Otherwise the stack either deadlocks or aborts when a sufficiently large 
message arrives.  That is why the default size should be constrained by 
the default maximum buffer size.

Send failure notifications:

Having SEND_FAILED notifications return the original message is a 
serious constraint on buffer size.  There should be a socket option that 
says how much data from the head of the message is saved for a send 
failure notification.  Zero should mean none.  ENOMEM should be returned 
if the size isn't practical.  

When a send failure occurs, such data should be "moved" from the send 
buffer to the receive buffer to prevent deadlock. IF there is not enough 
room in the receive buffer, the data should be truncated, and both 
MSG_EOR and MSG_TRUNC set on the final read of the notification.

MSG_EOR / MSG_TRUNC policy:

I suggest that whenever a partial delivery is aborted, the next read 
returns zero bytes, with both MSG_EOR and MSG_TRUNC set.  It is a very 
good way to keep readers from running messages together.  Notable case 
is when a PR-SCTP receiver receives a FORWARD TSN that causes it to have 
to abort a partial delivery.  So MSG_TRUNC is a practical necessity even 
on sockets with atomic delivery turned off.

Because of this problem, PR-SCTP capability should have to be enabled 
with an option at the socket level.  By default, messages would still 
expire before transmission started, but not after (as specified by the 
current draft).  I suggest SCTP_PRSCTP_ENABLED for the option name.

 - Mark


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