# SCTP and congestion control



## chrcol (Dec 14, 2008)

I been reading up on tcp documentations, and specifically congestion control.

Microsoft recently added compound tcp to Vista which having used I can say its pretty good.

Linux has started using cubic which is supposed to be similiar to compound tcp.

Freebsd has SCTP new in 7.0 as I understand which is also a big improvement over the old reno congestion control, but I am unable to find any documentation on it, even if its turned on by default and how to turn it on and off, tune it etc.

In addition to the above query about SCTP does anyone know if its possible to disable tcp timestamps in freebsd whilst keeping windows scaling enabled?


----------



## lbl (Dec 22, 2008)

*sysctl*

There is a lot of sctp values you can tweak with sysctl.


```
[root@atom0 ~]# sysctl -d net | grep sctp
net.inet.sctp.assoclist: List of active SCTP associations
net.inet.sctp.stats: SCTP statistics (struct sctp_stat)
net.inet.sctp.mobility_fasthandoff: Enable SCTP fast handoff
net.inet.sctp.mobility_base: Enable SCTP base mobility
net.inet.sctp.default_frag_interleave: Default fragment interleave level
net.inet.sctp.default_cc_module: Default congestion control module
net.inet.sctp.log_level: Ltrace/KTR trace logging level
net.inet.sctp.max_retran_chunk: Maximum times an unlucky chunk can be retran'd before assoc abort
net.inet.sctp.min_residual: Minimum residual data chunk in second part of split
net.inet.sctp.strict_data_order: Enforce strict data ordering, abort if control inside data
net.inet.sctp.abort_at_limit: When one-2-one hits qlimit abort
net.inet.sctp.hb_max_burst: Confirmation Heartbeat max burst
net.inet.sctp.do_sctp_drain: Should SCTP respond to the drain calls
net.inet.sctp.max_chained_mbufs: Default max number of small mbufs on a chain
net.inet.sctp.abc_l_var: SCTP ABC max increase per SACK (L)
net.inet.sctp.nat_friendly: SCTP NAT friendly operation
net.inet.sctp.auth_disable: Disable SCTP AUTH function
net.inet.sctp.asconf_auth_nochk: Disable SCTP ASCONF AUTH requirement
net.inet.sctp.early_fast_retran_msec: Early Fast Retransmit minimum timer value
net.inet.sctp.early_fast_retran: Early Fast Retransmit with timer
net.inet.sctp.cwnd_maxburst: Use a CWND adjusting maxburst
net.inet.sctp.cmt_pf: CMT PF type flag
net.inet.sctp.cmt_use_dac: CMT DAC on/off flag
net.inet.sctp.cmt_on_off: CMT on/off flag
net.inet.sctp.outgoing_streams: Default number of outgoing streams
net.inet.sctp.add_more_on_output: When space wise is it worthwhile to try to add more to a socket send buffer
net.inet.sctp.path_rtx_max: Default maximum of retransmissions per path
net.inet.sctp.assoc_rtx_max: Default maximum number of retransmissions per association
net.inet.sctp.init_rtx_max: Default maximum number of retransmission for INIT chunks
net.inet.sctp.valid_cookie_life: Default cookie lifetime in sec
net.inet.sctp.init_rto_max: Default maximum retransmission timeout during association setup in msec
net.inet.sctp.rto_initial: Default initial retransmission timeout in msec
net.inet.sctp.rto_min: Default minimum retransmission timeout in msec
net.inet.sctp.rto_max: Default maximum retransmission timeout in msec
net.inet.sctp.secret_lifetime: Default secret lifetime in sec
net.inet.sctp.shutdown_guard_time: Default shutdown guard timer in sec
net.inet.sctp.pmtu_raise_time: Default PMTU raise timer in sec
net.inet.sctp.heartbeat_interval: Default heartbeat interval in msec
net.inet.sctp.asoc_resource: Max number of cached resources in an asoc
net.inet.sctp.sys_resource: Max number of cached resources in the system
net.inet.sctp.sack_freq: Default SACK frequency
net.inet.sctp.delayed_sack_time: Default delayed SACK timer in msec
net.inet.sctp.chunkscale: Tuneable for Scaling of number of chunks and messages
net.inet.sctp.min_split_point: Minimum size when splitting a chunk
net.inet.sctp.pcbhashsize: Tunable for PCB hash table sizes
net.inet.sctp.tcbhashsize: Tunable for TCB hash table sizes
net.inet.sctp.maxchunks: Default max chunks on queue per asoc
net.inet.sctp.maxburst: Default max burst for sctp endpoints
net.inet.sctp.peer_chkoh: Amount to debit peers rwnd per chunk sent
net.inet.sctp.strict_init: Enable strict INIT/INIT-ACK singleton enforcement
net.inet.sctp.loopback_nocsum: Enable NO Csum on packets sent on loopback
net.inet.sctp.strict_sacks: Enable SCTP Strict SACK checking
net.inet.sctp.ecn_nonce: Enable SCTP ECN Nonce
net.inet.sctp.ecn_enable: Enable SCTP ECN
net.inet.sctp.auto_asconf: Enable SCTP Auto-ASCONF
net.inet.sctp.recvspace: Maximum incoming SCTP buffer size
net.inet.sctp.sendspace: Maximum outgoing SCTP buffer size
net.inet.sctp.getcred: Get the ucred of a SCTP connection
net.inet6.sctp6.getcred: Get the ucred of a SCTP6 connection
[root@atom0 ~]#
```

/lbl


----------



## chrcol (Dec 22, 2008)

yep read the -d stuff, but still no proper docs and no idea if sctp is simply always on when enabled in kernel.


----------

