throbber
RFC826. TXT
`
`Network Working Group
`Request F9r Comments: 826
`
`David C. Plummer
`(DCP@MIT-MC)
`November 1982
`
`(____ ~~-~the_rn_et ~':'::•solution Prot~~0
`
`Converting Network Protocol Addresses
`to 48. bit Ethernet Address

`for Transmission on
`Ethernet Hardware
`
`Abstract
`
`The implementation of protocol Pon a sending host S decides,
`through protocol P's routing mechanism, that it wants to transmit
`to a target host T located some place on a connected piece of
`lOMbit Ethernet cable. To actually transmit the Ethernet packet
`a 48.bit Ethernet address must be generated. The addresses of
`hosts within protocol Pare not always compatible with the
`corresponding Ethernet address (being different lengths or
`values). Presented here is a protocol that allows dynamic
`distribution of the information needed to build tables to
`translate ari address A in protocol P's address space into a
`48.bit Ethernet address.
`
`Generalizations have been made which allow the protocol to be
`used for non-lOMbit Ethernet hardware.
`Some packet radio
`networks are examples of such hardware.
`
`The protocol proposed here is the result of a great deal of
`discussion with several other people, most notably J. Noel
`Chiappa, Yogen Dalal, and James E. Kulp, and helpful comments
`from David Moon.
`
`[The purpose of this RFC is to present a method of Converting
`Protocol Addresses (e.g., IP addresses) to Local Network
`Addresses (e.g., Ethernet addresses). This is a issue of general
`concern in the ARPA Internet community at this time. The
`method proposed here is presented for your consideration and
`comment. This is not the specification of a Internet Standard.]
`
`Notes:
`
`This protocol was originally designed for the DEC/Intel/Xerox
`
`1 ~-:)
`
`

`

`RFC826. TXT
`
`It has been generalized to allow it to be used
`lOMbit Ethernet.
`for other types of networks. Much of the discussion will be
`directed toward the lOMbit Ethernet. Generalizations, where
`applicable, will follow the Ethernet-specific discussion.
`
`DOD Internet ProtocoJ will be referred to as Internet.
`
`Numbers here are in the Ethernet standard, which is high byte
`first. This is the opposite of the byte addressing of machines
`such as PDP-lls and VAXes. Therefore, special care must be taken
`with the opcode field (ar$op) described below.
`
`An agreed upon authority is needed to manage hardware name space
`values (see below). Until an official authority exists, requests
`should be submitted to
`David C. Plummer
`Symbolics, Inc.
`243 Vassar Street
`Cambridge, Massachusetts 02139
`Alternatively, network mail can be sent to DCP@MIT-MC.
`
`The Problem:
`
`The world is a jungle in general, and the networking game
`contributes many animals. At nearly every layer of a network
`ar9hitecture there are several potential protocols that could be
`used. For example, at a high level, there is TELNET and SUPDUP
`for remote login. Somewhere below that there is a reliable byte
`stream protocol, which might be CHAOS protocol, DOD TCP, Xerox
`BSP or DECnet. Even closer to the hardware is the logical
`transport layer, which might be CHAOS, DOD Internet, Xerox PUP,
`or DECnet. The lOMbit Ethernet allows all of these protocols
`(and more) to coexist on a single cable by means of a type field
`in the Ethernet packet header. However,
`the lOMbit Ethernet
`requires 48.bit addresses on the physical cable, yet most
`protocol addresses are not 48.bits long, nor do they necessarily
`have any relationship to the 48.bit Ethernet address of the
`hardware. For example, CHAOS addresses are 16.bits, DOD Internet
`addresses are 32.bits, and Xerox PUP addresses are 8. bits. A
`protocol is needed to dynamically distribute the correspondences
`between a <protocol, address> pair and a 48.bit Ethernet address.
`
`Motivation·:
`
`Use of the lOMbit Ethernet is increasing as more manufacturers
`supply interfaces that conform to the specification published by
`DEC, Intel and Xerox. With this increasing availability, more
`and more software is being written for these interfaces. There
`are two alternatives: (l) Every implementor invents his/her own
`method to do some form of address resolution, or (2) every
`implementor uses a standard so that his/her code can be
`distributed to other systems without need for modification. This
`proposal attempts to set the standard.
`
`2 ~-:)
`
`

`

`RFC826. TXT
`
`Definitions:
`
`Define the following for referring to the values put in the TYPE
`field of the Ethernet packet header:
`ether_type$XERox_PUP,
`ether_ type$DOD_I NTERNET,
`ether_ type$CHAOS,
`and a new one:
`ether_type$ADDRESS_RESOLUTION.
`Also define the following values (to be discussed later):
`ares_op$REQUEST (= 1, high byte transmitted first) and
`ares_op$REPLY
`( = 2),
`
`and
`
`ares_hrd$Ethernet (= 1).
`
`Packet format:
`
`To communicate mappings from <protocol, address> pairs to 48.bit
`Ethernet addresses, a packet format that embodies the Address
`Resolution protocol is needed. The format of the packet follows.
`
`Ethernet transmission layer (not necessarily accessible to
`the user):
`48.bit: Ethernet address of destination
`48.bit: Ethernet address of sender
`16.bit: Protocol type= ether_type$ADDRESS_RESOLUTION
`Ethernet packet data:
`16.bit: (ar$hrd) Hardware address space (e.g., Ethernet,
`Packet Radio Net.)
`16.bit: (ar$pro) Protocol address space. For Ethernet
`hardware, this is from the set of type
`fields ether_typ$<protocol>.
`8.bit: (ar$hln) byte length of each hardware address
`8.bit: (ar$pln) byte length of each protocol address
`16.bit: (ar$op) opcode (ares_op$REQUEST I ares_op$REPLY)
`nbytes: (ar$sha) Hardware address of sender of this
`packet, n from the ar$hln field.
`mbytes: (ar$spa) Protocol address of sender of this
`packet, m from the ar$pln field.
`nbytes: (arStha) Hardware address of target of this
`packet (if known).
`mbytes: (ar$tpa)-Protocol address of target.
`
`Packet Generation:
`
`As a packet is sent down through the network layers, routing
`determines the protocol address of the next hop for the packet
`and on which piece of hardware it expects to find the station
`with the immediate target protocol address.
`In the case of the
`lOMbit Ethernet, address resolution is needed and some lower
`
`3 ~-:)
`
`

