1 .. SPDX-License-Identifier: GPL-2.0 2 3 ============= 4 DCCP protocol 5 ============= 6 7 8 .. Contents 9 - Introduction 10 - Missing features 11 - Socket options 12 - Sysctl variables 13 - IOCTLs 14 - Other tunables 15 - Notes 16 17 18 Introduction 19 ============ 20 Datagram Congestion Control Protocol (DCCP) is 21 oriented protocol designed to solve issues pre 22 for real-time and multimedia (streaming) traff 23 It divides into a base protocol (RFC 4340) and 24 modules called CCIDs. Like pluggable TCP conge 25 needs to be enabled in order for the protocol 26 implementation, this is the TCP-like CCID2 (RF 27 the TCP-friendly CCID3 (RFC 4342), are optiona 28 For a brief introduction to CCIDs and suggesti 29 given applications, see section 10 of RFC 4340 30 31 It has a base protocol and pluggable congestio 32 33 DCCP is a Proposed Standard (RFC 2026), and th 34 is at http://www.ietf.org/html.charters/dccp-c 35 36 37 Missing features 38 ================ 39 The Linux DCCP implementation does not current 40 specified in RFCs 4340...42. 41 42 The known bugs are at: 43 44 http://www.linuxfoundation.org/collabo 45 46 For more up-to-date versions of the DCCP imple 47 the experimental DCCP test tree; instructions 48 http://www.linuxfoundation.org/collaborate/wor 49 50 51 Socket options 52 ============== 53 DCCP_SOCKOPT_QPOLICY_ID sets the dequeuing pol 54 a policy ID as argument and can only be set be 55 during an established connection are not suppo 56 defined: the "simple" policy (DCCPQ_POLICY_SIM 57 and a priority-based variant (DCCPQ_POLICY_PRI 58 u32 priority value as ancillary data to sendms 59 a higher packet priority (similar to SO_PRIORI 60 be formatted using a cmsg(3) message header fi 61 62 cmsg->cmsg_level = SOL_DCCP; 63 cmsg->cmsg_type = DCCP_SCM_PRIORITY; 64 cmsg->cmsg_len = CMSG_LEN(sizeof(uin 65 66 DCCP_SOCKOPT_QPOLICY_TXQLEN sets the maximum l 67 value is always interpreted as unbounded queue 68 the interpretation of this parameter depends o 69 (see above): the "simple" policy will enforce 70 EAGAIN, whereas the "prio" policy enforces a f 71 lowest-priority packet first. The default valu 72 initialised from /proc/sys/net/dccp/default/tx 73 74 DCCP_SOCKOPT_SERVICE sets the service. The spe 75 service codes (RFC 4340, sec. 8.1.2); if this 76 the socket will fall back to 0 (which means th 77 is present). On active sockets this is set bef 78 than one code has no effect (all subsequent se 79 case is different for passive sockets, where m 80 can be set before calling bind(). 81 82 DCCP_SOCKOPT_GET_CUR_MPS is read-only and retr 83 size (application payload size) in bytes, see 84 85 DCCP_SOCKOPT_AVAILABLE_CCIDS is also read-only 86 supported by the endpoint. The option value is 87 size is passed as option length. The minimum a 88 value returned in the optlen argument always r 89 built-in CCIDs. 90 91 DCCP_SOCKOPT_CCID is write-only and sets both 92 time, combining the operation of the next two 93 preferable over the latter two, since often ap 94 type of CCID for both directions; and mixed us 95 understood. This socket option takes as argume 96 an array of uint8_t values, which must match a 97 must be registered on the socket before callin 98 99 DCCP_SOCKOPT_TX_CCID is read/write. It returns 100 the preference list for the TX CCID, using the 101 Please note that the getsockopt argument type 102 103 DCCP_SOCKOPT_RX_CCID is analogous to DCCP_SOCK 104 105 DCCP_SOCKOPT_SERVER_TIMEWAIT enables the serve 106 timewait state when closing the connection (RF 107 that the closing server sends a CloseReq, wher 108 state. When this boolean socket option is on, 109 and will enter TIMEWAIT. This option must be s 110 111 DCCP_SOCKOPT_SEND_CSCOV and DCCP_SOCKOPT_RECV_ 112 partial checksum coverage (RFC 4340, sec. 9.2) 113 always cover the entire packet and that only f 114 accepted by the receiver. Hence, when using th 115 be enabled at the receiver, too with suitable 116 117 DCCP_SOCKOPT_SEND_CSCOV sets the sender checks 118 range 0..15 are acceptable. The defaul 119 values between 1..15 indicate partial 120 121 DCCP_SOCKOPT_RECV_CSCOV is for the receiver an 122 sets a threshold, where again values 0 123 of 0 means that all packets with a par 124 Values in the range 1..15 indicate tha 125 coverage value are also acceptable. Th 126 restrictive this setting (see [RFC 434 127 settings are inherited to the child so 128 129 The following two options apply to CCID 3 excl 130 In either case, a TFRC info struct (defined in 131 132 DCCP_SOCKOPT_CCID_RX_INFO 133 Returns a ``struct tfrc_rx_info`` in o 134 optlen must be set to at least sizeof( 135 136 DCCP_SOCKOPT_CCID_TX_INFO 137 Returns a ``struct tfrc_tx_info`` in o 138 optlen must be set to at least sizeof( 139 140 On unidirectional connections it is useful to 141 via shutdown (SHUT_WR or SHUT_RD): this will r 142 143 144 Sysctl variables 145 ================ 146 Several DCCP default parameters can be managed 147 (sysctl net.dccp.default or /proc/sys/net/dccp 148 149 request_retries 150 The number of active connection initia 151 Requests minus one) before timing out. 152 the behaviour of the other, passive si 153 the number of times DCCP repeats sendi 154 handshake does not progress from RESPO 155 is received after the initial Request) 156 than 0, suggested is less than 10. Ana 157 158 retries1 159 How often a DCCP Response is retransmi 160 side considers its connecting peer dea 161 162 retries2 163 The number of times a general DCCP pac 164 importance for retransmitted acknowled 165 data packets are never retransmitted. 166 167 tx_ccid = 2 168 Default CCID for the sender-receiver h 169 choice of CCID, the Send Ack Vector fe 170 171 rx_ccid = 2 172 Default CCID for the receiver-sender h 173 174 seq_window = 100 175 The initial sequence window (sec. 7.5. 176 the local ackno validity and the remot 177 Values in the range Wmin = 32 (RFC 434 178 179 tx_qlen = 5 180 The size of the transmit buffer in pac 181 to an unbounded transmit buffer. 182 183 sync_ratelimit = 125 ms 184 The timeout between subsequent DCCP-Sy 185 sequence-invalid packets on the same s 186 of this parameter is milliseconds; a v 187 188 189 IOCTLS 190 ====== 191 FIONREAD 192 Works as in udp(7): returns in the ``i 193 the next pending datagram in bytes, or 194 195 SIOCOUTQ 196 Returns the number of unsent data byte 197 into the buffer specified by the argum 198 199 Other tunables 200 ============== 201 Per-route rto_min support 202 CCID-2 supports the RTAX_RTO_MIN per-r 203 of the RTO timer. This setting can be 204 of iproute2; for example:: 205 206 > ip route change 10.0.0.0/24 207 > ip route add 10.0.0.254/3 208 > ip route show dev wlan0 209 210 CCID-3 also supports the rto_min setti 211 bound for the expiry of the nofeedback 212 with very low RTTs (e.g., loopback, Gb 213 214 215 Notes 216 ===== 217 DCCP does not travel through NAT successfully 218 because the checksum covers the pseudo-header 219 support for DCCP has been added.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.