aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerrit Renker <gerrit@erg.abdn.ac.uk>2007-11-21 07:09:56 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:54:46 -0500
commite333b3edc489151afda2a4f6c798842c64cb67a4 (patch)
treeb392052fe3a4c8cdc4d0026709d1b9cd5e215921
parentebe6f7e73c3efec1de295205806b4550fcb468cd (diff)
[DCCP]: Promote CCID2 as default CCID
This patch addresses the following problems: 1. DCCP relies for its proper functioning on having at least one CCID module enabled (as in TCP plugable congestion control). Currently it is possible to disable both CCIDs and thus leave the DCCP module in a compiled, but entirely non-functional state: no sockets can be created when no CCID is available. Furthermore, the protocol is (again like TCP) not intended to be used without CCIDs. Last, a non-empty CCID list is needed for doing CCID feature negotiation. 2. Internally the default CCID that is advertised by the Linux host is set to CCID2 (DCCPF_INITIAL_CCID in include/linux/dccp.h). Disabling CCID2 in the Kconfig menu without changing the defaults leads to a failure `module not found' when trying to load the dccp module (which internally tries to load the default CCID). 3. The specification (RFC 4340, sec. 10) treats CCID2 somewhat like a `minimum common denominator'; the specification says that: * "New connections start with CCID 2 for both endpoints" * "A DCCP implementation intended for general use, such as an implementation in a general-purpose operating system kernel, SHOULD implement at least CCID 2. The intent is to make CCID 2 broadly available for interoperability [...]" Providing CCID2 as minimum-required CCID (like Reno/Cubic in TCP) thus seems reasonable. Hence this patch automatically selects CCID2 when DCCP is enabled. Documentation also added. Discussions with Ian McDonald on this subject are gratefully acknowledged. Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Ian McDonald <ian.mcdonald@jandi.co.nz> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--Documentation/networking/dccp.txt11
-rw-r--r--net/dccp/Kconfig1
-rw-r--r--net/dccp/ccids/Kconfig13
3 files changed, 12 insertions, 13 deletions
diff --git a/Documentation/networking/dccp.txt b/Documentation/networking/dccp.txt
index fdc93beec057..ffb9ca937d65 100644
--- a/Documentation/networking/dccp.txt
+++ b/Documentation/networking/dccp.txt
@@ -14,8 +14,15 @@ Introduction
14============ 14============
15 15
16Datagram Congestion Control Protocol (DCCP) is an unreliable, connection 16Datagram Congestion Control Protocol (DCCP) is an unreliable, connection
17based protocol designed to solve issues present in UDP and TCP particularly 17oriented protocol designed to solve issues present in UDP and TCP, particularly
18for real time and multimedia traffic. 18for real-time and multimedia (streaming) traffic.
19It divides into a base protocol (RFC 4340) and plugable congestion control
20modules called CCIDs. Like plugable TCP congestion control, at least one CCID
21needs to be enabled in order for the protocol to function properly. In the Linux
22implementation, this is the TCP-like CCID2 (RFC 4341). Additional CCIDs, such as
23the TCP-friendly CCID3 (RFC 4342), are optional.
24For a brief introduction to CCIDs and suggestions for choosing a CCID to match
25given applications, see section 10 of RFC 4340.
19 26
20It has a base protocol and pluggable congestion control IDs (CCIDs). 27It has a base protocol and pluggable congestion control IDs (CCIDs).
21 28
diff --git a/net/dccp/Kconfig b/net/dccp/Kconfig
index 0549e4719b13..7aa2a7acc7ec 100644
--- a/net/dccp/Kconfig
+++ b/net/dccp/Kconfig
@@ -1,6 +1,7 @@
1menuconfig IP_DCCP 1menuconfig IP_DCCP
2 tristate "The DCCP Protocol (EXPERIMENTAL)" 2 tristate "The DCCP Protocol (EXPERIMENTAL)"
3 depends on INET && EXPERIMENTAL 3 depends on INET && EXPERIMENTAL
4 select IP_DCCP_CCID2
4 ---help--- 5 ---help---
5 Datagram Congestion Control Protocol (RFC 4340) 6 Datagram Congestion Control Protocol (RFC 4340)
6 7
diff --git a/net/dccp/ccids/Kconfig b/net/dccp/ccids/Kconfig
index 80f469887691..f37af17556ba 100644
--- a/net/dccp/ccids/Kconfig
+++ b/net/dccp/ccids/Kconfig
@@ -20,18 +20,9 @@ config IP_DCCP_CCID2
20 to the user. For example, a hypothetical application that 20 to the user. For example, a hypothetical application that
21 transferred files over DCCP, using application-level retransmissions 21 transferred files over DCCP, using application-level retransmissions
22 for lost packets, would prefer CCID 2 to CCID 3. On-line games may 22 for lost packets, would prefer CCID 2 to CCID 3. On-line games may
23 also prefer CCID 2. 23 also prefer CCID 2. See RFC 4341 for further details.
24 24
25 CCID 2 is further described in RFC 4341, 25 CCID2 is the default CCID used by DCCP.
26 http://www.ietf.org/rfc/rfc4341.txt
27
28 This text was extracted from RFC 4340 (sec. 10.1),
29 http://www.ietf.org/rfc/rfc4340.txt
30
31 To compile this CCID as a module, choose M here: the module will be
32 called dccp_ccid2.
33
34 If in doubt, say M.
35 26
36config IP_DCCP_CCID2_DEBUG 27config IP_DCCP_CCID2_DEBUG
37 bool "CCID2 debugging messages" 28 bool "CCID2 debugging messages"