The Open Data-Link Interface (ODI) Overview

A discussion on why Novell is promoting the transition to the
ODI specification:

A comparision between Novell's Dedicated IPX and ODI, an ODI architectural
overview, and a comparison between ODI and Microsoft's NDIS.

Prepared By Novell Labs Marketing
Revision 1.4

Introduction
This paper provides an overview of ODI from several vantage points.  The
first section will compare ODI with Dedicated IPX.  The second section
contains an architectural overview of ODI and explains the different
components and how they interact.  The third section is a comparison of ODI
with Microsoft's NDIS.  The focus of this paper will be in helping to
understand the advantages of ODI and explain why ODI is Novell's
recommended specification.

Dedicated IPX drivers have been used for most NetWare installations since
NetWare version 2.0A, and still has the largest installed base of any type
of  LAN driver. As with any technology, it was created to serve a distinct
purpose -- act as a bridge between adapter boards and the network
communication protocol, connecting hardware with the network operating
system.  However, many companies have now moved to larger and more complex
systems where dedicated IPX drivers have limitations.  This growing need
for added flexibility in network communication spawned the development of
Open Data-Link Interface (ODI).

ODI is a data-link specification jointly developed by Apple Computer and
Novell and published to the networking industry in 1989.  The strategic
goal of ODI is to provide seamless network integration at the transport,
network, and data-link levels.  ODI simplifies the development of network
drivers for a wide variety of network adapters and network transport
protocol stacks.  The result is easier access to a wide variety of
networked resources without requiring multiple network connections or
additional investments in hardware and software.

Section I: Comparing Dedicated IPX and ODI

IPX: The way things were

To fully understand the improved functionality offered by ODI drivers, you
must first understand how dedicated IPX works and what it's limitations
are.

Dedicated IPX on a DOS workstation allows network clients to communicate with
NetWare servers via a single protocol.

In a typical DOS IPX installation, a client uses a LAN adapter and a
dedicated IPX driver to connect to the network, employing the IPX protocol
to communicate with the NetWare server. On the server side, another LAN
adapter receives the data, configured for the IPX protocol, and processes
the incoming information.  Communication goes back and forth between these
two entities along this single channel using only the IPX protocol.

This works well if all the server has to handle are DOS and OS/2 clients
using only the IPX protocol. But networks are getting more and more
complex, network managers now need to tie in more and more disparate client
types and protocol stacks on one server. What if you need to network DOS,
AppleTalk and UNIX? This could not be done under the old Dedicated IPX
architecture.

ODI: How it addresses the need for flexible protocol support

ODI's architecture is designed to radically simplify support for multiple
protocols on a single network. Rather than installing a separate driver and
adapter for each client type that needs to be supported on the network, ODI
consolidates the support for multiple protocols under one driver. This
means that one adapter in the server can support various clients on the
network.

ODI provides transport support so a Apple Macintosh (using the AFP
protocol) can use a NetWare server to queue and print documents and save
data files that are shareable with other types of workstations. UNIX,
OS/2, TCP/IP and other clients can be supported in a similar manner.

ODI allows a network to support many different protocols (such as IPX/SPX,
TCP/IP and AppleTalk) with ease.  ODI also allows network managers to
integrate new protocols (or enhancements to existing protocols) into
existing networks as they become available.

ODI consolidates services on the client side as well. Using the right
ODI adapter/driver combination, a  workstation can access services from a
NetWare server and a UNIX host without rebooting the client. And only one
client  card is needed to support both IPX and TCP/IP.

Thus, ODI allows for multiple types of workstations to communicate
transparently with network services through a single server.  Furthermore,
ODI lets a single protocol stack communicate with multiple LAN cards, (for
example, an IPX router) which was not previously possible with Dedicated
IPX.

