Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Aug 1997 22:15:43 +0300
From:      Danny Braniss <danny@cs.huji.ac.il>
To:        Jim Shankland <jas@flyingfox.com>
Cc:        hackers@FreeBSD.ORG
Subject:   Re: PROXY ARP 
Message-ID:  <199708131915.WAA22897@sexta.cs.huji.ac.il>
In-Reply-To: Your message of "Wed, 13 Aug 1997 10:06:39 PDT." <199708131706.KAA12621@biggusdiskus.flyingfox.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <199708131706.KAA12621@biggusdiskus.flyingfox.com>you write:
}
}As Alex Trebek would say, "Can you be more specific?"  Do you mean
}the code isn't really there in FreeBSD?  Or that ARP-level bridging
}is inherently a bad idea?  If the latter, why?
}
}Jim Shankland
}Flying Fox Computer Systems, Inc.

I think ARP-level bridging is not a bad idea in certain cases, and in
my particular case the simplest one (if it would work :-), trying to
link two dissimilar electronic networks with common protocol when of
the shelf box is not available. (btw, gbt network, at least one product
has a '12 port repeater if one 10/100mgb port).

now back to bsd, in if_ether.c there is 'some' provision for
proxying. actualy only some 4 lines of code. My guess is that it was
put in specialy for p2p links, where the slip/ppp takes care of
setting it up, and removing the proxy when the link goes down.

  Intranet	+-------+	+--------------+
	--------|Gateway|-------|Myrinet switch| (16 ports)
 10/100ether	+-------+	+--------------+
				   |	     |
  host-A			   host-X    host-Y
  ...

to simplify the test, hosts on the Myrinet side have a subnet of
255.255.240 and a default route to gateway, hence have no need for
proxying - if they want to talk to hosts on the myrinet they send an
arp, else the packets get routed to gateway.

the problem is on the ethernet side, all hosts think the network is
flat (no subnets, and they have a default route to a wan-router).

so, by doing 'arp -s host-X mac-address-of-ether pub' the intranet was
able to communicate with host-X.

problem I: when host-Y wanted to talk with host-X, both the Gateway and
host-X replied (forgot to mention, the gateway is running BSD/OS,
there is not yet a driver for myrinet for FreeBSD), so i looked at
FreeBSD and saw the fix i need, mainly not to respond to arp request
to the 'wrong' interface. problem I solved.

proble II: and this is true for FreeBSD too (as far as i can tell).
the gateway will eventualy expire the myrinet-mac address of host-X,
leaving only the proxy (permanet) entry. next time the gateway wants
to talk to host-X it gets the proxy-mac, and sends the packet out
through the ethernet! (there are more problems with expiration, but as
they like to write in books: it's left to the reader to figure it out :-)

problem III: i see sometimes, on hosts in the intranet, have the
myrinet mac address of host-X!

problem II & III are more difficult, im still trying to figure out
rtalloc1(), which calls rn_match, but at first look, sin_other (which
is set to PROXY) is not checked - don't know if it should.

Am i being too specific?

In any case, while i was doing all this, i was writing a user level
program to add/delete proxy entries. it used bpf to filter arp
requests on both interfaces, and when a request on the ether side is
seen that has a match on the myrinet, it would tell the kernel about
the proxy. but in a 'bold and recless' move, I decided to send an ARP (proxy)
reply myself (not telling the kernel anything), and it seems to work!
the program needs allot of polishing still, but it does prove a point.

a side effect, is that, since the network is fully switched,
broadcasts are slow, and my little gateway/user level program, adds no
significant delay.

	danny

Daniel Braniss					e-mail: danny@cs.huji.ac.il
Institute of Computer Science			phone:  +972 2 658 4385
The Hebrew University				Fax:    +972 2 561 7723
Jerusalem, Israel



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708131915.WAA22897>