[comp.protocols.tcp-ip.ibmpc] ODI?

morgan@jessica.stanford.edu (RL "Bob" Morgan) (08/14/90)

Those of you who have followed the PC network software interface spec
wars over the last couple of years know that there are three competing
proposals in the market now: FTP Software's Packet Driver (which
suffers from not having a 3- or 4-letter acronym), 3Com/Microsoft's
Network Driver Interface Spec (NDIS), and Novell/Apple's Open
Data-Link Interface (which may be ODI, though that may be tm of
somebody else).  This is a classic case of the unpleasant thing about
standards being that there are too many to choose from.

In my limited experience with trying to put together nets with brand-X
PCs, brand-Y network cards, and brand-Z network software, I've run
into products using all of these specs.  You need to have support of a
particular spec from all the products you want to stick into a
particular PC for them all to work, of course, which turns out to be
tricky at best.

Who supports what is entirely political, it seems.  In looking at
10Base-T cards recently, 3Com and HP both supply only NDIS drivers,
since they're both Lan Manager vendors.  Their ideas of what to put in
the PROTOCOL.INI file seem to be at odds, though.  Cabletron supplies
a PD driver, with a curious extra bit of software to allow NDIS to run
on top too.  Of course, PD software for zillions of cards is available
from Clarkson, etc.

The Wollongong WINTCP software that we use supports both PD and NDIS,
which is nice, but not ODI.  ODI only shows up when you use AppleShare
PC, which won't work with PD or NDIS.  It's my understanding that the
server part of Netware 386 also demands ODI.  Curiously, Netware
client software doesn't use Novell's ODI spec.  Most people who are
into this stuff seem to use PD with Netware clients.  

I've spent a few days now being amused that it takes years of
experience and considerable clairvoyance to install a network board
and some software and actually do something (and I'm only interested
in making Telnet work).  Consulting opportunities abound, clearly.

So:

1)  Are vendors of network boards producing ODI drivers?  Does anyone
know of any?

2)  Are vendors of IP software for PCs producing ODI interface
software for their packages?  Does anyone know of any?

3) Has anyone produced AppleTalk software for PCs that uses one of the
more mainstream specs (ie, not ODI)?  I personally think it's quite
stupid of Apple not to have done this already, but then, maybe they
have a vested interest in this stuff failing . . .

 - RL "Bob" Morgan
   Networking Systems
   Stanford

geoff@hinode.East.Sun.COM (Geoff Arnold @ Sun BOS - R.H. coast near the top) (08/14/90)

Quoth morgan@jessica.stanford.edu (RL "Bob" Morgan) (in <1990Aug13.234051.19998@portia.Stanford.EDU>):
#2)  Are vendors of IP software for PCs producing ODI interface
#software for their packages?  Does anyone know of any?

We're not doing anything with ODI [I thought the acronym was "ODLI"?]
for PC-NFS.  I don't know of any customer or board vendor that has
suggested that we should. We are adding NDIS support in the next
release (the driver is already available from Clarkson), and are
evaluating the feasibility of switching to NDIS completely. The main
obstacles seem to be bloat (we've seen some unreasonably big and/or
slow  NDIS drivers from board vendors who have also written tiny
drivers for the PC-NFS LLDK [Link Level Driver Kit]) and ease-of-use:
I don't want to require users to go in and edit PROTOCOL.INI files,
but I haven't found a good way around this yet in the general case.

Why not adopt PD instead? Because in principle I think that NDIS does
demultiplexing "right" and ODLI and PD do it "wrong". I prefer a
procedural model, where a frame (or at least some part of the frame) is
offered to each protocol stack which can accept or reject it, to one
where the driver does the filtering based upon some template. If the
template mechanism is rich enough to do everything I could imagine
wanting to, it is bound to be slower and larger than any single
protocol-specific recognition procedure.

-- Geoff Arnold, PC-NFS architect, Sun Microsystems. (geoff@East.Sun.COM)   --
** Back in the USA after a month in England. Most memorable scene: visiting **
** the "Duke Humfrey" library (part of the Bodleian in Oxford): wonderful   **
** 15th century ceiling, incanabulae and desks, the latter with PCs on...   **

ljm@OBELIX.TWG.COM (08/15/90)

>Are vendors of IP software for PCs producing ODI interface
>software for their packages?  Does anyone know of any?

We have an ODI driver in house for WIN/TCP for DOS which will be
included in our next release.  I note with mock amazement, that
we now have to support six 'standard' NIC interfaces: our own,
FTP Software's PD, Microsoft's NDIS, Novell's ODI, DEC's DLL,
and IBM's ASI. Ah, yes, standards are wonderful -- there are
so many to choose from.

enjoy,
leo j mclaughlin iii
The Wollongong Group
ljm@twg.com

nelson@sun.soe.clarkson.edu (Russ Nelson) (08/15/90)

In article <2397@east.East.Sun.COM> geoff@hinode.East.Sun.COM (Geoff Arnold @ Sun BOS - R.H. coast near the top) writes:

   Why not adopt PD instead? Because in principle I think that NDIS does
   demultiplexing "right" and ODLI and PD do it "wrong".

