-
Notifications
You must be signed in to change notification settings - Fork 38
Home
Stream Control Transmission Protocol (SCTP) is a message oriented, reliable transport protocol with direct support for multihoming that runs on top of Internet Protocol (IPv4/IPv6).
Like TCP, SCTP provides reliable, connection-oriented data delivery with congestion control, path MTU discovery and message fragmentation. Unlike TCP, SCTP also provides:
- Message framing
- Multi-streaming (to eliminate the head-of-line blocking problem)
- Multi-homing (allows a single SCTP association to run across multiple links or paths)
- Security and authentication (security cookie mechanism to prevent the SYN-flood attacks)
- Ordered and unordered message delivery
The Internet Engineering Task Force (IETF) Signaling Transport (SIGTRAN) Working Group recognized that telephony signaling for commercial-grade systems had special transport requirements not met by the available transport protocols. SIGTRAN developed SCTP into an IETF Proposed Standard, RFC2960.
The IETF Transport Area Directors (TSV ADs) recognized SCTP as more than just a signaling transport and moved it from SIGTRAN to the Transport Area Working Group (TSVWG). TSVWG continues the standards process for SCTP, moving it toward full standard, and expanding the scope and application of SCTP.
If you are new to SCTP, the following documents are excellent references:
- An introduction to the SCTP (RFC 3286)
- Stream Control Transmission Protocol (RFC 2960)
- Sockets API Extensions for SCTP
The Linux kernel has built-in support for the SCTP protocol since the 2.6 kernel series.
The lksctp-tools project provides a Linux user space library for SCTP (libsctp
) including C language header files (netinet/sctp.h
) for accessing SCTP specific application programming interfaces not provided by the standard sockets, and also some helper utilities around SCTP.
Get it via Git: git clone git://github.com/sctp/lksctp-tools.git
It can be downloaded via Github here, or via Git:
git clone git://github.com/sctp/lksctp-tools.git [...]
git checkout lksctp-tools-1.0.17
Be check to check which one is the latest first!
Older releases can be found here. Linux kernel support for SCTP is distributed together with the Linux kernel source code.
lksctp-tools are open source and released under the dual license GPL version 2.0, and LGPL version 2.1.
The lksctp-tools project is always looking for community members interested in contributing. For versioning control, we use Git. The patch submission process is similar to the one of the Linux kernel. So please respect the kernel's coding guidelines and patch submission procedure.
Send your lksctp-tools patches to the linux-sctp@vger.kernel.org mailing list with ``[PATCH lksctp-tools]'' as a subject prefix for further review and inclusion.
git://
git://github.com/sctp/lksctp-tools.git
http://
https://github.com/sctp/lksctp-tools
- RFC 2960 - SCTP (obsoleted by RFC 4960)
- RFC 3309 - SCTP Checksum Change (obsoleted by RFC 4960)
- RFC 3758 - SCTP Partial Reliability Extension
- RFC 3873 - SCTP MIB
- RFC 4460 - SCTP Errata and Issues
- RFC 4895 - Authenticated Chunks for SCTP
- RFC 4960 - SCTP
- RFC 5061 - SCTP Dynamic Address Reconfiguration
- RFC 5062 - Security Atacks Against SCTP
It supports both one-to-one and one-to-many style SCTP socket APIs as defined in Sockets API Extensions for SCTP.
The two key architectural metaphors for lksctp are the state machine and the smart pipe. All contributions need to fit sensibly into one or the other metaphor. The core state machine is side-effect-free (pure functional) with a separate and explicit side-effect processing component. The smart pipes accept raw stuff in one end, and ``automagically'' emit cooked pieces out the other end. See the lksctp paper for more details.
Further documents about SCTP can be found in the mentioned RFCs, about lksctp i) within the Linux kernel documentation and ii) within the shipped lksctp-tools tarball.
For the Linux kernel implementation of SCTP and for lksctp-tools, please post technical questions, discussions, bugs or patches to the Linux SCTP mailing list linux-sctp@vger.kernel.org (subscribe, archive). For Linux kernel SCTP patches, also put netdev@vger.kernel.org (subscribe, archive) into CC.
Important: lksctp-developers mailing list is closed and only its archive is kept for historical reasons. Use linux-sctp@vger.kernel.org instead!
lksctp provides the SCTP socket-based API based on the IETF Internet-draft Sockets API Extensions for SCTP. The primary goal of this API design is to provide the consistencies and the flexibilities for developers to either port or develop sockets based applications to take advantage of the SCTP features. By using this API, applications can be written in two networking programming styles: either in the connection-oriented style (TCP-style) or in the connectionless style (UDP-style).
For more information on the features and functions currently supported by lksctp, please refer to the documentation in the Linux kernel resp. in the lksctp-tools package. The lksctp-tools source contains a set of test programs which would also serve as example applications.
Copyright 2002 La Monte H.P. Yarroll; Copyright 2002, 2004 IBM Corp.; Copyright 2010, 2013 Red Hat