Index: share/man/man4/sctp.4 =================================================================== --- share/man/man4/sctp.4 +++ share/man/man4/sctp.4 @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 15, 2006 +.Dd February 18, 2016 .Dt SCTP 4 .Os .Sh NAME @@ -145,7 +145,7 @@ The FreeBSD implementation of .Tn SCTP also supports the following extensions: -.Bl -hang -width indent +.Bl -tag -width "sctp partial reliability" .It "sctp partial reliability" This extension allows one to have message be skipped and not delivered based on some user specified parameters. @@ -168,7 +168,7 @@ This extension allows a user on either side to reset the stream sequence numbers used by any or all streams. .El -.Pp +.Ss Socket Options .Tn SCTP supports a number of socket options which can be set with .Xr setsockopt 2 @@ -176,7 +176,7 @@ .Xr getsockopt 2 or .Xr sctp_opt_info 3 : -.Bl -tag -width ".Dv SCTP_SET_PEER_PRIMARY_ADDR" +.Bl -tag -indent .It Dv SCTP_NODELAY Under most circumstances, .Tn SCTP @@ -409,6 +409,204 @@ endpoint must also support the stream reset extension as well. .El +.Ss MIB Variables +The +.Tn SCTP +protocol implements a number of variables in the +.Va net.inet.sctp +branch of the +.Xr sysctl 3 +MIB. +.Bl -ohang +.It Sy Congestion Control +.Bl -tag -width indent +.It Va default_cc_module +Default congestion control module. +Default value is 0. +The minimum is 0, and the maximum is 2. +A value of 0 enables the default congestion control algorithm. +A value of 1 enables the High Speed congestion control algorithm. +A value of 2 enables the HTCP congestion control algorithm. +.It Va rttvar_steady_step +Specifies how many retransmissions are required before reducing the congestion window size. +This is not related to +.Va rttvar_rtt +nor +.Va rttvar_bw +.Ns . +Set to numeric zero to disable smoothing. +Default value is 20. +The minimum is 0, and the maximum is 65535. +.It Va rttvar_eqret +Whether to reduce the congestion window size when round-trip time and bandwidth remain unchanged. +Default value is 0. +May be set to 0 or 1. +.It Va initial_cwnd +Defines the initial congestion window size in MTUs. +.It Va cwnd_maxburst +Use congestion control instead of 'blind' logic to limit maximum burst when sending. +Default value is 1. May be set to 0 or 1. +.It Va rttvar_rtt +This value is used by the congestion control algorithm to smoothen the round trip time calculation. +Higher value means smoother adjustment of the congestion window size. +This is not related to +.Va rttvar_steady_step +.Ns . +Set to numeric 0 to disable smoothing. +Default value is 5. +The minimum is 0, and the maximum is 32. +.It Va rttvar_bw +This value is used by the congestion control algorithm to smoothen the bandwidth calculation. +Higher value means smoother adjustment of the congestion window size. +This is not related to +.Va rttvar_steady_step +.Ns . +Set to numeric 0 to disable smoothing. +Default value is 4. +The minimum is 0, and the maximum is 32. +.It Va ecn_enable +Enable rfc2481: Explicit Congestion Notification (ECN). +Default value is 1. May be set to 0 or 1. +.It Va use_dcccecn +Enable datacenter-optimized congestion control for rfc2481: Explicit Congestion Notification (ECN). +Default value is 1. May be set to 0 or 1. +.El +.It Sy Misc +.Bl -tag -width ".Va default_frag_interleave" +.It getcred +Get the ucred of a SCTP connection. +.It assoclist +List of active SCTP associations. +.It stats +SCTP statistics (struct sctp_stat). +.It diag_info_code +Diagnostic information error cause code. +.It blackhole +Enable SCTP blackholing. +See +.Xr blackhole 4 +for more details. +.It buffer_splitting +Enable send/receive buffer splitting. +.It vtag_time_wait +Vtag wait time in seconds, 0 to disable. +.It nat_friendly_init +Enable sending of the NAT-friendly SCTP option on INITs. +.It enable_sack_immediately +Enable sending of the SACK-IMMEDIATELY bit. +.It udp_tunneling_port +Set the SCTP/UDP tunneling port +.It mobility_fasthandoff +Enable SCTP fast handoff +.It mobility_base +Enable SCTP base mobility +.It default_frag_interleave +Default fragment interleave level +.It default_ss_module +Default stream scheduling module +.It log_level +Ltrace/KTR trace logging level +.It max_retran_chunk +Maximum times an unlucky chunk can be retransmitted before assoc abort. +.It min_residual +Minimum residual data chunk in second part of split +.It strict_data_order +Enforce strict data ordering, abort if control inside data +.It abort_at_limit +Abort when one-to-one hits qlimit. +.It hb_max_burst +Confirmation heartbeat max burst +.It do_sctp_drain +Should SCTP respond to the drain calls +.It max_chained_mbufs +Default max number of small mbufs on a chain +.It abc_l_var +SCTP ABC max increase per SACK (L) +.It nat_friendly +SCTP NAT friendly operation +.It cmt_use_dac +CMT DAC on/off flag +.It cmt_on_off +CMT settings +.It outgoing_streams +Default number of outgoing streams +.It incoming_streams +Default number of incoming streams +.It add_more_on_output +When space-wise is it worthwhile to try to add more to a socket send buffer +.It path_pf_threshold +Default potentially failed threshold +.It path_rtx_max +Default maximum of retransmissions per path +.It assoc_rtx_max +Default maximum number of retransmissions per association +.It init_rtx_max +Default maximum number of retransmissions for INIT chunks +.It valid_cookie_life +Default cookie lifetime in seconds +.It init_rto_max +Default maximum retransmission timeout during association setup in ms +.It rto_initial +Default initial retransmission timeout in ms +.It rto_min +Default minimum retransmission timeout in ms +.It rto_max +Default maximum retransmission timeout in ms +.It secret_lifetime +Default secret lifetime in seconds +.It shutdown_guard_time +Shutdown guard timer in seconds (0 means 5 times RTO.Max) +.It pmtu_raise_time +Default PMTU raise timer in seconds +.It heartbeat_interval +Default heartbeat interval in ms +.It asoc_resource +Max number of cached resources in an asoc +.It sys_resource +Max number of cached resources in the system +.It sack_freq +Default SACK frequency +.It delayed_sack_time +Default delayed SACK timer in ms +.It chunkscale +Tunable for scaling of number of chunks and messages +.It min_split_point +Minimum size when splitting a chunk +.It pcbhashsize +Tunable for PCB hash table sizes +.It tcbhashsize +Tunable for TCB hash table sizes +.It maxchunks +Default max chunks on queue per asoc +.It fr_maxburst +Default max burst for SCTP endpoints when fast retransmitting +.It maxburst +Default max burst for SCTP endpoints +.It peer_chkoh +Amount to debit peers rwnd per chunk sent +.It strict_sacks +Enable SCTP Strict SACK checking +.It pktdrop_enable +Enable SCTP PKTDROP +.It nrsack_enable +Enable SCTP NR-SACK +.It reconfig_enable +Enable SCTP RE-CONFIG +.It asconf_enable +Enable SCTP ASCONF +.It auth_enable +Enable SCTP AUTH function +.It pr_enable +Enable PR-SCTP +.It auto_asconf +Enable SCTP Auto-ASCONF +.It recvspace +Maximum incoming SCTP buffer size +.It sendspace +Maximum outgoing SCTP buffer size +.El +.El + .Sh SEE ALSO .Xr accept 2 , .Xr bind 2 , @@ -418,4 +616,5 @@ .Xr sctp_connectx 3 , .Xr sctp_opt_info 3 , .Xr sctp_recvmsg 3 , -.Xr sctp_sendmsg 3 +.Xr sctp_sendmsg 3 , +.Xr blackhole 4 Index: sys/netinet/sctp_sysctl.h =================================================================== --- sys/netinet/sctp_sysctl.h +++ sys/netinet/sctp_sysctl.h @@ -151,8 +151,8 @@ #define SCTPCTL_MULTIPLEASCONFS_MAX 1 #define SCTPCTL_MULTIPLEASCONFS_DEFAULT SCTP_DEFAULT_MULTIPLE_ASCONFS -/* ecn_enable: Enable SCTP ECN */ -#define SCTPCTL_ECN_ENABLE_DESC "Enable SCTP ECN" +/* ecn_enable */ +#define SCTPCTL_ECN_ENABLE_DESC "Enable rfc2481: Explicit Congestion Notification (ECN)." #define SCTPCTL_ECN_ENABLE_MIN 0 #define SCTPCTL_ECN_ENABLE_MAX 1 #define SCTPCTL_ECN_ENABLE_DEFAULT 1 @@ -218,7 +218,7 @@ #define SCTPCTL_MAXBURST_DEFAULT SCTP_DEF_MAX_BURST /* fr_maxburst: Default max burst for sctp endpoints when fast retransmitting */ -#define SCTPCTL_FRMAXBURST_DESC "Default fr max burst for sctp endpoints" +#define SCTPCTL_FRMAXBURST_DESC "Default max burst for SCTP endpoints when fast retransmitting" #define SCTPCTL_FRMAXBURST_MIN 0 #define SCTPCTL_FRMAXBURST_MAX 0xFFFFFFFF #define SCTPCTL_FRMAXBURST_DEFAULT SCTP_DEF_FRMAX_BURST @@ -249,7 +249,7 @@ #define SCTPCTL_MIN_SPLIT_POINT_DEFAULT SCTP_DEFAULT_SPLIT_POINT_MIN /* chunkscale: Tunable for Scaling of number of chunks and messages */ -#define SCTPCTL_CHUNKSCALE_DESC "Tunable for Scaling of number of chunks and messages" +#define SCTPCTL_CHUNKSCALE_DESC "Tunable for scaling of number of chunks and messages" #define SCTPCTL_CHUNKSCALE_MIN 1 #define SCTPCTL_CHUNKSCALE_MAX 0xFFFFFFFF #define SCTPCTL_CHUNKSCALE_DEFAULT SCTP_CHUNKQUEUE_SCALE @@ -333,7 +333,7 @@ #define SCTPCTL_VALID_COOKIE_LIFE_DEFAULT SCTP_DEFAULT_COOKIE_LIFE /* init_rtx_max: Default maximum number of retransmission for INIT chunks */ -#define SCTPCTL_INIT_RTX_MAX_DESC "Default maximum number of retransmission for INIT chunks" +#define SCTPCTL_INIT_RTX_MAX_DESC "Default maximum number of retransmissions for INIT chunks" #define SCTPCTL_INIT_RTX_MAX_MIN 0 #define SCTPCTL_INIT_RTX_MAX_MAX 0xFFFFFFFF #define SCTPCTL_INIT_RTX_MAX_DEFAULT SCTP_DEF_MAX_INIT @@ -386,8 +386,8 @@ #define SCTPCTL_CMT_USE_DAC_MAX 1 #define SCTPCTL_CMT_USE_DAC_DEFAULT 0 -/* cwnd_maxburst: Use a CWND adjusting maxburst */ -#define SCTPCTL_CWND_MAXBURST_DESC "Use a CWND adjusting maxburst" +/* cwnd_maxburst */ +#define SCTPCTL_CWND_MAXBURST_DESC "Use congestion control instead of 'blind' logic to limit maximum burst when sending." #define SCTPCTL_CWND_MAXBURST_MIN 0 #define SCTPCTL_CWND_MAXBURST_MAX 1 #define SCTPCTL_CWND_MAXBURST_DEFAULT 1 @@ -423,7 +423,7 @@ #define SCTPCTL_HB_MAX_BURST_DEFAULT SCTP_DEF_HBMAX_BURST /* abort_at_limit: When one-2-one hits qlimit abort */ -#define SCTPCTL_ABORT_AT_LIMIT_DESC "When one-2-one hits qlimit abort" +#define SCTPCTL_ABORT_AT_LIMIT_DESC "Abort when one-to-one hits qlimit" #define SCTPCTL_ABORT_AT_LIMIT_MIN 0 #define SCTPCTL_ABORT_AT_LIMIT_MAX 1 #define SCTPCTL_ABORT_AT_LIMIT_DEFAULT 0 @@ -441,7 +441,7 @@ #define SCTPCTL_MIN_RESIDUAL_DEFAULT 1452 /* max_retran_chunk: max chunk retransmissions */ -#define SCTPCTL_MAX_RETRAN_CHUNK_DESC "Maximum times an unlucky chunk can be retran'd before assoc abort" +#define SCTPCTL_MAX_RETRAN_CHUNK_DESC "Maximum times an unlucky chunk can be retransmitted before assoc abort" #define SCTPCTL_MAX_RETRAN_CHUNK_MIN 0 #define SCTPCTL_MAX_RETRAN_CHUNK_MAX 65535 #define SCTPCTL_MAX_RETRAN_CHUNK_DEFAULT 30 @@ -453,7 +453,7 @@ #define SCTPCTL_LOGGING_LEVEL_DEFAULT 0 /* JRS - default congestion control module sysctl */ -#define SCTPCTL_DEFAULT_CC_MODULE_DESC "Default congestion control module" +#define SCTPCTL_DEFAULT_CC_MODULE_DESC "Default congestion control module." #define SCTPCTL_DEFAULT_CC_MODULE_MIN 0 #define SCTPCTL_DEFAULT_CC_MODULE_MAX 2 #define SCTPCTL_DEFAULT_CC_MODULE_DEFAULT 0 @@ -512,35 +512,36 @@ #define SCTPCTL_BUFFER_SPLITTING_MAX 0x3 #define SCTPCTL_BUFFER_SPLITTING_DEFAULT SCTPCTL_BUFFER_SPLITTING_MIN -/* Initial congestion window in MTU */ -#define SCTPCTL_INITIAL_CWND_DESC "Initial congestion window in MTUs" +/* initial_cwnd */ +#define SCTPCTL_INITIAL_CWND_DESC "Defines the initial congestion window size in MTUs." #define SCTPCTL_INITIAL_CWND_MIN 0 #define SCTPCTL_INITIAL_CWND_MAX 0xffffffff #define SCTPCTL_INITIAL_CWND_DEFAULT 3 -/* rttvar smooth avg for bw calc */ -#define SCTPCTL_RTTVAR_BW_DESC "Shift amount for bw smoothing on rtt calc" +/* rttvar_bw */ +#define SCTPCTL_RTTVAR_BW_DESC "How much to smoothen the congestion control bandwidth calculation, 0 to disable smoothing." #define SCTPCTL_RTTVAR_BW_MIN 0 #define SCTPCTL_RTTVAR_BW_MAX 32 #define SCTPCTL_RTTVAR_BW_DEFAULT 4 -/* rttvar smooth avg for bw calc */ -#define SCTPCTL_RTTVAR_RTT_DESC "Shift amount for rtt smoothing on rtt calc" +/* rttvar_rtt */ +#define SCTPCTL_RTTVAR_RTT_DESC "How much to smoothen the congestion control round trip time calculation, 0 to disable smoothing." #define SCTPCTL_RTTVAR_RTT_MIN 0 #define SCTPCTL_RTTVAR_RTT_MAX 32 #define SCTPCTL_RTTVAR_RTT_DEFAULT 5 -#define SCTPCTL_RTTVAR_EQRET_DESC "What to return when rtt and bw are unchanged" +#define SCTPCTL_RTTVAR_EQRET_DESC "Whether to reduce the congestion window size when round-trip time and bandwidth remain unchanged." #define SCTPCTL_RTTVAR_EQRET_MIN 0 #define SCTPCTL_RTTVAR_EQRET_MAX 1 #define SCTPCTL_RTTVAR_EQRET_DEFAULT 0 -#define SCTPCTL_RTTVAR_STEADYS_DESC "How many the sames it takes to try step down of cwnd" +#define SCTPCTL_RTTVAR_STEADYS_DESC "Specifies how many retransmissions are required before reducing the congestion window size." #define SCTPCTL_RTTVAR_STEADYS_MIN 0 #define SCTPCTL_RTTVAR_STEADYS_MAX 0xFFFF #define SCTPCTL_RTTVAR_STEADYS_DEFAULT 20 /* 0 means disable feature */ -#define SCTPCTL_RTTVAR_DCCCECN_DESC "Enable for RTCC CC datacenter ECN" +/* use_dcccecn */ +#define SCTPCTL_RTTVAR_DCCCECN_DESC "Enable datacenter-optimized congestion control for rfc2481: Explicit Congestion Notification (ECN)." #define SCTPCTL_RTTVAR_DCCCECN_MIN 0 #define SCTPCTL_RTTVAR_DCCCECN_MAX 1 #define SCTPCTL_RTTVAR_DCCCECN_DEFAULT 1 /* 0 means disable feature */