On Mar 3, 2026, at 11:42 AM, Johnny Billquist
<bqt(a)softjar.se> wrote:
On 03/03/2026 15.58, Paul Koning wrote:
On Mar 3,
2026, at 4:40 AM, Johnny Billquist <bqt(a)softjar.se> wrote:
...
DDCMP will notice and handle out of order packets, but it still means it have to restart
the circuit, so UDP in this case is still not a great idea. The better option would be to
use the same datalink mode/protocol as ethernet does, which is designed for the occasional
dropped packet or out of order packet.
Not true. DDCMP does not restart the link
on out of order packets. Instead, it drops the out of order packet, and then timeout of
the ACK willcause it to be retransmitted.
Ah. I had the broken understanding that DDCMP also restarted at that point. Ok, so it
resyncs and gets back in order on its own? That's nice.
I haven't looked at DDCMP in years...
DDCMP is pretty simple, especially if you skip over the half duplex stuff and the
initialization handshake (though that will look familiar if you know NSP or TCP, which
adopted the 3-way handshake DDCMP introduced).
DDCMP is a lot like NSP or TCP: packets, sequence numbers, timeout & retransmit. One
small difference is that on timeout DDCMP doesn't just retransmit the packet; instead
it sends a REP message which essentially asks the other end to repeat its current ACK.
The idea is to avoid the overhead of sending a whole packet if the link is slow. For
links fast enough that the packet send time is small compared to the round trip latency,
that isn't interesting, but considering that DDCMP was designed when a medium speed
link was 1200 baud and 9600 was considered "high speed", it makes sense.
paul