Re: tcp/ip over scsi

From: Jeff V. Merkey (
Date: Fri Jun 02 2000 - 12:08:02 EST


We did something like this on SCSI-II in 1992 while I was at Memorex
Telex for our S/370 mainframe cluster controllers. We used high speed
SCSI to provide a clustering interconnect for S/370 and 3174 cluster
controllers for IBM mainframes. We used an M64 embedded OS, NetWare
(gag!) and ATT Unix OS's and I'll share what we discovered.

A. You need to write your own SCSI-II initiator and SCSI-II target
scripts for the chipsets because there are several special cases you
must handle if you are using SCSI as a comm interconnect -- standard
disk scripts don't cut it. If you put in these special cases,
performance can be stunning and low latency on SCSI.

B. We used NCR 53C720 chipsets on the SCSI-II cluster adapters we
designed for the 1174 and 9432 (3172/3088) cluster controllers. We
discovered that SCSI and S/370 channel had a lot of similiar behaviors
in terms of data transfer architectures, and after 8 months of profiling
and analysis, discovered that the 3088 method used by IBM was ideal when
applied to a SCSI-II interconnect.

C. The best method is to reserve two SCSI addresses per system, one for
reads and one for writes. The IBM 3088 cluster controller does
something similiar, it reserves a range of subchannel addresses (very
similar to SCSI LUN addressing) and reserves some for writes and some
for reads. On IBM channel, there is the ability to present two statuses
which will tell the host controller when the I/O is completed
(Channel-End) and when the channel device is ready to receive the next
request (Device-End). On the read side, a 3088 will hold off
Device_ending status to "prime" the device for the next read. You kind
of need to do this since S/370 channel and SCSI both have this concept
of master-slave and writes are "pushed" and reads "pulled" from the
target by using selection and reselection protocols. We did something
very similar to handle special case for multiple outstanding asynch
reads from a SCSI-II address. We mapped IP addresses and adapter
addresses to each R/W pair of SCSI addresses.

D. With this, we were able to route TCP/IP, IPX/SPX, LLC8022, and all
these different LAN protocols at very high data rates, and across
multiple pairs of SCSI-II LUN addresses and SCSI-II adapters in a
cluster, as well as standard SNA Request Unit traffic, to Network
servers and devices as well as S/370 mainframes, 3172 gateways, etc.
and at very low latency.

Whether someone has done this on Linux I don't know, but someone like
Gerard Roudier could easily whip out some SCSI scripts to do this, and
envelope it with the Network routers in Linux. Network interconnects
are a lot faster these days, and there's SSA, and Fibre Channel, and all
this other stuff that is much better designed than SCSI. If you are
interested in doing something with SCSI, here's some ideas to consider.



Rogier Wolff wrote:
> david wrote:
> > has any one got tcp/ip over scsi working ?
> > if not i am going to try it my self
> > as i need the bandwidth
> > also if any one has any info to help this project please let me know
> > as the more help the better
> The consensus on Linux-kernel is that you should buy a few gigabit
> ethernet cards.
> Roger.
> --
> ** ** ** +31-15-2137555 **
> *-- BitWizard writes Linux device drivers for any device you may have! --*
> * Common sense is the collection of *
> ****** prejudices acquired by age eighteen. -- Albert Einstein ********
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to
> Please read the FAQ at

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at

This archive was generated by hypermail 2b29 : Wed Jun 07 2000 - 21:00:15 EST