diff options
Diffstat (limited to 'Documentation/networking/dccp.txt')
-rw-r--r-- | Documentation/networking/dccp.txt | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/Documentation/networking/dccp.txt b/Documentation/networking/dccp.txt index afb66f9a8aff..39131a3c78f8 100644 --- a/Documentation/networking/dccp.txt +++ b/Documentation/networking/dccp.txt | |||
@@ -14,24 +14,35 @@ Introduction | |||
14 | ============ | 14 | ============ |
15 | 15 | ||
16 | Datagram Congestion Control Protocol (DCCP) is an unreliable, connection | 16 | Datagram Congestion Control Protocol (DCCP) is an unreliable, connection |
17 | based protocol designed to solve issues present in UDP and TCP particularly | 17 | oriented protocol designed to solve issues present in UDP and TCP, particularly |
18 | for real time and multimedia traffic. | 18 | for real-time and multimedia (streaming) traffic. |
19 | It divides into a base protocol (RFC 4340) and plugable congestion control | ||
20 | modules called CCIDs. Like plugable TCP congestion control, at least one CCID | ||
21 | needs to be enabled in order for the protocol to function properly. In the Linux | ||
22 | implementation, this is the TCP-like CCID2 (RFC 4341). Additional CCIDs, such as | ||
23 | the TCP-friendly CCID3 (RFC 4342), are optional. | ||
24 | For a brief introduction to CCIDs and suggestions for choosing a CCID to match | ||
25 | given applications, see section 10 of RFC 4340. | ||
19 | 26 | ||
20 | It has a base protocol and pluggable congestion control IDs (CCIDs). | 27 | It has a base protocol and pluggable congestion control IDs (CCIDs). |
21 | 28 | ||
22 | It is at proposed standard RFC status and the homepage for DCCP as a protocol | 29 | DCCP is a Proposed Standard (RFC 2026), and the homepage for DCCP as a protocol |
23 | is at: | 30 | is at http://www.ietf.org/html.charters/dccp-charter.html |
24 | http://www.read.cs.ucla.edu/dccp/ | ||
25 | 31 | ||
26 | Missing features | 32 | Missing features |
27 | ================ | 33 | ================ |
28 | 34 | ||
29 | The DCCP implementation does not currently have all the features that are in | 35 | The Linux DCCP implementation does not currently support all the features that are |
30 | the RFC. | 36 | specified in RFCs 4340...42. |
31 | 37 | ||
32 | The known bugs are at: | 38 | The known bugs are at: |
33 | http://linux-net.osdl.org/index.php/TODO#DCCP | 39 | http://linux-net.osdl.org/index.php/TODO#DCCP |
34 | 40 | ||
41 | For more up-to-date versions of the DCCP implementation, please consider using | ||
42 | the experimental DCCP test tree; instructions for checking this out are on: | ||
43 | http://linux-net.osdl.org/index.php/DCCP_Testing#Experimental_DCCP_source_tree | ||
44 | |||
45 | |||
35 | Socket options | 46 | Socket options |
36 | ============== | 47 | ============== |
37 | 48 | ||
@@ -46,6 +57,12 @@ can be set before calling bind(). | |||
46 | DCCP_SOCKOPT_GET_CUR_MPS is read-only and retrieves the current maximum packet | 57 | DCCP_SOCKOPT_GET_CUR_MPS is read-only and retrieves the current maximum packet |
47 | size (application payload size) in bytes, see RFC 4340, section 14. | 58 | size (application payload size) in bytes, see RFC 4340, section 14. |
48 | 59 | ||
60 | DCCP_SOCKOPT_SERVER_TIMEWAIT enables the server (listening socket) to hold | ||
61 | timewait state when closing the connection (RFC 4340, 8.3). The usual case is | ||
62 | that the closing server sends a CloseReq, whereupon the client holds timewait | ||
63 | state. When this boolean socket option is on, the server sends a Close instead | ||
64 | and will enter TIMEWAIT. This option must be set after accept() returns. | ||
65 | |||
49 | DCCP_SOCKOPT_SEND_CSCOV and DCCP_SOCKOPT_RECV_CSCOV are used for setting the | 66 | DCCP_SOCKOPT_SEND_CSCOV and DCCP_SOCKOPT_RECV_CSCOV are used for setting the |
50 | partial checksum coverage (RFC 4340, sec. 9.2). The default is that checksums | 67 | partial checksum coverage (RFC 4340, sec. 9.2). The default is that checksums |
51 | always cover the entire packet and that only fully covered application data is | 68 | always cover the entire packet and that only fully covered application data is |
@@ -72,6 +89,8 @@ DCCP_SOCKOPT_CCID_TX_INFO | |||
72 | Returns a `struct tfrc_tx_info' in optval; the buffer for optval and | 89 | Returns a `struct tfrc_tx_info' in optval; the buffer for optval and |
73 | optlen must be set to at least sizeof(struct tfrc_tx_info). | 90 | optlen must be set to at least sizeof(struct tfrc_tx_info). |
74 | 91 | ||
92 | On unidirectional connections it is useful to close the unused half-connection | ||
93 | via shutdown (SHUT_WR or SHUT_RD): this will reduce per-packet processing costs. | ||
75 | 94 | ||
76 | Sysctl variables | 95 | Sysctl variables |
77 | ================ | 96 | ================ |
@@ -123,6 +142,12 @@ sync_ratelimit = 125 ms | |||
123 | sequence-invalid packets on the same socket (RFC 4340, 7.5.4). The unit | 142 | sequence-invalid packets on the same socket (RFC 4340, 7.5.4). The unit |
124 | of this parameter is milliseconds; a value of 0 disables rate-limiting. | 143 | of this parameter is milliseconds; a value of 0 disables rate-limiting. |
125 | 144 | ||
145 | IOCTLS | ||
146 | ====== | ||
147 | FIONREAD | ||
148 | Works as in udp(7): returns in the `int' argument pointer the size of | ||
149 | the next pending datagram in bytes, or 0 when no datagram is pending. | ||
150 | |||
126 | Notes | 151 | Notes |
127 | ===== | 152 | ===== |
128 | 153 | ||