PDP-10 / its

Incompatible Timesharing System
Other
858 stars 81 forks source link

Implement coherent network configuration for SIMH based machines #2159

Open oilcan-productions opened 1 year ago

oilcan-productions commented 1 year ago

Working on issues https://github.com/PDP-10/its/issues/2153 and https://github.com/PDP-10/its/issues/2158 I found that the network configuration is not a coherent state.

Opening this enhancement request to create a more coherent state of the network configuration across all SIMH based emulators KA, KL and KS to use the IMP adapter, DHCP and TAP with a static NAT option as well.

oilcan-productions commented 1 year ago

@larsbrinkhoff please mark this as an enhancement.

oilcan-productions commented 1 year ago
eswenson1 commented 1 year ago

I think we should also combine the two (or more) CONFIGs (202 and 203?).

oilcan-productions commented 1 year ago

Host IP Definitions in CONFIG files I have found. The KS's seem all not have a IMP originally starting in 1989. I made the new assignments up in order in the config.202 files but wondering if we should actually try to preserve the original state and go with the original host IPs assigned back in the lab (if these are known) rather than a slice of the 10.3.0.0 subnet.

eswenson1 commented 1 year ago

EX is actually a hosted ITS of mine, but I don't mind changing its IP address -- since I use NAT to get to/from it anyway. However, I think it is more important to distinguish between the KA, KL, and KS systems that we actually use/build/run these days, and not worry about the configurations we don't actually build (like MC-KS, AI-KA, ML-KA, DM).

Note: when I brought up each of pdp10-ka, kl, and ks, as well as a KLH10 ITS on the same host, I needed a new config -- one for the pdp10-js. I called that one KS (since we had a KA and KL). I didn't integrate that into the github repo, though -- just have it as a local change. I think we should add a KS (for pdp10-ks) though.

oilcan-productions commented 1 year ago

Should we define which machines we want to be part of the network and set it up in a way that out of the box they all work together?

eswenson1 commented 1 year ago

Well, the issue is that configs like KA, DB, KL, (and my KS) are potentially used by multiple people -- so that there are many instances of these. Typically, when you want to host a REAL ITS, you choose an appropriate config (e.g. KA) and copy it (i.e. create a new MCOND XX block in SYSTEM;CONFIG >. In that copy, you'd want the IP address (if hosted on the real Internet) to be distinct (and real). So while a few of us might build N ITS systems (each on a different emulator) and might benefit from having distinct IP addresses, most people won't do this. If we do choose to have some showcase network fir N different ITS systems, we really should have distinct config entries (MCOND...) for those -- distinct, I mean from the KA, DB, KL, KS configs that are used simply when you pull the sources from github and build a given emulator/machine.

oilcan-productions commented 1 year ago

That makes sense, I was thinking that the generic ones would make no difference what IP address they have since it is translated through the TAP adapter which uses DHCP anyways. But using different addresses for each machine type/name in the CONFIG would allow someone to do a make EMULATOR=all and start them all up networked from the start without having to go through the configuration hassle. If we then could also allow to specify a name override using command line arguments or environment variables you could MAKE any specific configuration you wanted.

oilcan-productions commented 1 year ago

I love feature creep 🗡️

rcornwell commented 1 year ago

Note we already have a network file which you can put an IP address and also a Chaosnet address, why not just make sure that all supported configurations use this?

oilcan-productions commented 1 year ago

Note we already have a network file which you can put an IP address and also a Chaosnet address, why not just make sure that all supported configurations use this?

You mean the its/conf/network file? That would work as well. Basically need to create one for each machine or have one with a section for every machine. I was also thinking maybe using a parameter to the MAKE file could also work to override the common configuration.

rcornwell commented 1 year ago

Not sure why we would need one file for each machine. Since you can really only build one emulator at a time. The file can also be used to add in mapping to other machines.

oilcan-productions commented 1 year ago

I wanted to make it easier for someone to build multiple machines and not have to fiddle with the network configuration. But maybe that group is small enough to not worry about that right now

larsbrinkhoff commented 1 year ago

Regarding the separate config files, that's because DB exists in slightly different versions. That's why simh and klh10 got their own copy of the config file. Now there's also pdp10-ks.

I think I made an issue somewhere about merging this. Instead of having all emulators have a full config file, have one common file, and let each machine add in their section at build time.

larsbrinkhoff commented 1 year ago

When I did the KA config, I wanted it to be named DB too, as the official "built off GitHub" ITS name. But for some reason that didn't work with the current scheme. Maybe it can be fixed with a config rework, or maybe it's too late now.

larsbrinkhoff commented 1 year ago

See https://github.com/PDP-10/its/issues/1172

larsbrinkhoff commented 1 year ago

you can really only build one emulator at a time.

That's true, but note that you can build for several emulators sequentially. The output will go to the directory out/\. Maybe with some care this could be fixed to support parallel builds, but it's not clear this would be overly useful.

rcornwell commented 1 year ago

Not sure I like idea of assembling the config file for each emulator build. This is basically what we have now. I am kind of the idea, one config file with different machine names.

larsbrinkhoff commented 1 year ago

One of the drawbacks of the current scheme, is that there is repeated information in all copies of the config file (see #1172). If you want to make an update to the common code, you have to edit all copies. The idea is to have one single copy of the common config, and then add in the machine-specific part.

eswenson1 commented 1 year ago

👍

larsbrinkhoff commented 1 year ago

I love feature creep

If feasible, I suggest doing the network configuration update separate from #1172. Often the feature creep blow things up and in the end it's a mess.