Portable and Performant Userspace SCTP Stack

One of only two new transport protocols introduced in the last 30 years is the Stream Control Transmission Protocol (SCTP). SCTP enables capabilities like additional throughput and fault tolerance for multihomed hosts. An SCTP implementation is included with the Linux kernel and another implementation called sctplib functions successfully in userspace on several platforms but unfortunately neither of these implementations have all of the latest features nor do they perform as well as the FreeBSD kernel implementation of SCTP. We were motivated to produce a portable implementation of the FreeBSD kernel SCTP stack that operates in userspace of any system because of both our desires to obtain a higher performance SCTP stack for Linux as well as to exploit recent developments in hardware virtualization and transport protocol onloading. Unlike any other userspace transport implementation for TCP or SCTP, our userspace SCTP stack simultaneously achieves similar throughput and latency as the Linux kernel TCP stack, without compromising on any of the transport's features as well as maintaining true portability across multiple operating systems and devices. We create a callback API and implement a threshold to control its usage; our userspace SCTP stack with these optimizations obtains higher throughput than the Linux kernel implementation of SCTP. We describe our userspace SCTP stack's design and demonstrate how it gives similar throughput and latency on Linux as the kernel TCP implementation, with the benefits of the new features of SCTP.

[1]  Sherali Zeadally,et al.  Stream Control Transmission Protocol (SCTP) , 2008 .

[2]  Lyndon Ong,et al.  An Introduction to the Stream Control Transmission Protocol (SCTP) , 2002, RFC.

[3]  Dhabaleswar K. Panda,et al.  Bridging the Ethernet-Ethernot Performance Gap , 2006, IEEE Micro.

[4]  Thu D. Nguyen,et al.  Implementing Network Protocols at User Level , 1993, SIGCOMM.

[5]  Michael Tüxen,et al.  UDP Encapsulation of SCTP Packets , 2011 .

[6]  Stefan Savage,et al.  Alpine: A User-Level Infrastructure for Network Protocol Development , 2001, USITS.

[7]  Janardhan R. Iyengar,et al.  Concurrent Multipath Transfer Using SCTP Multihoming Over Independent End-to-End Paths , 2006, IEEE/ACM Transactions on Networking.

[8]  Bryan Ford,et al.  Structured streams: a new transport abstraction , 2007, SIGCOMM '07.

[9]  Dan L. Siemon,et al.  The IP Per Process Model: Bringing End-to-end Network Connectivity to Applications (Spine Title: The IP Per Process Model) (Thesis Format: Monograph) , 2007 .

[10]  Randall R. Stewart,et al.  Stream Control Transmission Protocol , 2000, RFC.

[11]  Douglas Otis,et al.  Stream Control Transmission Protocol (SCTP) Checksum Change , 2002, RFC.

[12]  Anees Shaikh,et al.  Daytona : A User-Level TCP Stack , 2002 .

[13]  Qiaobing Xie,et al.  Stream control transmission protocol (SCTP): a reference guide , 2001 .

[14]  Antti Kantee,et al.  Environmental Independence : BSD Kernel TCP / IP in Userspace Antti Kantee , 2009 .

[15]  Anumita Biswas Support for Stronger Error Detection Codes in TCP for Jumbo Frames , 2010 .

[16]  Guru M. Parulkar,et al.  Efficient user-space protocol implementations with QoS guarantees using real-time upcalls , 1998, TNET.

[17]  Craig Partridge,et al.  When the CRC and TCP checksum disagree , 2000, SIGCOMM.

[18]  Jeffrey S. Chase,et al.  End system optimizations for high-speed TCP , 2001, IEEE Commun. Mag..