Date: Mon, 19 Oct 1998 17:59:08 -0500 (CDT) From: Joe Greco <jgreco@solaria.sol.net> To: freebsd-doc@FreeBSD.ORG Subject: Would you like to add... Message-ID: <199810192259.RAA19704@aurora.sol.net>
index | next in thread | raw e-mail
Ken is right, this is a good contribution to the handbook, or maybe a more
advanced users guide of some sort.
If you would like me to write it in slightly less terse language, I don't
have an objection to doing so, plus I can provide some pointers to other
code/patches that I have available.
Message-ID: <360B9A16.703A3FDA@us.endress.com>
Date: Fri, 25 Sep 1998 08:26:46 -0500
From: Kenneth Furge <kenneth.furge@us.endress.com>
X-Mailer: Mozilla 4.05 [en] (Win95; I)
MIME-Version: 1.0
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: Dual/Quad NICs
References: <slrn70ev5a.311.dw@zazu.nowhere.dk> <slrn70fl0v.mht.dw@mufasa.nowhere.dk> <yfgvhmfmg5b.fsf@time.cdrom.com> <6ub472$k3i$1@apakabar.cc.columbia.edu> <6udost$nsi@newsops.execpc.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
NNTP-Posting-Host: 198.133.30.20
X-Trace: 25 Sep 1998 13:26:49 GMT, 198.133.30.20
Organization: IBM.NET
Lines: 137
X-Notice: Items posted that violate the IBM.NET Acceptable Use Policy
X-Notice: should be reported to postmaster@ibm.net
X-Complaints-To: postmaster@ibm.net
Path: daily-bugle.newsops.execpc.com!newsops.execpc.com!newstank.sol.net!newspeer.sol.net!news.execpc.com!newsengine.sol.net!feed1.news.rcn.net!rcn!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!newsfeed.internetmci.com!165.87.194.242!newsm2.ibm.net!ibm.net!news3.ibm.net!198.133.30.20
If it's not there already, this one belongs in the handbook.
- K.C.
[ printing now for future reference... ]
Joe Greco wrote:
>
> In comp.unix.bsd.freebsd.misc article <6ub472$k3i$1@apakabar.cc.columbia.edu>, wpaul@ctr.columbia.edu (Bill Paul) wrote:
> :The trick is to have the second interface take over for the first without
> :any traffic interruption. This sort of implies letting the second interface
> :adopt the first interface's IP address; this is the only way you can keep
> :existing connections alive.
>
> ERROR, ERROR ;-)
>
> This is NOT the only way to keep existing connections alive. As a matter
> of fact, it's exactly the wrong way to try to keep existing connections
> alive. As a matter of fact, I'm sorta sure that the IP stack tends to
> associate a particular _interface_ with a given connection, since I've
> never been able to get transitioning of an IP address between multiple
> interfaces to work OK.
>
> Take advantage of what the kernel does give you, and turn on packet
> forwarding.
>
> Create yourself a kernel with more than one instance of the loopback
> interface. Now, ifconfig "lo1" as the destination address that you
> wish to use.
>
> Configure {ed,de,xx}0 with an arbitrary IP address on a valid network
> and {ed,de,xx}1 on a different network. I will give a _working_ example
> in a minute.
>
> Now, run your service. If you intend to establish outbound connections,
> and your code does not support specific-interface binding (Squid and
> Apache do, some other things don't), you may wish to alter the source
> code a bit to change INADDR_ANY bindings to point to a specific address.
> I can provide working examples for bind4, ntp4, sendmail8, etc.
>
> Now, you have bound your service to an interface that _cannot_ physically
> fail, and has a constant IP address. Now you merely need to get your
> network to forward you the traffic. Use OSPF.
>
> My Squid server is a classic but simple example of this type of strategy.
> It is connected via direct crossover Ethernet links to two of my core
> routers, and the network configuration looks like this for the de's:
>
> de0: flags=c863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,LINK2,MULTICAST> mtu 1500
> inet 206.55.68.230 netmask 0xfffffffc broadcast 206.55.68.231
> de1: flags=c863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,LINK2,MULTICAST> mtu 1500
> inet 206.55.69.10 netmask 0xfffffffc broadcast 206.55.69.11
>
> These links correspond to 206.55.68.229 and 206.55.69.9, interfaces on my
> core routers.
>
> I then configure lo1:
>
> lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
> inet 206.55.64.121 netmask 0xffffffff
> inet 206.55.64.84 netmask 0xffffffff
> inet 206.55.64.88 netmask 0xffffffff
>
> The first one is the address associated with the machine's primary
> hostname, and the second two are "virtual service" addresses. This
> allows me to move services between machines simply by re-ifconfig'ing
> an interface or two.
>
> Now the trick is to export routes with gated. The following is roughly
> approximate, but may not work verbatim due to the fact that I am
> butchering some stuff out on the fly:
>
> interfaces {
> interface de passive ;
> } ;
>
> %include "/etc/gated.routerid"
>
> rip no ;
>
> hello no ;
>
> ospf yes {
> defaults {
> preference 150 ;
> } ;
>
> traceoptions all ;
>
> monauthkey "yeahright" ;
> (ospf_area-or-backbone) {
> authtype whatever ;
> interface de cost 10416 {
> priority 2 ;
> authkey "likeillgivethatout" ;
> retransmitinterval 5 ;
> transitdelay 1 ;
> hellointerval 10 ;
> routerdeadinterval 40 ;
> } ;
> stubhosts {
> 206.55.64.121 cost 1024 ;
> } ;
> stubhosts {
> 206.55.64.84 cost 1024 ;
> } ;
> stubhosts {
> 206.55.64.88 cost 1024 ;
> } ;
> } ;
> };
>
> export proto ospfase type 1 {
> proto direct {
> ALL
> metric 1 ;
> } ;
> proto static {
> ALL
> metric 999 ;
> } ;
> };
>
> So this announces routes into my OSPF routing architecture to bring in
> those addresses, which will come in _via_either_ethernet_ regardless of
> reachability. This isn't necessarily the most ideal way. I'm not a
> gated rocket-boy. But it does work. (And if any gated rocket-boys want
> to tell me how to do this correctly, please do). You can also do some
> load balancing via careful costing of routes.
>
> I can actually sit there on the Squid server and alternately "down" de0
> and de1, and aside from a few seconds of route recomputation, there is
> virtually no disruption of traffic - or my login session.
>
> It works.
>
> ... JG
... Joe
-------------------------------------------------------------------------------
Joe Greco - Systems Administrator jgreco@ns.sol.net
Solaria Public Access UNIX - Milwaukee, WI 414/342-4847
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-doc" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199810192259.RAA19704>