ODI drivers are also much easier to install and upgrade than Dedicated IPX
drivers: under Dedicated IPX the driver had to be bound to the operating
system through NETGEN or SHGEN. If a customer wanted to upgrade the driver,
he or she had to re-install (re-gen) the operating system. This can be a
time consuming process, especially when considering that the operating
system must be re-installed exactly as it was set up before -- whoever does
the installation has to know all of the defaults and settings that were set
on the original file system, otherwise the system won't be completly
functional when it is re-intalled.

ODI alleviates this problem entirely by allowing new and updated drivers to
be loaded on the fly. Simply unload the existing driver and load the new
one, and the underlying file system remains uneffected.

ODI has many advantages over Dedicated IPX.  Because of these advantages,
OS/2 has always been ODI and DOS ODI was shipped with v3.10 and v2.2
Netware and later.  A comparison of some of the features and capabilities
between the two are listed below.

A Comparison of Dedicated IPX and ODI

Frame type support

	DEDICATED IPX:
		Ethernet Frame types Supported:
  			 802.3
  			 Ethernet II
			 Token Ring

	ODI:
		Ethernet Frame types Supported:
			 802.2
			 802.3
			 Ethernet II
			 Snap
		Token Ring:
			 802.5
			 802.2 Snap

	BENEFITS OF ODI:

		One driver allows the customer to easily support multiple
		frame types on the same network.  This opens the network up
		to more products and platforms.


Protocol support

	DEDICATED IPX:

		Supports a single protocol stack:
			 IPX
			 Appletalk (on the server)

	ODI:

		Supports multiple protocol stacks simultaneously:
			 IPX
			 TCP/IP
			 AppleTalk
			 OSI
			 ...etc...

	BENEFITS OF ODI:

		Allows for multiple protocol support under a single card
		and driver.  This provides easier maintenance for hooking
		up multiple clients to a single server and accessing
		resources from host servers.


Physical board support

	DEDICATED IPX:

		Supports up to 4 physical boards in server

	ODI:

		Supports up to 255 logical boards in server or as many
		physical boards as will fit in the machine

	BENEFITS OF ODI:

		Provides support for a larger number of LAN boards.  Allows
		for balancing of network load over multiple cards.


Throughput capacity

	DEDICATED IPX:

		Max packet size = Up to 4k
		only in powers of 2 (512, 1k, 2k, 4k)

	ODI:
	
		Max packet size = Up to 24k depending on media and board
		limitations

	BENEFITS OF ODI:

		Substantially increases total network throughput.


Ease of maintenance

	DEDICATED IPX:

		Drivers may not be unloaded

	ODI:

		Drivers can be loaded on the fly.


	BENEFITS OF ODI:

		Allows you to upgrade LAN drivers with minimal interruption
		to network services.  No need to re-install operating system.


Additional Features

	ODI:
	
		Also supports:
			Lanalyzer for NetWare
			Packet Burst
			Locally administered node addresses


	BENEFITS OF ODI:

		ODI supports network services that Dedicated IPX currently
		does not support.  Additional network services will be
		compatible with ODI as they are provided.



Section II: Architectural Overview

With ODI, any LAN driver can communicate with any ODI protocol stack.  The
diagram below shows the modular structure of ODI.  The three components of
ODI technology are:
	Multi-Link Interface Driver (MLID)
	Link Support Layer (LSL)
	Protocol Stacks

Multi-Link Interface Driver (MLID)
The Multi-Link Interface Driver (MLID) is a network interface card driver
developed to the ODI MLI specifications. The MLID controls communication
between the LAN board and the Link Support Layer.  There are two parts to
the MLID: the Media Support Module (MSM) and the Hardware-Specific Module
(HSM).  The MSM is source code provided by Novell that implements the
standard functions of LAN drivers into ODI for each of the standard media
types.  The HSM is the code written by the developer to handle the LAN
board details.

When the MLID receives a packet of data, it removes the media access
information (MAC header) and passes the packet to the Link Support Layer.
Since the media details are invisible to the LSL, this modular design
provides true media independence.

