| menu "DCCP CCIDs Configuration (EXPERIMENTAL)" |
| |
| config IP_DCCP_CCID2 |
| tristate "CCID2 (TCP-Like)" |
| def_tristate IP_DCCP |
| ---help--- |
| CCID 2, TCP-like Congestion Control, denotes Additive Increase, |
| Multiplicative Decrease (AIMD) congestion control with behavior |
| modelled directly on TCP, including congestion window, slow start, |
| timeouts, and so forth [RFC 2581]. CCID 2 achieves maximum |
| bandwidth over the long term, consistent with the use of end-to-end |
| congestion control, but halves its congestion window in response to |
| each congestion event. This leads to the abrupt rate changes |
| typical of TCP. Applications should use CCID 2 if they prefer |
| maximum bandwidth utilization to steadiness of rate. This is often |
| the case for applications that are not playing their data directly |
| to the user. For example, a hypothetical application that |
| transferred files over DCCP, using application-level retransmissions |
| for lost packets, would prefer CCID 2 to CCID 3. On-line games may |
| also prefer CCID 2. See RFC 4341 for further details. |
| |
| CCID2 is the default CCID used by DCCP. |
| |
| config IP_DCCP_CCID2_DEBUG |
| bool "CCID2 debugging messages" |
| depends on IP_DCCP_CCID2 |
| ---help--- |
| Enable CCID2-specific debugging messages. |
| |
| When compiling CCID2 as a module, this debugging output can |
| additionally be toggled by setting the ccid2_debug module |
| parameter to 0 or 1. |
| |
| If in doubt, say N. |
| |
| config IP_DCCP_CCID3 |
| tristate "CCID3 (TCP-Friendly)" |
| def_tristate IP_DCCP |
| select IP_DCCP_TFRC_LIB |
| ---help--- |
| CCID 3 denotes TCP-Friendly Rate Control (TFRC), an equation-based |
| rate-controlled congestion control mechanism. TFRC is designed to |
| be reasonably fair when competing for bandwidth with TCP-like flows, |
| where a flow is "reasonably fair" if its sending rate is generally |
| within a factor of two of the sending rate of a TCP flow under the |
| same conditions. However, TFRC has a much lower variation of |
| throughput over time compared with TCP, which makes CCID 3 more |
| suitable than CCID 2 for applications such streaming media where a |
| relatively smooth sending rate is of importance. |
| |
| CCID 3 is further described in RFC 4342, |
| http://www.ietf.org/rfc/rfc4342.txt |
| |
| The TFRC congestion control algorithms were initially described in |
| RFC 3448. |
| |
| This text was extracted from RFC 4340 (sec. 10.2), |
| http://www.ietf.org/rfc/rfc4340.txt |
| |
| To compile this CCID as a module, choose M here: the module will be |
| called dccp_ccid3. |
| |
| If in doubt, say M. |
| |
| if IP_DCCP_CCID3 |
| config IP_DCCP_CCID3_DEBUG |
| bool "CCID3 debugging messages" |
| ---help--- |
| Enable CCID3-specific debugging messages. |
| |
| When compiling CCID3 as a module, this debugging output can |
| additionally be toggled by setting the ccid3_debug module |
| parameter to 0 or 1. |
| |
| If in doubt, say N. |
| |
| choice |
| prompt "Select method for measuring the packet size s" |
| default IP_DCCP_CCID3_MEASURE_S_AS_MPS |
| |
| config IP_DCCP_CCID3_MEASURE_S_AS_MPS |
| bool "Always use MPS in place of s" |
| ---help--- |
| This use is recommended as it is consistent with the initialisation |
| of X and suggested when s varies (rfc3448bis, (1) in section 4.1). |
| config IP_DCCP_CCID3_MEASURE_S_AS_AVG |
| bool "Use moving average" |
| ---help--- |
| An alternative way of tracking s, also supported by rfc3448bis. |
| This used to be the default for CCID-3 in previous kernels. |
| config IP_DCCP_CCID3_MEASURE_S_AS_MAX |
| bool "Track the maximum payload length" |
| ---help--- |
| An experimental method based on tracking the maximum packet size. |
| endchoice |
| |
| config IP_DCCP_CCID3_RTO |
| int "Use higher bound for nofeedback timer" |
| default 100 |
| ---help--- |
| Use higher lower bound for nofeedback timer expiration. |
| |
| The TFRC nofeedback timer normally expires after the maximum of 4 |
| RTTs and twice the current send interval (RFC 3448, 4.3). On LANs |
| with a small RTT this can mean a high processing load and reduced |
| performance, since then the nofeedback timer is triggered very |
| frequently. |
| |
| This option enables to set a higher lower bound for the nofeedback |
| value. Values in units of milliseconds can be set here. |
| |
| A value of 0 disables this feature by enforcing the value specified |
| in RFC 3448. The following values have been suggested as bounds for |
| experimental use: |
| * 16-20ms to match the typical multimedia inter-frame interval |
| * 100ms as a reasonable compromise [default] |
| * 1000ms corresponds to the lower TCP RTO bound (RFC 2988, 2.4) |
| |
| The default of 100ms is a compromise between a large value for |
| efficient DCCP implementations, and a small value to avoid disrupting |
| the network in times of congestion. |
| |
| The purpose of the nofeedback timer is to slow DCCP down when there |
| is serious network congestion: experimenting with larger values should |
| therefore not be performed on WANs. |
| endif # IP_DCCP_CCID3 |
| |
| config IP_DCCP_TFRC_LIB |
| tristate |
| default n |
| |
| config IP_DCCP_TFRC_DEBUG |
| bool |
| depends on IP_DCCP_TFRC_LIB |
| default y if IP_DCCP_CCID3_DEBUG |
| |
| endmenu |