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.