15.4. Configuring IPX Interfaces

Just as with TCP/IP, you must configure your IPX interfaces before you can use them. The IPX protocol has some unique requirements; consequently, a special set of configuration tools was developed. We will use these tools to configure our IPX interfaces and routes.

15.4.1. Network Devices Supporting IPX

The IPX protocol assumes that any collection of hosts that can transmit datagrams to each other without routing belong to the same IPX network. All hosts belonging to a single Ethernet segment would all belong to the same IPX network. Similarly (but less intuitively), both hosts supporting a PPP-based serial link must belong to the IPX network that is the serial link itself. In an Ethernet environment, there are a number of different frame types that may be used to carry IPX datagrams. The frame types represent different Ethernet protocols and describe differing ways of carrying multiple protocols on the same Ethernet network. The most common frame types you will encounter are 802.2 and ethernet_II. We'll talk more about frame types in the next section.

The Linux network devices that currently support the IPX protocol are the Ethernet and PPP drivers. The Ethernet or PPP interface must be active before it can be configured for IPX use. Typically, you configure an Ethernet device with both IP and IPX, so the device already exists, but if your network is IPX only, you need to use the ifconfig to change the Ethernet device status to the following:

# ifconfig eth0 up

15.4.2. IPX Interface Configuration Tools

Greg Page developed a set of configuration tools for IPX interfaces, which is a precompiled package in modern distributions and may also be obtained in source form by anonymous FTP from http://metalab.unc.edu/ in the /pub/Linux/system/filesystems/ncpfs/ipx.tgz file.

An rc script file usually runs the IPX tools at boot time. Your distribution may already do this for you if you have installed the prepackaged software.

15.4.3. The ipx_configure Command

Each IPX interface must know which IPX network it belongs to and which frame type to use for IPX. Each host supporting IPX has at least one interface that the rest of the network will use to refer to it, known as the primary interface. The Linux kernel IPX support provides a means of automatically configuring these parameters; the ipx_configure command enables or disables this automatic configuration feature.

With no arguments, the ipx_configure command displays the current setting of the automatic configuration flags:

# ipx_configure
Auto Primary Select is OFF
Auto Interface Create is OFF

Both the Auto Primary and Auto Interface flags are off by default. To set them and enable automatic configuration, you simply supply arguments like these:

# ipx_configure --auto_interface=on --auto_primary=on

When the - -auto_ primary argument is set to on, the kernel will automatically ensure that at least one active interface operates as the primary interface for the host.

When the - -auto_interface argument is set to on, the kernel IPX driver will listen to all of the frames received on the active network interfaces and attempt to determine the IPX network address and frame type used.

The auto-detection mechanism works well on properly managed networks. Sometimes network administrators take shortcuts and break rules, and this can cause problems for the Linux auto-detection code. The most common example of this is when one IPX network is configured to run over the same Ethernet with multiple frame types. This is technically an invalid configuration, as an 802.2 host cannot directly communicate with an Ethernet-II host and therefore they cannot be on the same IPX network. The Linux IPX network software listens on the segment to IPX datagrams transmitted on it. From these, it attempts to identify which network addresses are in use and which frame type is associated with each. If the same network address is in use with multiple frame types or on multiple interfaces, the Linux code detects this as a network address collision and is unable to determine which is the correct frame type. You will know this is occurring if you see messages in your system log that look like:

IPX: Network number collision 0x3901ab00
eth0 etherII and eth0 802.3
If you see this problem, disable the auto-detection feature and configure the interfaces manually using the ipx_interface command described in the next section.

15.4.4. The ipx_interface Command

The ipx_interface command is used to manually add, modify, and delete IPX capability from an existing network device. You should use ipx_interface when the automatic configuration method just described does not work for you, or if you don't want to leave your interface configuration to chance. ipx_interface allows you to specify the IPX network address, primary interface status, and IPX frame type that a network device will use. If you are creating multiple IPX interfaces, you need one ipx_interface for each.

The command syntax to add IPX to an existing device is straightforward and best explained with an example. Let's add IPX to an existing Ethernet device:

# ipx_interface add -p eth0 etherII 0x32a10103
The parameters in turn mean:

-p

This parameter specifies that this interface should be a primary interface. This parameter is optional.

eth0

This is the name of the network device to which we are adding IPX support.

etherII

This parameter is the frame type, in this case Ethernet-II. This value may also be coded as 802.2, 802.3, or SNAP.

0x32a10103

This is the IPX network address to which this interface belongs.

The following command removes IPX from an interface:

# ipx_interface del eth0 etherII

Lastly, to display the current IPX configuration of a network device, use:

# ipx_interface check eth0 etherII

The ipx_interface command is explained more fully in its manual page.