jbvb@VAX.FTP.COM (James Van Bokkelen) (08/11/89)
I was playing around at parsing the random RARP packets our 386i (SunOS 4.0) generates, and found that it wasn't using either of the "ar$op" values defined in RFC 903 for RARP (it defines 3 and 4, the 386i sends 5). While I understand "why" in general terms (what else is new), I am somewhat interested in knowing what 5 "officially" means (and 6, if they send it also). "YP request" and "YP reply", perhaps? jbvb
jkrey@VENERA.ISI.EDU (08/12/89)
jvbv: ARP opcodes 5, 6, and 7 are assigned to dynamic reverse ARP. Joyce. DYNAMIC REVERSE ARP Assignments: Operation Code (op) 5 DRARP-Request 6 DRARP-Reply 7 DRARP-Error
barmar@think.COM (Barry Margolin) (08/13/89)
In article <8908112249.AA00352@akamai.isi.edu> jkrey@VENERA.ISI.EDU writes: >ARP opcodes 5, 6, and 7 are assigned to dynamic reverse ARP. Is this documented in an RFC? I don't recall it. Barry Margolin Thinking Machines Corp. barmar@think.com {uunet,harvard}!think!barmar
db@helium.East.Sun.COM (David Brownell) (08/13/89)
In article <8908102042.AA04628@vax.ftp.com> jbvb@VAX.FTP.COM (James Van Bokkelen) writes: > I was playing around at parsing the random RARP packets our 386i (SunOS 4.0) > generates, and found that it wasn't using either of the "ar$op" values > defined in RFC 903 for RARP (it defines 3 and 4, the 386i sends 5). While > I understand "why" in general terms (what else is new), I am somewhat > interested in knowing what 5 "officially" means (and 6, if they send it also). > "YP request" and "YP reply", perhaps? The RFC for this is still sitting in folk's internal review piles ... looks like the IETF isn't the only process that needs streamlining to get RFCs out faster! (:-) Here's a capsule summary of Dynamic RARP, in fact the original proposal with minor updates. The RFC is more precise, accurate, and explanatory, and I certainly hope it gets out to Jon Postel soon. We propose a version of RARP to solve a specific problem arising when a system which is unknown on a given network tries to join it: there is no way for it to acquire an protocol address unless the system has been configured on the network by a third party. In our preferred model, systems may join or rejoin an arbitrary network without advance network preparation. Specific examples might be workstations being installed or relocated in a building housing multiple Ethernets. Joining a network must not ** require ** any administrative action. To solve the problem of acquiring an address, we propose a protocol with the working name of "Dynamic Reverse Address Resolution Protocol" (DRARP). The packet format and (on Ethernet and IEEE 802 networks) ethertype are those of RARP (hence the opcodes include those of ARP and RARP), but three new opcodes are defined: DRARP_REQUEST, DRARP_RESPONSE, and DRARP_ERROR: - DRARP_REQUEST (opcode 5) packets are exactly like RARP_REQUEST packets except for the operation code. They are a request to return either the published target protocol address corresponding to the target hardware address field, or one allocated on a temporary basis. - DRARP_RESPONSE (opcode 6) packets are responses to DRARP_REQUEST packets containing protocol addresses which are not guaranteed to be valid for more than an hour. These could be reallocated to another system after this time elapses, unless a separate protocol is used to ensure that this reallocation does not occur. (These addresses are termed "transient".) All DRARP servers on a network segment must return the same value in a DRARP_RESPONSE packet. - RARP_RESPONSE (opcode 4) packets may be sent in response to DRARP_REQUEST packets if the address returned is not subject to automatic reallocation. (These are termed "persistent". They get reallocated too, only LOTS more slowly.) - DRARP_ERROR (opcode 7) packets may be sent in response to DRARP_REQUESTs. The format is that of a RARP_RESPONSE, but the the target protocol address field is instead used to encode an error status describing why no target protocol address is being returned. The codes are all one byte long (on the grounds that all protocol addresses are at least one byte long). The currently defined codes are: DRARPERR_RESTRICTED (1) -- This network does not support dynamic address assignment. The response is definitive; the network is controlled so that no other response to a DRARP_REQUEST is possible right now. DRARPERR_NOADDRESSES (2) -- This network supports dynamic address assignment, but all available network (or subnetwork) protocol addresses have been allocated, so that none can be allocated now. DRARPERR_SERVERDOWN (3) -- A transient failure to allocate an address, due for example to a server being unavailable, or allocation just taking a long time. DRARPERR_MOVED (4) -- Analagous to DRARPERR_RESTRICTED, but with the additional information that the system is recognized as being on the "wrong" network. DRARPERR_FAILURE (5) -- Some other failure mode resulted in an inability to allocate an address. Assigning addresses using DRARP_RESPONSE requires a network-wide (or subnetwork-wide) address assignment authority. If such an authority is not present, no DRARP_RESPONSE or DRARP_ERROR packets may be sent. DRARP servers should probe for spurious DRARP servers, which might have a different idea of who the address authority is. They should probe the a network to see if a transient address has been seized by some other system before handing it out in a DRARP_RESPONSE packet. There are a number of problems that are tough in an Internet environment. For example, who really has authority to allocate addresses? AppleTalk only has transient addressing, but in IP land you can have addresses persistently allocated by someone you didn't think really had the authority. You can't rely on nameserver reverse address lookups on today's networks. Also, handing out transient addresses emphasizes what a bad idea it is to base any security scheme on IP addresses. On an Ethernet, you can always just grab an address you've got a hankering for, but somehow sites still keep trusting IP addresses. (Steve Bellovin's article had a lot more issues than just ARP level theft.) There are a number of additional problems to solve if you want to do any sort of automatic system installation, beyond just getting an address: - Getting the subnet mask. - Getting a router address. - Persistently allocating a name. - Sometimes, allocating server resources. - Selecting one of several zones on the network. - Proving the system's identity on the network. - Determining the system's role in running the network. AppleTalk standardizes the routing stuff (netmask, router address), but it's missing the concepts of persistent network entities and systems interdependence (a diskless client and its server). A system's whole network configuration changes every time it joins a network. Which isn't an inaccurate model for most systems (i.e. ones with disks), but it ends up looking rather Byzantine after a while even there. For the Sun386i, we got automatic system installation up to the point that you could do manual setup of one machine (the "master server") and the rest could either automatically install themselves, or tell you why they couldn't. It interoperates with existing networks ("just turn it off"). David Brownell dbrownell@sun.com Sun Entry Systems Software sun!suneast!db Billerica, MA
jkrey@VENERA.ISI.EDU (08/15/89)
The draft RFC by Sun Microsystems (specifically David Brownell) on DRARP is pending resubmission to the RFC Editor. JKREY
dab@VAX.FTP.COM (08/16/89)
It seems that BOOTP would have made a better base to do dynamic address assignment from than RARP. Why the choice? David Bridgham