[Simh] [HECnet] Announcing TCP/IP for RSX-11M-PLUS

Johnny Billquist bqt at softjar.se
Fri Jun 12 10:21:35 CDT 2015

Aw, chucks.
After reading the other day about someone who was talking about VMS and 
the wish for DHCP, I actually decided that it was time that BQTCP/IP 
also got DHCP.

So, without further ado - I cut a new release. One bugfix for a bug in 
the TCP state machine, which could get stuck, but otherwise the big 
reason is that DHCP is now implemented.

Read the documentation, or ask me questions. The IPGEN procedure will 
create installation files for use with DHCP, but if you are upgrading 
from a previous version, you might want to make comparisons with the new 
command files, and merge any new stuff in, if you want to use DHCP.

If you don't care about DHCP, then nothing needs to change in the 
current configs.

DHCP tries to be clever, and handle some different options, but there 
are parts that I do not use myself, that I have not tested, or sometimes 
implemented. In such cases you might see some messages on the console. 
Pass such information on to me, and I can improve things.

DHCP is written in PDP-11 C. If you do not have that compiler, you will 
not be able to recompile the code. Sources are provided, along with a 
binary that runs, and do not depend on any shared libraries.

The DHCP code also makes use of some functions and interfaces to the IP 
stack and the interface drivers that others might find useful to 
reference to if they are interested in doing low level stuff with 
TCP/IP. (Such as reading/writing interface configs and routing tables.)

As usual, the distribution is available from:

The documentation is also available through ftp on Madame, or also at 

I hope people will find this latest release useful, and my next project 
right now is telnet (this time really...).


