U-Net Release Notes

These are the release notes for U-Net version 2.0, 10-March-1996.


Last modified 11-Mar-96 by M. Welsh

Introduction

U-Net is a protected, user-level network architecture for low-latency and high-bandwidth communication. ATM and Fast Ethernet are the two 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:

Disclaimer and Copyright

This is a PRELIMINARY 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.
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 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 SPECIFICALLY DISCLAIMS 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 HAS 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
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
DC21140 "Tulip" device driver for Linux 1.3.x.
docs
Documentation.
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.
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.
uload
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
Contains various utility programs. Right now this amounts to ureset, which simply issues a UNET_RESET ioctl to the U-Net device, resetting it to an initial 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.)

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.

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:

Wish list:


Return to U-Net Documentation.


M. Welsh, mdw@cs.cornell.edu