Link Support Layer (LSL)
The Link Support Layer (LSL) is the technological factor that allows a
single driver to support multiple protocols and for a protocol to use
multiple drivers. When the LSL receives a packet of data from the MLID, the
LSL acts as a switchboard by determining which protocol stack should
receive the packet.  This "traffic cop" functionality eliminates the need
to write separate drivers for each frame/protocol combination, thereby
dramatically reducing the number of drivers a developer has to write and a
customer has to install.

Protocol stacks
The protocol stack receives packets of information from the LSL and is
unaware of the media or LAN board type through which it passed.  It then
removes the protocol specific header information and passes the packets on
to other higher-layer protocols or applications.  The most popular types of
protocol stacks are IPX/SPX, TCP/IP, AppleTalk, and OSI.

The modular design of ODI is the key to its flexibility.  This modularity
is created by making sure that the protocol stacks are unaware of media
knowledge and that the MLIDs are unaware of protocol knowledge. The drivers
and the protocol stacks operate independent of each other making it
possible to add new media or new protocols to the file system easily.


Section III: Comparing NDIS and ODI

NDIS was co-developed by 3COM and Microsoft.  A  drawing is included below
to compare the conceptual architectural models of NDIS and ODI.  This will
provide a basis for understanding the differences between the two
specifications. (Note: this discussion is not meant to be an engineering-
level comparison of the two specifications, but rather provide a basic
working knowledge of the important differences between NDIS and ODI.)

There are several distinct differences between ODI and NDIS that end up
affecting the value of products written to the different specifications.
While both specifications promote schemes to support multiple protocols on
an internetwork, their different approaches to enabling this functionality
result in dramatically different customer implementations.

Novell's orientation on driver support is that it should be as invisible as
possible to the customer. There are many issues to consider when trying to
make driver support invisible to customers:

*	Technical competence: Does the driver actually do what it is
supposed to do: support multiple protocols? Does it do so
efficiently and gracefully?

*	Flexibility: Can additional protocols be supported as they are
developed? What about additional media, such as FDDI or ATM?  How
difficult is it to integrate support for these new products as they
emerge? Will products based on new media or protocols work with
products developed to the existing architectural specs?

*	Backward compatibility: If you are a customer and have invested in
products that support ODI, will future versions of ODI continue to
support these products or will you have to replace drivers? What
about NDIS?

*	Reliability: How can a customer determine if a third party product
really conforms to a spec, whether it be ODI or NDIS? What
difference does this make to a customer? How well will different
products from different vendors, written to the same spec,
interoperate?

*	Development issues: How long does it take to develop ODI drivers?
What is being done to reduce development time even further? How
does this affect driver availability to the customer? What
advantages does a "modular" approach offer over a "media-dependent"
approach? How does the ODINSUP shim (available through ODI) make
NDIS driver development practically unnecessary?

Flexibility

NDIS protocol stacks are media aware --they contain media knowledge in the
protocol stack.  Almost all NDIS stacks will recognize and support Ethernet
802.3 or TokenRing 802.5 or both.  This means that drivers for other media
such as Arcnet or ATM must shim this media to make it look like 802.3 or
802.5.  As a result NDIS drivers have been much more difficult to write to
any media other than Ethernet and TokenRing.

This is not so with ODI.  ODI was designed to transparently support any
network transport regardless of the underlying media.  For instance, ODI
will integrate FDDI, wireless technology or other media types into your
present network without the need to rewrite or change the protocol stacks.

The method NDIS employs to support multiple protocol stacks can also be an
issue, especially in cases where true multiprotocol support is needed. When
a system uses multiple protocol stacks, NDIS is set up to daisy chain the
packets from stack to stack (through the Protocol Manager) until the packet
is recognized and received.  This works well as long as the data packet
always needs to go to the first protocol stack in the chain, but if the
traffic is evenly spread across several stacks, or a new stack is added in
later, then the Protocol Manager will spend a lot of time toggling between
stacks looking for the right route for data transmission and the protocol
stacks at the front of the chain will get higher performance than those at
the back.

