sctp


SYNOPSIS
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/sctp.h>

       sctp_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_SCTP);
       sctp_socket = socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);

DESCRIPTION
       This  is  an  implementation of the SCTP protocol as defined in RFC2960
       and RFC3309. It is a message oriented, reliable transport protocol with
       direct  support for multihoming that runs on top of ip(7), and supports
       both v4 and v6 versions.

       Like TCP, SCTP provides reliable,  connection  oriented  data  delivery
       with  congestion control. Unlike TCP, SCTP also provides message bound-
       ary preservation, ordered and unordered message delivery, multi-stream-
       ing  and  multi-homing.  Detection of data corruption, loss of data and
       duplication of data is achieved by using checksums  and  sequence  num-
       bers.  A  selective retransmission mechanism is applied to correct loss
       or corruption of data.

       This implementation supports a mapping of  SCTP  into  sockets  API  as
       defined  in  the  draft-ietf-tsvwg-sctpsocket-10.txt(Sockets API exten-
       sions for SCTP).  Two styles of interfaces are supported.

       A one-to-many style interface  with  1  to  MANY  relationship  between
       socket  and  associations  where  the  outbound  association  setup  is
       implicit. The syntax of a one-to-many style socket() call is

       sd = socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);

       A typical server in this style  uses  the  following  socket  calls  in
       sequence to prepare an endpoint for servicing requests.

            1. socket()
            2. bind()
            3. listen()
            4. recvmsg()
            5. sendmsg()
            6. close()

       A typical client uses the following calls in sequence to setup an asso-
       ciation with a server to request services.

            1. socket()
            2. sendmsg()
            3. recvmsg()
            4. close()

       A one-to-one style interface with a 1 to 1 relationship between  socket
       and association which enables existing TCP applications to be ported to
       SCTP with very little effort. The syntax of a one-to-one style socket()
       The accept() call blocks until a new association is set up. It  returns
       with  a  new  socket  descriptor.  The  server then uses the new socket
       descriptor to communicate with the  client,  using  recv()  and  send()
       calls to get requests and send back responses. Then it calls

            5. close()

       to  terminate the association. A typical client uses the following sys-
       tem call sequence to setup an association with a server to request ser-
       vices:

            1. socket()
            2. connect()

       After returning from connect(), the client uses send() and recv() calls
       to send out requests and receive responses from the server. The  client
       calls

            3. close()

       to terminate this association when done.

ADDRESS FORMATS
       SCTP is built on top of IP (see ip(7)).  The address formats defined by
       ip(7) apply to SCTP.  SCTP only supports point-to-point  communication;
       broadcasting and multicasting are not supported.

