Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!rutgers!ames!ucbcad!ucbvax!TOPAZ.RUTGERS.EDU!hedrick From: hedrick@TOPAZ.RUTGERS.EDU (Charles Hedrick) Newsgroups: mod.protocols.tcp-ip Subject: how to make use of redundant routes Message-ID: <8701200607.AA14063@topaz.rutgers.edu> Date: Tue, 20-Jan-87 01:07:40 EST Article-I.D.: topaz.8701200607.AA14063 Posted: Tue Jan 20 01:07:40 1987 Date-Received: Tue, 20-Jan-87 22:25:35 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 59 Approved: tcp-ip@sri-nic.arpa We are just now beginning to look at making use of redundant routes, to provide some extra reliability in our network. For our internal routing, we have dedicated gateways that handle most of the traffic. (2 Cisco gateways, plus a home-brew gateway that is similar in technology to Cisco's.) There is no redundancy among those gateways. However we also have various Unix machines with multiple interfaces. If we set them all up to act as gateways, we could survive any gateway being down. However I'm somewhat unclear how to maintain our hosts' routing tables. Unix seems to be set up to get routing information through both routed and routing directs. Unfortunately, it seems that these two techniques interact unfavorably. Initially, I had the idea that redirects alone might do the job. But that clearly can't work. If the current gateway goes down, there's nobody to issue a redirect to someplace else. 4.3 makes this somewhat better by killing the current route when a TCP connection is about to time out. But that doesn't help us with NFS, which uses only UDP. The same problem applies to our current kludge of using proxy ARP's. I am beginning to come to the view that there is no real alternative to routed or something like that. However the vanilla routed still has potential problems. If a gateway issues a host redirect, the kernel makes an entry in the routing table that routed doesn't know about. Should the gateway named in the redirect go down, routed will not know that it should remove that host route. The only complete solution I have seen is Cornell's gated. If you ignore its support for EGP and HELLO (which are not relevant in our situation), it can be thought of as a souped-up routed. Unlike routed, it uses a raw socket which gets copies of every redirect received by the kernel. Thus it is able to maintain a model of exactly what routes the kernel has. Presumably this would allow gated to remove routes that no longer apply. Some folks here are reluctant to use gated on every one of our workstations. We have an aversion to regularly activating daemons on diskless Suns. (Although we don't have any real problems with them, swapping over the network provides a certain incentive to minimize the number of programs that get swapped in at regular intervals.) There is also a feeling that gated is large enough that we are probably not going to understand what it is doing. However I'm beginning to think that its approach is inevitable. I have thought of one alternative, but I'm not sure that it has enough advantages to be worth coding. That is a program that monitors routed traffic and keeps track of what gateways are up. It would not do anything with the contents of the packets -- just remember what gateways are currently sending them. The program would guarantee that there is always a default route that points to a gateway that is up. It would periodically examine the routes in the kernel (using code stolen from netstat, presumably), and kill any that involved gateways that are no longer up. One might also look at the use count field, and get rid of routes that haven't been used for a certain period of time. Presumably this program would be smaller than gated, and I think I would also be more likely to understand exactly what it is doing. But I'm not sure I want to add yet another routing daemon. (The only approach I can think of other than monitoring the gateways' routing protocol is to ping each gateway periodically. That would work, of course, but it would create more network traffic.) I'm reasonably convinced than any system acting as an actual gateway should run gated. I'd be curious to hear comments from places that have been using dynamic routing for some time. By the way, I am willing to assume that all gateways participate in routing using routed. (Cisco now supports routed.)