I had been making some efficiency tweaks to a few things, particularly
GLXLIB, the Galaxy Object Time System when I began to notice that
programs sometimes appeared to not be using any processor time at all.
I found that the normal JSYS that returns fork run time (RUNTM%) only
gives millisecond resolution.
Tops-20 exposes a 100 Khz interface via the HPTIM% JSYS. 'High
precision' in this case meant the maximum internal clock rate of the
DK10 real time clock. So, although the KL10 had a megahertz clock,
Tops-20 lops off a decimal order of magnitude, presumably to remain
compatible with TENEX. The maximum resolution is thus 10 microseconds,
a hundred times the RUNTM% resolution.
Unfortunately, the HPTIM% JSYS only works for your own process, not
others. So, I modified the monitor code to be able to get high
precision run times for any forks in the job. I then modified the EXEC
to display the high precision times if requested. What I also found out
was that, by default, the EXEC will only display a tenth of a second,
whereas RUNTM% will return two decimal orders of magnitude more.
The comparisons below are perhaps of interest. About the shortest I've
seen is 1.5 ms (0.00015). Given the increasing speed of simulations,
one assumes that DK10 resolution will be exceeded at some point.
------------------------------------------------------------------------
$i fork ORION (1): Background, SLEEP at 767721, 0:00:00.1 QUASAR (2):
Background, SLEEP at 767721, 0:00:00.0 MOUNTR (3): Background, SLEEP at
2420, 0:00:00.0 BATCON (4): Background, SLEEP at 767723, 0:00:00.1
NMLT20 (5): Background, SLEEP at US%DES+165, 0:00:00.0 => FAL (6):
Background, SLEEP at 767721, 0:00:00.0 Fork 13: SLEEP at 767723,
0:00:00.0 Fork 12: SLEEP at 767723, 0:00:00.0 Fork 11: SLEEP at 767723,
0:00:00.0 Fork 10: SLEEP at 767723, 0:00:00.0 Fork 7: SLEEP at 767723,
0:00:00.0 $ $i fork /high-precision ORION (1): Background, SLEEP at
767721, 0:00:00.12459 QUASAR (2): Background, SLEEP at 767721,
0:00:00.05135 MOUNTR (3): Background, SLEEP at 2420, 0:00:00.06751
BATCON (4): Background, SLEEP at 767723, 0:00:00.19957 NMLT20 (5):
Background, SLEEP at US%DES+165, 0:00:00.09560 => FAL (6): Background,
SLEEP at 767721, 0:00:00.08322 Fork 13: SLEEP at 767723, 0:00:00.01310
Fork 12: SLEEP at 767723, 0:00:00.01577 Fork 11: SLEEP at 767723,
0:00:00.00381 Fork 10: SLEEP at 767723, 0:00:00.00362 Fork 7: SLEEP at
767723, 0:00:00.00320
(resending with the correct HECnet address)
> On Jul 25, 2024, at 12:16 AM, Chris Hanson <cmhanson(a)eschatologist.net> wrote:
>
> I haven’t successfully used SIMH networking on macOS yet but one of the things that I’ve seen in building SIMH with an Xcode project that I created was that there is *a lot* of type confusion in the codebase nowadays: It has lots of use of int, int32, etc. that should actually be one of ptrdiff_t, ssize_t, size_t, off_t, and so on.
>
> While I appreciate the desire to be compatible with older C89 compilers, this is one of those things that opens one up to subtle bugs on 64-bit platforms—especially when trying to build for a mix of LP64 and ILP64 platforms. I think the better way to handle that would be to provide cover definitions for pre-C99 compilers and pre/non-POSIX systems, so the codebase can use the correct types throughout.
I suppose, but Mark P has a point: it doesn't make a whole lot of sense to do major editing on the codebase if it isn't broken.
Clearly, ptrdiff and ssize are not issues, because nothing in the SIMH suite creates data structures that are more than 32 bits in size. If we had Alpha emulation for machines that support more than 4 GB of physical memory (if there are any Alphas for which that is true) then for that case the use of size_t would matter, but clearly not for anything else.
Off_t is unlikely to be an issue either, unless you needed a virtual disk bigger than 4 GB. Those might, just barely, be supported on VAX (MSCP) and maybe some PDP-11 OS as well, though I know for a fact that RSTS/E tops out right at 4 GB and probably never actually had real disks that big.
> Another pretty serious problem is that a lot of platforms set USE_SHARED rather than just USE_NETWORK and wind up “wrapping” the libpcap API, loading the library with dlopen(3) and calling through stubs that have their own prototypes defined. This is extremely dangerous because something like libpcap can adjust its signatures and headers simultaneously to manage source and binary compatibility while changing behavior at the same time. This is especially important when something like libpcap is provided by the OS.
Um, the dlopen stuff seems to be an option, and it's only there on Linux as far as I can tell. Is it actually a problem? I'm not sure why it's there, I'll admit that.
> ...
> Similarly, the conflation of the various different integer types risks becoming a field full of land mines. While one can argue that SIMH is never dealing with enough data to run into 32-bit truncation on 64-bit systems so it’s not worth worrying about, this is another area where “it works fine, don’t change it” is just fine right up until the point where it isn’t. It’d be best to be consistent with POSIX here (rather than self-consistent) and to provide a thin adapter layer for pre-POSIX systems.
It does seem that you're hypothesizing possible breakage but I don't see any way that it can happen in reality.
Remember that SIMH works on 32 bit systems. It follows that the 32-bit types should not be a problem even if new code would not do it that way.
paul
I've been busy with my silly things as usual, and lately implemented a
FINGER client and server for RSX, and I realized there are a couple of
things to maybe check with other people on HECnet.
First of all - finger as such is a (sortof) well known tool/service on
the TCP/IP internet. And I've had a finger server and client for TCP/IP
under RSX for a long time, but have never really shared it, since it was
a bit "odd".
But even before this, I knew of a FINGER implementation available from
DECUS for RSX.
I've known that I wanted to make FINGER available for others for a long
time, but recently I started thinking of also adding in DECnet
capability in my finger implementation. So the last few weeks I've been
tinkering with this, and I've finally completed the work and made my new
finger implementation available as a package.
The FINGER from DECUS mentions the following:
FINGER is a utility to display information about a
selected user or group of users. It can be invoked for users
on the local node or on a remote node over DECnet, and is com-
patible with the VMS implimentation of FINGER. Full function-
ality requires an RSX-11M+ system with resource accounting and
DECnet.
So, not only have there been this RSX implementation from DECUS, there
apparently also exist(ed) an implementation from somewhere for VMS.
FINGER over TCP uses the well known TCP port 79, while the DECUS RSX
(and I assume VMS) DECnet implementation uses object number 117.
My implementation then responds to both these access paths, as well as
being able to query locally, and also try to connect to remote systems
using either of these methods.
And I now have this running on MIM::
So my questions are:
. Do anyone else have any finger service running on any HECnet node?
. Do anyone else know what other implementations even exist, and for
which OSes?
I do think FINGER is somewhat useful to find who might be logged in and
active, as well as finding out more information about people on
different systems in general. On the internet, finger servers are
nowadays unusual to see, since privacy and security concerned people
just feel that finger gives out way too much information anonymously.
So I am not encouraging people to run this if they have such concerns.
But like I said, personally, I do find it useful, and will keep it
available on any RSX system that I am running.
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
Version 5.3(255)-5 incorporates additional features, enhancements and
fixes since the minor release of 5.3(248)-5 in November 2023. These are
as follows and can be identified in the code with the edit number as the
prefix of a comment.
[249] Implement relative directory connect
[251] Emit new directory name when either wildcarded structure or
directory changes
[252] Fix some of the directory parsing logic to properly handle .CMDEV
and .CMDIR
[253] Fix ^A to print the number of pages sent and the total; was always
omitting total
[254] Implement CDUP, generic 'G'
[255] Make CWD accept ".." as token for Unix, DOS, Windows, and OS/2 CDUP
The changes were mainly driven to simulator relative directory
connection as Tops-20 directory punctuation (I.E., '<' and '>') can too
easily be confused with piping requests on some Kermit clients. On
some, it proved impossible to convince them otherwise...
Generic 'G' is an addition to the Kermit protocol. C-Kermit currently
implements this in addition to Tops-20
Available for ANONYMOUS NFT from VENTI2:: and from
https://www.kermitproject.org/kermit-20.html.
"merlyn drforbin" <kropotkin(a)gmx.com> wrote:
>Any way to set endpoint buffer size on panda decnet phase IV
Could some of this (in SYSTEM:7-CONFIG.CMD) be what you are looking for?
This is from RARITY (not PANDA, but DEC vanilla distribution,kind of), I'm
not sure I have the correct values myself, been experimenting.
; DECnet parameters:
;default is DECNET BUFFER-SIZE 576
decnet buffer-size 1476
;default is DECNET MAXIMUM-BUFFERS 80
;decnet maximum-buffers 40
--
Anders Andersson, Uppsala, Sweden
Gentlepeople,
The regular release of V1.1.0 is now published. You can download it from http://akdesign.dyndns.org:8080/resources/public/index.html .
The code in Github is up to date, and the "main" branch has been updated to the V1.1.0 code. The "t1.1" branch is now retired.
For those of you who have used the beta and/or release candidate releases: nothing much changed since then apart from bugfixes. If you're upgrading from V1.0, please be sure to read the documentation, in particular the CHANGES.txt file. A notable change that may affect your configuration files:
f. The --api and --insecure-api switches on the "http" configuration
line have been removed. Instead, API control is via a new "api"
line. See doc/config.txt for details.
paul
Hey guys. just got tops10 7.03 kinda working on hecnet.
I'm still not able to set host to rsts and communication to from the node is spotty!
Any suggests.
Thank you in advance
I just released PyDECnet 1.1 rc2. You can find kits at http://akdesign.dyndns.org:8080/resources/public/index.html (the "V1.1 release candidate 2" lines are it).
This contains a few bugfixes; a notable one makes HTTPS for the embedded web server work if you're running Python 3.12 or later. (Thanks Wilm!)
I did a major rewrite of the "api-connecors.txt" documentation file, so now the recommended "Connectors" mechanism for writing PyDECnet applications and accessing its API should be a lot more useable.
Barring surprises I'll probably issue the final V1.1 release in a week or so.
paul
I am running my pydecnet router on a Raspberry Pi Zero W2
After switching to the beta/preview version the daemon does not start automatically when the Pi boots
Do I need to make additional changes to enable that again? I don't remember from setting up the stable version anymore.
Mike
Time for a new release announcement of TCP/IP for RSX-11M-PLUS.
This is version 2.16 of BQTCP/IP.
Highlights:
. Fixed an issue in TCP, where if the system is severely loaded, a TCP
socket could get stuck.
. Fixed DNS resolver issues that could create problems at boot time, if
DHCP was taking time to get a configuration.
. Fixed various issues in MAIL/MAILD.
. Improved logging in many daemons.
Detailed information on things that have been done since the last release:
UDP:
. Improved UDDRV IO timeout handling.
TCP:
. Bugfix. If we run out of IPPOOL when doing a TCP transmit, that socket
can get stuck. We need to retry allocation later.
DNS:
. Change resolver to just handle if no IP is known to have DNS resolving
fail, and each time requested, try and figure it out.
. If resolver starts up and we do not have an IP addres, make sure
resolver exits again.
BQTLIB:
. Updated BQTLIB documentation, PDP-11 C AIO functions.
. Added asynchronous I/O handling to PDP-11 C in bqtlib.
. Reworked DECnet access in PDP-11 C significantly.
. Bugfix in C DECnet library. Connection block setup used the wrong
format codings, leading to connection failures to some operating
systems. This affected MAILD.
MAIL/MAILD:
. Fixed mail reader handling when at end or beginning of mails.
. Bugfixes in DECnet mail handling.
. Rewritten DECnet handling in MAILD to use new API from BQTLIB.
. Improved MAILD error handling for many situations.
. Added session id in locally received mail logs.
. If MAILD sends mails using SMTP, and the remote side close the
connection during a session, we should reopen the connection for the
next mail to be delivered.
. Improved MAILD logging. In some situations, the wrong network error
code was logged.
LPT:
. Added the ability to select what is the default form for LPT despooler
via the queue form parameter.
MLTNET:
. Changed MLTNET to do immediate ACKs, to improve performance if other
end is using nagle.
FTPD:
. Added task name to FTPD console log entries.
. Improved FTP/FTPD file handling to ensure created files always have at
least RD protection for user and system.
HTTPD:
. Trim out binary data from HTTPD error log.
TELNETD:
. Added TELNET$LOG logical for if telnetd should be logging.
. Improved TNC2 task to also understand result from RT:
. Improved TNC2 task to also understand result from HT:
IFCONFIG:
. Added allocation fail statistics to IPPOOL.
IPGEN:
. Bugfix in IPGEN. C header files should be installed to PDP11C$INCLUDE:
if it exists.
NTP:
. Bugfix in NTP building. It was referring to $TMADJ, which might be a
non-existing symbol.
Some additional notes:
As usual, I would recommend people to update as soon as possible.
The changes are somewhat critical, but will also lead to a much better
experience.
The patches to the TT: driver cannot be applied automatically, but
requires users to apply the patches themselves, and then run SYSGEN to
generate a new system.
Once added, the TNC2 task can be run at login, and will define logical
names for the user telling where he is connected from, if using telnet
or LAT.
TNC2 can get information about remote connections over DECnet as well,
but this requires updates to DECnet. Such patches are not available
separately at this time, but are included in the RSX image provided from
Johnny Billquist.
The TT: driver patches also allows the updated MCR to give more
information with the DEV command (SHOW TERMINAL in DCL).
The patched TT: driver also makes is possible to get telnetd fully
vectorized, as this version provides two more addresses that are
required by telnetd to access information in the kernel.
The other patches to RSX can be applied automatically by IPGEN, either
if used interactively when answering YES to the question about applying
RSX patches, or by running IPGEN explicitly to do the patches, with the
command:
@IPGEN PATCH
Specific information about the patches:
LAT: Fixes a memory leak, and adds the ability to read where a terminal
connection comes from when using LAT, using SF.GMC.
RMSDAP: Fixes a bug in getting the file protection, so the XAB gets
filled in correctly for remote files.
RMSDSP: Fixes that some numbers were displayed in signed octal, which
should have been displayed in decimal or unsigned octal, depending on
number.
DCL: Added terminal attributes for COLOR.
MCR: Too many fixes to be listed here...
INS: Fixes that users cannot circumvent protection on common regions.
HEL: Fix that users can login with session ID, or with directory, in
addition to name and UIC.
ACNT: Add no password change attribute to accounts.
PSW: Add no password change handling.
SYL (SYSLOG): Add terminal idle tracking on accounts without idle logout.
ECL: If the receiving machine is very slow, and the sending machine is
very fast, and the receiver announce several large buffers available,
ECL cannot keep up, and drops packets. This is a problem with the DECnet
flow control, as it is used in RSX. The simple solution is to allow more
outstanding buffers when receiving. A more complex solution would be to
change how RSX DECnet do flow control, but that would require rewriting
a fair chunk of the ECL module.
NMVACP: Fix handling of "show known nodes" command, which could skip
some nodes.
NVP: Add ability to use session ID or directory name for user identity
in DECnet nodename specifications.
EPM: Fix handling of ethernet multicast.
NTDEMO: Fix that hosts without names should display DECnet address.
NCP: Parse of additional information types in NICE messages.
As usual, the distribution is available from:
ftp://mim.stupi.net/bqtcp.dskftp://mim.stupi.net/bqtcp.tap
!!! BQTCP is also available through RPM !!!
(As an additional note, if there are any problems communicating with Mim
using port 21, the ftp service is also available at port 10021)
The documentation is also available through ftp on Mim, or also at
http://mim.stupi.net/tcpipdoc
I hope people find this update 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'm new to hecnet...
Old timer here. I'm the guy who rewrote decwar to run again on tops-10
See my github.
Anyway. I alrdy have a rsts10.1 system up on hecnet. trying to get
vax8650 up running vms 4.7.
I do want to get my tops20 panda working but having alot of probelms
with klh10.
Please give me some pointers on getting panda online please
thanxs
more to come
drforbin
Gentlepeople,
I figured it was about time to move PyDECnet past the "beta 1.1" stage. I sorted through the various bugfixes I had not yet commmitted and did so, the built kits called "release candidate 1". The code is currently running on node PYTHON, and kits can be found on the downloads page at http://akdesign.dyndns.org:8080/resources/public/index.html
I'd like to get the "real" release out soon, so it would be great if some of you could take this version for a test drive. I'd also like to hear if there were any bugfixes I was supposed to do that I missed.
By the way, this version requires Python 3.7 or later.
Last but not least, I moved the source control to GitHub: https://github.com/pkoning2/pydecnet . The Subversion repository is now obsolete; I will take it off line soon. The full history should be in the Git version (it was converted from the Subversion repository).
paul
I was just reading about an alternate Python implementation called PyPy, which uses a "just in time" compiler. With that it's supposed to be potentially a lot faster than regular Python, for code that does a fair amount of computation.
While PyDECnet does plenty of I/O, things like packet parsing are fairly time consuming. I've optimized it a bit but the structure I adopted only allows for so much.
I tried PyPy to see if it supports PyDECnet. The answer is yes, after I removed some code from two files that wasn't even used in the first place...
Just to see if it makes a big difference, I did a large loop test: "ncp loop nod 0 count 50000 len 400". On my Mac (ARM) laptop, that takes 6.3 seconds with Python 3.13, and 1.2 seconds with PyPy.
More testing is needed but this is interesting.
paul
Hi,
I'm including this in HECnet because it might be of general interest.
I have been creating the odd object here and there on a test router, using the mirror.py application class as a starting example, for listening to and talking to VMS processes that have opened up a task connection to them.
I can do something like:
$ open/read/write fio node::"=TIMESTAMP"
$ write fio "UTC"
$ read fio ts
$ close fio
$ show sym fio
The object waits for a message - the timezone required - and then returns with a message containing the VMS time string in the form dd-mmm-yyyy:hh:mm:ss.cc
It all work very well.
The dispatch method in the pydecnet application class code sends an accept when it gets a connect and then sends a message containing the timestamp when it receives a data message containing the timezone required.
A simpler version of this, in which the timestamp in UTC is sent immediately without waiting for a timezone string, would not work. I was trying to execute a conn.send_data(...) immediately after a conn.accept() and getting a 'WrongState' exception there and then. What am I missing?
Regards
Keith
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
Hi. I thought I'd just refresh people about how to update nodenames on
their machines with the latest information in the most simple way for
different OSes.
The basic information can be read at http://mim.stupi.net/hecdb.htm.
Note that there are specific files in the appropriate form already
prepared for most any OS, so you do not need to grab
MIM::HECNET:NODENAMES.DAT and do a bunch of parsing and processing
yourself. Doing that is just making something simple more complicated on
your side.
If you have need for other formats of the data, or spot something that
could be made smarter/better, just let me know and we can work together
to get whatever is needed.
The different files mentioned in http://mim.stupi.net/hecdb.htm are all
automatically generated whenever any change to the nodename database are
done. The actual database is in Datatrieve-11, and then I have a
makefile under RSX to generate all the different files. Doing changes to
the content of a file, or adding new files with other content/formats
are very easy for me.
Also, the mailing out to people with a notice when the database change
are also automated, and if anyone wants to be notified when the database
change, just let me know.
However, at this time, there are some issues with delivering mails to
users of gmail. Google is not accepting mails from Mim, because SPF and
DKIM is not setup for Mim. I should ping Peter about this, but until
that is resolved, be aware that mails from Mim to gmail might not get
though.
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
Hi Johnny et al.
Some new nodes to be added to the HECnet registry please.
BUZZEL 29.113
CORRIN 29.114
Both are VMS 9.2.2 x86-64 running under Debian Qemu/kvm. They are clustered together via shared virtual SCSI discs. Seem to be working quite well.
Terrible timing however, what with the bombshell VSI just dropped about the community licences. I'm tempted to become an Ambassador - I may have something to contribute in the VMS runtime department, along with LLVM. Ah well.
Regards
Keith