Re: [rtcweb] SCTP user-land stack available

Harald Alvestrand <harald@alvestrand.no> Tue, 31 January 2012 05:59 UTC

Return-Path: <harald@alvestrand.no>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6230521F8795 for <rtcweb@ietfa.amsl.com>; Mon, 30 Jan 2012 21:59:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -109.53
X-Spam-Level:
X-Spam-Status: No, score=-109.53 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, DATE_IN_PAST_06_12=1.069, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
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 FKJXn1TC558Q for <rtcweb@ietfa.amsl.com>; Mon, 30 Jan 2012 21:59:02 -0800 (PST)
Received: from eikenes.alvestrand.no (eikenes.alvestrand.no [158.38.152.233]) by ietfa.amsl.com (Postfix) with ESMTP id 13DCC21F8799 for <rtcweb@ietf.org>; Mon, 30 Jan 2012 21:59:01 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by eikenes.alvestrand.no (Postfix) with ESMTP id C123639E0F5; Tue, 31 Jan 2012 06:58:59 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at eikenes.alvestrand.no
Received: from eikenes.alvestrand.no ([127.0.0.1]) by localhost (eikenes.alvestrand.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vnQ8U8S3ku-K; Tue, 31 Jan 2012 06:58:58 +0100 (CET)
Received: from [192.168.128.222] (173-164-173-13-SFBA.hfc.comcastbusiness.net [173.164.173.13]) by eikenes.alvestrand.no (Postfix) with ESMTPS id 724D539E0E7; Tue, 31 Jan 2012 06:58:57 +0100 (CET)
Message-ID: <4F26E84B.7010301@alvestrand.no>
Date: Mon, 30 Jan 2012 19:58:19 +0100
From: Harald Alvestrand <harald@alvestrand.no>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111108 Thunderbird/3.1.16
MIME-Version: 1.0
To: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
References: <C2C6C5AB-7AFB-4830-84B7-A704C278CF3A@lurchi.franken.de> <4F15A1A3.6000304@alvestrand.no> <C8ADA24C-CE20-47DD-91C0-428A6EF11CE3@lurchi.franken.de>
In-Reply-To: <C8ADA24C-CE20-47DD-91C0-428A6EF11CE3@lurchi.franken.de>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 8bit
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] SCTP user-land stack available
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 31 Jan 2012 05:59:04 -0000

Thanks again!

I've now spent a little time playing with it - it's been long since I've 
worked with C at this level!

One question I have is the handling of port numbers ... the way it 
currently seems to be structured, the SCTP layer is initialized with a 
listening UDP port number as a parameter to the sctp_init function, and 
the remote port is set as a socket option, SCTP_REMOTE_UDP_ENCAPS_PORT, 
on the listening socket (from discard_server.c) and the active socket 
(from client.c). So both when listening and when calling out, the remote 
UDP port is a necessary property of the socket.

This would mean that the mode of operation in an SCTP implementation 
embedded in a browser would be:

For each browser:
- Initialize SCTP to a single random local UDP port
For each PeerConnection desiring to use data:
- Perform ICE candidate finding to get candidates for this UDP port (or 
reuse)
- Perform ICE negotiation to associate the single UDP port to a remote 
UDP port
- Open an userspace SCTP socket and bind this to the remote UDP port 
(and address) of the best candidate
- (Use some DTLS mechanism to initialize DTLS as an encrypting sublayer 
for SCTP)
- One of the ends takes the initiative to set up the SCTP connection 
between the two
- Channels are then opened at will

Does that seem approximately right to you?

                            Harald

On 01/20/2012 01:02 PM, Michael Tuexen wrote:
> On Jan 17, 2012, at 5:28 PM, Harald Alvestrand wrote:
>
>> (after a long delay)
>> thank you very much for the input!
>>
>> I've downloaded and compiled the code, but haven't yet found out how to do the typical "hello world" call with the binaries provided.
>>
>> Could you give us a note saying "do this and see the packets flow"?
> Hi Harald,
>
> an updated version of the user-land stack is available from
> http://sctp.fh-muenster.de/sctp-user-land-stack.html
>
> It now supports the platforms Windows in addition to FreeBSD, Linux and Mac OS X.
> It implemented SCTP/IPv4 and SCTP/IPv6 and the UDP encapsulation variants
> SCTP/UDP/IPv4 and SCTP/UDP/IPv6.
>
> In libusrsctp-0.9.0/programs you find examples programs.
>
> Please note that you need to run the programs with root privileges,
> if you want to use native SCTP/IPv4 or SCTP/IPv6.
>
> For example, you can run
> sudo ./discard_server
> in one shell and
> sudo ./client 127.0.0.1 9
> in another shell.
> Whatever you type on the console will be sent to the discard server.
> Wireshark will show the packets.
>
> If you want to use UDP encapsulation, you can run
> ./discard_server 9899 9999
> in one shell and
> ./client 127.0.0.1 9 9999 9899
> in another shell.
>
> Things are simpler, if you run the stack on two separate machines:
> ./discard_server
> on one machine.
> ./client a.b.c.d 9 9899 9899
> on the other.
>
> Please note that the demo programs disable the sending of ABORTs
> in response to out of the blue packets to allow running multiple
> stacks on the same host. This is done by the line
> 	SCTP_BASE_SYSCTL(sctp_blackhole) = 2;
> in the code. (On FreeBSD / Mac OS X kernel versions, you have such
> a sysctl).
>
> I hope this helps. If you have any further questions or issues,
> please let me know.
>
> Best regards
> Michael
>>            Harald, experimenter
>>
>> On 11/18/2011 02:17 PM, Michael Tüxen wrote:
>>> Dear all,
>>>
>>> I just wanted to let you know that the initial version of the
>>> SCTP user-land stack based on the FreeBSD kernel code for SCTP
>>> is available at
>>> http://sctp.fh-muenster.de/sctp-user-land-stack.html
>>>
>>> It currently support FreeBSD, Linux and Mac OS X. We are
>>> currently working on adding support for Windows, adding
>>> more examples and improving the API.
>>>
>>> Best regards
>>> Michael
>>> _______________________________________________
>>> rtcweb mailing list
>>> rtcweb@ietf.org
>>> https://www.ietf.org/mailman/listinfo/rtcweb
>>>
>>
>