> Can you explain why 100ms seems reasonable? Longer than that would become noticable in those cases where DCCP-RAW was being blocked.
> I commonly use paths that have much longer delays than this, > and would > have expected native DCCP/IP encapsulation to still be used in these > cases, rather than defaulting to an encapsulated format. The algorithm I am proposing would still achieve that. The algorithm I am proposing has you send a DCCP-RAW request and wait 100ms for a response. If no DCCP-RAW response is received in that 100ms, you then try DCCP-UDP. You do _not_ abandon the DCCP-RAW connection attempt, however. This will provide you with a DCCP-RAW connection even over >100ms round-trip delay paths. I agree that if the first DCCP-RAW request is dropped (due to network congestion or other reasons) you may, for that connection, end up with DCCP-UDP (assuming the DCCP-UDP request and its response are not dropped). I don't see a solution to that problem, other than waiting a really long time for the DCCP-RAW to fail. Waiting a really long time for DCCP-RAW to fail will make DCCP-UDP seem very slow at connection establishment, and I will cause DCCP-UDP connection setup to be perceived as 'slow' by users and user applications. The case with no middlebox (NAT or firewall): DCCP client DNS server DCCP server ----------- ---------- ----------- | | | |---- DNS SRV?----------------->| | |---- DNS A?------------------->| | |<--- DNS SRV ------------------| | (not used)|<--- DNS A - ------------------| | |----------------------- DCCP-RAW request----->| (wait 100ms) |----------------------- DCCP-UDP request ---->| |<--- DCCP-RAW response -----------------------| (continue with DCCP-RAW connection) |<--- DCCP-UDP response -----------------------| (this DCCP-UDP response isn't needed, so abort it) |----------------------- DCCP-UDP close ------>| | | | with a middlebox: DCCP client middlebox DNS server DCCP server ----------- --------- ---------- ----------- | | | | |---- DNS SRV?----------------->| | |---- DNS A?------------------->| | |<--- DNS SRV ------------------| | (not used)|<--- DNS A - ------------------| | |---------------X | | (wait 100ms) | | | |----------------------- DCCP-UDP request ---->| |<--- DCCP-UDP response -----------------------| (continue with DCCP-UDP connection) | | | | | | -d