> 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