[HECnet] MIM?

Johnny Billquist bqt at softjar.se
Tue Oct 23 10:45:53 PDT 2018


Hi, Paul. We've had plenty of discussions about this in the past... :-)

On 2018-10-23 17:44, Paul Koning wrote:
> 
> 
>> On Oct 23, 2018, at 10:48 AM, Johnny Billquist <bqt at softjar.se> wrote:
>>
>> On 2018-10-23 15:51, Paul Koning wrote:
>>>> On Oct 23, 2018, at 3:54 AM, Johnny Eriksson <bygg at cafax.se> wrote:
>>>> ...
>>>> If tcpdump knew about this, it would look somewhat like:
>>>>
>>>>   Init, 1.13 info 01 size 576 ver 2/0/0 timer 300
>>>>
>>>> Why MIM decided to restart the link is another question.
>>> I would guess that is a Multinet link, right?  A conforming DECnet implementation would not send an init message without restarting the data link layer first, which would produce a "circuit down" event.  So the unexpected packet type is indeed a reasonable complaint for it to generate.
>>
>> Yes, it's a Multinet link. In addition, it's one carried over TCP, so I'm a bit curious why you would get an init packet here. When the TCP connection was lost, the circuit should have gone down.
>> And you would not be able to get a new init packet before a new TCP connection was established.
>>
>> But then again, I do not properly know how the Multinet implementation works internally, and I have been struggling from time to time to get it all working the right way. So I might also not be doing things in a fully matching manner to what Mutlinet does. If anyone have any knowledge of the internals of the Multinet implementation, I'd love to talk with them.
> 
> I had some traces sent to me a while ago which I used to implement the Multinet over TCP code in pydecnet.  But that doesn't show what the internals of the host looks like.

Same here. And my problems are really about what Multinet might be doing 
internally, as it is not as trivial and straight forward as one might 
hope. Or at least it is not on the RSX side.

> The fundamental error in the Multinet design is that, in the UDP case, it doesn't implement the data link requirements for point to point routing circuits.  In particular, there is no notion of "data link restart", of course.  So my guess would be that your Multinet endpoint doesn't bother with that for TCP either.  The correct implementation would be for a TCP connection reset to trigger a datalink shutdown notification to routing.  If that were done things would work correctly.

Sortof. Yes, there is indeed a problem here related to UDP.
However, at least my code do handle TCP in the sane way you might think 
it should. So RSX DECnet definitely gets a line down notification when 
the TCP connection is lost. And once it is reestablished the line goes 
up and DECnet can renegotiate.
Which is why I am wondering why, on the VMS side, you see an INIT 
message out of sequence. It should only come when the line comes up, 
which naturally should only happen when the TCP connection is established.

So, what is Multinet actually doing here???

As for the UDP case, it's way more tricky, at least on the RSX side, as 
I cannot trivially detect when a link comes up. And RSX DECnet will only 
send one INIT packet when the line comes up. So I need to keep that INIT 
packet internally on my Multinet-side, and retransmit it on a regular 
basis until the other side responds with an INIT packet of its own, at 
which time I can proceed with the relaying of packets between DECnet and 
the remote side, and let the link become established. But that also 
means I need to detect if a new INIT packet happens, since that needs to 
restart the syncing. So at an INIT I need to tell DECnet that the line 
went down, and then up again, so that RSX DECnet will send a new INIT 
packet.

And at startup I need to filter out if I happen to get multiple INIT 
packets, since I only want to deliver one to DECnet.

> I have some comments in multinet.py implying that there is indeed no connection between TCP restart and Multinet restart even in TCP mode.  It's been long enough that I don't remember the details.

That would be interesting to know more of the story behind. I can't see 
how Multinet would not signal a line down when the TCP connection is 
lost. And it would be pretty obvious that the line comes back up when 
the TCP connection is established.

   Johnny

-- 
Johnny Billquist                  || "I'm on a bus
                                   ||  on a psychedelic trip
email: bqt at softjar.se             ||  Reading murder books
pdp is alive!                     ||  tryin' to stay hip" - B. Idol


More information about the Hecnet-list mailing list