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