| |
| README for SCTP stack for KAME |
| |
| Description |
| ----------- |
| This SCTP stack is a kernel implementation which fully supports RFC 2960 |
| as well as updates and enhancements from the following Internet Drafts: |
| draft-ietf-tsvwg-sctpcsum-05.txt |
| draft-ietf-tsvwg-sctpimpguide-05.txt |
| draft-ietf-tsvwg-sctpsocket-04.txt |
| draft-ietf-tsvwg-addip-sctp-05.txt |
| draft-stewart-prsctp-00.txt |
| draft-stewart-tsvwg-sctpipv6-00.txt |
| draft-iyengar-sctp-cacc-00.txt |
| |
| A small user-space library addition to 'libc' is used to provide the new |
| system calls that SCTP provides (see draft-ietf-tsvwg-sctpsocket-03.txt |
| for details). |
| |
| Both IPv4 and IPv6 are supported-- e.g. it is a dual-stack implementation. |
| Provisions are given for passing either IPv4-mapped or native IPv4 addresses |
| over PF_INET6 sockets. |
| |
| The SCTP stack has been integrated and tested with KAME releases of |
| FreeBSD 4.5 and NetBSD 1.5.2. This release has been compiled with |
| the KAME release for OpenBSD on a Ultra-sparc however it could |
| not be tested due to alignment problems in the base IPv6 code with |
| the 64 bit processor. We hope to test OpenBSD on x86 soon. |
| |
| |
| Configuring and Building the Kernel |
| ----------------------------------- |
| Get the KAME source for your target platform (eg. freebsd4, netbsd152, |
| openbsd3) and "prepare" the source (see 'INSTALL' at the top of the |
| KAME source tree) |
| |
| Run 'prepare.sh' at the top of the sctpBsd source tree if |
| you have a seperate SCTP/KAME installation. Newer |
| versions of KAME include the SCTP stack so you do not |
| need to get the seperate tar image and run prepare.sh |
| |
| [FIX ME - remove this since the source will be part of KAME now...] |
| |
| The following kernel options have been added for SCTP: |
| options SCTP # adds SCTP stack to kernel |
| options SCTP_DEBUG # adds debugging support for SCTP |
| options SCTP_TCP_MODEL_SUPPORT # adds TCP model support |
| options SCTP_USE_ADLER32 # use obsolete Adler32 checksum, |
| # instead of CRC-32c |
| # this may be removed in the future |
| |
| Add 'SCTP' at a minimum to your kernel configuration file, and build as |
| directed for the appropriate target platform (e.g. see 'freebsd4/INSTALL') |
| |
| After configuring the kernel above, goto {$TARGET}/sys/kern in the KAME |
| distribution and do make init_sysent.c'. This will generate the following |
| files: |
| {$TARGET}/sys/kern/syscalls.c |
| {$TARGET}/sys/kern/init_sysent.c |
| {$TARGET}/sys/sys/sysproto.h |
| {$TARGET}/sys/sys/syscall.h |
| {$TARGET}/sys/sys/syscall.mk |
| {$TARGET}/sys/sys/syscall-hide.h |
| |
| You will need to copy the .h files when building libc to |
| /usr/src/sys/sys. |
| |
| and you should also copy them to /usr/include/sys |
| as well. |
| |
| |
| |
| Configuring and Building the user library portion |
| ------------------------------------------------- |
| 0. Kernel must be configured and built before proceeding. |
| |
| 1. Copy files from usr.lib to /usr/src/lib/libc/net: |
| sctp_sys_calls.c |
| |
| 2. Copy files from the KAME distribution into /usr/src/lib/libc/net: |
| kame/kame/libinet6/getaddrinfo.3 |
| kame/kame/libinet6/getaddrinfo.c |
| kame/kame/libinet6/rthdr.c |
| kame/kame/libinet6/resolv/res_send.c |
| |
| 3. Add sctp_sys_calls.c to SRCS in /usr/src/lib/libc/net/Makefile.inc |
| |
| 4. Copy the syscall related header files created during kernel configuration |
| and build into the non-KAME kernel build tree (eg. from KAME's |
| {$TARGET}/sys/sys/ to /usr/src/sys/sys/) |
| |
| 4.a For netbsd you will also need to /usr/src/lib/libc/sys/Makefile.inc |
| by adding sctp_peeloff.o to the ASM line (near select.o). |
| |
| 5. Rebuild the library from /usr/src/lib/libc and install |
| |
| |
| Multi-homing considerations |
| --------------------------- |
| The SCTP stack provides full support of multi-homed platforms by adding |
| support for multiple default gateway routes and alternate route selection |
| to the routing subsystem. |
| |
| This feature is added to the routing subsystem when SCTP is compiled in |
| and is currently required. |
| |
| |
| Application development considerations |
| -------------------------------------- |
| The following are the only header files that are normally required by |
| the application to add SCTP support: |
| <netinet/sctp.h> |
| <netinet/sctp_uio.h> |
| |
| See Internet Draft draft-ietf-tsvwg-sctpsocket-04.txt for details. |
| |
| >>> Undocumented Socket Options <<< |
| IPv4-mapped addresses vs. the default IPv4 addresses on PF_INET6 sockets |
| Note: KAME kernel tunable must also be appropriately set to enable mapped |
| addresses support |
| |
| >>> PR-SCTP "timeout" types <<< |
| time |
| available buffer space |
| |
| Test application |
| ---------------- |
| The sctp_test_app can be built from the top of the |
| current SCTP tree. [we will need to move this |
| into the kame tree somewhere]. It builds two libraries |
| under the directories baselib and user. The app directory |
| holds the actual sctp_test_app. Note the libc.a must be |
| rebuilt with the sctp_peeloff and other library functions. |
| |
| |
| |