On 03/03/2026 03.22, Paul Koning wrote:
On Mar 2, 2026, at 7:23 PM, Johnny Billquist
<bqt(a)softjar.se> wrote:
On 2026-03-02 19:00, Paul Koning wrote:
...
Did you really mean that you have a Multinet
header followed by a
DDCMPheader? Or did you just mean that you use the point to point
datalink dependent routing sublayer, passing it the Multinet payload
or the DDCMP payload depending on which datalink is used? That
second option is what Iwould expect, and for Multinet over TCP will
work tolerably well -- at least if you use disconnect and reconnect
at the TCP layer to do the datalink reinitialization that's a
required point to point service the Multinet "designers" didn't
bother to implement.
The latter. Sorry.
But just to point out something else that should be somewhat obvious -
multinet over TCP is better than DDCMP over TCP. You don't need the
DDCMP layer processing, since TCP is already guaranteeing what DDCMP
otherwise provides. So using DDCMP just adds extra processing and
bytes to transfer compared to Multinet, without any actual gain.
Mostly true, for DDCMP over TCP. DDCMP also runs very well over UDP,
and typically set it up that way.
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.
As I mentioned, one datalink layer service the routing
layer requires is
notification of remote restart. DDCMP does that, Multinet doesn't. At
least, not unless it passes an underlying restart of the TCP connection
up to routing. PyDECnet does that, I don't know if VMS or RSX do. The
fact that Multinet over UDP doesn't (can't) do it is the main defect; it
means that a restart of one side messes up the other, potentially for a
long time, because the routing init handshake falls apart without the
datalink layer support.
Multinet links do need to inform DECnet if the link is dropped. VMS does
that, and so do I. Because what happens when the connection is
reestablished is that you get a new init exchange. Which with TCP is
easy and obvious. With UDP it becomes a bit of guesswork. Usually it's
easier to just let DECnet itself declare the circuit down because of
timeouts. But I do also check if I see an init packet, and do a reset in
that case, if I remember right.
Johnny