Internetwork Packet Exchange
| Company type | Network protocol |
|---|---|
| Industry | Computer networking |
| Predecessor | IDP protocol by Xerox Network Systems |
| Founded | 1980s |
| Products | IPX/SPX protocol suite |
Internetwork Packet Exchange (IPX) serves as the network-layer protocol within the IPX/SPX suite, originating from the IDP protocol developed by Xerox Network Systems. It can also operate at the transport layer level.
During the late 1980s and early-to-mid 1990s, the IPX/SPX protocol suite became widely adopted, largely due to its implementation in Novell's NetWare operating system, a major player in networking software. The compact memory footprint of IPX was particularly advantageous for DOS and early Windows platforms, which had stringent memory limitations. Furthermore, IPX simplified client setup considerably. Despite these strengths, IPX proved inadequate for large-scale networks such as the Internet. As a result, its popularity waned with the rise of TCP/IP, which became the prevailing protocol during the Internet expansion.
In most environments running IPX, TCP/IP was also deployed to facilitate Internet access. Novell officially incorporated full support for both protocols starting with NetWare 5 in 1998, enabling organizations to transition away from IPX.
Description
One of IPX's principal business benefits was its minimal configuration demands. Prior to the widespread adoption of dynamic configuration protocols like DHCP or BOOTP, IPX networks could automatically configure themselves: client machines utilized their network interface's MAC address as node identifiers and acquired network topology information from servers or routers through the Routing Information Protocol, while service discovery was managed via the Service Advertising Protocol.
For administrators managing smaller IPX networks, typical tasks included:
- Assigning a uniform network number to all servers within a single network segment,
- Using different network numbers to distinguish frame types within one physical network,
- Allocating separate network numbers to each interface on multi-network card servers (which often acted as routers),
- Providing unique network numbers for servers located on interconnected networks,
- Enabling router functions on nodes equipped with multiple network interfaces in more complex configurations.
IPX packet structure
Each IPX packet begins with a header formatted as follows:
| Octets | Field |
|---|---|
| 2 | Checksum (fixed at 0xFFFF – checksum not used) |
| 2 | Packet Length (includes entire IPX header) |
| 1 | Transport Control (hop count) |
| 1 | Packet Type |
| 12 | Destination address |
| 12 | Source address |
The Packet Type field can have these values:
| Value | Description/Protocol |
|---|---|
| 0 | Unknown |
| 1 | RIP (Routing Information Protocol) (RFC 1582, RFC 2091) |
| 2 | Echo Packet |
| 3 | Error Packet |
| 4 | PEP (Packet Exchange Protocol), used by SAP (Service Advertising Protocol) |
| 5 | SPX (Sequenced Packet Exchange) |
| 17 | NCP (NetWare Core Protocol) |
| 20 | Broadcast |
IPX addressing
An IPX address is composed of:
| Octets | Component |
|---|---|
| 4 | Network number |
| 6 | Node number |
| 2 | Socket number |
Network number
The network number allows nodes to be addressed beyond a single local cable segment—where data link protocols communicate directly. To enable communication between different networks, IPX routers are required; these may be Novell NetWare servers or dedicated routing devices. Additionally, multiprotocol routers from various manufacturers often include support for IPX routing. Within a single cabling system, different frame types are treated as separate logical networks, each requiring distinct network numbers and routers to interconnect.
- Each logical network is assigned a unique 32-bit identifier ranging from 0x1 to 0xFFFFFFFE.
- Nodes use a unique 48-bit node identifier, commonly derived from their network interface card’s MAC address. Network numbers are assigned either manually or dynamically when routers are present. Together, these form an 80-bit unique address for each IPX node across internetworks.
- The network number 00:00:00:00 refers to the current local network and is employed during router discovery; it serves as the default if no router exists but can be manually overridden.
- The broadcast network number is FF:FF:FF:FF.
Node number
A node number designates the network interface of a specific computer, commonly identified by the MAC address of its network interface card. The address FF:FF:FF:FF:FF:FF serves as a broadcast destination, allowing packets to be sent to every node within the local network segment.
Socket number
The socket number specifies the target process or application on the receiving node, enabling IPX to operate similarly to a transport layer protocol like the User Datagram Protocol (UDP) within the Internet protocol suite.
| Socket number | Protocol |
|---|---|
| 0x0001–0x0BB8 | Allocated by Xerox |
| 0x0001 | Routing Information Packet |
| 0x0002 | Echo Protocol Packet |
| 0x0003 | Error Handling Packet |
| 0x0020–0x003F | Experimental Use |
| 0x0BB9–0xFFFF | Assigned Dynamically |
| 0x0451 | NetWare Core Protocol (NCP – utilized by Novell NetWare servers) |
| 0x0452 | Service Advertising Protocol (SAP) |
| 0x0453 | Routing Information Protocol (RIP) |
| 0x0455 | NetBIOS |
| 0x0456 | Diagnostic Packet |
| 0x0457 | Serialization Packet (also used for NCP) |
| 0x4000–0x4FFF | Dynamically Allocated Socket Numbers |
| 0x4003 | Employed by Novell NetWare Client |
| 0x8000–0xFFFF | Statically Allocated Socket Numbers |
| 0x8060 | LLC |
| 0x9091 | TCP over IPXF |
| 0x9092 | UDP over IPXF |
| 0x9093 | IPXF, IPX Fragmentation Protocol |
Comparison with IP
The IPX network number is analogous to the network segment in an IP address, whereas the node number corresponds to the host segment. Unlike IP, which employs a variable division between network and host fields, IPX maintains a fixed boundary. Since the node address generally reflects the MAC address, IPX does not rely on an Address Resolution Protocol.
Routing tables in IPX resemble those found in IP networks by directing traffic based on network addresses and designated next-hop routers. Three routing protocols are implemented for IPX: an early form of Routing Information Protocol (RIP) that prioritizes delay time; the more scalable NetWare Link Services Protocol (NLSP), derived from IS-IS and introduced with NetWare 3; and Cisco’s version of an IPX-adapted EIGRP.
Frame formats
IPX supports transmission over Ethernet through four distinct frame formats or encapsulation methods:
- 802.3 (raw) encapsulation employs an IEEE 802.3 frame header (destination MAC, source MAC, length) immediately followed by IPX payload. This format is prevalent in legacy environments and is recognized by the first two bytes of the IPX header set to 0xFFFF, which are invalid as LLC Destination and Source Service Access Points.
- 802.2 (LLC or Novell) encapsulation includes an IEEE 802.3 frame header succeeded by an LLC header (DSAP 0xE0, SSAP 0xE0, control 0x03) before delivering the IPX data. The values 0xE0 indicate "NetWare."
- 802.2 SNAP encapsulation consists of an IEEE 802.3 frame header, an LLC header (DSAP 0xAA, SSAP 0xAA, control 0x03), a SNAP header (OUI 0x000000, type 0x8137), followed by IPX data. The fields set to 0xAA signify "SNAP," while the OUI identifies an encapsulated EtherType.
- Ethernet II uses an Ethernet II frame header (destination MAC, source MAC, EtherType 0x8137) preceding the IPX data.
For networks other than Ethernet, only the 802.2 and SNAP frame formats are supported.
References