*BSD News Article 59312


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.mel.connect.com.au!munnari.OZ.AU!news.ecn.uoknor.edu!paladin.american.edu!zombie.ncsc.mil!news.mathworks.com!newsfeed.internetmci.com!btnet!zetnet.co.uk!demon!youngman.demon.co.uk
From: jeremy@youngman.demon.co.uk (Jeremy Youngman)
Newsgroups: comp.unix.bsd.bsdi.misc
Subject: Proxy ARP
Date: Wed, 17 Jan 1996 19:53:08 GMT
Lines: 47
Message-ID: <821908436.13431@youngman.demon.co.uk>
NNTP-Posting-Host: youngman.demon.co.uk
X-NNTP-Posting-Host: youngman.demon.co.uk
X-Newsreader: Forte Free Agent 1.0.82

Hi, please can somebody help me with a Proxy ARP problem?

Please see below for details, but IN SUMMARY I am looking for
anybody who is successfully using Proxy ARP on BSD v201
(in particular where you're publishing one hardware address 
and actually using another).

-----     -----     -----
|   |1   1|   |2   1|   |
| A +-----+ B +-----+ C +
|   |     |   |     |   |
-----     -----     -----

I have three hosts A, B and C.
A and C have one interface each, B has two.
A-B and B-C are different TCP/IP subnets so host C has to send
packets for host A via host B. This could be done via a routing
table on host C however I'm trying to use Proxy ARP on host B.

The idea is that when host C arp's for the hardware address of
host A, that arp is seen by host B which replies with the hardware
address of its (B's) interface2. Then C will send packets to B's
interface2, which B will forward to host A using B's own routing
tables. This means everybody's happy and I don't need to change
anything on host C [in real life they'll be many hosts like C, 
which is why I want to go for Proxy ARP on B].

Okay so far? However host B also has to keep details of host A's
hardware address in its (B's) arp cache. In other words, host B
"knows" of two hardware addresses for host A - (i) one which it
publishes to hosts like C and (ii) one which it uses itself.
This is a valid thing to do, at least on some TCP/IP stacks, but
I'm having problems on my BSD v201 software.

When I look at host B's arp table it already has an entry for
A's IP address pointing to hardware address of A's interface.
When I try: arp -s <IP_addr_of_A> <HW_addr_of_B_iface2> pub
I get the error "Writing to socket: File already exists"
(or text pretty similar). In other words it is not letting me
add a proxy entry. I tried deleting the existing arp entry for
host A but the software either put it back straight away or
put it back marked as (incomplete) - but that's another story.

Anybody out there doing proxy arp like this?