I've seen/heard of various stories about how people update their
nodename databases on their machines, hacking together scripts, and
processing files. So I figured I should write a small mail about the
topic (I should create a web-page with this information as well).
The main/basic point is that people are creating work for themselves
they really don't need.
Exactly how you update your nodename database on your machine depends on
what OS you are running, but there are basically prepared tools and
scripts already existing for pretty much any scenario. And if you happen
to have a system or need not currently covered, I can easily create one
for you as well.
But before going into the solutions, let me explain a bit about the
source of the data here.
DECnet phase IV do not have a centralized nodename system like DNS. Each
node in the DECnet network has its own nodename database, and every
machine can have its own name for another machine, independent of what
that other machine thinks its own nodename is.
However, in order to make it easier for multiple people and machines to
talk, it helps if everyone have a somewhat similar database. And here is
where the nodename database in MIM comes it. The nodename database that
I have on MIM is not the regular DECnet nodename database. Instead I'm
using DATATRIEVE to maintain a nodename database, which contains more
information than just the number and name. It contains the owner,
information about the software and hardware of the node, the location,
and when things were updated. This database is what is queried when
someone goes to http://mim.stupi.net/nodedb . And that page is generated
by just making queries in DATATRIEVE. If someone have a host with
DATATRIEVE on it, it is even possible to remotely access this DATATRIEVE
database over DECnet (you'll only have read-only access).
I have been considering possibly adding a web interface for people to
possibly be able to update their own information remotely, but so far
that's been a low priority thing. Maybe one day...
From this DATATRIEVE database I can then generate the DECnet nodename
database on MIM. This is a simple makefile actually. Whenever I run it,
it will create a bunch of different files (I'll get to that in a
moment), and detect if any changes have happened on the DECnet level of
things. If so, it will send a mail to people who have requested it,
informing them that the nodename database have been updated, and they
should update the nodename database of their own machines.
I hope this makes it apparent that creating various files based on the
nodename database is actually very simple. This is in a sense what
DATATRIEVE is good at. Creating reports is sortof what all these output
files are.
So - what files do I create today? Well, here is a short list:
FIX.CMD - This is a script file suitable for RSX systems using CFE.
However, it's sortof specially tailored for MIM, so it's not a file I
would recommend anyone else to use.
FIX.COM - This is a script for VMS systems using phase IV.
FIX.PHV - This is a script for VMS systems using phase V.
FIX.IMP - This is a script for VMS for anyone using DECdns.
FIX.T20 - This is a script for TOPS-20.
HECNET.PY - This is a definition file for PyDECnet.
FIX.RST - This is a script for RSTS/E.
NODENAMES.DAT - This is basically just the basic information is a simple
output form from DATATRIEVE. It exist mostly for historical reasons, but
I understand that lots of people actually take this file, and then write
code to process, extract and apply information from this file.
In addition, some systems can directly import nodenames from another
machine on DECnet, meaning you do not have to fetch and run any scripts
at all.
So here is the actioins you need to do on each system in a summarized form:
RSX:
In RSX, there is a tool called NNC which copies definitions from another
node. Copy over MIM::HECNET:NNC.BAT which is a batch file you can use
which does all the work of importing the latest definitions from MIM and
updating your local system. All you need to do is just "SUBMIT NNC.BAT"
and you are done.
VMS:
With phase IV, the node copy capability is build into NCP. All you need
to do is: "NCP COPY KNOWN NODES FROM MIM TO BOTH" and you are done.
With phase V, copy over FIX.PHV and run it, or just directly run it from
MIM like this: "@MIM::HECNET:FIX.PHV"
If you run DECdns, grab FIX.IMP, and run it with whatever tool is used
to manage this (sorry that I can't help more, I don't really have any
experience with DECdns).
TOPS-20:
Grab MIM::HECNET:FIX.T20 and run in in the NCP submode of OPR (if I
remember the setup correctly).
RSTS/E:
Grab MIM::HECNET:FIX.RST, and run it with "@FIX.RST".
PyDECnet:
Fetch hecnet.py by doing "wget mim.stupi.net/hecnet.py". Place that
where you have configured PyDECnet to get the nodenames from, and you
are good (not sure if you need to restart PyDECnet).
Now. If you have some other system with some specific format you need,
just let me know, and I'll create such a file as well. It's trivial for
me to do this from DATATRIEVE. If you spot something wrong/bad in some
file created today, let me know, and we'll fix it. If you see any errors
or omissions in the information in this mail, let me know, and I'll get
it corrected. I will create a web page with this information as well.
If you want to get a mail whenever the nodename database is updated,
just let me know and I'll add you to the list.
And HECnet is slowly growing. Occasionally a completely new person/site
gets connected. Occasionally people add more nodes. The online presence
seems pretty constant. At the moment 19 areas are online. In area 1,
currently there are 19 machines online. Looking at Paul's HECnet map
(http://akdesign.dyndns.org:8080/map), there are machines online in
quite different locations, covering a large part of the world. I find
this cool, and even though there isn't a lot being done, it's still fun.
Well. Have a nice weekend everyone, and I hope some people find this
information useful.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt(a)softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
I believe I did send an earlier version of this to the list yesterday,
as I even saw Thomas comment on it, but somehow I can't find it in the
mailing list archive at lists.dfupdate.se now, so in order to follow up
on those questions, I'm sorry to bother you with what is likely a partial
repeat post.
My Maneframe-6 data centre is back in operation; thanks for allthe support
andfeedback, includingthe serendipitous information on DECnet over CI
which I don't use (I'dlike to have an emulated CI-20 interface as well,
even in the form of an Am2900-based emulator running the CI20 microcode as
provided with TOPS-20.
My apologies everyone for having youspendtime on what seems tohave been
a totally self-inflicted problem on my part. My earlier "moving around"
involved trying to find the appropriate commands to bring down the bridge
to its default state in order to perform a clean restart. It turns out that
I failed to bring down some tap interfaces before deleting the bridge,
which led to
a defective bridge configuration being left running. Then I
tried restarting pydecnet and that's when the problems showed up. Thanks to
Thomas, Johnny and David for putting me on the right track.
Several of you asked for how I configured the KLH10 networkinterfaces, and
I remarked on that while hinting at my incomplete testing procedure. I
should have taken down the bridge completely, and restarted the KLH10
instances, which would have resolved theproblem, before asking the list:
>The KLH10 instances obtain their tap interfaces as part of their
>startup configuration, so I have to restart them whenever I have reset
>the bridge which I haven't done in a few days now. This is a sample net
>device onfiguration line from one host:
Asto that question however, the network configuration looksasfollows:
devdef ni0 564 ni20 dedic=true ifc=tap2 ifmeth=tap+bridge
ipaddr=192.168.9.72 dpdelay=3
then I havea local file in SYSTEM: with the node number used by
7-CONFIG.CMD
which I believe makes
KLH10 set the correctethernet addresson itsinerface.
$TYPE (FILE) NODE.IND.1
RARITY 1.802
This is because I want to maintain only a single 7-CONFIG.CMD to be copied
to all hosts, and it therefore contains the line
node @SYSTEM:NODE.IND
I findthe @indirect_file feature of COMND very convenient for this purpose
as SETSPD has no explicit command for reading another file.
This is another local file of potential interest (such as "IPNI#0"in case I
havemultiple networkinterfaces, which I don't yet have):
$TY INTERNET.ADDRESS.2
IPNI#0,192 168 9 72,PACKET-SIZE:1500,DEFAULT,PREFERRED
I have yet to check a few things before can say for sure that all issues
are
resolved, butthankyou for yourquestions and feedback, it was very helpful.
I have encountered a few different problems during this troubleshooting
process,
such as being unable to connect to my kaskal server even internally on my
home network, while simultaneously being able to reach it from the outside,
but that seems also to
be solved right now. and just in case any of you
would
like to be able to log in on my virtual machines, you are welcome to ask
via
private mail,stating your preferred username,max 39 characters (no "."
periods
or ^V:s please, CHECKD may choke on ^V:s in directory names,but I think DEC
removed the ability to prefix arbitrary characters with ^V in directory
names
after one of our users created a subdirectory containing a colon ":" and
our
staff reported the CHECKD issue which may in reality have been with the
colon
itself rather than the ^V prefix). Besides being reachable via HECnet you
can
run "ssh rarity(a)kaskal.pdcs.org" to be connected to a non-logged-in EXEC.
Visitors are welcome to drop by just to SEND HLLO!
Why would you want a subdirectory name with a colon in it,you may ask.
Well,
as the canonical place for storing a bunch of EMACS ".:EJ" files of course.
TECO must be the only programming language where modem line noise serves as
perfectly valid source code.
I have a PDP-10
installation of CMU's ISPS in my planned work pipeline in
case anyone is interested. Lots of fascinating stuff found when we cleaned
out our magtape collection two years ago.
/AndersAndersson
My zpologies everyone for having youspendtime on what seems tohave been
a totally self-inflicted problemonmypart. My earlier "moving around"
invlvedtrying to findheapprpriatecommands to bring downthe bridge toits
defaultstatein orderto performacleanrestart. Itturnsoutthat I failed to
bringdown some tapinterfacesbefore deleing thebridge,which led to a
defective bridge configuration being left running. Then I tried restarting
pydecnet and that's when theproblems showed up. Thanks to Thomas, Johnny
and David for putting me on the right track.
Several of you askedfor how I configuredthe KLH10 networkinterfaces, and
I remarked on that while hinting on my icompletetesting procedure.Ishould
have taken down the bridgecompletely, andrestarted the KLH10 instances,
which sould have resolved theproblem before asking the list:
>The KLH10 instances obtain their tap interfaces as part of their
>startup configuration, so I have to restart them whenever I have reset
>the bridge which I haven't done
in a few days now. This is a sample net
>device onfiguration line from one host:
Asto that question however, the network configuration looksasfollows:
devdef ni0 564 ni20 dedic=true ifc=tap2 ifmeth=tap+bridge
ipaddr=192.168.9.72 dpdelay=3
then I havea local file in SYSTEM with the node number usedby 7-CONFIG.CMD
which I believe makes KLH10 setthe correctethernet addresson itsinerface.
$TYPE (FILE) NODE.IND.1
RARITY 1.802
I haveyet to chck a fewthings before can say forsurethatthe issueis
resolved,
butthankyou fior yourquestions and feedback, itwasvery helpful.
/AndersAndersson
Thank you foryourfeedback Yes,the KLH10istancesall run on thsame Linux Mint
host that runs the apydecanet router calledKSKAL,and I haveno additioal
hardware on that internal segment which lookslike this now:
oot@kaskal:/home/andersa# brctl show
bridge name bridge id STP enabled interfaces
bridge0 8000.26d039e4c0f4 no tap1
tap2
tap3
If that doesn't indicate that thethreetap interfaceshavbeen addedto
the bridge,I don't know what does. Are there any other diagnostics you
want me to check? I dont know whether the following add anything relevant:
root@kaskal:/home/andersa# ifconfig bridge0
bridge0: flags=4163 mtu 1500
inet 192.168.9.78 netmask 255.255.255.0 broadcast 192.168.9.255
inet6 fe80::4cf6:1fff:fe01:f257 prefixlen 64 scopeid 0x20
ether 26:d0:39:e4:c0:f4 txqueuelen 1000 (Ethernet)
RX packets 557072 bytes 143985475 (143.9 MB)
RX errors 0 dropped 450854 overruns 0 frame 0
TX packets 106193 bytes 4586565 (4.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions
0
root@kaskal:/home/andersa# ifconfig tap1
tap1: flags=4163 mtu 1500
inet6 fe80::6032:eff:fedb:7b94 prefixlen 64 scopeid 0x20
ether 62:32:0e:db:7b:94 txqueuelen 1000 (Ethernet)
RX packets 176227 bytes 46414104 (46.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 318825 bytes 90356527 (90.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@kaskal:/home/andersa# ip tuntap show
tap0: tap persist
tap1: tap
tap2: tap
tap3: tap
The threeTOPS-20 hosts arealso awareof and can communicate with each
other. When I run tcpdump -i bridge0 I do see DECnet, DEC LAT and TCP/IP
ARP traffic to or from the three TOPS-20 hosts pass by,according to the
ethertype code as well as decoding done by tcpdump.
The KLH10 instances obtain their tap interfaces as part of their
startup configuration, so I have to restart them whenever I have reset
the bridge which I haven't done in a few days now. This is a sample net
device onfiguration line from one host:
devdef ni0 564 ni20
dedic=true ifc=tap2 ifmeth=tap+bridge
ipaddr=192.168.9.72
dpdelay=3
The number of the interface specified with ifc= doesn't seem to matter the
machine
still gets assigned the next unassiged tap interface in order.And it did
work previously.
Eventually I hope to put all the bridge and pydecnet configuration into a
hecnet.service file andstart it from systemd.
Now I plan to restartpydecnet while logging bridg0 traffic using tcpdmpto
see
what comes up.
/AndersAndersson
YES! The Maneframe-Six data centre is back in operation! thanks for all
your support! And we giotome extrainfo on DECnet via CI which wasn't
plannd.thanks to serendipity!.
/Anders Andersson
pydecnet Q.Q.648Uusedto workfor me in the past,and I HAD three instances of
KLH10 running TOPS-20, talking to each and other HECnet nodes with no
visible problem.
I have sincemovedafewthings around and I'mno longerabletoget the old
configuratinstowork.
"Moved around" essentially means updating theufw firewall settings and
adjusted afew system settings such asthe SSH service parameers. When I
moved thestart script forpydecnetI hadto createasymbolic link to keep
thedecnet/applications/mirror.py script accessible (I uncommentedit in
thehopeof gaining some extradiagnostisthat way. But no, my routerKASKAL
is nolonger visible to my KLH10 hosts.
This is the kaskal.conf file(wheremost lines are ommwns):
# Configuration file
circuit tap-0 Ethernet tap:tap0 --console Plugh --random-address
#circuit tap-1 Ethernet pcap:tap0 --console Plugh --random-address
#circuit eth-1 Ethernet pcap:en1
#circuit bridged-1 Ethernet udp:7101:127.0.0.1:7001 --random
#circuit mul-0 Multinet localhost:7000
--latency 47
#circuit mul-1 Multinet localhost:700:connect
#circuit dmc-0 Multinet --mode=connect
--remote-address=hecnet-1-1023.stupi.net --remote-port=7700 --cost=3
circuit dmc-0 Multinet --mode=connect
--remote-address=hecnet-1-1023.stupi.net --remote-port=7704 --cost=3
#circuit dmc-0 DDCMP tcp:12345:localhost:32154 --cost 3
#circuit dmc-1 DDCMP udp:12345:localhost:32154 --cost 3
#circuit dmc-2 DDCMP serial:/dev/tty.usbserial-FTVSKM26:19200 --t3 120
--qmax 2
#circuit gre-0 GRE localhost
circuit dmc-1 Multinet --mode=listen -4 --local-port=7700 --cost=2
routing 1.808 --type l2router
node 1.808 KASKAL
node @flogsta.dat
node @nodenames.dat
system --ident "Flogsta HECnet router"
# This replaces the default built-in mirror object which is
# implemented as a Python module within PyDECnet by a functionally
# equivalent one that runs as a subprocess.
object --number 25 --name MIRROR --file decnet/applications/mirror.py
### end of kaskal.conf ###
Aftersetting up the virtual network
segment usng theseincantations
brctl addbr bridge0
ifconfig bridge0 192.168.9.78 up
ip tuntap add dev tap0 mode tap
ifconfig tap0 up
brctl addif bridge0 tap0
andstarting the KLH10 instances (if they weren't already running)
the following line is run under sudo:
pydecnet -d --uid decnet --gid 137 -e DEBUG -L logs/decnet.log kaskal.conf
http.
conf
This sems to be a relevant portion of thelogfile:
2022-08-25 14:25:13.770: MainThread: command line: /usr/local/bin/pydecnet
-d -
-uid decnet --gid 137 -L logs/decnet.log kaskal.conf http.conf
2022-08-25 14:25:15.446: KASKAL: Logging configuration reloaded
2022-08-25 14:25:15.446: KASKAL: Now running as daemon
2022-08-25 14:25:15.446: KASKAL: Running in as uid 129, gid 137
2022-08-25 14:25:15.447: KASKAL: Error starting datalink TAP-0
Traceback (most recent call last):
File
"/usr/local/lib/python3.8/dist-packages/decnet-1.0.596-py3.8.egg/decnet/d
atalink.py", line 73, in start
c.open ()
File
"/usr/local/lib/python3.8/dist-packages/decnet-1.0.596-py3.8.egg/decnet/e
thernet.py", line 220, in open
ioctl (fd, TUNSETIFF, ifr)
PermissionError: [Errno 1] Operation not permitted
2022-08-25 15:11:26.565: MainThread: Starting DECnet/Python DECnet/Python
V1.0-5
96
2022-08-25 15:11:26.565: MainThread: command line: /usr/local/bin/pydecnet
-d -
-uid decnet --gid 137 -L logs/decnet.log kaskal.conf http.conf
2022-08-25 15:11:28.185: KASKAL: Logging configuration reloaded
2022-08-25 15:11:28.185: KASKAL: Now running as daemon
2022-08-25 15:11:28.185: KASKAL: Running in as uid 129, gid 137
Myguess is that ioctl UNSETIFF on theethernetinterfacerquirsroottosucceed,
but
effctive UID is nowprobably 129 (my DECnet pseudou-user. Anychanceof
setting
the interface parameters beforetransfering control to UID 129)? I
haven'tlooked
hrough thecodeto findout.
Removing the --uid decnet option however lets pydecnet run as root,and now
the
error diagnstics re gonefromthelog file,but still I
can'treach KSKAL or any
other HECnetnode frommy local machines:
OPR>ENTER (command subset) NCP
NCP>LOOP NODE KASKAL::
NCP>
20:05:32 NCP
Request # 92 Accepted
20:05:32 NCP
Request # 92; Loop Node Failed, Mirror connect failed
Remote Node = 1.808 (KASKAL)
Unlooped count = 25701
NCP>EX
$I DEC
Local DECNET node: RARITY. Nodes reachable: 3.
Accessible DECNET nodes are: FLUSHY RARITY RBDASH
$
$INFORMATION (ABOUT) DECNET MIM::
%Node MIM is unreachable
$
So, now Ihavetwo problems. My pydecnet runs as root, which shouldn't be too
muchof an issue untilIstart experimentingwithcustom DECnetserver scripts on
the outer and more importantly,my configuraton is still dysfunctional,as I
have no connectivity to or via the router.
i intendthe HTTP server to beavailableat http://kaskal.pdcs.org:8036/
though
I'mnot sure my setupisstable enough for it to work allthetime,Ihavea ZTE
broadband routerreporting its IP address to dyndns.One of the KLH10 hosts
should bereachable via "ssh
rarity(a)kaskal.pdcs.org" (without apassord) to a
non-logged-in EXEC where atleast theINFORMATION (ABOUT) DECNET command is
availabe, in case anyonewants to see itscurrent status.
I can aaccess it locally however,and NSP Characteristics lists maybe a
thousand
nodes in a table.
So,theremaining issuewill likely require me to dig a little deeper in the
pydecnet debugging options, any particular feature I could investigate?
Currently, most recent portion of the log file:
2024-05-15 20:13:34.779: KASKAL: Starting node KASKAL
2024-05-15 20:13:34.779: KASKAL: Starting timer subsystem
2024-05-15 20:13:34.779: KASKAL: Starting datalink layer
2024-05-15 20:13:34.779: KASKAL: Ethernet TAP-0 hardware address is
86-fa-6f-77-4b-56
2024-05-15 20:13:34.780: KASKAL: Started datalink TAP-0
2024-05-15 20:13:34.780: KASKAL: Started datalink DMC-0
2024-05-15 20:13:34.780: KASKAL: Started datalink DMC-1
2024-05-15 20:13:34.780: KASKAL: Starting MOP layer
2024-05-15 20:13:34.780: KASKAL: Starting mop for
_TapEth TAP-0
2024-05-15 20:13:34.781: KASKAL: Initialized loop handler for TAP-0
2024-05-15 20:13:34.781: KASKAL: Initialized sysid handler for TAP-0
2024-05-15 20:13:34.781: KASKAL: Started MOP circuit TAP-0
2024-05-15 20:13:34.781: KASKAL: Starting Routing layer
2024-05-15 20:13:34.781: KASKAL: Started Routing circuit TAP-0
2024-05-15 20:13:34.781: KASKAL: Started Routing circuit DMC-0
2024-05-15 20:13:34.782: KASKAL: Started Routing circuit DMC-1
2024-05-15 20:13:34.785: KASKAL: Starting NSP
2024-05-15 20:13:34.785: KASKAL: Starting Session Control
2024-05-15 20:13:34.786: https: Starting https server on port 8443
2024-05-15 20:13:34.787: KASKAL: Starting http server on port 8000
2024-05-15 20:13:35.245: KASKAL: L2 attached state changed to True
2024-05-15 20:13:44.820: KASKAL: Designated router on TAP-0 will be self, 5
second delay
2024-05-15 20:13:49.833: KASKAL: Designated router on TAP-0 is self
Yetwhen I try to talk to KASKAL viathat very virtualetenet it hasTAP-0
on:
NCP>
10:01:59 NCP
Request # 93 Accepted
10:01:59 NCP
Request # 93; Loop Node Failed, Mirror connect failed
Remote Node = 1.808 (KASKAL)
Unlooped count = 25701
NCP>
Should I use some other server than mirror.py?
Hi,
There will be an IP address change for inbound/outbound DMC, Multinet, GRE and GRETAP connections to A29RT2 (29.2) tomorrow (27th Feb) at around 11:00 UTC.
82.70.71.174 will change to 77.104.155.22
There will be no change to the IPv6 prefix... apparently.
Please update your routers accordingly... and keep the previous config around, just in case. What could possibly go wrong?
Regards
Keith
I just wanted to let people know that I've just created a traceroute for
RSX. Available also as an RPM.
It can trace the route from yourself to somewhere, but also do tracing
from one arbitrary node to another. So you can explore the different
paths in both directions.
Example:
.trd frodo
Trace DECnet route
Tracing from 1.21 (JOCKE) to 30.1 (FRODO)
1: Tot: 0 1.21 (JOCKE)
2: Cost: 5 Tot: 5 1.13 (MIM)
3: Cost: 3 Tot: 8 1.1023 (ANKE)
4: Cost: 10 Tot: 18 30.15 (CBVRP3)
5: Cost: 3 Tot: 21 30.1 (FRODO)
Hops: 5 Total cost: 21
.trd frodo pondus
Trace DECnet route
Tracing from 30.1 (FRODO) to 1.15 (PONDUS)
1: Tot: 0 30.1 (FRODO)
2: Cost: 3 Tot: 3 30.15 (CBVRP3)
3: Cost: 6 Tot: 9 1.1023 (ANKE)
4: Cost: 3 Tot: 12 1.13 (MIM)
5: Cost: 5 Tot: 17 1.15 (PONDUS)
Hops: 5 Total cost: 17
.
A couple of comments:
1. This all works by talking to the NICE server for each node along the
path.
2. If a hop does not have a NICE server, it will not be possible to
query beyond that point. This typically happens if there is a CISCO
router in the path.
3. Your local node needs to have a nodename of all nodes along the path,
or else the program cannot connect to the NICE server of that hop.
4. If NICE do not give a next hop for a node, the program tries to
instead query about the destination area. If that also fails, then the
tracing fails. This happens with with older versions of PyDECnet.
So in order to make some diagnosing of things on HECnet a bit easier,
please update your PyDECnet routers to a somewhat recent version everybody.
Suggestions on improvements, as well as bug resports are most welcome.
The code is written in C, and isn't that large. At the moment is's a bit
hacky, but I might eventually clean it up some. But it means if someone
wants to port this, it's not completely impossible to do so.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt(a)softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol