[comp.protocols.tcp-ip.ibmpc] Internet packets over IPX specification

ljm@TWG.COM (Leo J McLaughlin) (12/14/88)

The Wollongong Group                                    L. J. McLaughlin III
                                                        December 1988


    A Standard for the Transmission of Internet packets over IPX networks


Status of this Memo

    This document specifies a standard method of encapsulating Internet
    packets such as Internet Protocol[1] (IP) datagrams on networks
    supporting the Internet Packet Exchange Protocol[2] (IPX). Distribution
    of this memo is unlimited.


Introduction

    The goal of this specification is to allow compatible and interoperable
    implementations for transmitting Internet packets over IPX networks.

    IPX is a proprietary standard developed by Novell derived from Xerox's
    Internet Datagram Protocol[3].  This standard specifies a means of
    transmitting and receiving datagrams on a Novell network.


Description

    In general, IPX networks may be used to support Internet networks of
    any type.  More specifically, IPX networks may be used to support IP
    networks and subnets[4] of any class.  By means of 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
    ordinary data-link protocols (such as 802.3[5]) as well as within
    IPX datagrams allows these IPX hosts to communicate with the Internet.


Address Mappings

	This implementation does not use the Internet Datagram Protocol network
    field.  It instead relies on NetWare Internetwork Bridges to deliver
    broadcast-based address resolution protocols such as ARP[6] to determine
    network addresses.


Maximum Transmission Unit

    The maximum data size of a IPX datagram is 576 bytes.  Due to the
    encapsulation scheme utilized, this results in a Maximum Transmission
    Unit (MTU) for IP over IPX networks of 562 bytes.


Implementation

    Prepended to each Internet packet is a standard Ethernet[7] frame
    containing the physical destination and source addresses of the packet
    as well as the type field.  A typical IP over IPX packet is shown below:


                           --------------------
                           | data-link header |
                           |------------------|
                           |    IPX header    |
                           |------------------|
                           |  Ethernet frame  |
                           |------------------|
                           |     IP header    |
                           |------------------|
                           |    TCP header    |
                           |------------------|
                           |    TCP data      |
                           --------------------


    To support the transmission and reception of Internet datagrams on an
    IPX host, the initialization code must:
	
        1) Find the physical hardware address of the host using the
           IPX function 'Get Internetwork Address' (0x09).
        2) Open IPX socket IPSOCK for the reception and transmission of
           Internet packets using IPX function 'Open Socket' (0x00h).
        3) Submit a listen request on the IPSOCK socket with IPX function
           'Listen for Packet' (0x04).

    When a IPX datagram is recieved, it is processed by the protocol stack
    and another Listen for Packet request is submitted.

    When an Internet packet is sent, the physical destination address of
    the Ethernet field is copied into the IPX physical destination address
    field, and the packet it is placed in the data space of the IPX datagram
    and sent using the IPX 'Send Packet' (0x03) function.

    Finally, when the Internet support for a given IPX host is discontinued,
    the INTSOCK socket should be closed with the 'Close Socket' (0x01)
    function.

    Novell has reserved the IPX socket number 0x8062 (INTSOCK) for the
    transmission and reception of Internet packets over IPX networks.


References

    [1] J. Postel, "Internet Protocol", RFC-791, September 1981.

    [2] Novell, Inc., "Advanced NetWare V2.0 Internetwork Packet
        Exchange Protocol (IPX)", March 1986.

    [3] Xerox Corporation, "Xerox Network Systems Architecture",
        XNSG 068504, April 1985.

    [4] J. Mogul, "Internet Standard Subnetting Procedure", RFC-950,
        August 1985.

    [5] J. Postel, "A Standard for the Transmission of IP datagrams
        over IEEE 802 Networks", RFC-1042, February 1988.

    [6] D. Plummer, "An Ethernet Address Resolution Protocol", RFC-826,
        November 1982.

    [7] Xerox Corporation, "Xerox Network Systems Architecture",
        XNSG 068504, April 1985.