On May 8, 2013, at 4:51 PM, Dennis Boone wrote:
I gather the "multinet" protocol is how much of hecnet is tied
together. Is that right? Is there a protocol description for it, or
code that implements it?
It wraps decnet frames in udp frames, typically on port 700. The linux
decnet package has an implementation of it, and the source is reasonably
easy to follow.
I think I figured it out. The DECnet/Linux code is in dnprogs, file multinet.c
It's quite a hack. DECnet/Linux apparently only supports Ethernet datalinks. Or at
least the multinet stuff hooks into the Ethernet machinery (via a tun/tap port). But it
converts the packet stream into the point to point flavor of the protocol, at least a
close enough approximation that it basically works.
Ok, that helps, because it basically means I need to do another point to point link
(closely analogous to the simh DDCMP emulation).
One detail is unclear: it looks like the first four bytes of the datagram are a 2 byte
sequence number followed by 2 bytes of padding. The code isn't doing anything with
the sequence number on receipt. And it doesn't ever seem to reset the sequence
number. So what, if anything, is it used for?
Part of the puzzle is that the DECnet routing spec requires point to point links not to
lose packets -- which DDCMP guarantees. UDP does not, obviously. It doesn't even
guarantee sequential delivery. And while DECnet can deal reasonably well with lost
packets, reordered packets on a datalink are not something the state machine was designed
for. I suppose that real world packet loss/reordering rates are low enough that it works
well enough by the standards of the people who invented this scheme, even though it
wouldn't have passed muster in the DECnet architecture team...
paul