The paper describes a plausible UNIX implementation of a simple network communication scheme. The main characteristics of the method are that: (1) it tries to optimize the transfer of large quantities of data by allowing up to 2 Gbytes to be transferred with a single call on i/o primitives; (2) it provides for a simple network addressing scheme where each destination and source is identified by a single <host number; port number> pair; and (3) it provides for an interesting “scatter-gather” facility that lets the user copy data from and into noncontiguous areas of memory. The rationale for this scatter-gather facility is that it may speed up data transfers by restricting the number of context switches required between user and system code.
Interfaces for this “Uniform Datagram Service” (UDS) were implemented for various flavors of local area networks, ranging from the Cambridge Ring to an ad hoc network built from RS-232 interfaces. The interface provides users with six standard i/o primitives for sending and receiving data and for obtaining information about the mapping between logical and real network addresses. The work may be a useful guideline for similar efforts to implement datagram services. The performance measurements reported are not too remarkable. As expected, they confirm that it is efficient to minimize the number of context switches in a UNIX environment, and similarly beneficial to transfer data in large chunks rather than in small ones. The data transfer rates achieved with the UDS on the Cambridge Ring are between 4 and 5 Kbytes/s.