dccp: Lockless integration of CCID congestion-control plugins
[linux-block.git] / net / dccp / ccids / Kconfig
1 menu "DCCP CCIDs Configuration (EXPERIMENTAL)"
2         depends on EXPERIMENTAL
3
4 config IP_DCCP_CCID2_DEBUG
5         bool "CCID-2 debugging messages"
6         ---help---
7           Enable CCID-2 specific debugging messages.
8
9           The debugging output can additionally be toggled by setting the
10           ccid2_debug parameter to 0 or 1.
11
12           If in doubt, say N.
13
14 config IP_DCCP_CCID3
15         bool "CCID-3 (TCP-Friendly) (EXPERIMENTAL)"
16         def_bool y if (IP_DCCP = y || IP_DCCP = m)
17         select IP_DCCP_TFRC_LIB
18         ---help---
19           CCID-3 denotes TCP-Friendly Rate Control (TFRC), an equation-based
20           rate-controlled congestion control mechanism.  TFRC is designed to
21           be reasonably fair when competing for bandwidth with TCP-like flows,
22           where a flow is "reasonably fair" if its sending rate is generally
23           within a factor of two of the sending rate of a TCP flow under the
24           same conditions.  However, TFRC has a much lower variation of
25           throughput over time compared with TCP, which makes CCID-3 more
26           suitable than CCID-2 for applications such streaming media where a
27           relatively smooth sending rate is of importance.
28
29           CCID-3 is further described in RFC 4342,
30           http://www.ietf.org/rfc/rfc4342.txt
31
32           The TFRC congestion control algorithms were initially described in
33           RFC 5448.
34
35           This text was extracted from RFC 4340 (sec. 10.2),
36           http://www.ietf.org/rfc/rfc4340.txt
37
38           If in doubt, say N.
39
40 config IP_DCCP_CCID3_DEBUG
41         bool "CCID-3 debugging messages"
42         depends on IP_DCCP_CCID3
43         ---help---
44           Enable CCID-3 specific debugging messages.
45
46           The debugging output can additionally be toggled by setting the
47           ccid3_debug parameter to 0 or 1.
48
49           If in doubt, say N.
50
51 config IP_DCCP_CCID3_RTO
52           int "Use higher bound for nofeedback timer"
53           default 100
54           depends on IP_DCCP_CCID3 && EXPERIMENTAL
55           ---help---
56             Use higher lower bound for nofeedback timer expiration.
57
58             The TFRC nofeedback timer normally expires after the maximum of 4
59             RTTs and twice the current send interval (RFC 3448, 4.3). On LANs
60             with a small RTT this can mean a high processing load and reduced
61             performance, since then the nofeedback timer is triggered very
62             frequently.
63
64             This option enables to set a higher lower bound for the nofeedback
65             value. Values in units of milliseconds can be set here.
66
67             A value of 0 disables this feature by enforcing the value specified
68             in RFC 3448. The following values have been suggested as bounds for
69             experimental use:
70                 * 16-20ms to match the typical multimedia inter-frame interval
71                 * 100ms as a reasonable compromise [default]
72                 * 1000ms corresponds to the lower TCP RTO bound (RFC 2988, 2.4)
73
74             The default of 100ms is a compromise between a large value for
75             efficient DCCP implementations, and a small value to avoid disrupting
76             the network in times of congestion.
77
78             The purpose of the nofeedback timer is to slow DCCP down when there
79             is serious network congestion: experimenting with larger values should
80             therefore not be performed on WANs.
81
82 config IP_DCCP_TFRC_LIB
83         tristate
84         default n
85
86 config IP_DCCP_TFRC_DEBUG
87         bool
88         depends on IP_DCCP_TFRC_LIB
89         default y if IP_DCCP_CCID3_DEBUG
90
91 endmenu