SYSCTLS
       These  variables  can  be accessed by the /proc/sys/net/sctp/* files or
       with the sysctl(2) interface.  In addition, most IP sysctls also  apply
       to SCTP. See ip(7).

       addip_enable
              Enable SCTP ADDIP(Dynamic Address Reconfiguration) Support. This
              is off by default.

       association_max_retrans
              Maximum number of consecutive retransmissions to a  peer  before
              an  endpoint  considers  that the peer is unreachable and closes
              the association. The default value is 10.

       cookie_preserve_enable
              Handle COOKIE PRESERVATIVE parameter in the INIT chunk. This  is
              on by default.

       hb_interval
              This  is the interval when a HEARTBEAT chunk is sent to a desti-
              nation transport address to monitor the reachability of an  idle
              destination transport address.  The default is 30 seconds and is
              maintained in msecs.

       max_burst
              Maximum number of new data packets that can be sent in a  burst.
              The default value is 4.
              Enable PR-SCTP. This is on by default.

       rcvbuf_policy
              This  controls  the socket receive buffer accounting policy. The
              default value is 0  and  indicates  that  all  the  associations
              belonging  to a socket share the same receive buffer space. When
              set to 1, each association will  have  its  own  receive  buffer
              space.

       rto_alpha_exp_divisor
              This  is  the RTO.Alpha value when expressed in right shifts and
              is used in RTO calculations. The default value is 3.

       rto_beta_exp_divisor
              This is the RTO.Beta value when expressed in right shifts and is
              used in RTO calculations. The default value is 2.

       rto_initial
              This is the initial value of RTO(retransmission timeout) that is
              used in RTO calculations. The default value is 3 seconds and  is
              maintained in msecs.

       rto_max
              This is the maximum value of RTO(retransmission timeout) that is
              used in RTO calculations. The default value is 60 seconds and is
              maintained in msecs.

       rto_min
              This is the minimum value of RTO(retransmission timeout) that is
              used in RTO calculations. The default value is 1 second  and  is
              maintained in msecs.

       sack_timeout
              Delayed SACK timeout. The default value is 200msecs.

       sndbuf_policy
              This  controls  the  socket  sendbuffer  accounting  policy. The
              default value is 0  and  indicates  that  all  the  associations
              belonging to a socket share the same send buffer space. When set
              to 1, each association will have its own send buffer space.

       valid_cookie_life
              This is the maximum lifespan of the Cookie sent in an  INIT  ACK
              chunk. The default value is 60 secs and is maintained in msecs.

STATISTICS
       These variables can be accessed by the /proc/net/sctp/* files.

       assocs Displays  the  following  information  about the active associa-
              tions.  assoc ptr, sock ptr, socket style, sock state,  associa-
              tion  state,  hash  bucket,  association  id,  bytes in transmit
              queue, bytes in receive  queue,  user  id,  inode,  local  port,
              remote port, local addresses and remote addresses.


       SctpActiveEstabs
              The number of times that associations have made a  direct
              transition  to  the  ESTABLISHED  state  from the COOKIE-
              ECHOED state. The upper layer initiated  the  association
              attempt.

       SctpPassiveEstabs
              The  number of times that associations have made a direct
              transition to  the  ESTABLISHED  state  from  the  CLOSED
              state.  The  remote  endpoint  initiated  the association
              attempt.

       SctpAborteds
              The number of times that associations have made a  direct
              transition  to  the CLOSED state from any state using the
              primitive 'ABORT'. Ungraceful termination of the associa-
              tion.

       SctpShutdowns
              The  number of times that associations have made a direct
              transition to the CLOSED state from either the  SHUTDOWN-
              SENT  state or the SHUTDOWN-ACK-SENT state. Graceful ter-
              mination of the association.

       SctpOutOfBlues
              The number of out of the blue  packets  received  by  the
              host.  An  out  of the blue packet is an SCTP packet cor-
              rectly formed, including the  proper  checksum,  but  for
              which  the receiver was unable to identify an appropriate
              association.

       SctpChecksumErrors
              The number of  SCTP  packets  received  with  an  invalid
              checksum.

       SctpOutCtrlChunks
              The  number  of SCTP control chunks sent (retransmissions
              are not included).  Control chunks are those chunks  dif-
              ferent from DATA.

       SctpOutOrderChunks
              The  number of SCTP ordered data chunks sent (retransmis-
              sions are not included).

       SctpOutUnorderChunks
              The number of SCTP unordered chunks(data chunks in  which
              the  U  bit  is  set  to 1) sent (retransmissions are not
              included).

       SctpInCtrlChunks
              The number of SCTP control chunks received (no  duplicate
              chunks included).


       SctpReasmUsrMsgs
              The number of user messages reassembled, after conversion
              into DATA chunks.

       SctpOutSCTPPacks
              The number  of  SCTP  packets  sent.  Retransmitted  DATA
              chunks are included.

       SctpInSCTPPacks
              The  number  of  SCTP  packets  received.  Duplicates are
              included.

SOCKET OPTIONS
       To set or get a SCTP socket option, call getsockopt(2)  to  read
       or setsockopt(2) to write the option with the option level argu-
       ment set to SOL_SCTP.

       SCTP_RTOINFO.
              This option is used to get or set the protocol parameters
              used  to initialize and bound retransmission timout(RTO).
              The      structure      sctp_rtoinfo      defined      in
              /usr/include/netinet/sctp.h  is used to access and modify
              these parameters.

       SCTP_ASSOCINFO
              This option is used to both examine and set various asso-
              ciation    and   endpoint   parameters.   The   sturcture
              sctp_assocparams defined  in  /usr/include/netinet/sctp.h
              is used to access and modify these parameters.

       SCTP_INITMSG
              This option is used to get or set the protocol parameters
              for the default association initialization. The structure
              sctp_initmsg  defined  in  /usr/include/netinet/sctp.h is
              used to access and modify these parameters.

              Setting initialization parameters is effective only on an
              unconnected  socket  (for  one-to-many style sockets only
              future associations are effected  by  the  change).  With
              one-to-one  style  sockets,  this  option is inherited by
              sockets derived from a listener socket.

       SCTP_NODELAY
              Turn on/off any Nagle-like  algorithm.  This  means  that
              packets  are  generally  sent  as soon as possible and no
              unnecessary delays are introduced, at the  cost  of  more
              packets in the network.  Expects an integer boolean flag.

       SCTP_AUTOCLOSE
              This socket option is applicable to the one-to-many style
              socket only. When set it will cause associations that are
              idle  for  more  than  the specified number of seconds to
              automatically close. An association being idle is defined

       SCTP_PRIMARY_ADDR
              Requests  that the local SCTP stack use the enclosed peer
              address as the association primary. The enclosed  address
              must  be  one  of  the  association peer's addresses. The
              structure          sctp_prim          defined          in
              /usr/include/netinet/sctp.h  is  used  to  make a get/set
              primary request.

       SCTP_DISABLE_FRAGMENTS
              This option is a on/off flag and  is  passed  an  integer
              where  a  non-zero is on and a zero is off. If enabled no
              SCTP message fragmentation will be performed.  Instead if
              a  message  being sent exceeds the current PMTU size, the
              message will NOT be sent and an error will  be  indicated
              to the user.

       SCTP_PEER_ADDR_PARAMS
              Using  this  option,  applications  can enable or disable
              heartbeats for any peer address of an association, modify
              an  address's heartbeat interval, force a heartbeat to be
              sent immediately, and adjust the address's maximum number
              of  retransmissions  sent before an address is considered
              unreachable. The structure  sctp_paddrparams  defined  in
              /usr/include/netinet/sctp.h  is used to access and modify
              an address's parameters.

       SCTP_DEFAULT_SEND_PARAM
              Applications that wish to use the  sendto()  system  call
              may  wish  to  specify  a  default set of parameters that
              would normally  be  supplied  through  the  inclusion  of
              ancillary  data. This socket option allows such an appli-
              cation to set the default sctp_sndrcvinfo structure.  The
              application  that wishes to use this socket option simply
              passes in to  this  call  the  sctp_sndrcvinfo  structure
              defined in /usr/include/netinet/sctp.h. The input parame-
              ters  accepted  by  this   call   include   sinfo_stream,
              sinfo_flags, sinfo_ppid, sinfo_context, sinfo_timetolive.
              The user must set the sinfo_assoc_id  field  to  identify
              the
               association to affect if the caller is using the one-to-
              many style.

       SCTP_EVENTS
              This socket option is used to specify  various  notifica-
              tions  and ancillary data the user wishes to receive. The
              structure      sctp_event_subscribe      defined       in
              /usr/include/netinet/sctp.h  is  used to access or modify
              the events of interest to the user.

       SCTP_I_WANT_MAPPED_V4_ADDR
              This socket option is a boolean flag which  turns  on  or
              off  mapped V4 addresses. If this option is turned on and
              the socket is type PF_INET6, then IPv4 addresses will  be
              this size it will be fragmented by SCTP into  the  speci-
              fied  size.  Note that the underlying SCTP implementation
              may fragment into smaller sized chunks when the  PMTU  of
              the  underlying association is smaller than the value set
              by the user. The option expects an integer.

              The default value for this option is  0  which  indicates
              the  user is NOT limiting fragmentation and only the PMTU
              will effect SCTP's choice of DATA chunk size.

       SCTP_STATUS
              Applications  can  retrieve  current  status  information
              about  an  association, including association state, peer
              receiver window size, number of unacked data chunks,  and
              number  of data chunks pending receipt.  This information
              is  read-only.   The  structure  sctp_status  defined  in
              /usr/include/netinet/sctp.h is used to access this infor-
              mation.

       SCTP_GET_PEER_ADDR_INFO
              Applications can retrieve information  about  a  specific
              peer  address of an association, including its reachabil-
              ity state, congestion window,  and  retransmission  timer
              values.   This  information  is  read-only. The structure
              sctp_paddr_info defined in /usr/include/netinet/sctp.h is
              used to access this information.

       SCTP_GET_ASSOC_STATS
              Applications  can  retrieve  current  statistics about an
              association, including  SACKs  sent  and  received,  SCTP
              packets sent and received. The complete list can be found
              in      /usr/include/netinet/sctp.h       in       struct
              sctp_assoc_stats.

AUTHORS
       Sridhar Samudrala <sri@us.ibm.com>

SEE ALSO
       socket(7), socket(2), ip(7), bind(2), listen(2), accept(2), con-
       nect(2),  sendmsg(2),  recvmsg(2),   sysctl(2),   getsockopt(2),
       sctp_bindx(3),  sctp_connectx(3), sctp_sendmsg(3), sctp_send(3),
       sctp_recvmsg(3), sctp_peeloff(3),  sctp_getladdrs(3),  sctp_get-
       paddrs(3), sctp_opt_info(3).

       RFC2960, RFC3309 for the SCTP specification.



Linux Man Page                    2005-10-25                           SCTP(7)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2017 Hurricane Electric. All Rights Reserved.