SCTP_README - SCTP Readme for httpd-2.0.55 ~~~~~~~~~~~~ Please submit bug reports to pel at cis dot udel dot edu ~~~~~~~~~~~~ Installation ~~~~~~~~~~~~ 1. Download and untar original httpd-2.0.55 sources from http://apache.org or http://pel.cis.udel.edu 2. Download SCTP patch for httpd-2.0.55 from http://pel.cis.udel.edu 3. At the parent directory of the untar'd httpd-2.0.55 sources, do: %> patch < SCTP_httpd-2.0.55.patch 4. Configure and Install the patched httpd-2.0.55 as per the INSTALL file in httpd-2.0.55 sources directory. ~~~~~~~~~~~~ Introduction to SCTP ~~~~~~~~~~~~ Stream Control Transmission Protocol (SCTP) is a transport layer protocol capable of providing reliable (in-order, no loss, no duplicates, no error) message oriented service to application. Other interesting features of SCTP include multistreaming (many logical pipes in 1 SCTP association to transfer independent data without head of line blocking problem) and multihoming (ability to support more than 1 interface/ IP address at a SCTP endpoint). ~~~~~~~~~~~~ Further details on SCTP ~~~~~~~~~~~~ * Stream Control Transmission Protocol, RFC 2960. * www.sctp.org * www.eecis.udel.edu/~amer/PEL/poc/index.html ~~~~~~~~~~~~ Apache over SCTP ~~~~~~~~~~~~ Changes have been made to apache to make it run on SCTP if admin wishes. * Listen directive in the httpd config file can take the transport layer protocol as an extra argument along with IP address and port number. This can be either 'sctp' or 'tcp'. If none specified, default protocol will be TCP. Refer to httpd.conf for further details. * If the httpd configure process identifies support for use of SCTP streams by system, SCTP streams can be used to send/receive HTTP responses/requests. Refer to apr/configure.in for further details. If no such support is identified, SCTP without streams can still be used by the user. * With SCTP streams, every HTTP request can be read on a separate SCTP stream and its response is sent on the same stream. ~~~~~~~~~~~~ Known Issues ~~~~~~~~~~~~ This patch has been developed/built/tested on FreeBSD 5.4 with KAME-SCTP. The following issues are still open on this environment. * When apache sends a file using sendfile C library function on a SCTP socket, the system crashes. To avoid this, do EnableSendFile Off in httpd.conf * When a peer closes a SCTP association, read returns -1 with error set to EAGAIN/EWOULDBLOCK as opposed to returning 0 (and no error). Refer to apr/network_io/unix/sendrecv.c for further details and workaround. ~~~~~~~~~~~~ To Do ~~~~~~~~~~~~ * The number of SCTP streams to be negotiated during association setup is hardcoded. Can be made user configurable through a directive. * The number of association initiation attempts is hardcoded to 3. Can be made user configurable through a directive. * Use of sendmsg/recvmsg functions to send/recv data on a SCTP stream. Can be changed to sctp_sendmsg/sctp_recvmsg. ~~~~~~~~~~~~ Credits/Contact ~~~~~~~~~~~~ Preethi Natarajan (nataraja at cis dot udel dot edu) Dr. Paul Amer (amer at cis dot udel dot edu) Protocol Engineering Lab, University of Delaware, Newark, DE.