blob: 12275943eab8fae852664b3adba29ecb54415f24 [file] [log] [blame]
Arnaldo Carvalho de Melo7c657872005-08-09 20:14:34 -07001menu "DCCP CCIDs Configuration (EXPERIMENTAL)"
Gerrit Renker6d57b432007-11-21 10:11:52 -02002 depends on EXPERIMENTAL
Arnaldo Carvalho de Melo7c657872005-08-09 20:14:34 -07003
Andrea Bittau2a91aa32006-03-20 17:41:47 -08004config IP_DCCP_CCID2
Arnaldo Carvalho de Melo057fc672006-03-20 19:24:22 -08005 tristate "CCID2 (TCP-Like) (EXPERIMENTAL)"
Arnaldo Carvalho de Melo057fc672006-03-20 19:24:22 -08006 def_tristate IP_DCCP
Andrea Bittau2a91aa32006-03-20 17:41:47 -08007 select IP_DCCP_ACKVEC
8 ---help---
9 CCID 2, TCP-like Congestion Control, denotes Additive Increase,
10 Multiplicative Decrease (AIMD) congestion control with behavior
11 modelled directly on TCP, including congestion window, slow start,
12 timeouts, and so forth [RFC 2581]. CCID 2 achieves maximum
13 bandwidth over the long term, consistent with the use of end-to-end
14 congestion control, but halves its congestion window in response to
15 each congestion event. This leads to the abrupt rate changes
16 typical of TCP. Applications should use CCID 2 if they prefer
17 maximum bandwidth utilization to steadiness of rate. This is often
18 the case for applications that are not playing their data directly
19 to the user. For example, a hypothetical application that
20 transferred files over DCCP, using application-level retransmissions
21 for lost packets, would prefer CCID 2 to CCID 3. On-line games may
Gerrit Renkere333b3e2007-11-21 10:09:56 -020022 also prefer CCID 2. See RFC 4341 for further details.
Andrea Bittau2a91aa32006-03-20 17:41:47 -080023
Gerrit Renkere333b3e2007-11-21 10:09:56 -020024 CCID2 is the default CCID used by DCCP.
Andrea Bittau2a91aa32006-03-20 17:41:47 -080025
Andrea Bittau8d424f62006-09-19 13:12:44 -070026config IP_DCCP_CCID2_DEBUG
Gerrit Renker84116712006-11-20 18:26:03 -020027 bool "CCID2 debugging messages"
Andrea Bittau8d424f62006-09-19 13:12:44 -070028 depends on IP_DCCP_CCID2
29 ---help---
Gerrit Renker84116712006-11-20 18:26:03 -020030 Enable CCID2-specific debugging messages.
31
32 When compiling CCID2 as a module, this debugging output can
33 additionally be toggled by setting the ccid2_debug module
34 parameter to 0 or 1.
Andrea Bittau8d424f62006-09-19 13:12:44 -070035
36 If in doubt, say N.
37
Arnaldo Carvalho de Melo7c657872005-08-09 20:14:34 -070038config IP_DCCP_CCID3
Arnaldo Carvalho de Melo057fc672006-03-20 19:24:22 -080039 tristate "CCID3 (TCP-Friendly) (EXPERIMENTAL)"
Arnaldo Carvalho de Melo057fc672006-03-20 19:24:22 -080040 def_tristate IP_DCCP
Gerrit Renkerc40616c2007-12-06 12:26:38 -020041 select IP_DCCP_TFRC_LIB
Arnaldo Carvalho de Melo7c657872005-08-09 20:14:34 -070042 ---help---
43 CCID 3 denotes TCP-Friendly Rate Control (TFRC), an equation-based
44 rate-controlled congestion control mechanism. TFRC is designed to
45 be reasonably fair when competing for bandwidth with TCP-like flows,
46 where a flow is "reasonably fair" if its sending rate is generally
47 within a factor of two of the sending rate of a TCP flow under the
48 same conditions. However, TFRC has a much lower variation of
49 throughput over time compared with TCP, which makes CCID 3 more
50 suitable than CCID 2 for applications such streaming media where a
51 relatively smooth sending rate is of importance.
52
Gerrit Renker0e64e942006-10-24 16:17:51 -070053 CCID 3 is further described in RFC 4342,
54 http://www.ietf.org/rfc/rfc4342.txt
Andrea Bittau2a91aa32006-03-20 17:41:47 -080055
56 The TFRC congestion control algorithms were initially described in
57 RFC 3448.
58
Gerrit Renker0e64e942006-10-24 16:17:51 -070059 This text was extracted from RFC 4340 (sec. 10.2),
60 http://www.ietf.org/rfc/rfc4340.txt
Arnaldo Carvalho de Melo7c657872005-08-09 20:14:34 -070061
Gerrit Renker84116712006-11-20 18:26:03 -020062 To compile this CCID as a module, choose M here: the module will be
63 called dccp_ccid3.
64
Arnaldo Carvalho de Melo7c657872005-08-09 20:14:34 -070065 If in doubt, say M.
66
Gerrit Renker56724aa2006-11-20 18:28:09 -020067config IP_DCCP_CCID3_DEBUG
68 bool "CCID3 debugging messages"
69 depends on IP_DCCP_CCID3
70 ---help---
71 Enable CCID3-specific debugging messages.
72
73 When compiling CCID3 as a module, this debugging output can
74 additionally be toggled by setting the ccid3_debug module
75 parameter to 0 or 1.
76
77 If in doubt, say N.
Gerrit Renker8a508ac2006-12-03 14:50:23 -020078
79config IP_DCCP_CCID3_RTO
80 int "Use higher bound for nofeedback timer"
81 default 100
82 depends on IP_DCCP_CCID3 && EXPERIMENTAL
83 ---help---
84 Use higher lower bound for nofeedback timer expiration.
85
86 The TFRC nofeedback timer normally expires after the maximum of 4
87 RTTs and twice the current send interval (RFC 3448, 4.3). On LANs
88 with a small RTT this can mean a high processing load and reduced
89 performance, since then the nofeedback timer is triggered very
90 frequently.
91
92 This option enables to set a higher lower bound for the nofeedback
93 value. Values in units of milliseconds can be set here.
94
95 A value of 0 disables this feature by enforcing the value specified
96 in RFC 3448. The following values have been suggested as bounds for
97 experimental use:
98 * 16-20ms to match the typical multimedia inter-frame interval
99 * 100ms as a reasonable compromise [default]
100 * 1000ms corresponds to the lower TCP RTO bound (RFC 2988, 2.4)
101
102 The default of 100ms is a compromise between a large value for
103 efficient DCCP implementations, and a small value to avoid disrupting
104 the network in times of congestion.
105
106 The purpose of the nofeedback timer is to slow DCCP down when there
107 is serious network congestion: experimenting with larger values should
108 therefore not be performed on WANs.
109
Gerrit Renkerc40616c2007-12-06 12:26:38 -0200110config IP_DCCP_TFRC_LIB
111 tristate
112 default n
113
114config IP_DCCP_TFRC_DEBUG
115 bool
116 depends on IP_DCCP_TFRC_LIB
117 default y if IP_DCCP_CCID3_DEBUG
Gerrit Renker8a508ac2006-12-03 14:50:23 -0200118
Arnaldo Carvalho de Melo7c657872005-08-09 20:14:34 -0700119endmenu