[comp.protocols.tcp-ip] Proxy Arp -- How is it Implemented?

bruce@ssc-vax.UUCP (Bruce Stock) (03/29/89)

After reading many references to the use of proxy arp, I decided to consult
RFC 925 to get the details.  The description there did not match the
mechanism I had mentally envisioned from descriptions of what proxy arp does.

In brief, the RFC describes a mechanism for extending the arp reply service
by expanding the arp cache in the gateway, via a somewhat elaborate means,
to include end systems which the gateway can get to on other networks.  

From reading about the service offered by proxy arp elsewhere, I had
assumed that a gateway would implement it not by an expansion of the arp cache,
but by coupling arp with the routing table.  E.G.:
	1. Recieve Arp request
	2. Consult routing table to see if I can reach the destination
	3. If I can, reply to the arp with my physical address
	4. If not, do nothing.

So my question is:  How is it done in the real world?  Per RFC925, per above,
or otherwise?


		Regards,  Bruce Stock
			uw-beaver!ssc-vax!bruce

hedrick@geneva.rutgers.edu (Charles Hedrick) (03/30/89)

RFC 925 does not describe how proxy ARP is implemented.  The RFC
proposes a new kind of packet switch, which is somewhere between a
normal IP gateway and a bridge.  ARP is used as part of the design,
but this is *not* proxy ARP as currently used.  (Indeed that term does
not occur in the RFC.)  RFC 925 is describing something that looks a
lot like a learning bridge.  Like a bridge, there is no mapping
between IP address and network topology, i.e. no subnetting.  Like a
bridge, hosts are listed individually in the routing tables, unlike
gateways, which only keep track of routes to nets and subnets (except
for the directly connected subnets, which need ARP caches).  It's an
interesting proposal, but it isn't proxy ARP as currently used.

Proxy ARP is used with conventional IP gateways (routers).  It is
exactly as you describe: a gateway responds to ARP requests for
targets on the other side of the gateway.  It decides whether to
respond to an ARP by looking in its routing tables.  There are two
uses for proxy ARP

  - some gateways implement it only for subnets of the local network.
	The intention is to handle the problem of hosts that do not
	understand subnets.

  - some gateways implement it for all destinations.  In that case it
	is possible for a host to use ARP as a gateway discovery
	technique for all destinations.

I believe proxy ARP was originally invented only to handle hosts that
don't implement subnets.  However we use the second approach at
Rutgers: where possible our hosts are set to issue ARP requests for
all destinations.