[comp.protocols.tcp-ip] a proposed modification to ARP

jqj@HOGG.CC.UOREGON.EDU (07/10/88)

Abstract:  ARP on Ethernet should use an Ethernet multicast address
	rather than the Ethernet broadcast address.

As MAC-level bridges become more common and cheaper, the average size
of a single logical Ethernet (the span of an Ethernet broadcast packet)
is growing, as is the average number of machines on the Ethernet.  Not
all of these machines speak IP; DECnet, Novell IPX, XNS IDP, and
several other protocols are extremely popular.  Politeness dictates
that one protocol not get in another's way.  I think IP hosts should be
grateful, for example, that DEC uses Multicast rather than broadcast
for most DECnet "broadcasts", and hence that the typical IP-only host
doesn't have to do any work to throw away DECnet traffic it doesn't
care about.  We aren't so polite -- we pollute the cable with ARP
packets and IP broadcasts.  As the networks get bigger, the cost of
using broadcasts rises at least geometrically.

Doing away with IP broadcasts might be hard.  We don't yet understand
the issues of IP multicast well enough to make it a required part of
IP, but will probably end up with some fairly complex IP multicast;
this suggests that we not hastily adopt a simple scheme that is not
sufficiently general.  ARP, though, would be easy.  I propose that a
well-known Ethernet multicast address be reserved for ARP, and that it
be used instead of the broadcast address.  For backwards compatibility
with existing implementations, presumably a multicast ARP that failed
to generate a reply after a reasonable time would trigger an ARP to the
broadcast address.

Note that the imminent publication of a "how to be a perfect host" RFC
makes this a propitious time for such an extension to the ARP spec.

As a side benefit of moving ARP to multicast, one could then have an
extended Ethernet with bridges that refused to pass broadcast packets,
but that still looked to ARP and hence IP like one big network (note
that IP does *not* require that IP broadcasts reliably get to all hosts
on a network, or even require that IP broadcast be implemented.  The
one application I care about that uses IP broadcast, RIP, can easily be
made to cope with a partial-broadcast Ethernet since the number of
gateways << number of hosts).  Breaking a big Ethernet into smaller
broadcast domains clearly further reduces the problem of Ethernet
broadcasts on an extended Ethernet.

Comments?

deering@PESCADERO.STANFORD.EDU (Steve Deering) (07/11/88)

I agree completely with the suggestion of using Ethernet multicast,
instead of broadcast, for ARP.  Not only would it reduce the unnecessary
interrupt load on non-IP hosts, but it might also allow some IP hosts
to disable reception of Ethernet broadcasts (which is possible with
some Ethernet interfaces), thus avoiding everyone else's broadcast
pollution.

Whenever I have suggested this in the past, someone has always raised
the point that not all Ethernet interfaces are capable of receiving
specific multicast address.  However, every interface that I have
encountered provides at least the capability of receiving ALL
multicasts;  there may be interfaces in the PC world that don't even
do that -- they could get by with the broadcast-on-retransmission
scheme that you proposed for backwards compatibility.  Modern
Ethernet chips, such as the LANCE and the Intel chip, do provide
the necessary multicast support, as must any interface that is
expected to support DECnet or the new ISO protocols.

I suggest that different Ethernet multicast addresses be used for
ARP-for-IP, ARP-for-CHAOS, etc., to improve the precision of the
multicast.

A more radical suggestion for improving the precision (for which I cannot
claim credit -- I regret that I have forgotten who suggested it to me) is
to allocate a block of Ethernet addresses for ARP-for-IP, and define a
mapping function from IP address into Ethernet address within the block.
For example, say a block of Ethernet multicast addresses of the form
A-B-C-?-?-? were set aside for this purpose.  The IP address w.x.y.z
could be defined to map to the Ethernet address A-B-C-x-y-z.  A host
wishing to resolve the address of w.x.y.z would send its ARP request to
A-B-C-x-y-z.  Only those hosts whose IP addresses end in x.y.z would
need to listen to that Ethernet multicast address.

    Doing away with IP broadcasts might be hard.  We don't yet understand
    the issues of IP multicast well enough to make it a required part of
    IP, but will probably end up with some fairly complex IP multicast;
    this suggests that we not hastily adopt a simple scheme that is not
    sufficiently general.

