UNIX Network Software Status This paper describes the present state of the software. The kernel and user code are discussed separately. Kernel: Driver for "Pronet" (10Mb/s token-passing ring net) installed and working. Internet packet transmission installed and working. Internet packet reception, and demultiplexing of UDP and TCP packets, installed and working. Other protocols are received but not demultiplexed by the kernel. Reassembly of fragmented internet packets installed and working. Maintains cache of internet host ids with the best local gateway to which packets destined for each host should be sent; this cache is updated by calls from user programs. Demultiplexing of incoming ICMP error packets written and tested, but not yet installed (again, no one sends us ICMP errors). Pseudo-teletype code installed and working (not really net software, but necessary for Server Telnet). User: ICMP/GGP daemon installed and working. It presently handles only GGP and ICMP echo packets, ICMP timestamp packets, and ICMP redirects. It also generates GGP and ICMP echoes and timestamps on user request. The code to process incoming redirects and update the kernel routing tables is working. User and server TFTP daemons written and working. These are our primary file transfer programs at present. User TCP/Telnet program written and working. This is based on a "toy" TCP which works, but provides minimal functionality. It in turn is based on a small multitasking package which permits multiple tasks (each with its own stack) to run within a single UNIX process. User and server TCP/SMTP programs written and working. These also use the tasking-based TCP. They are integrated into our mail system, which is homegrown, and hence will have to be modified for use with anyone else's mailer. Server TCP/Telnet written and working. The TCP is believed to meet the full specification, including handling the maximum buffer size option, and the security and precedence fields. Server Telnet requires the installation of pseudo-teletypes in the kernel. Libraries: We presently have libraries of routines to perform the basic Internet and UDP functions: connection open/close, packet allocation/ deallocation, and packet transmission/reception. We also have library routines for host name-to-internet address resolution, by querying UDP nameservers. The internet library code performs packet fragmentation; it permits the user to specify an option string in outgoing packets and to obtain the option string from incoming packets, but performs no option processing itself. Documentation: Documentation is unfortunately miminal at this point. We have a short document which gives an overview of the kernel code, describes the kernel calls, and explains some of the rationale behind the design. We have manual pages for the Internet and UDP libraries. We have a short paper on the performance testing we have done so far. There is virtually no documentation on the ICMP or TFTP daemons, user Telnet, toy TCP, or tasking. Some of this lack of documentation should be remedied soon. We have the following (incomplete) performance figures. All measurements were made on an unloaded pdp-11/45 with 8K cache, 3/4 Mbyte of main memory, 6 512-byte kernel packet buffers, and a Pronet net interface. Transmission of a 512-byte packet takes on average 7 milliseconds; reception takes on average 4 milliseconds (reception time does not include process scheduling time). Round-trip time for an ICMP timestamp packet sent from our machine to itself (thus requiring 2 packet transmissions and 2 receptions) takes between 30 and 40 milliseconds. The maximum TFTP transfer rate we have observed was 133 Kbits/second, between our machine and a VAX on the same ring net (the maximum transfer rate of our disks seems to be about 140 Kbits/sec). The toy TCP used in the user Telnet has been observed to sink data (ie memory-to-memory transfer) from the VAX at 215 Kbits/second. The TCP used in the server Telnet has been observed to source data (memory-to-memory transfer) to an Alto on an ethernet at 315 Kbits/second; the gateway between Pronet and ethernet was an LSI 11/03. Finally, a few notes on what our implementation does NOT support. 1) We do not support more than one network interface per host. 2) The only network driver we have written is for the Pronet ring. We do not have and do not plan an IMP driver. 3) Work on FTP is in a preliminary stage; we have no estimate of when it will be done. 4) This is not a "polished" distribution, nor is it supplied ready-to-run. Some work will be required to bring things up.