On 2015-06-08 19:03, Johnny Billquist wrote:
> About three months since I last announced anything. There have been
> various development since, and I figured I should encourage people who
> are using BQTCP/IP for RSX to upgrade to the latest release.
> A short list of changes:
> . ICMP packets accidentally lost the source IP address informaton when
>    returning information to a program. - Fixed.
> TCP:
> . User timers on TCP sockets could erroneously stop. - Fixed.
> . User timers now reset on completed reads, so that you do
>    not get a timeout if you are constantly completing reads.
> . Sockets in Fin-Wait-2 could sometimes get stuck in that state.
>    - Fixed.
> . If a TCP session got an RST, it could get into a bad state. - Fixed.
> . Added the ability to send URGENT data in TCP. (Receive ignores any
>    URGENT flags.)
> . Added a special I/O function to read from TCP without formatting.
> DNS:
> . Improved stability of DNS client daemon code.
> FTP:
> . FTP client and server performance improved.
> . FTP server logging added.
> . Improvements in FTP server and client for handling files with implicit
>    CFLF.
> . Implemented primitive handling of Unix file paths implemented in FTP
>    server. This allows most web browsers to access FTP repositories
>    under RSX.
> I also did some performance testing using FTP.
> FTP from a modern Unix system of BQTCP.DSK in binary mode to both RSX
> and 2.11BSD, running under simh on the same physical machine:
> 2.11BSD: 210s
> RSX: 141s
>  From RSX (E11) to the same machines:
> 2.11BSD: 240s
> RSX: 137s
> I honestly do not know why transfer from RSX to 2.11BSD took longer than
> from Unix, but transfer from RSX to RSX was faster compared to Unix to
> RSX. I would have expected both to be slower or faster. But the numbers
> are interesting, and show that the RSX TCP implementation is doing
> fairly well, even through it goes through the DECnet ethernet driver, as
> compared to 2.11BSD which runs TCP/IP more "native".
> As usual, the distribution is available from:
> ftp://madame.update.uu.se/bqtcp.dsk
> ftp://madame.update.uu.se/bqtcp.tap
> ftp://ftp.update.uu.se/pub/pdp11/rsx/tcpip/tcpip.dsk
> The documentation is also available through ftp on Madame, or also at
> http://madame.update.uu.se/tcpipdoc
> I hope people will find this latest release useful, and my next project
> right now is telnet.
>      Johnny
> On 2015-01-16 04:47, Johnny Billquist wrote:
>> There have been lots of positive comments, and obviously some people
>> have even tested using the software.
>> Of course, a bug was also found. A really weird corner case with
>> severely loading the network stack and having a socket in listen state
>> programatically could trigger a corruption of kernel memory.
>> So I've cut a new release with the bug fixed.
>> While I'm at it I also realize that I forgot to mention that included in
>> the distribution is also a simple IRC client as well as a simple IRC
>> robot.
>> I've also taken a little time to slightly improve the documentation, and
>> the documentation is now also available directly by ftp from
>> Madame.Update.UU.SE, so you do not need to get the whole distribution
>> and unpack it to just read something.
>> So - same as before. Disk image and tape image are available at
>> Madame.Update.UU.SE. Use anonymous ftp.
>> Disk image is also available at
>> ftp://ftp.update.uu.se/pub/pdp11/rsx/tcpip.
>> The disk image is a virtual RL02 disk. Can be used with any emulator, or
>> also directly inside RSX if you have virtual devices available.
>> Happy hacking.
>>      Johnny
>> On 2015-01-14 00:40, Johnny Billquist wrote:
>>> Well, it's been a long time project, but I'm happy to finally announce a
>>> more public initial release of TCP/IP for RSX-11M-PLUS.
>>> This is the result of over 20 years of development. Needless to say,
>>> I've been doing a lot of things over the years, and this code have been
>>> through four reimplementations over the years.
>>> What I now release is something that I believe is a nice and useful
>>> piece of software. I am aware of the fact that most people do not use
>>> these machines any longer, but if someone actually wants to talk to me
>>> about support for this or other RSX software, let me know.
>>> Also, feel free to spread this information to anyone who might be
>>> interested, anywhere.
>>> So - what is in this release?
>>> It is a complete implementation of ARP, IP, UDP, and TCP for
>>> RSX-11M-PLUS. It has been tested on RSX-11M-PLUS V4.6, but should work
>>> on any V4 release. There might be some small tweaks or fixes required,
>>> but nothing major.
>>> It do require a system with split I/D-space, or else at least the TCP
>>> part will not fit.
>>> For Unibus machines, it should be possible to run without any additional
>>> software except what is in a base RSX distribution.
>>> For Q-bus machines, DECnet is required for ethernet networking.
>>> The TCP/IP stack can co-exist with DECnet.
>>> Some utilities also utilize RMS for file access.
>>> A bunch of tools, utilities and libraries are also included. These
>>> include:
>>> . IFCONFIG network configuration tool.
>>> . NETSTAT network information tool.
>>> . PING
>>> . DNS client
>>> . FTP daemon
>>> . FTP client
>>> . HTTP server
>>> . TELNET client (rudimentary)
>>> . TFTP client
>>> . TFTP server
>>> . INET server that can do SINK, ECHO, DAYTIME, QUOTE, and IDENT
>>> . NTP client
>>> . LPR client that sits in the queue manager (rudimentary)
>>> . FORTRAN-77 library
>>> . BASIC+2 library
>>> . PDP-11 C library
>>> The implementation fulfills most of the requirements put forth in RFC
>>> 1122. There are a few limitations because of restrictions in the PDP-11,
>>> but none of them should really cause any problems.
>>> Documentation is still on the thin side, but example configs are also
>>> provided, along with installation scripts.
>>> A bunch of test programs and example programs are also included, as well
>>> as the sources of all tools and libraries.
>>> The TCP/IP stack itself only comes in binary form.
>>> All tools are also included precompiled in the distribution, so an
>>> installation only have to build the stack itself for your system, and
>>> then you should be ready to go.
>>> The API only have a slight resemblance to the Unix sockets API. However,
>>> if someone sits down to write code to use TCP/IP under RSX, I'm sure
>>> they will discover that it is extremely easy to use the libraries, or
>>> the basic functions.
>>> The TCP/IP implementation is mostly written as device drivers. This also
>>> have some other interesting implications, such as it is possible to
>>> access TCP as a normal file. You can, for instance do something similar
>>> to the Unix netcat command by issuing the MCR command:
>>>  > PIP TI:=TC:"foo.com";4711
>>> which would open a connection to foo.com, on port 4711, and any data
>>> sent from that machine will be shown on the terminal.
>>> The resources used by TCP/IP are modest. A memory area (size selectable
>>> at generation/startup) is used internally. The amount of memory in the
>>> private pool limits the amount of data that can be buffered. Normal pool
>>> is used in a small quantity for each TCP port that is open.
>>> People are welcome to play around with this, and make improvements.
>>> Contributions of code is most welcome.
>>> There are still lots of things to do. The programs marked as rudimentary
>>> should be rewritten.
>>> The most obvious thing still missing is a telnet daemon, which probably
>>> is my next step.
>>> However, the reason for now announcing the release is that it can
>>> finally be distributed natively from an RSX host.
>>> The main locations to download the TCP/IP for RSX are:
>>> Madame.Update.UU.SE (anonymous ftp).
>>> This is one of my development systems for this software. It runs under
>>> E11, and if things are down, I blame E11. :-)
>>> When connected, you are already in the right directory. There is both an
>>> RL02 disk image there, which can be downloaded by anyone. If you happen
>>> to have an RSX system which you are conneting from, you can also try
>>> getting the BQTCP.TAP tape image. Such an image will not transport
>>> cleanly to a non-RSX system, however. Sorry.
>>> ftp.Update.UU.SE (anonymous ftp) - /pub/pdp11/rsx/tcpip
>>> The disk image is normally duplicated to ftp.update.uu.se as well, so
>>> the same file can be found there.
>>> I hope some people will find this useful/amusing. :-)
>>>      Johnny Billquist
> _______________________________________________
> Simh mailing list
> Simh at trailing-edge.com
> http://mailman.trailing-edge.com/mailman/listinfo/simh

More information about the cctalk mailing list