Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Nov 1996 13:39:20 -0600 (CST)
From:      Joe Greco <jgreco@brasil.moneng.mei.com>
To:        edward.ing@utoronto.ca (Edward Ing)
Cc:        isp@freebsd.org, questions@freebsd.org
Subject:   Re: IP routing thoery: ping pong effect.
Message-ID:  <199611221939.NAA11099@brasil.moneng.mei.com>
In-Reply-To: <32957576.2CE5@utoronto.ca> from "Edward Ing" at Nov 22, 96 04:42:14 am

next in thread | previous in thread | raw e-mail | index | archive | help
You need a routing protocol.  Or you need a lot of static routing.

Each node needs to know where to send packets.  If you have two wires
out of a box, you need to explain to the box which packets you want 
going out each wire.  It is okay to have default going out one way, and
static routes the other.

In your sample network:

He points default to x.x.4.1.

Hc knows to reach He (x.x.4.5) implicitly, because it is on a directly
connected network.  This is, nevertheless, routing, and you MUST think
of it as such.

Ha knows how to reach Hc (x.x.3.5) by the same "implicit" rule, but does
not know how to reach Hc (x.x.4.1) or He (x.x.4.5).  Ha needs to be told
"route -net x.x.4.0 -netmask 0xffffff00 x.x.3.5", which instructs Ha to
forward all packets for x.x.4.* to x.x.3.5.  This is static routing.

Hd knows how to reach Ha (x.x.1.4) but not Ha (x.x.3.1) or Hc (x.x.3.5) or
anything further down that chain.  Now if Ha is your "main" router, you
can solve this by telling Hd that the default route is "x.x.1.4", because
Ha already knows how to reach all the way to He.

Static routing is generally acceptable up to a certain point.  I maintain
two tiered routing (I have a "main" router and other routers, the main
router maintains a full list of static routes, the others only know their
local routes) but it is mildly annoying after a while.  The disadvantage
to this is that in many cases your packets will traverse the "main" router
even if there is a slightly more efficient path between two routers on
your backbone "without" going through that main router.  You can avoid this
by more completely calculating your routes; I consider this to be a pain
in the ***.  It is a pain in the *** anyways because you have to maintain
the "main" router in addition to your other routers.

Dynamic routing (via a routing protocol) is nicer because you (hopefully!)
do not have to maintain the same routing information in multiple places
(you have no designated "main" router that has an authoritative list of
routes).  I am in the midst of deploying OSPF for this purpose.  OSPF will
automatically maintain knowledge of the state of each internal link in
my network, and knows about external links from my network to other
places.  With this knowledge, OSPF works to calculate the most efficient
route from one point to the next.  This also allows for redundancy in
your internal networking structure, so that there is more than one path
from point to point.  Static routing generally is very poor at that.

I suggest the routing protocol will be easier, long term.

See "Routing in the Internet", a good reference book on the topic.

> The following is my theoretical network. H's are hosts, N's are
> networks.
> x.x.n.n are the interface IPs. Ha is the highest node. N1 is like the
> backbone.
> So the internetwork is asymmetrical, and not quite like the
> picture.                                               	
>                                
>                                             
>                                         |---Ha --------|
>                                 x.x.3.1 |              | x.x.1.4
>                                         |              | 
>                                  N3----------        -----------N1
>                                      |                      |
>                                      |                      |
>                             x.x.3.5  |                      | x.x.1.5
>                                     Hc                     Hd  
>                             x.x.4.1  |                      | x.x.2.1
>                                      |                      |
>                            N4------------                 ------------N2
>                                 |                                |
>                                 |                                |
>                         x.x.4.5 |                       x.x.2.5  |
>                                He                                Hb
> 
> 
> Assume that these hosts are only a fraction of the hosts on each network
> so
> no fix networking table is used for routing because it would be
> too complicated. Defautroute (0.0.0.0) for He is
> x.x.4.1, for Hc is x.x.3.1, for Hb is x.x.2.1 for Hd is x.x.1.4. 
> 
> If Ha is given a default route, we will get a ping-pong effect.
> 
> E.g. If default route of Ha is x.x.3.5 (Hc) and if He sends packet to Hb 
> this effect shows up. He routes to Hc on defaultroute, Hc routes to Ha
> on defaultroute. Ha routes back to Hc on its default route and thus the
> hosts
> play ping-pong.  A packet from He will never find Hb. Nor can Ha have
> default
> to Hd, otherwise the same effect occurs on the other side.
> 
> Thus, Ha cannot have a defaultroute. But if that is the case, Hb and He
> can
> never send packets to each other in anycase.
> 
> My question is: how is it possible for Hb and He to route packages to
> each
> other? Obviously theoretically they can because it happens on the
> Internet.
> Thus, how can this theoretically be accomplished.
> 
> The answer I think must have to do with dynamic routing tables in Ha.
> Or is it done with distributed routing tables (like DNS)?
> 
> Is this why Ha is a router rather than a mere gateway?
> 
> How would this work? I would appreciate a concise answer. 
> 
> Edward Ing.
> 




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