Network Working Group L. McLaughlin III Request for Comments: 1132 The Wollongong Group November 1989
This document specifies a standard method of encapsulating 802.2  packets on networks supporting Novell's Internet Packet Exchange Protocol  (IPX). It obsoletes earlier documents detailing the transmission of Internet packets over IPX networks. It differs from these earlier documents in that it allows for the transmission of multiple network protocols over IPX and for the transmission of packets through IPX bridges. Distribution of this memo is unlimited.
The goal of this specification is to allow compatible and interoperable implementations for transmitting Internet packets such as the Internet Protocol  (IP) and Address Resolution Protocol  (ARP) as well as the Connectionless-mode Network Protocol  (CLNP) over IPX networks.
IPX is a proprietary standard developed by Novell derived from Xerox's Internet Datagram Protocol  (IDP). Defining the encapsulation of the IEEE 802.2 Data Link Layer Standard over IPX in terms of yet another 802.X Physical Layer standard allows for the transmission of IP Datagrams as described in RFC 1042 . This document will focus on the implementation of that RFC over IPX networks.
In general, this specification allows IPX networks to be used to support any network protocol which can use the IEEE 802.2 Data Link Layer specification.
More specifically, IPX networks may be used to support IP networks and subnetworks of any class. By encapsulating IP datagrams within IPX datagrams and assigning IP numbers to the hosts on a IPX network, IP-based applications are supported on these hosts. The addition of an IP Gateway capable of encapsulating IP packets within 802.IPX datagrams would allow those hosts on an IPX network to communicate with the Internet.
The maximum data size of a IPX datagram is 546 bytes. As the combined size of the 802.2 LLC and SNAP headers is 8 bytes, this results in a Maximum Transmission Unit (MTU) of 538 bytes.
The mapping of Internet Protocol addresses to 802.IPX addresses is done using the Address Resolution Protocol in the same fashion as with other IEEE 802.X physical addresses. However, the length of an 802.IPX physical address is 10 bytes rather than 2 or 6. This 10 byte physical address consists of the 4 bytes of the IPX network address followed by the 6 bytes of the IPX node address.
The byte transmission order is "big-endian" .
IPX packets may be broadcast by setting the IPX header Packet Type field to 0x14, the Destination Network field to the local network number, the the Destination Node field to 0xffffff, and the Immediate Address field of the IPX Event Control Block to 0xffffff.
IPX packets may be unicast by setting the IPX header Packet Type field to 0x04, the Destination Network field and Destination Node field to those values found by address resolution, and the Immediate Address field of the IPX Event Control Block to the physical address of the destination node or the appropriate IPX bridge.
Like most IPX applications, this specification does not use IPX checksum.
The IPX socket 0x8060 has been reserved by Novell for the implementation of this protocol.
The encapsulation of Internet packets within IPX networks has proved to be quite useful. Because the IPX interface insulates knowledge of
the physical layer from an application, 802.2 over IPX networks work over any physical medium. A typical IP over IPX packet is shown below:
-------------------- N bytes | physical header | |------------------| 30 bytes | IPX header | |------------------| 8 bytes | 802.2 header | |------------------| usually 20 bytes | IP header | |------------------| usually 20 bytes | TCP header | |------------------| up to 498 bytes | TCP data | --------------------
On workstations supporting an IPX programming interface,
implementation of this specification has proved fairly
straightforward. The only change which was done was to modify the existing address resolution protocol code to allow for cache entries larger than the hardware address length. This was done to allow room for the immediate address of a possible intervening IPX bridge in addition to the destination node and network addresses to be associated with a given IP address.
Thus far, no implementations have been attempted on systems which do not already support an IPX programming interface (e.g., a dedicated router) though a few implementation details can be noted. First, obviously any such implementation will have to distinguish IPX packets from other packets; this process will be media dependent. Second, note that no unicast packet is ever sent from host1 to host2 without a prior broadcast packet from host2 to host1. Thus, the immediate address of a possible intervening IPX bridge between host1 and host2 can be learned from the physical header of that prior broadcast packet. Third, any such implementation will need to discover the local IPX network number from a Novell bridge or file server. The mechanisms for doing this exist but documentation for their use is not commonly available.
 IEEE, "IEEE Standards for Local Area Networks: Logical Link Control", IEEE, New York, 1985.
 Novell, Inc., "Advanced NetWare V2.1 Internetwork Packet Exchange Protocol (IPX) with Asynchronous Event Scheduler (AES)", October
 Postel, J., "Internet Protocol", RFC-791, USC/Information Sciences Institute, September 1981.
 Plummer, D., "An Ethernet Address Resolution Protocol", RFC-826, November 1982.
 ISO DIS 8473: "Information Processing Systems - Data
Communications - Protocol for Providing the Connectionless-mode Network Service".
 Xerox Corporation, "Xerox Network Systems Architecture", XNSG 068504, April 1985.
 Postel, J., and J. Reynolds, "A Standard for the Transmission of IP Datagrams over IEEE 802 Networks", RFC-1042, USC/Information Sciences Institute, February 1988.
 Cohen, D., "On Holy Wars and a Plea for Peace", Computer, IEEE, October 1981.
Security issues are not addressed in this memo.
Leo J. McLaughlin III
The Wollongong Group
1129 San Antonio Road
Palo Alto, CA 94303
Phone: (415) 962-7100