U-Net Release Notes

These are the release notes for U-Net version 2.1, 13-January-1998.


Last modified 13-January-1998 by M. Welsh

Introduction

U-Net is a protected, user-level network architecture for low-latency and high-bandwidth communication. ATM, Fast Ethernet, and Myrinet are the network media supported with this release. Please see the U-Net documentation tree for general information about the system.

Getting the U-Net Software

The latest U-Net software release can be obtained from ftp://ftp.cs.cornell.edu/pub/mdw/unet/. The documentation (including this file) is contained within the release; please be sure you are reading the newest version.

Supported Hardware

This release of U-Net supports the following network interfaces:

Note that FORE 200e series boards are not yet supported. Some changes to the i960 firmware are required, and the memory layout presented by the board appears to be different. We hope to have this working without much trouble.

Disclaimer and Copyright

This is an EXPERIMENTAL release of U-Net. A number of features are missing and bugs remain; see Bugs and Features below. Please contact the authors if you have questions or problems, but we emphasize that nothing is guaranteed to work.

All U-Net software and documentation is Copyright (c) 1995, 1996 by Cornell University, Copyright (c) 1997, 1998 by Matt Welsh.
All rights reserved.

Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software.

IN NO EVENT SHALL CORNELL UNIVERSITY OR MATT WELSH BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF CORNELL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

CORNELL UNIVERSITY AND MATT WELSH SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND CORNELL UNIVERSITY AND MATT WELSH HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

Source Tree

The U-Net source tree contains the following files/directories:

COPYRIGHT.h
The U-Net copyright license.
Makefile
Top-level Makefile used to compile the system.
README
General notes.
dev-pca200-linux
FORE Systems PCA-200 device driver for Linux 1.3.x.
dev-sba200-solaris
FORE Systems SBA-200 device driver for Solaris 2.x.
dev-sba200-sunos
FORE SYstems SBA-200 device driver for SunOS 4.1.x.
dev-tulip-linux
DC21140 "Tulip" device driver for Linux 1.3.x.
dev-myrinet-linux
Myrinet PCI device driver for Linux 2.0.x.
dev-myrinet-solaris
Myrinet SBus device driver for Solaris 2.x.
dev-myrinet-bsdi
Myrinet PCI device driver for BSD/OS 3.0.
docs
Documentation.
firmware/fore-200
i960 firmware binaries for the FORE 200-series ATM cards. U-Net requires this replacement for the i960 firmware supplied by FORE Systems. This is provided in binary form (a simple program is used to download it onto the ATM card). Due to licensing issues with FORE, we are unfortunately unable to distribute the sources for the i960 firmware at this time.
firmware/lanai4.x
LanAI 4.x firmware binaries for Myrinet cards. U-Net requires this new firmware ("LCP") and will not operate with other firmware versions (such as those supplied by Myricom). All source code is provided for the U-Net firmware.
include
Contains unet.h, which defines the user-visible interface to the U-Net device. This is documented in the U-Net Device Reference.
install
Scripts and files to help you install the system. See Installing U-Net for more information on installation.
libunet
An example of a U-Net interface library. libunet is by no means an optimal or ``standard'' interface. Rather, the ``raw'' interface defined by include/unet.h is the portable, standard interface to the U-Net device. libunet is to be used as an example of one way to use U-Net, and it may be helpful to you. (Read: Basing programs and systems on libunet alone is not reccommended.)
test
Various example and test programs, such as simple ping-pong and loopback benchmarks. These are not optimal programs (indeed, they use libunet), but are meant to be used as examples of U-Net applications. Not for serious benchmarking use.
uam
Contains U-Net Active Messages, a higher-level messaging layer built on top of U-Net. Provides a simple RPC mechanism as well as flow-control and reliable delivery. Use of UAM will allow Split-C applications to run over U-Net as well. No further information on UAM is supplied here; please read the source code and relevant papers (from the web site) for more information.
utils/uload-fore200
uload loads the i960 firmware onto the FORE Systems ATM cards. It requires the appropriate U-Net device driver to be installed, as well as the objcopy utility (compiled from the GNU i960 tools distribution). See System Requirements, below, for more information.
utils/uload-lanai
uload loads the LanAI firmware into the Myrinet SRAM.
utils/ureset
Simple program to reset the U-Net device to a known state.

System Requirements

FORE Systems SBA-200

You will need, of course, an SBA-200 ATM adapter. The SBA-200e is currently not supported, but we hope to have this ready soon. U-Net also requires cache-coherency between system RAM and the SBus. This means that cache-coherency sun4m systems only are supported, such as SparcStation 10/20's and higher-end systems. SparcStation 5 systems are not cache-coherent with respect to the SBus.

U-Net requires a modified version of the firmware which runs on the i960 on the SBA-200 board. This firmware is provided in the fore-200/bin-sba200 directory as two binaries: One compiled with debugging support, and another without. The uload program (which we also provide) is used to download the firmware onto the i960. It is a simple program which can be used from the command-line, or executed at system boot-time. (Replacing the i960 firmware does not require the burning of PROMs or replacement of chips on the board; the i960 firmware is stored in RAM.)