In RFC-1054, I propose an IP multicasting scheme that could immediately
replace all current uses of IP broadcast on directly-connected networks.
Of course I am biased, but I believe that the host requirements
specified in that RFC are not very complex -- the real complexity lies
in the multicast routers, which are not necessary for multicasting to
immediate neighbors only.  As for its generality, I would welcome any
and all comments on the proposed scheme.  The End-to-End Protocols task
force is promoting RFC-1054 as a possible Internet standard; if anyone
is unhappy with the proposal, they should speak up now.

Steve Deering

narten@cs.purdue.EDU (Thomas Narten) (07/11/88)

Is broadcast traffic associated with ARP responsible for so much
traffic that it must be stamped out? Or is it the case that tuning
existing implementations so as not to time out entries so fast, etc.
would suffice?

For instance:

A typical implementation of ARP sends out an ARP request whenever a
packet is destined for a host that has no entry in the local ARP
cache.  If a particular machine is down, many hosts start ARPing for
it simultaneously.  Moreover, if the machine is heavily used (a file
server for instance) many useless broadcasts are sent out.  On our
local nets, ARP traffic is pretty minimal as long as all machines are
up.  When one goes down however, ARPs increase dramatically.
Incidentally, NFS is the worst offender at generating many consecutive
ARPs (TCP backs off and eventually gives up).

Adding an additional HOST_DEAD state to the ARP tables could be used
to handle these cases; ARPs for dead hosts would be limited to no more
than one every minute or so.  A sophisticated algorithm would arp very
frequently initially, but use a backoff to increase the delay between
successive ARPs as the number of consecutive non-responses increases.
This scheme also has the beneficial side effect of allowing IP to
return ICMP host unreachables for dead machines.

4.3 BSD ARP times out unaccessed cache entries every 20 minutes.  Is
there any good reason not to increase the value to several hours or
longer?  Broadcasts are expensive and memory is cheap.
-- 
Thomas Narten
narten@cs.purdue.edu or {ucbvax,decvax,ihnp4}!purdue!narten

smb@ulysses.homer.nj.att.com (Steven Bellovin) (07/11/88)

A more interesting question is how to force hosts to discard ARP entries
for dead machines.  Currently, most implementations keep the ARP entry
for some time interval after the last transmission to a host, not the
last reception from it.  Thus, if a host goes down because of a broken
Ethernet board, some of its partners will retain the old (and now bogus)
address for hours, if contact attempts are sufficiently frequent.  Some
better solution is needed, perhaps akin to the way 4.3bsd quashes a cached
route when the round-trip time gets too long.  It's hard to see a good way
to do that without violating layering, though.

dab@ALLSPICE.LCS.MIT.EDU (07/11/88)

> 4.3 BSD ARP times out unaccessed cache entries every 20 minutes.  Is
> there any good reason not to increase the value to several hours or
> longer?  Broadcasts are expensive and memory is cheap.

     If 4.3 still has the bug where it doesn't update its ARP entry for an
IP address everytime it receives an ARP from that IP address, then those of
us who occasionally change ethernet interfaces would rather see this time
shortened than increased.  Except for this, I think an ARP timeout of many
hours is reasonable.

					David Bridgham

jas@proteon.COM (John A. Shriver) (07/11/88)

