U-Net: Protected, User-Level Networking Interface

Release notes for U-Net/NT v1.0


Last modified 1-Feb-97, X. Huang, 11-Dec-96 by M. Welsh

This is the release documentation for U-Net, a low-latency communication mechanism over ATM and Fast Ethernet. U-Net is a research product of the Systems Group at the Cornell University Computer Science Department.

Please see the U-Net Home Page for general information about U-Net, including papers and other background information. This documentation is meant to cover the Windows NT 4.0 release of U-Net only.

Supported Hardware

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

  1. DECChip 21140 "Tulip" PCI Fast Ethernet interface
  2. Zeitnet ATM board

System Requirements

  1. NT 4.0, Win32 SDK, WinNT 4.0 DDK, and all related compilers/utilities installed.

Obtaining the release

Building the software

  1. Start the "Free Build Environment" in the Windows NT DDK Program Group. If you don't have that, you could start the MS-DOS prompt instead.
  2. Ensure that the MSTOOLS\bin and DDK\bin directories are on your PATH.
  3. Do setenv c:\ddk (if c:\ddk is the location of the installed DDK)
  4. Do a set Include=(wherever your winsock2 include and msdev\include are)
  5. Do a set Lib=(wherever your winsock2 library and msdev\lib directory are)
  6. If you wish to enable debugging output from the drivers, be sure that the appropriate #define directives are enabled at the top of the relevant source files. For example, in devTulip\tulip.c, if
           #define TULIP_DEBUG
           

    is defined, the driver will print verbose debug information to the kernel debugger.

  7. Run full-install.bat, this script performs the following tasks automatically. Or you can do them by hand.
  8. If you wish to view debugging output from the drivers, you must have two machines: The 'host' where you will run Windbg to view kernel debugging output, and the 'target' where the drivers actually run. On the target, enable the kernel debugger in boot.ini as so:
         multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00" /DEBUGPORT=COM1 /BAUDRATE=115200
           

    Start WinDbg on the host, and in "Options->Kernel Debugger" enable the kernel debugger and select the COM port and speed. In "Options->User DLLs" add the path to the U-Net tree, e.g., S:\mdw\U-Net Issuing the 'go' command will make WinDbg wait for a connection from the target. WinDbg must be re-started if the target crashes, but not if it's rebooted normally.

    Be sure that the BAUDRATE for the COM ports you choose is set in the Ports control panel on both the host and target. For more information on debugging device drivers, please refer to documentation of NTDDK.

  9. Reboot the target.
  10. At the command prompt on the target, issue
           net start unet
           net start tulip   (OR, net start zeitnet)
           

    It's very important that unet is started before either tulip or zeitnet. Also, don't issue net stop unet before doing a net stop of tulip or zeitnet.

  11. On the target, run the loopback test program which should be in the test\loopback\i386\free\ directory:
           loopback device adddress num-packets packet-size
           

    Here, device is the device name (tulip or zeitnet, followed by a slash, followed by the device index (0 being the first board, 1 being the second, and so forth). tulip/0 specifies the first Tulip board, zeitnet/0 specifies the first Zeitnet.

    For example,

           loopback tulip/0 00:00:c0:49:47:c8.42 1000 40
           

    Or,

           loopback zeitnet/0 101 1000 40
           

    The address format for Fast Ethernet broad is its Ethernet address plus ".chan_number".

Using U-Net

This is a very complex subject, and I'd love to document it, but I don't have the time. If you want to understand how to write and use U-Net applications, try the following:

  1. Read the papers.
  2. Read the header files unetuser.h and libunet.h.
  3. Read the code for libunet and loopback.c.
  4. Read them all again.
  5. Understand loopback.c, and everything in it, better than you understand your own existence.

There are many subtle aspects of this code, it is quite complex, and not everything that we've done is obvious. Of course, there are bugs. If you see something that looks plain wrong, or if things don't work as you expect, first check and double-check your own test program. Almost all U-Net problems boil down to something being done wrong in the application. But, if you're still stumped, by all means let me know. Not all of the code has been tested rigorously.

Also, do not jump to conclusions in the code. If you see something that does not make sense, there may be a very good reason why we did it that way. (Or, there might not.)

For a list of known bugs, see the file BUGS included in the distribution. This file lists "unimplemented features" as well.

There is a brief guide on how to write U-Net applications. And the device reference for U-Net should also help.

Notes about DECChip 21140

There are a few modes of the fast Ethernet boards that can be turn on and off by setting different values in the registry:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tulip

InternalLoopBack mode requires FullDuplex mode to be on.

Contacts

For questions, support, advice, and suicide-prevention counseling, contact Matt Welsh at mdw@cs.cornell.edu. For someone closer to home, talk to Thorsten von Eicken, or Xun Wilson Huang.

Share and enjoy!


M. Welsh, mdw@cs.cornell.edu
X. Huang, xwh@cs.cornell.edu