Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Chaosnet broadcast sending #2290

Merged
merged 4 commits into from
Mar 22, 2024
Merged

Conversation

bictorv
Copy link
Contributor

@bictorv bictorv commented Mar 12, 2024

ITS learns how to send BRD packets. Note that it is slightly different from the spec (MIT AIM 628 Sec 4.5) in that BRD packets are retransmitted by ITS, and only ANS responses are delivered to the user, until the user closes the channel. This requires some discipline of the user, to use reasonably short timeouts and closing the channel. Often you also need to use an interrupt routine to detect incoming packets, since NETBLK isn't useful.

Example programs are included: CHATST gets a new "BRD" command, and NAME learns to use broadcast for the /L switch ("associated lisp machines") and for the *LISPM ("all lispms") JCL (note: not @*LISPM). The /L switch uses broadcast on the local subnet, while *LISPM uses global broadcast. Additionally, NAMDRG uses broadcast to find lispm users and free lisp machines (see #2195 ).

PEEK learns to show the Broadcast-sent (or BRDSNT) state of Chaosnet connections.

(For klh10 using ifmeth=chudp, the most recent version of klh10 is required in order for broadcast packets to actually be sent on chudp links. For ifmeth=pcap, it works also on older versions.)

Future work:

  • implement broadcast TIME checking
  • teach NAME to show free lisp machines
  • teach NAME to broadcast using the LOAD protocol, and for responses with Users: n for n>0, connect with the NAME protocol and show who's on.

Acknowledgement: Many thanks to @larsbrinkhoff for the new mlftp program, which increased productivity! (See branch of https://github.com/Chaosnet/chaosnet-tools.)

6TYPE (A)[SIXBIT/CLOSED/
SIXBIT/LISTEN/
SIXBIT/RFCRCV/
SIXBIT/RFCSNT/
SIXBIT/OPEN /
SIXBIT/LOS /
SIXBIT/INCXMT/
SIXBIT/LOWLVL/
SIXBIT/FORIGN/ ;Foreign protocol mode
SIXBIT/BRDSNT/ ;Broadcast sent
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You added two more strings, but only increased the number by one. Is that right?

Copy link
Member

@eswenson1 eswenson1 Mar 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems he deleted one and added two to me, for a net gain of 1.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously the state %CSFRN (foreign protocol mode) would be presented as "LOWLVL" which seems arachaic (FORIGN is clearer, in my mind), while anything over %CSFRN was presented as "GARBAG". With the new code, %CSBRS (which is %CSFRN+1) is "BRDSNT" and anything higher is "GARBAG".

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, right! Never mind then.

@larsbrinkhoff
Copy link
Member

Very nice!

copy code from NAME to NAMDRG, to solve issue #2195

My only known issue with NAMDRG not finding free Lispms is that there are none on the network. Can you explain how NAMDRG worked or didn't work before, and how broadcasting would impact that?

@bictorv
Copy link
Contributor Author

bictorv commented Mar 12, 2024

Very nice!

copy code from NAME to NAMDRG, to solve issue #2195

My only known issue with NAMDRG not finding free Lispms is that there are none on the network. Can you explain how NAMDRG worked or didn't work before, and how broadcasting would impact that?

Without broadcast, NAMDRG would need to know (hardwired in the code) all lispms that might be free or not. With broadcast, they respond whereever they are (with up-to-date code running, which is now "years old").

@bictorv
Copy link
Contributor Author

bictorv commented Mar 12, 2024

But I'm seriously considering marking this PR as "draft" until I played^Wexperiemented more with manual retransmissions. It might not be as awkward as I imagined.

@bictorv
Copy link
Contributor Author

bictorv commented Mar 21, 2024

Now NAMDRG uses broadcast, too. (And shows the whole location of free lispm instead of stopping at the first space.)

Copy link
Member

@larsbrinkhoff larsbrinkhoff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bumped NAMDRG version.

@larsbrinkhoff larsbrinkhoff merged commit ed921b8 into master Mar 22, 2024
14 checks passed
@larsbrinkhoff larsbrinkhoff deleted the broadcasting-chaos branch March 22, 2024 10:51
Copy link
Member

@eswenson1 eswenson1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed, @larsbrinkhoff, that you didn’t bump the version of SYSTEM;CHAOS. Is that because we did in the other PR? Ideally FN2 should increment after every PR, in my mind.

@larsbrinkhoff
Copy link
Member

Right, these were merged in quick succession so I figured it would not cause a problem to anyone if the version wasn't bumped again.

@eswenson1
Copy link
Member

Ok.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants