Network Working Group D. Provan
Request for Comments: 1201 Novell, Inc.
Obsoletes: RFC 1051 February 1991
Transmitting IP Traffic over ARCNET Networks
1. Introduction
This memo specifies a method of encapsulating Internet Protocol (IP) [1] and Address Resolution Protocol (ARP) [2] datagrams for transmission across ARCNET [3] using the "ARCNET Packet Header Definition Standard" [4]. This memo offers a replacement for RFC 1051. RFC 1051 uses an ARCNET framing protocol which limits unfragmented IP packets to 508 octets [5].
2. ARCNET Packet Format
In 1989, Apple Computers, Novell, ACTINET Systems, Standard Microsystems, and Pure Data Research agreed to use the ARCNET datalink protocol defined in "ARCNET Packet Header Definition Standard" [4]. We'll begin with a brief description of that protocol.
2.1. ARCNET Framing
ARCNET hardware supports two types of frames: short frames, which are always 256 octets long, and long frames, which are always 512 octets long. All frames begin with a hardware header and end with the client's data preceded by a software header. Software places padding in the middle of the packet between the hardware header and the software header to make the frame the appropriate fixed length. Unbeknown to the software, the hardware removes this padding during transmission.
Provan [Page 1]
RFC 1201 IP on ARCNET February 1991
These three frame formats are shown here. Except as noted, each block represents one octet.
Short Frame Long Frame Exception Frame
+---------------+ +---------------+ +---------------+
| source | | source | | source |
+---------------+ +---------------+ +---------------+
| destination | | destination | | destination |
+---------------+ +---------------+ +---------------+
| offset | | 0 | | 0 |
+---------------+ +---------------+ +---------------+
. unused . | offset | | offset |
. (offset - 3 . +---------------+ +---------------+
. octets) . . unused . . unused .
+---------------+ . (offset - 4 . . (offset - 4 .
| protocol ID | . octets) . . octets) .
+---------------+ +---------------+ +---------------+
| split flag | | protocol ID | | protocol ID |
+---------------+ +---------------+ +---------------+
| sequence | | split flag | | flag: FF hex |
+ number + +---------------+ +---------------+
| (2 octets) | | sequence | | padding: 0xFF |
+---------------+ + number + +---------------+
. . | (2 octets) | | padding: 0xFF |
. client data . +---------------+ +---------------+
. (256 - offset . . . | (protocol ID) |
. - 4 octets) . . . +---------------+
. . . . | split flag |
+---------------+ . . +---------------+
. . | sequence |
. client data . + number +
. (512 - offset . | (2 octets) |
. - 4 octets) . +---------------+
. . . .
. . . client data . . . . (512 - offset . . . . - 8 octets) .
. . . .
+---------------+ +---------------+
These packet formats are presented as software would see them through ARCNET hardware. [3] refers to this as the "buffer format". The actual format of packets on the wire is a little different: the destination ID is duplicated, the padding between the offset field and the protocol ID field is not transmitted, and there's some hardware framing information. In addition, the hardware transmits special packets for buffer allocation and reception acknowledgement which are not described here [3].
Provan [Page 2]
RFC 1201 IP on ARCNET February 1991 2.2. Datalink Layer FragmentationARCNET hardware limits individual frames to 512 octets, which allows 504 octets of client data. This ARCNET datalink protocol allows the datalink layer to break packets into as many as 120 fragments for transmission. This allows ARCNET clients to transmit up to 60,480 octets in each packet.
2.3. Datalink Layer Reassembly
The previous section provides enough information to implement datalink reassembly. To avoid buffer allocation problems during reassembly, we recommend allocating enough space for the entire reassembled packet when the first fragment arrives.
Provan [Page 3]
RFC 1201 IP on ARCNET February 1991
Since fragments are sent in order, the reassembly procedure can give up on a packet if it receives a fragment out of order. There is one exception, however. It is possible for successfully received fragments to be retransmitted. Reassembly software should ignore repetitious fragments without giving up on the packet.
2.4. Datalink Layer Retransmission
For each unicast ARCNET packet, the hardware indicates to the sender whether or not the receiver acknowledged the packet. To improve reliability, datalink implementations are encouraged to retransmit unacknowledged packets or packet fragments. Several retransmissions may be necessary. Broadcast packets, however, are never acknowledged and, therefore, they should never be retransmitted.
3. Transmitting IP and ARP Datagrams
IP and ARP datagrams are carried in the client data area of ARCNET packets. Datalink support places each datagram in an appropriate size ARCNET frame, fragmenting IP datagrams larger than 504 octets into multiple frames as described in the previous section.
4. IP Address Mappings
This section explains how each of the three basic 32-bit internet address types are mapped to 8-bit ARCNET addresses.
4.1. Unicast Addresses
A unicast IP address is mapped to an 8-bit ARCNET address using ARP as specified in [2]. A later section covers the specific values which should be used in ARP packets sent on ARCNET networks. It is possible to assign IP addresses such that the last eight bits are the same as the 8-bit ARCNET address. This would allow direct mapping of IP address to ARCNET address without using a discovery protocol. Some implementations might provide this as an option, but it is not recommended practice. Although such hard- wired mapping is initially appealing, experience shows that ARP is a much more flexible and convenient approach which has a very small cost.
Provan [Page 4]
RFC 1201 IP on ARCNET February 1991 4.2. Broadcast AddressesAll IP broadcast addresses must be mapped to the ARCNET broadcast address of 0.
4.3. Multicast Addresses
Since ARCNET provides no support for multicasts, all IP multicast addresses must be mapped to the ARCNET broadcast address of 0.
5. ARP
The hardware address length is 1 octet for ARP packets sent over ARCNET networks. The ARP hardware type for ARCNET is 7. ARP request packets are broadcast by directing them to ARCNET broadcast address, which is 0.
6. RARP
Reverse Address Resolution Protocol [6] packets can also be transmitted over ARCNET. For the purposes of datalink transmission and reception, RARP is identical to ARP and can be handled the same way. There are a few differences to notice, however, between RARP when running over ARCNET, which has a one octet hardware address, and Ethernet, which has a six octet hardware address.
Provan [Page 5]
RFC 1201 IP on ARCNET February 1991 7. Maximum Transmission UnitThe maximum IP packet length possible using this encapsulation method is 60,480 octets. Since this length is impractical, all ARCNET implementations on a given ARCNET network will need to agree on a smaller value. Therefore, the maximum packet size MUST be configurable in implementations of this specification.
8. Assigned Numbers
Datapoint Corporation assigns ARCNET protocol IDs to identify different protocols running on the same ARCNET medium. For implementations of this specification, Datapoint has assigned 212 decimal to IP, 213 decimal to ARP, and 214 decimal to RARP. These are not the numbers assigned to the IP encapsulation defined by RFC 1051 [5]. Implementations of RFC 1051 can exist on the same ARCNET as implementations of this specification, although the two would not be able to communicate with each other.
Provan [Page 6]
RFC 1201 IP on ARCNET February 1991
The pioneering work in transmitting IP traffic on ARCNET networks was done by Philippe Prindeville.