I think that moving the ARP boradcast to a Ethernet Multicast address
still assumes too much on the part of our overworked Ethernet
interfaces.  There are still interfaces that have no multicast filter,
only mutlicast on/off (SEEQ chip, used on 3C501).  There are
interfaces with a severely limited number of multicast filters (the
ones that don't use hash tables).  There are interfaces whose
performance plummets when you enable any multicast address, because
they do a linear search of the table on every packet.

All of these interfaces will have a much more difficult existence if
we change ARP to use a multicast.  The ones that have only on/off will
be even more burdened, not only will they receive ARP (and rwho), now
they will receive all the DECnet routing traffic they never wanted to
hear.  This will keep their single receive buffer constantly full of
rubbish, so that the real traffic will never get in.

ARP is in a lot of PROMs now, and PROMs are "forever".  It's probably
too late.  People have too much invested in PROMs and interfaces to
try changing ARP.

I think that in most networks, more broadcast traffic is routing than
is ARP.  RIP, rwho, ruptime, et. al. are the problem, not ARP.

Lets not design (or ad-hoc, as Berkeley did) ANY more physical
broadcast protocols.  From now on, we use multicast.  Does DCA want to
shell out the $1000 to IEEE for an address block?  That will get us
2^24 multicast addresses of the IP community.

daver@hpindda.HP.COM (Dave Richards) (07/12/88)

> Adding an additional HOST_DEAD state to the ARP tables could be used
> to handle these cases; ARPs for dead hosts would be limited to no more
> than one every minute or so.  A sophisticated algorithm would arp very
> frequently initially, but use a backoff to increase the delay between
> successive ARPs as the number of consecutive non-responses increases.
> This scheme also has the beneficial side effect of allowing IP to
> return ICMP host unreachables for dead machines.

I like this idea.  LAN traces of our local network have illustrated
that such a "state" is quite necessary.  NFS and TCP traffic for
down hosts generates sooo many ARPs, it's an nightmare.

> 4.3 BSD ARP times out unaccessed cache entries every 20 minutes.  Is
> there any good reason not to increase the value to several hours or
> longer?  Broadcasts are expensive and memory is cheap.

A number is just a number.  But...  20 minutes isn't that short a
time-period, with respect to most LANs.  Also, directed ARP requests
for cache entries being timeed-out, is one way of easing the burden on
the network, ehile sllowing the cache entry to die in a moderate period
of time.

	Dave Richards

ddp+@ANDREW.CMU.EDU (Drew Daniel Perkins) (07/12/88)

The CMU router has an implementation of ARP which deals with ARP and dead hosts
very effectively.  We use two timers and a counter instead of the usual
implementation with one timer.  The first timer is like that in BSD UNIX.
Every time an arp cache entry is referenced, the timer is reset to some "large"
value.  If the timer goes off (because no packets were SENT to the host), the
entry is removed.  I think Berkeley uses 5 minutes for this timeout and we use
20 minutes.  Because of our additional timer and counter, this could easily be
hours (days).

Our other timer and counter work as follows.  When an arp entry is refreshed
(created/updated), the second timer is reset to some "small" timeout, say two
minutes, and the counter is reset to zero.  If the timer goes off (because no
ARP requests or replies were RECEIVED from the host), the timer is reset and
the counter is incremented.  If the counter is less than a small constant such
as two, a point-to-point ARP request is sent directly to the host (i.e. it is
NOT broadcast).  If the host is still alive, it will answer it causing the
timer to be reset and the counter to be reset.  If the host is dead, changed
it's ethernet address, moved, etc. it will NOT reply, causing the timer to go
off again.  If the retransmission counter ever reaches two (for example), the
entry is removed.  In this way, arp entries are continuously (but slowly)
tested for accuracy, and the router is very resilient to ARP or hardware
problems.  We rarely see a bad ARP entry persist for more than a few minutes.

Drew

ddp+@ANDREW.CMU.EDU (Drew Daniel Perkins) (07/12/88)

I'm not sure if you are really suggesting using 2^24 multicast addresses or
not.  While quite precise, it would probably be be overkill.  Considering that
many (most?) of the ethernet chips which support more than 1 multicast address
actually support 64, a good compromise between only 1 address and 2^24
addresses might be to reserve 64.  Some sort of fast hashing function could be
used to map an IP address to one of 64 buckets.  This probably rules out the
hashing function (CRC's) used by many of the chips themselves.  How hard is it
to get lots of multicast addresses?  Is it possible to buy 2^24 addresses?

Drew

map@GAAK.LCS.MIT.EDU (Michael A. Patton) (07/13/88)

In Re:
>   Date: Mon, 11 Jul 88 21:36:30 -0400 (EDT)
>   From: Drew Daniel Perkins <ddp+@andrew.cmu.edu>
>
>   I'm not sure if you are really suggesting using 2^24 multicast addresses or
>   not.  While quite precise, it would probably be be overkill.
I'm pretty sure that's what he had in mind, it's the obvious number
(see below).  It may be overkill, but it doesn't hurt anything and
helps the "bother as few hosts as possible" philosophy of the original
message, in general only the intended host will actually have to
process each ARP "broadcast".
>				...  Considering that many (most?) of
>   the ethernet chips which support more than 1 multicast address
>   actually support 64, a good compromise between only 1 address and
>   2^24 addresses might be to reserve 64.
But the point was that each host only needs to listen to ONE of these
addresses, the one it's IP address maps into, any ARPs sent to the
others would be ignored.  With this algorithm you get the hardware to
do the ignoring, saving on CPU time and interrupt overhead, possibly
even on context switches.
>				...  Some sort of fast hashing
>   function could be used to map an IP address to one of 64 buckets.
>   This probably rules out the hashing function (CRC's) used by many
>   of the chips themselves.  How hard is it to get lots of multicast
>   addresses?  Is it possible to buy 2^24 addresses?
It isn't possible to buy fewer than 2^24, that's the smallest package
available :-)  When you buy Ethernet addresses, you buy a 24 bit
prefix, and you get to assign the other 24 bits as you see fit.  This
seems like exactly the kind of scheme that fits this well.

>   Drew

Mike

deering@pescadero.stanford.EDU (Steve Deering) (07/15/88)

[This message seems not have made it out to the tcp-ip list, so this
 is a retransmission.  Sorry if anyone gets a duplicate.  -- Steve]

	From Thomas Narten:
	Is broadcast traffic associated with ARP responsible for so much
	traffic that it must be stamped out? ...

ARP has often been responsible for broadcast storms, which some people
would like to stamp out.  Moving it to from broadcast to multicast
would reduce the number of potential victims of a storm (especially
if using an address hashing scheme, as I proposed).

Even when ARP is behaving itself, there is a pollution argument against
using broadcast: no single (well-behaved) broadcast application causes a
significant burden on uninterested hosts, but as the number of broadcast
applications continues to grow, and the number of hosts running those
applications on a single (possibly bridged-)LAN continues to grow,
the cumulative burden becomes serious.  To control it, you have to try to
stop as many offenders as possible.

It seems to me that the cost of cleaning up this pollution is almost
negligible, unlike the cost of cleaning up coal-burning factories or
semiconductor fabrication facilities or cars.  Just replace one
48-bit address with another, and set your multicast filter accordingly.

But, as John Shriver points out:

	... There are still interfaces that have no multicast filter,
	only mutlicast on/off (SEEQ chip, used on 3C501).  There are
	interfaces with a severely limited number of multicast filters (the
	ones that don't use hash tables).  There are interfaces whose
	performance plummets when you enable any multicast address, because
	they do a linear search of the table on every packet.

That's unfortunate, but does that mean everybody with a decent filter
has to continue to suffer?  If the users of a particular interface find
that accepting all multicasts is too burdensome, they can continue to
accept only broadcasts, as long we specify that ARP retransmissions be
sent as broadcasts, and the retransmission interval is reasonably short.
Furthermore, the lack of a decent filter does not prevent them from
*sending* multicast ARP requests.  I don't think that we should let
the weaknesses of these obsolete interfaces prevent us from moving
forward, especially given that we can accomodate them well enough until
they are replaced.

	... The ones that have only on/off will be even more burdened, not
	only will they receive ARP (and rwho), now they will receive all
	the DECnet routing traffic they never wanted to hear.  This will
	keep their single receive buffer constantly full of rubbish, so
	that the real traffic will never get in.

But it's OK to make the DECnet hosts receive all the IP rubbish they
never wanted to hear?

	ARP is in a lot of PROMs now, and PROMs are "forever".  It's probably
	too late.  People have too much invested in PROMs and interfaces to
	try changing ARP.

As pointed out, old implementations would continue to work.

	... Does DCA want to shell out the $1000 to IEEE for an address
	block?  That will get us 2^24 multicast addresses [for] the IP
	community.

It has already been done.  2^23 of them have been allocated to IP multicast
(see RFC-1054).  The other half are reserved by the Internet Numbers Czar
for possible future uses, of which ARP might conceivably be one.

	From Drew Daniel Perkins:
	I'm not sure if you are really suggesting using 2^24 multicast
	addresses or not.  While quite precise, it would probably be be
	overkill.  Considering that many (most?) of the ethernet chips
	which support more than 1 multicast address actually support 64,
	a good compromise between only 1 address and 2^24 addresses might
	be to reserve 64. ...

You are right, you can hash to as many or as few addresses as you want,
but I don't understand what the size of an address filter has to do with
it -- each host need listen to only one multicast address for ARP, the
one to which its own IP address hashes (unless the host has more than
one IP address assigned to a single interface).  The algorithm I suggested
gives a perfect hash and is trivial to implement.  2^24 is actually the
unit of allocation of multicast addresses from the IEEE; as John Shriver
mentioned, such a block of addresses costs $1000.  (What a numbers racket!)
Alternatively, you could apply to the Numbers Czar for a smaller block --
only .006 cents an address :-)

By the way, if you decide to use only a single Ethernet multicast
address for ARP, I suggest that you use 01-00-5E-00-00-01.  That is
the Ethernet address that corresponds to the IP multicast address
224.0.0.1, to which all multicast-capable IP hosts are expected to
listen.  Might as well conserve filter slots, where possible.

Steve

DCP@QUABBIN.SCRC.SYMBOLICS.COM (David C. Plummer) (07/15/88)

    Date: 12 Jul 1988 21:25-PDT
    From: Steve Deering <deering@pescadero.stanford.edu>

    By the way, if you decide to use only a single Ethernet multicast
    address for ARP, I suggest that you use 01-00-5E-00-00-01.  That is
    the Ethernet address that corresponds to the IP multicast address
    224.0.0.1, to which all multicast-capable IP hosts are expected to
    listen.  Might as well conserve filter slots, where possible.

I just barfed up my breakfast.  Have they stopped teaching modularity
and functional boundaries in computer science classes?

jas@proteon.COM (John A. Shriver) (07/16/88)

This entire discussion of ARP and using a multicast address has one
assumption that has not been raised.  The idea is to send the first
ARP request as a Multicast, and then send retransmissions as
Broadcast.  This assumes that the ARP implementation in question is
stateful, and has retransmissions.  Not all ARP implementations meet
this criteria.  Of course, these implementations could always send to
the broadcast.

deering@PESCADERO.STANFORD.EDU (Steve Deering) (07/16/88)

  From me:
    By the way, if you decide to use only a single Ethernet multicast
    address for ARP, I suggest that you use 01-00-5E-00-00-01.  That is
    the Ethernet address that corresponds to the IP multicast address
    224.0.0.1, to which all multicast-capable IP hosts are expected to
    listen.  Might as well conserve filter slots, where possible.

  From David Plummer <DCP@QUABBIN.SCRC.Symbolics.COM>:
    I just barfed up my breakfast.  Have they stopped teaching modularity
    and functional boundaries in computer science classes?

Have they stopped teaching civility in kindergarten?

  From jqj@hogg.cc.uoregon.EDU:
    I'm not sure I agree.  I'd like to keep ARP conceptually distinct from
    IP, so as long as ARP is also used for Chaos and potentially for other
    protocols, it would be desirable to have one more multicast address just
    for it.  ...

Sorry, I was less clear than I should have been.  I was referring to the
use of ARP for IP addresses, as I mentioned in my first message.  Clearly,
ARP for Chaos addresses should use a different multicast address, given
that the set of hosts running Chaos is not necessarily the same as the set
of hosts running IP.

The idea is that one Ethernet multicast address identifies the set of
all local hosts running IP.  Any application that wishes to send to that
particular set of hosts should use that address, regardless of ether-type
or higher-level protocol (just as the unicast Ethernet address used to
reach a single host does not depend on the higher-level protocol [with the
unfortunate exception of DECnet]).  Currently, both IP broadcast and ARP
use the same address, FF-FF-FF-FF-FF-FF, which identifies a larger set of
hosts than necessary; I have suggested a more accurate address to use.

In fewer words, link-level addressing is orthogonal to protocol type.  

Of course, ARP-for-IP *could* use a different multicast address than that
used for the IP all-hosts group, but they would identify exactly the same
set of hosts.  Given that most current Ethernet interfaces have a small,
fixed number of multicast filter slots or hash buckets, it's worthwhile
to avoid the redundancy.

(On the other hand, if you adopt the address hashing scheme we have been
discussing, the sets of ARP targets will differ from the set of all IP
hosts, so different multicast addresses are appropriate.  In return for
using up another filter slot, you get many fewer unnecessary interrupts.)

When this same topic came up a year or so ago, David Plummer (the gentleman
with the vomit on his lap) objected to using multicast for ARP-for-IP, on
the grounds that ARP was independent of IP and should not need to know
anything specific to IP.  (I regret that I no longer have a copy of his
message from that discussion; I'm sure he will correct me if I am
misrepresenting his objection.)  In my view, the hardware-level destination
address is simply another parameter to ARP, just like the hardware and
protocol addresses that go in the ARP fields.

Steve Deering

jmg@cernvax.UUCP (jmg) (07/18/88)

In article <8807131426.AA04434@gaak.LCS.MIT.EDU> map@GAAK.LCS.MIT.EDU (Michael A. Patton) writes:
>It isn't possible to buy fewer than 2^24, that's the smallest package
>available :-)  When you buy Ethernet addresses, you buy a 24 bit
>prefix, and you get to assign the other 24 bits as you see fit.  This
>seems like exactly the kind of scheme that fits this well.

When we asked for, and got, our own Ethernet addresses (from Xerox)
we got just 4096, i.e. the last three bytes only were free for us.
Of course, we are not a major manufacturer, but only a small-time
producer of a few home-built controllers.

I have no idea whether there are other possibilities!

-- 
 _ _  o |             __                    |    jmg@cernvax.uucp
| | |   |     _      /  \  _   __  _   __  _|    jmg@cernvax.bitnet
| | | | |_)  /_)     |  __/_) | (___\ | (_/ |  J. M. Gerard, Div. DD, CERN,
| | |_|_| \_/\___    \__/ \___|   (_|_|   \_|_ 1211 Geneva 23, Switzerland

jmg@cernvax.UUCP (jmg) (07/18/88)

Of course, I meant the last three nibbles (12 bits total), not bytes, in
the follow-up which I just sent.
-- 
 _ _  o |             __                    |    jmg@cernvax.uucp
| | |   |     _      /  \  _   __  _   __  _|    jmg@cernvax.bitnet
| | | | |_)  /_)     |  __/_) | (___\ | (_/ |  J. M. Gerard, Div. DD, CERN,
| | |_|_| \_/\___    \__/ \___|   (_|_|   \_|_ 1211 Geneva 23, Switzerland

jas@proteon.COM (John A. Shriver) (07/18/88)

> I just barfed up my breakfast.  Have they stopped teaching modularity
> and functional boundaries in computer science classes?

ARP is one of the quintessentially elegant protocols.  An enormous
amount of power is provided for a very simple implmentation.  Let's
keep it that way.

Let's also remember that ARP runs on 5 networks other than Ethernet
(Experimental Ethernet, AX.25, ProNET, Chaosnet, and ARCNET) that
don't have multicast, only broadcast.

Of course I could be a real killjoy and note that ARP won't be needed
on ISO networks, routers will send you redirects instead.

Dave_Katz@UM.CC.UMICH.EDU (07/19/88)

>Of course I could be a real killjoy and note that ARP won't be needed
>on ISO networks, routers will send you redirects instead.
 
Address resolution is normally done by the ES-IS protocol, ISO 9542.
Hosts (ESs) and routers (ISs) periodically multicast Hellos to one
another, providing the net-subnet mapping (NSAP-SNPA in the parlance).
Hosts can listen to the other hosts' ES hellos if desired, thus learning
the mapping directly;  otherwise they can bounce the packets off of a
router and get a redirect.
 
The packet overhead of redirects vs. ARP is the same, and there are a couple
of advantages to the ISO approach.  First, no broadcasts are necessary to
resolve the address (and hosts only have to listen to IS multicasts and
thus aren't bothered by other hosts' address resolution).  Second, it is
unnecessary to hold on to the data packet while the address is being
resolved, which reduces implementation complexity and other fuzzy issues
(how long to hold onto the packet before giving up?).
 
For isolated nets with no routers, hosts multicast data packets with
unresolved net addresses to other hosts (essentially a broadcast since
there are only hosts on the wire), and the destination host sends an
ES hello directly to the sender for future reference.
 
Dave Katz
Merit/NSFnet

cire@CLASH.CISCO.COM (07/20/88)

>> Date: Mon, 18 Jul 88 11:02:26 EDT
>> From: jas@proteon.com (John A. Shriver)
>> To: DCP@quabbin.scrc.symbolics.com
>> Cc: tcp-ip@sri-nic.arpa
>> Subject: a proposed modification to ARP
>> Status: O
>> 
>> ARP is one of the quintessentially elegant protocols.  An enormous
>> amount of power is provided for a very simple implmentation.  Let's
>> keep it that way.

Here here.  I also have a question.  If ARP was built to use
multicasts wouldn't that just replace one problem with another
one?  The hosts on the network would have to be properly configured
to use an appropriate multicast or group of multicasts.  How well
will this interoperate with other vendor's implementations?  Is
all this worth it?

-c
cire|eric

Eric B. Decker
cisco Systems
Menlo Park, California

email:	cire@cisco.com
uSnail: 1360 Willow Rd.,  Menlo Park, CA  94025
Phone : (415) 326-1941

DCP@QUABBIN.SCRC.SYMBOLICS.COM (David C. Plummer) (07/27/88)

    Date: Tue, 19 Jul 88 12:33:09 PDT
    From: cire@clash.cisco.com

    >> Date: Mon, 18 Jul 88 11:02:26 EDT
    >> From: jas@proteon.com (John A. Shriver)
    >> 
    >> ARP is one of the quintessentially elegant protocols.  An enormous
    >> amount of power is provided for a very simple implmentation.  Let's
    >> keep it that way.

    Here here.  I also have a question.  If ARP was built to use
    multicasts wouldn't that just replace one problem with another
    one?  The hosts on the network would have to be properly configured
    to use an appropriate multicast or group of multicasts.  How well
    will this interoperate with other vendor's implementations?  Is
    all this worth it?

I speak here as the author of ARP to give some historical perspective on
the issue at hand.  When ARP was developed (6 years ago), the world was
a lot different than it is today.  Proteon barely existed, if it existed
at all.  Sun wasn't.  I don't think IBM had introduced their PC yet, and
it certainly didn't have networking at the time.  I think 4.2bsd hadn't
come out yet, and it's TCP was still in flux.  For that matter, I think
the ARPAnet was still running NCP.  Ethernet cards were available for
PDP11s (remember them?) from Interlan and 3Com, and for MultiBus from
Interlan.  There may have been others, but that was about it.  VMEBus
was probably in committee.  Multicast addresses were defined in the
spec, but there were no hints how to use them, or what capabilities
boards should provide for multicast (e.g., in the way of specifying
individual or group addresses to listen for).  Due to all of this,
networks were a lot smaller.

Times have changed.  Personal computers and personal workstations are
now commonplace.  The Ethernet spec was revised.  A lot more companies
and products exist.  TCP/IP is incorporated into a lot of systems (e.g.,
4.3bsd).  A lot of different Ethernet interfaces exist.  They all have
various forms of address filtering capabilities, both for multicasting
and normal addresses (e.g., I understand many PC cards require the PC to
get interrupted and do the address filtering in software!).  Networks
are a LOT LOT bigger and broadcasts are on people's mind, whether it's a
real problem or not.

In hindsight, it was a mistake not to have a checksum.  There were a few
other things that could have been done better that various of us have
noticed and learned over the years.  Multicast was just not a
consideration, partly because occaisional broadcasts didn't seem like
they would be a problem (perhaps a mistake) and partly because multicast
was so ill-defined.  One of the people helping me with the protocol may
have suggested multicasting; I can't remember.  Adding state to (or
suggesting state for) ARP was not even thought of, probably because the
protocol works without state and state may have been discarded because
it added (seeminly) unneeded complexity.

I have nothing against somebody figuring out how to effectively use
multicast and/or suggested state algorithms.  I think people do have to
consider the following things:
 - Existing implementations must not break.  It's too hard to get
   vendors to change things on a flag day.
 - Don't unnecessarily link ARP with IP.  I barfed because that's what
   it looked like somebody was suggesting.  The xx-xx-xx-xx-yy-yy
   multicast address suggestion where xx-xx-xx-xx means ARP and yy-yy is
   the protocol being ARPed for seems reasonable.

ARP was designed to be protocol-independent and hardware-independent.
Please keep it that way.

henry@utzoo.uucp (Henry Spencer) (08/03/88)

In article <19880727152537.7.DCP@SWAN.SCRC.Symbolics.COM> DCP@QUABBIN.SCRC.SYMBOLICS.COM (David C. Plummer) writes:
>... Networks
>are a LOT LOT bigger and broadcasts are on people's mind, whether it's a
>real problem or not.

Actually, it has always seemed to me that ARP -- the mapping between physical
addresses and logical ones, so to speak -- was the one place where use of
local broadcast was proper and defensible.  I personally would put ARP last
on the list of broadcast problems to be fixed, and a number of other things
much higher.  I have trouble believing that ARP by itself, if it were the
only use of broadcast, would be a real problem.  Is it really so?
-- 
MSDOS is not dead, it just     |     Henry Spencer at U of Toronto Zoology
smells that way.               | uunet!mnetor!utzoo!henry henry@zoo.toronto.edu

bdale@hpcsrc.HP.COM (Bdale Garbee) (08/03/88)

>Let's also remember that ARP runs on 5 networks other than Ethernet
>(Experimental Ethernet, AX.25, ProNET, Chaosnet, and ARCNET)

Not to mention Amateur Radio AX.25 ala the KA9Q package.