Re: Patch for route.c

Richard B. Johnson (
Thu, 10 Apr 1997 09:36:03 -0400 (EDT)

On Thu, 10 Apr 1997, Alan Cox wrote:

> > A machine on __any__ single __physical__ network link needs only two routes.
> > Note the emphasis on "any" and "physical".
> >
> > (1) A route to its local network or subnet.
> > (2) A route to all other places.
> One great thing btw is the more you shout the more I can tell you are wrong.
> Consider the case
> [Backbone1]--------------ethernet-----------[Backbone2]
> | | |
> Host1 Host2 Host3
> You want all the hosts to pick the right backbone router. You also dont want
> to feed all the traffic through one router first because it creates
> bottlenecks
> as well as very bad single point of failure cases.
> Alan

Alan, the network topography has to be controlled by the routers, not the
hosts. The hosts have no way to accomplish anything by modifying their
routing tables using 'routed` or 'gated`. No matter what they do, the
hosts will end up sending their data out the only path to the network,
their single Ethernet card.

One of the reasons why `gated` got its name changed is because it is
really for `gateways`. Such a router may have two or more paths to
a destination. The `gated` daemon can help determine the "minimum cost"
route to the destination. Therefore, a TCP/IP based router can function
as a bridge such as the old Digital DMPR. In fact, I worked on "Phase V"

When a host first attempts to send a datagram, for a connectionless service,
or establish a connection, it broadcasts an ARP request for the hardware
address of the host or gateway that "knows" the IP Address. In the case of
a host, the host responds with its hardware address. In the case of a
gateway, the gateway must "know" if it can handle a route to the required
destination. If it has a route to the destination, it responds with its
hardware address. All subsequent communications for that IP address are made
using the hardware addresses so determined.

When I ^X this message, it will go the hardware address of my Cisco Router.
None of the other 600-odd nodes on the Local Area Network will even know.
The Cisco Router doesn't really "know" that it has a route to you. It only
knows that the IP Address received during the ARP was not for my domain.
It therefore responds with its hardware address. It will forward anything
it gets out the T1 link.

Some of our hosts will use an additional gateway. At our site in Wakefield
there will be three gateways before the Cisco. Hosts in Wakefield don't
care (or even know) about the Cisco router. They only know about their
gateway to "the rest of the world", as in (2) above "A route to all other

In all cases, the host will send and receive through its single hardware
interface so modifying its routing tables will not be useful. Hense, running
`gated` on a host is not useful. Further, many hosts have routing
capabilities built-in that can't be turned ON/OFF with a switch in /proc
(such as Linux). Routing table entries in such a host often cause that
host to "forward" packets out the same interface through which they were
received. This is not good.

Again, the host should not be the entity that determines the minimum cost
route to a destination unless it has two or more physical connections. Most
have only one. The gateway, by its very nature, has two or more connections.
The `gated` daemon can be very useful on a gateway.

One of the things a host does when a route seems to have been lost,
(RFC-816, is to again send another ARP request. If two or more gateways
have been communicating using `gated`, the gateway that still has a route
to the destination will offer its hardware address in response. This
handles your "single-point-failure" problem cited in your response.

One of the advantages of Linux is it allows the default route to be
specified as `route add default dev eth0` without a named gateway. Any
gateways that are still alive can then route packets out of the local

Dick Johnson
Richard B. Johnson
Project Engineer
Analogic Corporation
Voice : (508) 977-3000 ext. 3754
Fax : (508) 532-6097
Modem : (508) 977-6870
Ftp :
Email :,
Penguin : Linux version 2.1.32 on an i586 machine (66.15 BogoMips).
Warning : I read unsolicited mail for $350.00 per hour. Supply billing address.