[comp.dcom.lans] Internet Gateways on IEEE 802.3

andy@icom.UUCP (01/23/87)

(This should probably also [only?] be posted to mod.protocol.tcp-ip,
 but moderated posting, they no work so pretty good 'round these
 parts.)

The problem: some devices interfaced to a (not necessarily THE)
Internet via an 802.3 Ethernet have no user interface which would
enable them to obtain from a human the name of at least one gateway.

An example: Suppose I want to build a terminal server which connects
to an internet with the following topology:

                802.3 net #1               net #2
        host A -------+---------- gateway ---------- host B
                      |
                terminal server
                goes here.

Now, the terminal server can find out its Ethernet address using RARP,
and the Ethernet address of host A and the gateway using ARP, but how
does it learn that the gateway is in fact a gateway?

Solution 1: hard code one gateway in the TS's ROM.  Yuck.  'Nuff said.

Solution 2: use invisible gateways.  Modify the ARP server of at least
one (preferably all) gateways on the local net to match all non-local
network numbers and handle them as though they referred to this
machine.  That is in the gateway ARP server procedure change phrases
like "if the destination IP address field matches this host's IP
address" to phrases like "if the IP adress field matches this host's
IP address, or the network number portion of the IP address field
differs from the network number of the IP adress field of the source
and this machine is a gateway to that network."  This will make it
appear as though every machine on the internet were on the local
network.

Solution 3: modify RARP to return the IP address of at least one
gateway on the local network.  This seems straightforward enough.

Solution 4: hunt and pray.  If you get a packet that needs gatewaying,
and don't know any gateways yet, try sending it to each host you know
about in hopes it is a gateway (if it isn't you should get an ICMP
packet).  The problem here is keeping track of which hosts have been
tried needs to be done at the transport level (TCP or UDP), also only
the transport level knows the best choice of host to make.  This has
the singular strong point of compatibility.

I'm interested in hearing about the following WRT the above:

        * How has this been dealt with by others?

        * Is there anything particularly good or bad about
          the above techniques?

        * Which of the above techniques is likely to be best
          in a BSD 4.3 environment?

        * Am I missing anything obvious?

I am relatively new to internetworking, so if I am reinventing a wheel
I'd really like to know about it.
-- 
        andy@icom.COM, or
        icom.COM!andy,          Andrew H. Marrinson
        or if you must:         ICOM Systems, Inc.
        ..!ihnp4!icom!andy      Arlington Heights, IL 60005

dcrocker@ubvax.UUCP (01/25/87)

In article <1147@icom.COM> andy@icom.COM (Andrew H. Marrinson) writes:
>
>The problem: some devices interfaced to a (not necessarily THE)
>Internet via an 802.3 Ethernet have no user interface which would
>enable them to obtain from a human the name of at least one gateway.

Unfortunately, the problem is worse than you describe.  There are two
different levels of mapping that need to occur.  The first is from
host name to host IP address.  The second is the one you describe, from
IP address to Ethernet address.  RARP and ARP operate only for
IP/Ethernet mapping.

To turn this problem into an advantage:  You refer to the convenience of
ARP in satisfying your requirement to get to the host.  Question:  How did
you find out the IP address of the host?  Suggestion:  Use the same
technique for specifying your default IP Router, letting your terminal
server record it.  (You also will need to record sub-net mask, but
you can try to use ICMP for that; not all networks support it, tho.)