| DCCP protocol | |
| ============ | |
| Contents | |
| ======== | |
| - Introduction | |
| - Missing features | |
| - Socket options | |
| - Notes | |
| Introduction | |
| ============ | |
| Datagram Congestion Control Protocol (DCCP) is an unreliable, connection | |
| based protocol designed to solve issues present in UDP and TCP particularly | |
| for real time and multimedia traffic. | |
| It has a base protocol and pluggable congestion control IDs (CCIDs). | |
| It is at draft RFC status and the homepage for DCCP as a protocol is at: | |
| http://www.icir.org/kohler/dcp/ | |
| Missing features | |
| ================ | |
| The DCCP implementation does not currently have all the features that are in | |
| the draft RFC. | |
| In particular the following are missing: | |
| - CCID2 support | |
| - feature negotiation | |
| When testing against other implementations it appears that elapsed time | |
| options are not coded compliant to the specification. | |
| Socket options | |
| ============== | |
| DCCP_SOCKOPT_PACKET_SIZE is used for CCID3 to set default packet size for | |
| calculations. | |
| DCCP_SOCKOPT_SERVICE sets the service. The specification mandates use of | |
| service codes (RFC 4340, sec. 8.1.2); if this socket option is not set, | |
| the socket will fall back to 0 (which means that no meaningful service code | |
| is present). Connecting sockets set at most one service option; for | |
| listening sockets, multiple service codes can be specified. | |
| Notes | |
| ===== | |
| SELinux does not yet have support for DCCP. You will need to turn it off or | |
| else you will get EACCES. | |
| DCCP does not travel through NAT successfully at present. This is because | |
| the checksum covers the psuedo-header as per TCP and UDP. It should be | |
| relatively trivial to add Linux NAT support for DCCP. |