SCTP Discussions

Text archives Help


Re: [SCTP-Discussion] Best SCTP implementation for Embedded Linux


Chronological Thread 
  • From: Michael Tüxen <Michael.Tuexen AT micmac.franken.de>
  • To: "Vinod C Joseph" <vinod AT Corecess.com>
  • Cc: <ajung AT exp-math.uni-essen.de>, <discussion AT sctp.de>
  • Subject: Re: [SCTP-Discussion] Best SCTP implementation for Embedded Linux
  • Date: Sat Jun 14 17:32:01 2003
  • List-id: SCTP Discussions <discussion.sctp.de>

Hi Joe,

sounds like you have written your software using the socket API.
Then you can proceed as follows:

Install the sctplib and the socketapilib. Both run under Linux.

Write your software that it uses the socketapilib, which means that
you use ext_socket instead of socket, ext_recvfrom instead of recvfrom
and so on. It is just replacing the names.

Now your program uses the userland sctplib via a socket interface. You can
see what protocol parameters you need to fulfill your performance
requirements and to test your software.

You can switch anytime you want to use a kernel implementation by recompiling
your programs and defining the constant HAVE_KERNEL_SCTP.

We try to make sure that this procedure works for the Linux kernel
implementation (lklinux) and the FreeBSD kernel implementation (via
the KAME stack). We have tested this with several programs at the
last SCTP bakeoff.

Best regards
Michael

On Saturday, Jun 14, 2003, at 06:42 Europe/Berlin, Vinod C Joseph wrote:

Dear Andreas
 
Thanks for your detailed and explanatory mail. Let me explain what i am doing first.
 
I am implementing signaling transport on IP for 3G Development. Our 3G Network Device( NodeB or RNC
) sends signaling messages on IP Transport.
 
Assume i have made an implementation choice. ( Chosen some sctp socket library . eg. from www.sctp.de)
 
I have written the client and server programs. The 3G Application just calls sendto() and recvfrom() calls to send data on SCTP.
 
Would this suffice to manage the real-timeness ( soft real time suffices ) of the needs of a wireless call setup. A NodeB handles, say 20 sectors.
 
If not, what do i have to do ?
 
Thanks in advance
 
Vinod Joseph ( Joe - short for Joseph )

-----Original Message-----
From: Andreas Jungmaier(ajung AT exp-math.uni-essen.de) [mailto:ajung AT exp-math.uni-essen.de]
Sent: Fri 6/13/2003 6:58 PM
To: Vinod C Joseph
Cc:
Subject: Re: [SCTP-Discussion] Best SCTP implementation for Embedded Linux

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello Vinod (Joe ?),

you need to decide first,  if you want a userland or kernel-implementation.
Naturally, kernel implementations are harder to debug, have some
potential for instabilities that may take your system down, and are generally
still considered to be for "developers".
Of these, you can choose mainly between linux (google for LKSCTP)
and BSD (see www.sctp.org or KAME). There may be more, but these are the
only free ones I know.

On the other hand, you can use a userland implementation, and I know of
two mainly:
- - sctplib implementation. You can find the latest snapshots listed and
  linked at
  http://tdrwww.exp-math.uni-essen.de/inhalt/forschung/sctp_fb/ sctp_links.html
  SCTPLIB is maintained by me (mostly), and problems can be discussed on this
  mailing list. With sctplib, you can use the fancy socketapi library, that
  allows for having applications have a socket-like API, as described in
  http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-sctpsocket-06.txt
  SCTPLIB has certain limitations, but is still quite actively maintained
  (see my last postings).
- - There was a "reference" implementation written by Randy Stewart, (co-)author
  of the RFC 2960 (==SCTP), which is a userland implementation.
  You may be able to get it from his book (it's on a CD there) but I think
  Randy is now working mainly (or only ?) on the FreeBSD kernel implementation.
  This version ran on BSD, Linux, VxWorks and maybe other's

Anyway, you may be pleased to know that I had my userland library (SCTPLIB)
running on a Sharp Zaurus, and it compiled out of the box, after I had
set up a cross-compiler correctly. Have a look at the attached picture,
which shows the output from a connection between my laptop and the
Zaurus.

As to the interface, you should use the socket api. That way, applications
should work unmodified (or slightly modified) on any SCTP implementation that
will support this API. We try to develop applications on the SCTPLIB/SOCKET-API
combination of libraries in userland, and later port these to native OSs (e.g.
FreeBSD, Linux with LKSCTP).

As to pros and cons:
- - bugs in kernel implementations may take your system down, so you have to
  reboot it. It may require frequent kernel updates to stay up-to-date.
- - bugs in userland-implementations require only update of the application.
  However, it may not be possible to have more than one SCTP application in
  userland on one machine, because of the (admittedly limited) way SCTPLIB
  currently works: it opens a raw socket for getting all SCTP packets. If there
  is more than one process (unaware of other processes on the same host), each one
  of these will always think that a received packet is targeted for itself.
  If it is targeted for the other process, the first one will do Out-of-the-Blue handling,
  and may, e.g., send an ABORT, and thus terminate the other connection.
  For opening raw sockets, you need to have proper privileges (i.e. be root)
 
  If I were to implement this again, I would choose a global (i.e. unique on a host)
  privileged process that would do:
  - the dispatching (i.e. receiving, sending) of SCTP packets
  - port (and maybe tag) management
  - Out-of-the-blue-handling
  - checksum insertion
  and a separate, non-privileged protocol library that would need to reliably communicate via
  unix domain sockets (or other reliable IPC) with the global process, and register/unregister
  with this process.

As to real-time performance, what do you have in mind ? The question is far
too general to reply to...

Best regards,
Andreas

On Monday 09 June 2003 06:09, Vinod C Joseph wrote:
> Hi All
>
> I am a newbie to SCTP.
>
> Which according to your humble opinion is the best SCTP implementation for
> embedded linux ?
>
> Also, what are the pros and cons of each implementation ?
>
> I am very confused on the best means to develop the interface between the
> SCTP user application and the SCTP Layer for Embedded Linux. What factors
> should i consider for Real-Time Performance ?
>
> Thanks a lot for your response in advance.
>
> Vinod ( Joe )

- --
Dipl.-Ing. Andreas Jungmaier             
Computer Networking Technology Group    
University of Duisburg-Essen                      
http://www.exp-math.uni-essen.de/~ajung  
My PGP Key-ID: D3824AC0            

My PGP Key-Fingerprint: 228C 7C2C 3381 2DD4  9998 2812 5C0B 0B04  D382 4AC0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+6aBIXAsLBNOCSsARAjuZAJ9/3ppiCf49hTKSmhElgZ+gn7sfTQCg7rKK
N+oUllZYVTF3tZVbaC5qwQg=
=w1wq
-----END PGP SIGNATURE-----

 





Archive powered by MHonArc 2.6.19+.

Top of page