Microsoft suggests that the protocols should be loaded in order of network
traffic use so as to speed up the throughput.  But when a new protocol is
added to the network, it is the last protocol to get passed the packet of
information.  If this new protocol is going to be used for most of the
network transportation, then to get optimal speed under NDIS, you would be
required to reload all of the protocol stacks, making sure that the new
stack was loaded first.  In any case, the customer must have knowledge of
NDIS and tweak the NDIS system to get good performance from the system.

Again, the philosophy behind ODI is to minimize customer involvement with
the system -- set the system up so that the system takes care of all of the
transport details. Under ODI, the LSL determines which protocol stack
should receive each packet of information and the loading order is
irrelevant. A stack can be added into the system and ODI automatically
supports it.  And loading and unloading drivers with ODI is much easier
than with NDIS: NDIS driver loading is done in the config.sys file, while
ODI is a TSR and, under DOS, provides more flexibility for loading and
unloading drivers.


Reliability

Another important comparison to make between ODI and NDIS is how to gauge
the reliability of drivers written to each specification.  Currently
Microsoft provides test tools to developers so that they can test their own
drivers after they write them.  No outside testing or verification is
required for the drivers, so a customer really has no way of knowing how
well tested or reliable an NDIS driver is.

This is more risky when compared to the standards Novell has set for ODI.
Novell has established a department specifically designed to test and
certify drivers written by developers.  This is done to assure that the
drivers meet specifications and run in various configurations. In a sense,
Novell Labs has established a watermark that developers must meet in order
to call a product an ODI driver.

Furthermore, once an ODI driver is certified, Novell Services treats it as
if it were one of Novell's drivers. If a customer running NetWare
encounters a driver-related problem, Novell assumes a role in getting the
problem solved. If, however, the driver is NDIS, then Services has no
documentation to refer to solve the problem and cannot do much to help the
customer.

Considered from a customer's standpoint, this is an important distinction.
If  customers base their systems on ODI drivers, they know that the
products they are using have already demonstrated a significant level of
compatibility with NetWare and can be supported if something should go
wrong. If they go with NDIS, they are taking their own chances.  In large
part because of these reliability issues, we have heard of many large
accounts that have standardized on ODI drivers.

ODI drivers are certified by Novell Labs; other drivers do not have to meet
this requirement.

Backward compatibility

Another important distinction between the two specifications has to do with
backward compatibility.  For example, consider a customer running with NDIS
v2.0 drivers that wants to upgrade to Windows NT.  NT requires v3.0
drivers.  This presents a problem if the board vendor hasn't released a
v3.0 driver for the customer's board when he/she wants to install NT.

Ironically, because ODI supports any protocol stack, an ODI driver for the
same board can be used to connect into NT through a shim called ODINSUP.
This module allows the customer to talk to the NDIS protocol stacks
unmodified over the ODI driver. ODINSUP is discussed in more detail in the
following section.

Because of Novell's customer focus ODI provides complete backwards
compatibility, making upgrading much simpler.  Again, once an ODI driver is
installed, changes to the system, whether they be new protocol stacks, new
media, or products that support a new ODI spec have no impact on the
driver's compatibility. This dramatically reduces the customer' s support
and maintenance burden.

Development Issues

Time to market

LAN drivers used to take six to eight to develop before ODI was introduced.
Because of ODI's modular architecture, development time to market has been
significantly reduced.

As we have previously outlined, ODI drivers are comprised of two parts: the
Media Support Module (MSM) and the Hardware-Specific Module (HSM).  In the
past when developers wrote drivers they had to create code to access the
protocol, service the board, and access the media. In order to simplify
driver development, Novell now provides source code to interface with
various media (the MSM) as part of the Novell LAN Driver Development Kit.
This reduces the developer's coding burden: now they can focus on creating
the hardware-specific portions of the driver and adding any optional
functions. ODI's MSM/HSM drivers can be developed in 2-3 weeks.