If *that*'s your only objection to the PD, then we can bash jbvb@ftp.com over
the head until he changes the spec to allow multiple drivers to be upcalled
with the same packet.  Then your application can just ask for all packets.

   I prefer a procedural model, where a frame (or at least some part
   of the frame) is offered to each protocol stack which can accept or
   reject it, to one where the driver does the filtering based upon
   some template. If the template mechanism is rich enough to do
   everything I could imagine wanting to, it is bound to be slower and
   larger than any single protocol-specific recognition procedure.

But the procedural model bogs down in the details.  How do you write a
procedural model that works equally well on I/O and memory-mapped cards?
The PD gets around this by letting you examine at most 8 bytes of the
packet, and only 4 of these make sense for Ethernet.

Perhaps the reason you've seen NDIS drivers that are big and slow is
because the NDIS spec is big (and requires slowness)?  Perhaps because
NDIS comes from that firm whose products are big and slow (bash,
bash)?  It's no coincidence that the packet drivers are shipped to
assemble with tasm, and link with tlink.

--
--russ (nelson@clutx [.bitnet | .clarkson.edu])  Russ.Nelson@$315.268.6667
We won the cold war.  The Russians spent trillions defending their stuff,
then they found that they didn't have any stuff.  Will we avoid the same trap?

jbvb@FTP.COM ("James B. Van Bokkelen") (08/16/90)

I appreciated the existence of ASI; Up till now there has been a
single standard way to talk to 802.5 boards, and it was available
from all vendors.  IBM only broke my code once, by not obeying their
own spec in the LAN Support Program.  Now, however, NDIS v1 for 802.5
has reared its head (sans any un-bind support), and so a Class 3
packet driver is under test and will see the light of day next month.

I looked at ODI early on, and found that it had some advantages over
NDIS, and some disadvantages:

As Geoff says, the demultiplexing method is "you ask for the packet
types you want", but the last draft I saw specified a fixed 6-byte
field for the demultiplexing information.  This is insufficient for
RFC 1042, and I told the people at Novell, but I assume they chose to
hack around it instead of allocate more space.

ODI provides a good deal of buffer management functionality, which is
good if you can use it effectively.  It is also likely to be
handicapped in somewhat the same way as NDIS was initially, in that
the buffer management layer is only available from Novell or Netware
OEMs as part of Netware (as the NDIS Protocol Manager was initially
bundled with LAN Manager).

We may do an ODI interface if there is demand, but so far we haven't
seen any ODI hardware drivers.  Maybe I should hassle some of the
board vendors, because it sounds like Leo has seen at least one.
We're far away from most of them, and sometimes they forget...

James B. VanBokkelen		26 Princess St., Wakefield, MA  01880
FTP Software Inc.		voice: (617) 246-0900  fax: (617) 246-0901

jbvb@FTP.COM ("James B. Van Bokkelen") (08/16/90)

    From: Russ Nelson <nelson@sun.soe.clarkson.edu>
    
    geoff@hinode.East.Sun.COM (Geoff Arnold @ Sun BOS) writes:
    
       Why not adopt PD instead? Because in principle I think that NDIS does
       demultiplexing "right" and ODLI and PD do it "wrong".
    
    If *that*'s your only objection to the PD, then we can bash jbvb@ftp.com
    over the head until he changes the spec to allow multiple drivers to be
    upcalled with the same packet.  Then your application can just ask for all
    packets.

The problem is of course the slow, DMA-based boards.  The Packet Driver
spec doesn't prevent a given driver from allowing simultaneous "match all"
and "specific packet" handles.  Our own NDIS-to-Packet-Driver doesn't (and
won't) support multiple driver upcalls primarily because the NDIS spec
doesn't guarantee that an NDIS driver can deliver the same packet to more
than one stack, and we needed to minimize size.

Version 1.10 of the packet driver spec is in the works.  A revision of
the as_send_pkt() function has been implemented and tested by Drew
Perkins.  Since Drew proposed the original version, and I don't know
of anyone who implemented it, I am moved to include this in the new
spec.  However, I have seen requests for gather-mode on output.  I am
soliciting people to propose (write up and hopefully test) extensions
to Drew's mechanism.

As far as "look at the packet before it is copied to my buffer" goes,
there are certainly a lot of free registers on the first 'receiver()'
upcall.  The 'get_parameters()' function allows the stack to
determine the PDS revision the driver conforms to.  Suppose that with
v1.10 of the spec, if the DX register is non-zero on the 'AX == 0'
upcall, it is the length of a 'look-ahead' buffer pointed to by
register pair ES:DI.  If the stack doesn't want the packet after all,
it can just return an empty buffer pointer.  One could also guarantee
a minimum length of 60 bytes in Class 1, possibly larger in Class 3.

James B. VanBokkelen		26 Princess St., Wakefield, MA  01880
FTP Software Inc.		voice: (617) 246-0900  fax: (617) 246-0901