Date: Thu, 23 Jan 1997 15:16:51 -0800 From: John Polstra <jdp@polstra.com> To: hackers@freebsd.org Subject: Re: Fault-tolerant network with 2 ethernets Message-ID: <199701232316.PAA21713@austin.polstra.com>
next in thread | raw e-mail | index | archive | help
Everybody, thanks for all the helpful replies! This has really cleared some things up for me. Since several of the replies covered the same areas, I'm going to try to respond to them all together here. The point about 100BaseT failing differently from coax-based ethernet (the whole net doesn't go down if there's a cable problem) is well taken. It does change the problem somewhat. I still have coax in my own office ("if it works, don't fix it"), so I was incorrectly thinking in terms of how coax behaves. I also agree with the insight that adding a 2nd interface into each host and a 2nd set of cables is as likely to lower the reliability as it is to raise it. Unfortunately, this is a telephone company thing. There's a requirement that there must be "no single point of failure," and I doubt there's any flexibility to it. The ideas of using divert sockets or the tun interface are pretty tricky. I think they'd work, but I'm a little bit concerned about performance issues. I'm going to check out Julian Elischer's "netgraph" framework ASAP. A couple of folks mentioned the problem of losing existing connections in the event of failure, because they can't be moved to different IP endpoints. This may not be a big issue, as I think almost all the traffic will be UDP. I'll have to find out more from the client about how the network is used, before I'm sure about this one. But maybe it doesn't matter. I am quite intrigued by an idea that a person sent me in private mail. (If he wanted to be named, I assume he would have sent it to the list too.) This person suggested: > Non-simple solution. Three addresses for every machine. one on > each ethernet segment, and one off the loopback address. Then run > routed on every machine, told to advertize the third address out > both ethenet ports. > > I'm not sure if this would work, since I've never used routed, > though it sounds like it should ... It took me a while to grasp this, but here's what I think the idea is. I'll use actual numbers just to make it more concrete. We could assign addresses like this: Ethernet A: 192.168.1.x Ethernet B: 192.168.2.x Third address: 192.168.3.x If I understand the idea correctly, this third address would be assigned as an alias for the loopback device on each host, something like this: ifconfig lo0 inet 192.168.3.21 alias netmask 0xffffffff ^^ || host-specific, of course At the application layer, the 192.168.3.x addresses are the ones that would be used. The applications would never use the real addresses of the ethernets. Finally, each host would advertise a route to its 192.168.3.x address on both ethernet interfaces. In effect, each host acts as a gateway to itself. The only remaining problem is routed, and I now think Andrew Stesin was right on the money when he suggested: > No. RIP sucks and must die :) ... > Use Gated and OSPF. It will even do some kind > of load-sharing then, you will get kinda of 20Mb > between the hosts included into the structure. I read up on OSPF and gated this morning, and it looks like they're perfect for solving this problem. The documentation even seems to suggest the trick of adding a second address to the loopback interface, if I understand it right. If I've misunderstood the solution, or if it won't work, I hope somebody will let me know. :-) Again, thanks for all the help. John -- John Polstra jdp@polstra.com John D. Polstra & Co., Inc. Seattle, Washington USA "Self-knowledge is always bad news." -- John Barth
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199701232316.PAA21713>