Internetwork Packet Exchange (IPX) was developed by Novell (based closely on earlier work by Xerox) as a low-level network transport protocol. It's frequently used in conjunction with the Sequenced Packet Exchange (SPX) protocol; the two together form the core of a network stack that's comparable in scope to AppleTalk or NetBEUI. IPX/SPX has historically been used by the NetWare product, but IPX/SPX packages are available for DOS, Windows, and other OSs. One of the most popular uses of this network stack is to support the NetWare Core Protocol (NCP), which is Novell's file- and printer-sharing tool. Linux also supports these protocols, both in the kernel (as described in Chapter 1) and in client and server packages.
IPX/SPX Features and Capabilities
Like TCP/IP and AppleTalk, IPX/SPX supports a 32-bit address, which is usually expressed in hexadecimal, as in 0x23a91002. This address, however, isn't assigned to a single computer, but to an entire network ”usually a network segment that's isolated from others by routers, or completely disconnected from the outside world. An IPX/SPX network is also identified by the underlying hardware's frame type, which is how the Ethernet frames are built at a very low level; all computers on a single IPX/SPX network must use the same frame type. To identify individual computers, IPX/SPX relies on the underlying hardware's addressing scheme, such as Ethernet's 48-bit (6-byte) addresses.
As you might guess from the name and addressing scheme, IPX/SPX is designed for internetworking ”that is, linking networks together. This is accomplished via IPX routers, which work much like TCP/IP routers in broad detail. (In fact, a single system can function as both a TCP/IP and an IPX router.) A simple network may not require a router, but IPX/SPX does support the option.
IPX/SPX servers use a protocol known as the Service Advertisement Protocol (SAP) to periodically announce their names and the services they make available, such as shared directories or printers. Other systems on the local network segment will "hear" these announcements, and IPX routers should echo them to other network segments. This design can help make locating the right server easy, but it can also increase network traffic as the network size increases ; with more servers, there will be more SAP broadcasts consuming network bandwidth.
Using Linux IPX/SPX Software
Like most Linux software, Linux's IPX/SPX software is largely open source. (Caldera once licensed NetWare from Novell and made it available for Linux, but Caldera has discontinued this official port of NetWare. A three- user version is still available from ftp://ftp.calderasystems.com/pub/old-products/netware/, but it requires an old 2.0.35 kernel.) Other IPX/SPX tools for Linux include the following:
All of these IPX/SPX packages require you to have IPX support compiled into your kernel, as described in Chapter 1. Some distributions also require a separate package, usually called ipxutils , which contains utilities for activating and controlling the IPX/SPX network stack. (Alternatively, some distributions include these tools in the ncpfs package.)
If you intend to run a server for NetWare clients , Mars_nwe configuration is usually not too difficult, because the default configuration works fairly well. The configuration file is also usually very well commented, so you can learn how to configure it by reading its comments. You should pay particular attention to a few details:
The Mars_nwe package includes the means to automatically enable IPX support on your network interface. This convenience doesn't exist in the case of Linux's NetWare client support as implemented in ncpmount , however. Before you can use this command, you should enable auto-configuration with the ipx_configure command. You can then mount a NetWare volume with ncpmount . The entire procedure might resemble the following:
# ipx_configure auto_interface=on auto_primary=on # ncpmount -S NW_SERV -U anne -P p4rtu3a /mnt/nwmount
This sequence enables auto-detection of the local network number and mounts volumes stored on NW_SERV associated with the user anne at /mnt/nwmount , using the password p4rtu3a .