`

`RFC826. TXT
`
`layer (probably the hardware driver) must consult the Address
`Resolution module (perhaps implemented· in the Ethernet support
`module) to convert the <protocol type, target protocol address>
`pair to a 48.bit Ethernet address. The Address Resolution module
`tries to find this pair in a table.
`If it finds the pair, it
`gives the corresponding 48.bit Ethernet address back to the
`caller (hardware driver) which then transmits the packet.
`If it
`does not, it probably informs the caller that it is throwing the
`packet away (on the assumption the packet will be retransmitted
`by a higher network layer), and generates an Ethernet packet with
`a type field of ether_type$ADDRESS_RESOLUTION. The Address
`Resolution module then sets the ar$hrd field to
`ares_hrd$Ethernet, ar$pro to the protocol type that is being
`resolved, ar$hln to 6 (the number of bytes in a 48.bit Ethernet
`address), ar$pln to the length of an address in that protocol,
`ar$op to ares_op$REQUEST, arSsha with the 48.bit ethernet address
`of itself, ar$spa with the protocol address of itself, and ar$tpa
`with the protocol address of the machine that is trying to be
`accessed.
`It does not set ar$tha to anything in particular,
`because 'it is this value that it is trying to determine.
`It
`could set ar$tha to the broadcast address for the hardware (all
`ones in the case of the lOMbit Ethernet) if that makes it
`convenient for some aspect of the implementation.
`It then causes
`this packet to be broadcast 'to all stations on the Ethernet cable
`originally determined by the routing mechanism.
`
`Packet Reception:
`
`When an adaress resolution packet is received, the receiving
`Ethernet module gives the packet to the Address Resolution module
`which goes through an algorithm similar to the following.
`Negative conditionals indicate an end of processing and a
`discarding of the packet.
`
`?Do I have the hardware type in ar$hrd?
`Yes: (almost definitely)
`[optionally check the hardware length ar$hln]
`?Do I speak the protocol in ar$pro?
`Yes:
`(optionally check the protocol length ar$pln]
`Merge_flag := false
`If the pair <protocol type, sender protocol address> is
`already in my translation table, update the sender
`hardware address field of the entry with the new
`information in the packet and set Merge_flag to true.
`?Am I the target protocol address?
`Yes:
`If Merge_flag is false, add the triplet <protocol type,
`sender protocol address, sender hardware address> to
`the translation table.
`?Is the opcode ares_opSREQUEST?
`Yes:
`
`(NOW look at the opcode!!)
`
`

`

`RFC826. TXT
`
`Swap hardware and protocol fields, putting the local
`hardware and protocol addresses in the sender fields.
`Set the ar$op field to ares_op$REPLY
`Send the packet to the (new) target hardware address on
`the same hardware on which the request was received.
`
`Notice that the <protocol type, sender protocol address, sender
`hardware address> triplet is merged into the table before the
`opcode is looked at. This is on the assumption that communcation
`is bidirectional; if A has some reason to talk to B,
`then B will
`probably have some reason to talk to A. Notice also that if an
`entry already exists for the <protocol type, sender protocol
`address> pair, then the new hardware address supersedes the old
`one. Related Issues gives some motivation for this.
`
`Generalization: The ar$hrd and ar$hln fields allow this protocol
`and packet format to be used for non-lOMbit Ethernets. For the
`lOMbit Ethernet <ar$hrd, ar$hln> takes on the value <l, 6>. For
`other hardware networks, the ar$pro field may no longer
`correspond to the Ethernet type field, but it should be
`associated with the protocol whose address resolution is being
`sought.
`
`Why is it done this way??
`
`Imagine 100
`Periodic broadcasting is definitely not desired.
`workstations on a single Ethernet, each broadcasting address
`resolution information once per 10 minutes (as one possible set
`of parameters). This is one packet every 6 seconds. This is
`almost reasonable, but what use is it? The workstations aren't
`generally going to be talking to each other (and therefore have
`100 useless entries in a table); they will be mainly talking to a
`mainframe, file server or bridge, but only to a small number of
`other workstations (for interactive conversations, for example)~
`The protocol described in this paper distributes information as
`it is needed, and only once (probably) per boot of a machine.
`
`This format does not allow for more than one resolution to be
`done in the same packet. This is for simplicity.
`If things were
`multiplexed the packet format would be considerably harder to
`digest, and much of the information could be gratuitous. Think
`of a bridge that talks four protocols telling a workstation all
`four protocol addresses, three of which the workstation will
`probably never use.
`
`This format allows the packet buffer to be reused if a reply is
`generated; a reply has the same length as a request, and several
`of the fields are the same.
`
`The value of the hardware field (ar$hrd) is taken from a list for
`this purpose. Currently the only defined value is for the lOMbit
`Ethernet (ares_hrd$Ethernet = 1). There has been talk of using
`this protocol for Packet Radio Networks as well, and this will
`
`5 ~-1/
`
`

`

`RFC826. TXT
`
`require another value as will other future hardware mediums.that
`wish to use this protocol.
`
`For the lOMbit Ethernet, the value in the protocol field (ar$pro)
`is taken from the set ether_type$. This is a natural reuse of
`the assigned protocol types. Combining this with the opcode
`(ar$op) would.effectively halve the number of protocols that can
`be resolved under this protocol and would make a monitor/debugger
`more complex (see Network Monitoring and Debugging below).
`It is
`hoped that we will never see 32768 protocols, but Murphy made
`some laws which don't allow us to make this assumption.
`
`In theory, the length fields (ar$hln and ar$pln) are redundant,
`since the length of a protocol address should be determined by
`the hardware type (found in ar$hrd) and the protocol type (found
`in ar$pro).
`It is included for optional consistency checking,
`and for network monitoring and debugging (see below).
`
`The opcode is to determine if this is a request (which may cause
`a reply) or a reply to a previous request.
`16 bits for this is
`overkill, but a flag (field) is needed.
`
`The sender hardware address and sender protocol address are
`absolutely necessary.
`It is these fields that get put in a
`translation table.
`
`The target protocol address is necessary in the request form of
`the packet so that a machine can determine whether or not to
`enter the sender information in a table or to send a reply .. It
`is not necessarily needed in the reply form if.one assumes a
`reply is only provoked by a request.
`It is included for
`completeness, network monitoring, and to simplify the suggested
`processing algorithm described above (which does not look at the
`opcode until AFTER putting the sender information in a table).
`
`The target hardware address is included for completeness and
`network moni taring.
`It has no meaning in the request form, since
`it is this number that the machine is requesting.
`Its meaning in
`the reply form is the address of the machine making the request.
`In some implementations (which do not get to look at the 14.byte
`ethernet header, for example) this may save some register
`shuffling or stack space by sending this field to the hardware
`driver as the hardware destination address of the packet.
`
`There are no padding bytes between addresses. The packet data
`should be viewed as a byte stream in which only 3 byte pairs are
`defined to be words (arShrd, ar$pro and arSop) which are sent
`most significant byte first (Ethernet/PDP-10 byte style).
`
`Network monitoring and debugging:
`
`The above Address Resolution protocol allows a machine to gain
`knowledge about the higher level protocol activity (e.g., CHAOS,
`
`6 ~-:)
`
`

`

`RFC826. TXT
`
`It can determine
`Internet, PUP, DECnet) on an Ethernet cable.
`which Ethernet protocol type fields are in use (by value) and the
`protocol addresses within each protocol type.
`In fact, it is not
`necessary for the monitor to speak any of the higher level
`protocols involved.
`It goes something like this:
`
`When a monitor receives an Address Resolution packet, it always
`enters the <protocol type, sender protocol address, sender
`hardware address> in·a table.
`It can determine the length of the
`hardware and protocol address from the arShln and ar$pln fields
`of the packet.
`If the opcode is a REPLY the monitor can then
`throw the packet away.
`If the opcode is a REQUEST and the target
`protocol address matches the protocol address of the monito~ the
`monitor sends a REPLY as it normally would. The monitor will
`only get one mapping this way, since the REPLY to the REQUEST
`will be sent directly to the requesting host. The monitor could
`try sending its own REQUEST, but this could get two monitors into
`a REQUEST sending loop, and care must be taken.
`
`Because the protocol and opcode are not combined into one field,
`the monitor does not need to know which request opcode is
`associated with which reply opcode for the same higher level
`protocol. The length fields should also give enough information
`to enable it to "parse" a protocol addresses, although it has no
`knowledge of what the protocol addresses mean.
`
`A working implementation of the Address Resolution protocol can
`also be used to debug a non-working implementation. Presumably a
`hardware driver will successfully broadcast a packet with Ethernet
`type field of ether_type$ADDRESS_RESOLUTION. The format of the
`packet may not be totally correct, because initial
`implementations may have bugs, and table management may be
`slightly tricky. Because requests are broadcast a monitor will
`receive the packet and can display it for debugging if desired.
`
`An Example:
`
`Let there exist machines X and Y that are on the same lOMbit
`Ethernet cable. They have Ethernet address EA(X) and EA(Y) and
`DOD Internet addresses IPA(X) and IPA(Y). Let the Ethernet type
`of Internet be ET(IP). Machine X has just been started, and
`sooner or later wants to send an Internet packet to machine Yon
`the same cable. X knows that it wants to send to IPA(Y) and
`tells the hardware driver (here an Ethernet driver) IPA(Y). The
`driver consults the Address Resolution module to convert <ET(IP),
`IPA(Y)> into a 48.bit Ethernet address, but because X was just
`started, it does not have this information.
`It throws the
`Internet packet away and instead creates an ADDRESS RESOLUTION
`packet with
`(ar$hrd) = ares_hrdSEthernet
`(ar$pro) = ET(IP)
`(ar$hln) = length(EA(X))
`(ar$pln) :: length(! PA(X))
`
`7 ~-:)
`
`

`

`RFC826. TXT
`
`(ar$op) = ares_op$REQUEST
`(ar$sha) = EA(X)
`(ar$spa) = IPA(X)
`(ar$tha) = don't care
`(ar$tpa) = IPA(Y)
`and broadcasts this packet to everybody on the cable.
`
`Machine Y gets this packet, and determines that it understands
`the hardware type (Ethernet), that it.speaks the indicated
`protocol (Internet) and that the packet is for it
`((ar$tpa)=IPA(Y)).
`It enters (probably replacing any existing
`entry) the information that <ET(IP),
`IPA(X)> maps to EA(X).
`It
`then notices that it is a request, so it swaps fields, putting
`EA(Y) in the new sender Ethernet address field (ar$sha), sets the
`opcode to reply, and sends the packet directly (not broadcast) to
`EA(X). At this point Y knows how to send to X, but X still
`doesn't know how to send to Y.
`
`Machine X gets the reply packet from Y, forms the map from
`<ET(IP),
`IPA(Y)> to EA(Y), notices the packet is a reply and
`throws it away. The next time X's Internet module tries to send
`a packet to Yon the Ethernet, the translation will succeed, and
`the packet will (hopefully) arrive.
`If Y's Internet module then
`wants to talk to X,
`this will also succeed since Y has remembered
`the information from X's request for Address Resolution.
`
`Related issue:
`
`It may be desirable to have table aging and/or timeouts. The
`implementation of these is outside the scope of this protocol.
`Here is a more detailed description (thanks to MOON@SCRC@MIT-MC).
`
`If a host moves, any connections initiated by that host will
`work. assuming its own address resolution table is cleared when
`it moves. However, connections initiated to it by other hosts
`will have no particular reason to know to discard their old
`address. However, 48.bit Ethernet addresses are supposed to be
`unique and fixed for all time, so they shouldn't change. A host
`could "move" if a host name (and address in some other protocol)
`were reassigned to a different physical piece of hardware. Also,
`as we know from experience, there is always the danger of
`incorrect routing information accidentally getting transmitted
`through hardware or software error; it should not be allowed to
`persist forever. Perhaps failure to initiate a connection should
`inform the Address Resolution module to delete the information on
`the basis that the host is not reachable, possibly because it is
`down or the old translation is no longer valid. Or perhaps
`receiving of a packet from a host should reset a timeout in the
`address resolution entry used for transmitting packets to that
`host; if no packets are received from a host for a suitable
`length of time, the address resolution entry is forgotten. This
`may cause extra overhead to scan the table for each incoming
`packet. Perhaps a hash or index can make this faster.
`
`

`

`, ·.
`
`•
`
`p
`
`RFC826. TXT
`
`The suggested algorithm for receiving address resolution packets
`tries to lessen the time it takes for recovery if a host does
`move. Recall that if the <protocol type, sender protocol
`address> is already in the translation table, then the sender
`hardware address supersedes the existing entry. Therefore, on a
`perfect Ethernet where a broadcast REQUEST reaches all stations
`on the cable, each station will be get the new hardware address.
`
`Another alternative is to have a daemon perform the timeouts .
`. After a suitable time, the daemon considers removing an entry.
`It first sends (with a small number of retransmissions if needed)
`an address resolution packet with opcode REQUEST directly to the
`Ethernet address in the table.
`If a REPLY is not seen in a short
`amount of time, the entry is deleted. The request is sent
`Just
`directly so as not to bother every station on the Ethernet.
`forgetting entries will likely cause useful information to be
`forgotten, which must be regained.
`
`Since hosts don't transmit information about anyone other than
`themselves, rebooting a host will cause its address mapping table
`to be·up to date. Bad information can't persist forever by being
`passed around from machine to machine; the only bad information
`that can exist is in a machine that doesn't know that some other
`machine has changed its 48.bit Ethernet address. Perhaps
`manually resetting (or clearing) the address mapping table will
`suffice.
`
`This issue clearly needs more thought if it is believed to be
`important.
`It is caused by any address resolution-like protocol.
`
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket