Skip site navigation (1)Skip section navigation (2)
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>

next in thread | raw e-mail | index | archive | help
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



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