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>