Chipset developers have also helped to make driver development much simpler
than it was in the past. Major silicon developers (including National,
Intel Texas Instruments and AMD) have sample designs, software source code,
bills of materials and other materials needed to build products that
support ODI. These materials are available to developers that use their
chipsets.

This simplification of the development process benefits customers in two
ways:

*	Drivers become more standardized, easier to create, and easier to
test. Ultimately, this means that they will become less expensive
to produce, resulting in lower-priced products that are available
sooner to customers.

*	As more of the coding related to the network interfaces becomes
standardized, developers can focus their attention on building
greater functionality and performance into their products. Greater
speed to market means that bug fixes and patches that increase
performance (such as the packet burst NLM) will be integrated more
quickly and with less downtime than was previously possible.


ODINSUP

As part of Novell's commitment to be interoperable, ODI supports NDIS.
ODI's modular architecture allows users to support NDIS protocol stacks.
A module called ODINSUP allows NDIS protocol stacks to run unmodified over
the ODI LSL and talk to an ODI LAN driver (please refer to the figure on
the following page).  Now, multi-vendor network transports like IBM's
NetBEUI, DEC's LAT or 3COM's XNS can be run over a common Data-Link
(driver) specification.  This feature provides two significant benefits:

*	It allows customers to integrate, and preserve investments in,
multi-vendor networking services.  Because ODI supports NDIS
stacks, customers can standardize on ODI drivers, knowing that
these drivers will support all of their networking needs, whether
they depend on NDIS or another network transport protocol.

*	The ability to access NDIS through ODINSUP also means that
developers can develop products to the ODI specification knowing
that these drivers will be able to support NDIS protocol stacks.
This feature significantly reduces a LAN driver developer's coding
burden.

Modular architecture of ODI allows integration of new technologies without
disrupting current services, including support for NDIS stacks and FDDI.

Summary

ODI was developed with a modular architecture that makes it truly media and
protocol independent.  ODI provides  greater flexibility in configuring the
network interface, uses resources more effectively and preserves
investments in hardware and other network resources.  With ODI, integration
of new technologies can be done easily and without interrupting current
services.  ODI drivers are certified by Novell Labs and are therefore very
reliable, and are compatible with previous versions of the ODI spec.
Driver development time has been reduced due to the source code provided by
Novell; this means better products get to customers more quickly.  ODI
drivers can talk to NDIS stacks through ODINSUP, allowing customers to
standardize on one type of drivers.  Because of these advantages, Novell
recommends products written to ODI.

How to Switch to ODI

Because of these advantages, Novell is including only ODI drivers with the
NetWare v4.0 operating system.  Older dedicated IPX drivers are being
phased out -- Novell Labs discontinued the certification of dedicated DOS
IPX drivers June 1992. There are now ODI drivers available for all popular
LAN adapters.  See the attached appendix for a listing of tested drivers.

In order to assist in upgrading DOS workstations from dedicated IPX drivers
to ODI, Novell is supplying a utility, (available in upcoming client
workstation kits) called WSUPGRD, which is intended to be used by a system
administrator to upgrade many workstations which are all similarly
configured.  This utility is intended to be executed from the system login
script.  It will scan the dedicated IPX.COM file on the workstation,
determine which driver was linked in with the SHGEN utility and what
hardware options were selected.  It will then reference an installation
file created by the system administrator to select the appropriate ODI
driver, and will install it along with the ODI Link Support Layer (LSL)
module and an appropriate NET.CFG file (all of which may be configured or
defined by the system administrator).  This utility is intended for use in
upgrading large sites where workstations with similar brands of LAN
adapters are also similar in configuration (usually under the control of a
system administrator).  For example, when the command lines in the
autoexec.bat files are similar, this utility will easily upgrade all the
similar adapters.

