Where are all of these spelled out? I had looked in the Phase IV NSP
functional specification (NSP401.TXT) for them, but only a few seem to
be there.
The background is that I have further enhanced Kermit-20 to use direct
monitor connections when doing remote terminals and also to print the
text of a disconnect. I duly copied over the list in MONSYM, Etc.,
Etc., Etc. Earlier this week, I put some more contingency code into FAL
to handle server crashes. Basically, the controller would sit in a loop
forever restarting crashed server (DAP) forks. Now it waits a while and
stops completely after a certain number of restarts.
While I was at it, I checked its list and found that it was missing text
for disconnect codes 10, 11, 21, 22 and 23. Well, I put it in but got
to wondering what others there might be. Right now Tops-20 Kermit and
DAP know about the following:
*Code*
*Reason Text*
0
Reject or disconnect by object
1
Resource allocation failure
2
Destination node does not exist
3
Remote node shutting down
4
Destination process does not exist
5
Invalid process name field
6
Object is busy
7
Unspecified error
8
Third party abort)
9
User abort (asynchronous disconnect)
/10/
/Invalid node name/
/11/
/Local node shut down/
/21/
/Connect Initiate with illegal destination address/
/22/
/Connect confirm with illegal destination address/
/23/
/Connect initiate or confirm with zero source address/
24
Flow control violation
32
Too many connections to node
33
Too many connections to destination process
34
Access not permitted
35
Logical link services mismatch
36
Invalid account
37
Segment size too small
38
No response from destination process
39
No path to destination node
40
Link aborted due to data loss
41
Destination process does not exist
42
Confirmation of Disconnect Initiate
43
Image data field too long
Time for a new release announcement of TCP/IP for RSX-11M-PLUS.
This is version 2.13 of BQTCP/IP.
It's been almost three months since the last official update. Some major
improvements and bugfixes have been done, and it is strongly recommended
that systems are updated.
Highlights:
. Improved TCP performance.
. XLISP updated to V1.7.
. New patch to the TT: driver in order to make telnetd fully vectorized.
Detailed information on things that have been done since the last release:
TCP:
. Added TCP fast retransmit feature.
. Bugfix in TCP. If IO.RAS is used to setup an AST notification, an AST
should immediately be generated if we have received a FIN.
. Improved TCP retransmit timer calculation. It was wrong on socket
creation. Also added handling of delayed transmit time set to 0.
TELNETD:
. Improved internal time handling in telnetd.
. Added full vectorization for TELNETD (if kernel supports it, otherwise
no change from before).
. Added more checks for errors on snd/rcv for telnetd.
RMD:
. Bugfix in RMD. In port page, if xmit or rcv size was greater than
32767, RMD crashed.
NTPD:
. Changed NTPDATE to use time adjustment functionality in kernel, if it
exists.
MAILD:
. Improved MAILD SMTP send error handling.
. Improved mail queue processing to not retry mails extra times just
because an error notification mail is created for something.
. Changed mail daemon to only send notification mails about temporary
delivery problems when the mail have been in the queue for at least 30
minutes.
LISP:
. Updated XLISP to V1.7.
BQTLIB:
. Added lots of documentaiton for BQTLIB. Cleaned up BQTLIB.
. Added functions in BQTLIB for adjusting time.
Some additional notes:
As usual, I would recommend people to update as soon as possible.
The changes are not critical, but will 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.
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
Greetings all,
I'm performing a firewall replacement along with all kinds of other comms related tasks at my office today.
This means Area 35 will be up and down and possibly out for a few hours.
I'll be starting in the next 2 hours or so. All the work will be finished this afternoon.
Cheers, Wiz!!
Since there has been a bunch of work done to revive what is supposedly a DECnet Phase I implementation (DECnet/8 for RTS/8) I realized I could perhaps get some more information going back that far. Some months ago Nathan Brookwood (formerly known as Nathan Teichholz) gave a talk about the beginning of RSTS-11, and in that he mentioned as an aside that he subsequently served as program manager for the initial development of DECnet.
So I asked him if DECnet/8 sounded familiar and if he could tell me anything further about that time. His reply:
----------
I was responsible for coordinating all the versions of DECnet for the initial "Phase I" releases, but developers in each operating system were responsible for the implementations. Each group was building from the definitions of DDCMP and NSP that were extant in the 1973-75 period. There was also a testing and communications protocol called "NICE" (don't ask me what that stood for) and a file transfer utility.
The Phase I versions did not include routing, and when the developers tried to add routing capabilities to those first versions, they discovered that there was a need to make significant changes to NSP that would preclude backwards compatibility with the Phase I versions. The implementation of DDCMP survived intact, since physical link protocols are below the routing protocols level.
----------
That ties into the statement in the Phase III General Description document which says that Phase I nodes can't coexist with later versions in the same network, and it also matches what the DECnet/8 manual makes quite clear in its chapter discussing the protocol details: Phase I NSP is conceptually pretty similar to Phase II NSP, but the packets are 100% incompatible. So the "significant changes" Nathan mentioned are what happened in DECnet Phase II -- which modifies NSP to include sequence numbers and ACKs and in the process also changes lots of other details in the protocol encoding. That still wasn't quite enough, and Phase III filled in some missing details in an upward compatible fashion (the Connect Ack and Retransmitted Connect Initiate message, as well as timeout and retransmit algorithms).
paul
I've been testing my changes to Tops-20 NFT and ran into what what I
thought were some perhaps interesting results, viz:
NFT>*i twonky*
Attempting connection to TWONKY:: [31.37]
Maximum buffer size: _0!_
Operating System: Tops-10, File System: Tops-10
DAP: 7.0, DECnet: _0.0_
NFT>*i ostara*
Attempting connection to OSTARA:: [31.15]
Maximum buffer size: 4096
Operating System: Ultrix-32, File System: _13 (Unknown)_
DAP: 7.0, DECnet: 1.0
Note that I am clipping the capability display for these examples. By
"interesting", I was surprised to find that Tops-10 is reporting a
buffer size of zero, but more by it reporting a DECnet version of 0.0.Â
Where are these version numbers defined? For Ultrix, I would assume that
I need a more up-to-date list of file systems, given that the highest
that DAP 5.6 states is 9 for OS-8 (!!)
As a comparison, this is what I see for VENTI2:: (Tops-20) and a random
RSTS host.
NFT>*i*
Local Executor is: VENTI2:: [2.522]
Maximum buffer size: 4096
Operating System: Tops-20, File System: Tops-20
DAP: 5.6.1, DECnet: 2.0
NFT>*i pirsts*
Attempting connection to PIRSTS:: [29.205]
Maximum buffer size: 636
Operating System: RSTS/E, File System: RMS-11
DAP: 5.6, DECnet: 4.1
I want to sign on to MIM:: later to see what the RSX NFT client says;
it's certainly possible that I am not displaying this correctly.
I finished the auto-mounting code for Tops-20 DAP, viz:
NFT>*dir venti2::dsk*:<Help>units.hlp*
 VENTI2::TOMMYT:<HELP>
UNITS.HLP.1;P777752Â Â Â Â Â Â Â Â Â Â Â Â Â 1 2210(7)Â Â Â 28-Apr-1980 17:23:03
 VENTI2::TOPS20:<HELP>
UNITS.HLP.1;P777752Â Â Â Â Â Â Â Â Â Â Â Â Â 1 2210(7)Â Â Â 28-Apr-1980 17:23:03
NFT>
Over in FAL, one finds the following debugging output:
[Received Access message (Flg=LEN Cnt=30.)]
[Parsing Access message]
[DSK*: PS:<HELP>UNITS.HLP.1, JFN 7, Unit* High]
[Trying file TOMMYT:<Help>units.hlp]
[Assigned JFN 7, Unit* High]
   .
   .
   .
[Trying file STAR:<Help>units.hlp]
[Failed. No such directory name]
[Mounted file structure TOPS20: on behalf of SLOGIN]
[Trying file TOPS20:<Help>units.hlp]
[Assigned JFN 7, Unit* High]
   .
   .
   .
[Dismounted file structure TOPS20: on behalf of SLOGIN]
Like many things I do, I tend to have an overly optimistic if not naive
idea of the development involved and bump into edge cases. I had to
split DAPLIB up into three separate sources to accommodate the changes,
which kept getting longer as I found another case I hadn't considered.
The same thing happened in spades when I put NRT support into
Kermit-20. The changes were so pervasive that I started looking around
for regression tests. C-Kermit itself has wonderful scripting, which
you can even use to write a compiler. But not testing scripts, so I
wrote my own batch control files.
Anybody know what's available for DECnet; in particular, DAP? I seem to
remember there being something for UETP, but it wasn't extensive.
The RSX image that I created for simh (and thereby also the PiDP-11)
have just been enhanced a bit again.
Since it appears that HECnet is of some interest, I added a section in
the initial boot setup dialog to also configure DECnet-over-IP multinet
links.
So, if anyone wants this, all they need to do is answer a few questions
at initial boot (or whenever they manually run the config script), and
they will have a nicely setup RSX system, which also already connects
using DECnet-over-IP to wherever they want.
This is obviously not limited to HECnet. You can use this to setup links
between any DECnet nodes on any kind of network. HECnet is just one such
instance.
Information on the image can be found at http://mim.stupi.net/pidp.htm
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
After I got done 'enough' with the auto-mounting code for FAL (meaning,
I didn't make the modifications to the access control job because I
bumped into .MSIMF), I turned to fixing a bug that I bumped into a few
years ago. While Tops-20 does not support wildcarding devices, it does
support wildcarding all structures that the system currently has online
via the DSK*: moniker.
So, let's say you're a 60+ who is having those occasional lapses of
memory and you /really/ can't remember a single thing about something
you think you might have somewhere. This is, of course, completely
forgetting that you wanted to find something in the first place... you
can ask the EXEC to do something like, DIRECT DSK*:<*>*SOMETHING*.*.0.Â
You can also hand that to FIND to have it look in all those files.
Some experimentation with NFT shows that Tops-20 FAL supports structure
wildcarding. BUT!! If you're being nosy or are just plain hacking and
do DIRECT DSK*:<*>*.*.*, it crashes with a GLXLIB out of memory error
(ASE, Out of Address Space)...
Researching this shows that Tops-20 DAPLIB tries to buffer messages
before dumping them over the wire and that the decision it makes to dump
is file count based. That appeared to not work properly because of two
issues. First, each file was actually generating four separate
messages: a Name, an Attributes, a Date/Time Attributes and a File
Protection Attributes. Second, the buffer builder was always allocating
a buffer for the maximum size message, 4090 characters (1032 thirty-six
bit words).
That's pretty excessive, considering the typical sizes. Some
instrumentation shows the below:
Message Allocated Actual %Excess
Name 4,090 18 99.56%
Attributes 4,090 17 99.58%
Date/Time 4,090 40 99.02%
Protection 4,090 7 99.83%
I changed the buffering algorithm to dump based on available memory.Â
The starting available memory is 448 pages, so I take ¾ of that to
devote to DAP buffers and ¼ (122 pages) to do the dumping. That fixed
the problem. Then I changed the memory allocation to trim unused words
from the end of messages. That's not working as well as I expected,
probably because I need compact (or 'burp') the memory. Another
alternative would be to build all messages in a single area and then
only allow a chunk in the linked list for what I need. No burping.
A concern is what happens with the Configuration BUFSIZ operator and
what to do if it is 0 (unlimited). The DAP specification specifies that
an operand of zero means that if one of the two systems has anÂ
unlimited buffer size, it sends a 0 and the two systems will use theÂ
nonzero buffer size as the maximum. If both systems send 0, there is no
limit on the length of messages which may be sent.
My question is whether zero is absurd. Does any implementation send that?
It probably doesn't matter that much for sending, but I'm also thinking
that I might hypothetically have a similar problem on receive.Â
Obviously I don't because the current Tops-20 DAP won't negotiate a size
larger than 4096 bytes. Is anything running larger than that? Would it
be silly to?
Hello, newbie here :)
I used to run OpenVMS 7.3 under simh on a Raspberry Pi, but have never learnt past the "newbie" stage about OpenVMS.
With the availability of the x86 Community Edition, I have now 9.2-1 running under Proxmox at home, and thought "maybe it's time to learn about DECnet and join the HECnet".
So here I am, with exactly 0 idea of how DECnet works but the intention to read some of the docs and figure it out enough to join a node or two (or more?)
Regards,
Alice
Much of my DECnet work involves either SIMH or PyDECnet, both of which can do Ethernet over UDP, with a Billquist bridge (or Python equivalent) providing the bridging. So while I've used TAP some years ago, it hasn't been a concern lately.
Then came the time to find an Alpha emulator to run VMS, and it turns out SIMH only has the skeleton of one, not even close to ready for real use. But there are others, and after some searching I landed on AXPbpx. That works well; VMS 8.4 installs on it without problems especially with some help from various Wiki pages. But the obvious complication is that its Ethernet emulation talks to an interface, not UDP (not as far as I can tell). So I looked for TAP as the way to do that since my laptop's physical interface (being WiFi) is not useable for the job.
Surprise: no more Tun/Tap for Mac OS. Or at most, something that's buried in a corner of some other package and at risk of being broken by Apple any day now.
But some Googling for options turned up something very simple that seems to work. Mac OS, in its network settings, lets you define a "virtual interface" bridge. A typical use for that is to share a physical interface, but it doesn't actually need to be connected to a physical interface to work. I tried that.
In System Preferences, Network, at the bottom left is a button bar with + - O, that last one a circle with some dots in it and a downarrow. Click that, last option is Manage virtual interfaces. It lists your bridges, if any. Click on + to add one, give it a name. It will show up in the virtual interfaces list with a Unix-style interface name like "bridge1".
Then you can connect things to that bridge, for example an AXPbox emulated Ethernet, or a PyDECnet circuit via pcap. Wireshark will happily display the packets on that bridged network. And a software bridge can then connect that LAN to other things, for example over UDP.
Enjoy.
paul