To compile and run uload you will need two files, compiled from the GNU i960 tools distribution: toolib.a and objcopy. The most recent version of the i960 tools can be downloaded from ftp://ftp.intel.com/pub/i960/gnu/. For your sanity we provide binaries of objcopy and toolib.a in the uload/i960-binaries directory. We don't guarantee that these binaries will work for you; if not, please compile them yourself from the i960 tools.

SunOS 4.1.x and Solaris 2.x are supported. The kernel driver is a loadable module; you will not need to rebuild your kernel. Note that use of U-Net is incompatible with use of the original FORE kernel drivers or i960 firmware. This means that you cannot use the original FORE code while the U-Net driver and firmware are loaded. However, it is relatively easy to swich back and forth between the two. (Namely, reload the original FORE device driver and firmware.) Under SunOS 4.1.x the FORE driver is built into the kernel itself; you'll need to use a kernel without the FORE driver installed.

The U-Net device does not handle signalling. For each channel of an application endpoint, the application must tell the device which VPI/VCI to send outgoing cells to and accept incoming cells from (send and receive can be associated with different VPI/VCI pairs). Signalling is assumed to be handled by some other code.

FORE Systems PCA-200

You will need, of course, a PCA-200 ATM adapter. The PCA-200e is currently not supported, but we plan to add this in the near future.

As with the SBA-200, U-Net requires a modified version of the firmware which runs on the i960 on the SBA-200 board. This firmware is provided in the fore-200/bin-pca200 directory as two binaries: One compiled with debugging support, and another without. The uload program (which we also provide) is used to download the firmware onto the i960.

objcopy and toolib.a are needed from the GNU i960 tools distribution. For your sanity we provide Linux ELF binaries of these in the uload/i960-binaries directory. We don't guarantee that these binaries will work for you; if not, please compile them yourself from the i960 tools.

Linux 1.3.x is supported. Not all versions of the Linux kernel may work with this driver; our development systems run 1.3.45. Later kernels should work but are untested. A small kernel patch is required to add support for the ``U-Net Area'' memory allocation routines; see the install directory.

As with the SBA-200, the U-Net device does not handle signalling.

DECChip 21140

The DC21140 ``Tulip'' PCI Fast Ethernet controller is used on a variety of Fast Ethernet cards; we use the SMC EtherPower 10/100. All that is required to use the U-Net/Tulip device is a board which uses this chip (it is assumed that all DC21140-based controllers will work) and the code here.

Linux 1.3.x is supported. Not all Linux kernel versions may work with this driver; we run 1.3.45. A small kernel patch is required to add support for the ``U-Net Area'' memory allocation routines; see the installdirectory.

For connections to other machines, a Fast Ethernet hub or switch should be used. A back-to-back Fast Ethernet connection can be made by mangling a UTP5 cable and crossing the Tx/Rx lines (null modem). Normally the DC21140 will not receive Ethernet packets sent to itself, so care should be taken in writing user code not to expect loopback transmission to occur. A #define in the Tulip kernel driver allows the DC21140 to be placed into Full Duplex mode, where loopback will work; however, this disables collision and carrier detection. If you want to use loopback, you can (again) mangle a UTP5, connecting the Tx/Rx lines together to form a ``stub'' cable.

The U-Net device uses Ethernet MAC addressing directly, not IP. U-Net speaks its own Ethernet ``protocol'' whereby the first byte of the Ethernet protocol ID field is 0x60, the second byte is the ``port number'' (used to multiplex multiple connections on one Tulip device) and the first two bytes of the payload contain the ``true packet length''. The net result is that U-Net packets won't get routed through IP routers. In a future release we hope to use a slimmed-down IPv4 framing to allow this.

Myricom Myrinet Interface

The Myrinet interface for both SBus and PCI is supported with all known memory configurations (256K, 512K, and 1024K).

Linux 2.x, BSD/OS 3.0, and Solaris 2.x are supported. In the case of BSD/OS, the kernel driver is integrated with the original Myricom/Fast Messages API driver although the board may only run in U-Net mode or FM mode at a given time (depending on which LCP is loaded). For Solaris and Linux the kernel driver is ``standalone'' meaning that it does not depend on any other software. When the U-Net driver and firmware are loaded the board may only be used for U-Net. Under Linux a small kernel patch is required to add support for the ``U-Net Area'' memory allocation routines; see the installdirectory.

To compile the uload utility you will need to install the LanAI binutils package available from Myricom. To compile the LCP firmware (hopefully not needed; I've supplied a binary) you'll also need the LanAI gcc package from Myricom. I don't supply instructions on recompiling the LCP here; please e-mail if you need help.

Design and Implementation

Far too complex to go into here, but the basic ideas are quite simple. Please see the Resources listing for papers, web pages, etc. which describe the U-Net design and implementation itself. We have provided sources for everything possible; the ATM U-Net implementation is, unfortunately, embodied in the firmware code which we can't release. Contact us if you have questions about how things work.

Bugs and (missing) Features

Known bugs:

Unsupported features:


Return to U-Net Documentation.


M. Welsh, mdw at cs dot berkeley dot edu