[sctp-dev] SCTP Message fragmentation

Christopher Hegarty - Sun Microsystems Ireland Christopher.Hegarty at Sun.COM
Mon Feb 8 05:36:49 PST 2010


Danny,

comments inline...

On 06/02/2010 11:47, Danny wrote:
> Hi,
>
> I have implemented message fragmentation and needed to implement a
> work-around because the SCTP_EXPLICIT_COMPLETE did throw when set with
> the setOption().
> At first i thought that the lkscp lib didn't provide the feature and
> assumed that fitted within the SCTP API's documentation stating that the
> availability of the feature was provider specific.
>
> While fragmentation interleaved on different streams
> (SCTP_DISABLE_FRAGMENTS false and SCTP_FRAGMENT_INTERLEAVE 2) works fine

These two options are supported on lksctp since the lksctp stack 
supports there native equivalents.

> when used with a the work-around passing the isComplete as a robbed-bit
> from the payloadProtocolID, it is however only working between peers
> that have that same workaround implemented. Therefore a started looking

Both your client and server determine whether the message is complete, 
or not, by looking at the payloadProtocolID? Interesting... and a very 
ingenious workaround!

> at the lksctp stite.
>
> This site, in it's feature list, refers to the "Socket API Extensons for
> SCTP", draft-ietf-tsvwg-sctpsocket-15.txt for it's implementation support.
> This document contains the SCTP_EXPLICIT_EOR (End of record) support in
> section 7.1.30 which is the SCTP protocol equivalent of the SCTP API's
> SCTP_EXPLICIT_COMPLETE.

Here is a link to a thread where I asked about lksctp SCTP_EXPLICIT_EOR:
 
http://sourceforge.net/mailarchive/message.php?msg_name=48C1369B.7060800%40hp.com

 From my experience implementers of the socket API extensions are 
reluctant to do much more work without the API being finalized. For the 
past two years of so now, I've been hearing that this API is close to 
being finalized, but unfortunately it is still in draft form.

> Could someone confirm if :
> - the Feuture not Supported exception throw is not due to a mapping
> problem between SCTP_EXPLICIT_COMPLETE to SCTP_EXPLICIT_EOR in the API.

lksctp currently does not support SCTP_EXPLICIT_EOR. Yes, 
SCTP_EXPLICIT_COMPLETE maps directly on to SCTP_EXPLICIT_EOR.

> - in case the feature isn't supported yet, if and when it could be (i
> realise this is lksctp related but some of you may have contacts).

I don't know when SCTP_EXPLICIT_EOR will be supported by lksctp, but I 
bet it is dependent on the socket API extensions being finalized.

-Chris.

> A tried taking control back by clearing the isComplete flag in the
> MessageInfo structure before handing it over to the send() method, in
> this way simulating the explicit complete behavior myself by only
> leaving the falg set for the last fragment, but the send() (of the API
> or lksctp) turns it back on (set it to true), reason why it arrives at
> the remote peer as 'true' all the time and as a consequence i need to
> stick to the work-around which has it's back-draws.
>
> My code does automatically switch from the work-around to the usage of
> the standard MessageInfo.isComplete() when setting socket option
> SCTP_EXPLICIT_COMPLETE doesn't throw but as said the work-around depends
> on similar work-around support in the remote peer. Adding EXPLICIT
> COMPLETE/EOR support at first sight looks like a simple thing.
>
> Any information on this would help.
>
> Greetz,
> Danny
>


More information about the sctp-dev mailing list