Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) =============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) DCCP protocol
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) =============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) .. Contents
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)    - Introduction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)    - Missing features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)    - Socket options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)    - Sysctl variables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)    - IOCTLs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)    - Other tunables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)    - Notes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) Introduction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) Datagram Congestion Control Protocol (DCCP) is an unreliable, connection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) oriented protocol designed to solve issues present in UDP and TCP, particularly
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) for real-time and multimedia (streaming) traffic.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) It divides into a base protocol (RFC 4340) and pluggable congestion control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) modules called CCIDs. Like pluggable TCP congestion control, at least one CCID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) needs to be enabled in order for the protocol to function properly. In the Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) implementation, this is the TCP-like CCID2 (RFC 4341). Additional CCIDs, such as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) the TCP-friendly CCID3 (RFC 4342), are optional.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) For a brief introduction to CCIDs and suggestions for choosing a CCID to match
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) given applications, see section 10 of RFC 4340.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) It has a base protocol and pluggable congestion control IDs (CCIDs).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) DCCP is a Proposed Standard (RFC 2026), and the homepage for DCCP as a protocol
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) is at http://www.ietf.org/html.charters/dccp-charter.html
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) Missing features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) ================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) The Linux DCCP implementation does not currently support all the features that are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) specified in RFCs 4340...42.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) The known bugs are at:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	http://www.linuxfoundation.org/collaborate/workgroups/networking/todo#DCCP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) For more up-to-date versions of the DCCP implementation, please consider using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) the experimental DCCP test tree; instructions for checking this out are on:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) http://www.linuxfoundation.org/collaborate/workgroups/networking/dccp_testing#Experimental_DCCP_source_tree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) Socket options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) ==============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) DCCP_SOCKOPT_QPOLICY_ID sets the dequeuing policy for outgoing packets. It takes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) a policy ID as argument and can only be set before the connection (i.e. changes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) during an established connection are not supported). Currently, two policies are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) defined: the "simple" policy (DCCPQ_POLICY_SIMPLE), which does nothing special,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) and a priority-based variant (DCCPQ_POLICY_PRIO). The latter allows to pass an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) u32 priority value as ancillary data to sendmsg(), where higher numbers indicate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) a higher packet priority (similar to SO_PRIORITY). This ancillary data needs to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) be formatted using a cmsg(3) message header filled in as follows::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	cmsg->cmsg_level = SOL_DCCP;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	cmsg->cmsg_type	 = DCCP_SCM_PRIORITY;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	cmsg->cmsg_len	 = CMSG_LEN(sizeof(uint32_t));	/* or CMSG_LEN(4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) DCCP_SOCKOPT_QPOLICY_TXQLEN sets the maximum length of the output queue. A zero
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) value is always interpreted as unbounded queue length. If different from zero,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) the interpretation of this parameter depends on the current dequeuing policy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) (see above): the "simple" policy will enforce a fixed queue size by returning
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) EAGAIN, whereas the "prio" policy enforces a fixed queue length by dropping the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) lowest-priority packet first. The default value for this parameter is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) initialised from /proc/sys/net/dccp/default/tx_qlen.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) DCCP_SOCKOPT_SERVICE sets the service. The specification mandates use of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) service codes (RFC 4340, sec. 8.1.2); if this socket option is not set,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) the socket will fall back to 0 (which means that no meaningful service code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) is present). On active sockets this is set before connect(); specifying more
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) than one code has no effect (all subsequent service codes are ignored). The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) case is different for passive sockets, where multiple service codes (up to 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) can be set before calling bind().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) DCCP_SOCKOPT_GET_CUR_MPS is read-only and retrieves the current maximum packet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) size (application payload size) in bytes, see RFC 4340, section 14.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) DCCP_SOCKOPT_AVAILABLE_CCIDS is also read-only and returns the list of CCIDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) supported by the endpoint. The option value is an array of type uint8_t whose
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) size is passed as option length. The minimum array size is 4 elements, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) value returned in the optlen argument always reflects the true number of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) built-in CCIDs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) DCCP_SOCKOPT_CCID is write-only and sets both the TX and RX CCIDs at the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) time, combining the operation of the next two socket options. This option is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) preferable over the latter two, since often applications will use the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) type of CCID for both directions; and mixed use of CCIDs is not currently well
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) understood. This socket option takes as argument at least one uint8_t value, or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) an array of uint8_t values, which must match available CCIDS (see above). CCIDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) must be registered on the socket before calling connect() or listen().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) DCCP_SOCKOPT_TX_CCID is read/write. It returns the current CCID (if set) or sets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) the preference list for the TX CCID, using the same format as DCCP_SOCKOPT_CCID.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) Please note that the getsockopt argument type here is ``int``, not uint8_t.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) DCCP_SOCKOPT_RX_CCID is analogous to DCCP_SOCKOPT_TX_CCID, but for the RX CCID.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) DCCP_SOCKOPT_SERVER_TIMEWAIT enables the server (listening socket) to hold
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) timewait state when closing the connection (RFC 4340, 8.3). The usual case is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) that the closing server sends a CloseReq, whereupon the client holds timewait
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) state. When this boolean socket option is on, the server sends a Close instead
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) and will enter TIMEWAIT. This option must be set after accept() returns.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) DCCP_SOCKOPT_SEND_CSCOV and DCCP_SOCKOPT_RECV_CSCOV are used for setting the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) partial checksum coverage (RFC 4340, sec. 9.2). The default is that checksums
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) always cover the entire packet and that only fully covered application data is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) accepted by the receiver. Hence, when using this feature on the sender, it must
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) be enabled at the receiver, too with suitable choice of CsCov.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) DCCP_SOCKOPT_SEND_CSCOV sets the sender checksum coverage. Values in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	range 0..15 are acceptable. The default setting is 0 (full coverage),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	values between 1..15 indicate partial coverage.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) DCCP_SOCKOPT_RECV_CSCOV is for the receiver and has a different meaning: it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	sets a threshold, where again values 0..15 are acceptable. The default
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	of 0 means that all packets with a partial coverage will be discarded.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	Values in the range 1..15 indicate that packets with minimally such a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	coverage value are also acceptable. The higher the number, the more
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	restrictive this setting (see [RFC 4340, sec. 9.2.1]). Partial coverage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	settings are inherited to the child socket after accept().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) The following two options apply to CCID 3 exclusively and are getsockopt()-only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) In either case, a TFRC info struct (defined in <linux/tfrc.h>) is returned.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) DCCP_SOCKOPT_CCID_RX_INFO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	Returns a ``struct tfrc_rx_info`` in optval; the buffer for optval and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	optlen must be set to at least sizeof(struct tfrc_rx_info).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) DCCP_SOCKOPT_CCID_TX_INFO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	Returns a ``struct tfrc_tx_info`` in optval; the buffer for optval and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	optlen must be set to at least sizeof(struct tfrc_tx_info).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) On unidirectional connections it is useful to close the unused half-connection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) via shutdown (SHUT_WR or SHUT_RD): this will reduce per-packet processing costs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) Sysctl variables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) ================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) Several DCCP default parameters can be managed by the following sysctls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) (sysctl net.dccp.default or /proc/sys/net/dccp/default):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) request_retries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 	The number of active connection initiation retries (the number of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	Requests minus one) before timing out. In addition, it also governs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	the behaviour of the other, passive side: this variable also sets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	the number of times DCCP repeats sending a Response when the initial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	handshake does not progress from RESPOND to OPEN (i.e. when no Ack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	is received after the initial Request).  This value should be greater
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	than 0, suggested is less than 10. Analogue of tcp_syn_retries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) retries1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	How often a DCCP Response is retransmitted until the listening DCCP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	side considers its connecting peer dead. Analogue of tcp_retries1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) retries2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	The number of times a general DCCP packet is retransmitted. This has
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	importance for retransmitted acknowledgments and feature negotiation,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	data packets are never retransmitted. Analogue of tcp_retries2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) tx_ccid = 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	Default CCID for the sender-receiver half-connection. Depending on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	choice of CCID, the Send Ack Vector feature is enabled automatically.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) rx_ccid = 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	Default CCID for the receiver-sender half-connection; see tx_ccid.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) seq_window = 100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	The initial sequence window (sec. 7.5.2) of the sender. This influences
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	the local ackno validity and the remote seqno validity windows (7.5.1).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	Values in the range Wmin = 32 (RFC 4340, 7.5.2) up to 2^32-1 can be set.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) tx_qlen = 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	The size of the transmit buffer in packets. A value of 0 corresponds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	to an unbounded transmit buffer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) sync_ratelimit = 125 ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	The timeout between subsequent DCCP-Sync packets sent in response to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	sequence-invalid packets on the same socket (RFC 4340, 7.5.4). The unit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	of this parameter is milliseconds; a value of 0 disables rate-limiting.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) IOCTLS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) ======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) FIONREAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	Works as in udp(7): returns in the ``int`` argument pointer the size of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	the next pending datagram in bytes, or 0 when no datagram is pending.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) SIOCOUTQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	Returns the number of unsent data bytes in the socket send queue as ``int``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	into the buffer specified by the argument pointer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) Other tunables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) ==============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) Per-route rto_min support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 	CCID-2 supports the RTAX_RTO_MIN per-route setting for the minimum value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 	of the RTO timer. This setting can be modified via the 'rto_min' option
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 	of iproute2; for example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 		> ip route change 10.0.0.0/24   rto_min 250j dev wlan0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 		> ip route add    10.0.0.254/32 rto_min 800j dev wlan0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 		> ip route show dev wlan0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	CCID-3 also supports the rto_min setting: it is used to define the lower
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	bound for the expiry of the nofeedback timer. This can be useful on LANs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 	with very low RTTs (e.g., loopback, Gbit ethernet).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) Notes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) =====
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) DCCP does not travel through NAT successfully at present on many boxes. This is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) because the checksum covers the pseudo-header as per TCP and UDP. Linux NAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) support for DCCP has been added.