Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Jul 2008 12:22:21 -0700
From:      Julian Elischer <julian@elischer.org>
To:        Ian Smith <smithi@nimnet.asn.au>
Cc:        FreeBSD Net <freebsd-net@freebsd.org>
Subject:   Re: Requesting comments on Multi-routing table usage
Message-ID:  <487F9BED.90402@elischer.org>
In-Reply-To: <Pine.BSF.3.96.1080718032300.7547C-100000@gaia.nimnet.asn.au>
References:  <Pine.BSF.3.96.1080718032300.7547C-100000@gaia.nimnet.asn.au>

next in thread | previous in thread | raw e-mail | index | archive | help
Ian Smith wrote:
> On Thu, 17 Jul 2008, Julian Elischer wrote:
>  > The current code in -current will add a new interface to all
>  > FIBs.
> 
> Consider yanking/reinserting cardbus NICs as one source of fun.
> 
>  > So for example when you add a gre interface irt shows up everywhere.
>  > 
>  > This behaviour is probbaly correct for the base NICs on the system 
>  > when you boot, but it is probably wrong in other cases.
>  >
>  > For example, when mpd makes tunnels it probably
>  > (but not always) wants to add that set of routes into one
>  > FIB. Similarly for other apps that can create tunnels.
>  > 
>  > What is needed is a way to allow the caller to somehow
>  > specify the behaviour wanted whenever new interfaces are added.
>  > 
>  > various things crossed my minds..
> 
> I'm of two minds myself .. but you seem to have lots more :)
> 
>  > -------------
>  > Maybe real hardware shoudl go everywhere and virtual should go to
>  > the FIB of the creator
>  > 
>  > Maybe P2P interfaces should not go everywhere.
>  > 
>  > Maybe a sysctl can be used to 'flip' teh mode from "everywhere"
>  > to "specific fib" after boot has completed. (I have code for this but 
>  > it's not the perfect solution).
> 
> Yes in addition to 'setfib N command' it would be likely useful to have
> a more global 'setfibto' type command, so you could run whole scripts or
> shells in a known fib context, to which scripts etc could be oblivious?

that's already possible with setfib..
setfib N sh script is going to do that..

The issue I have is with the routes that are added to routing tables
when an interface is added.. It's a specific instance that is tricky
because it's a side effect rather than a directly requested action.

what some people have asked to do is have multiple tunnels to the same 
place but have different routing tables specify different tunnels to 
get to that place..

e.g.

gre0   1.1.1.1 2.2.2.2
gre1   3.3.3.3 2.2.2.2
gre2   4.4.4.4 2.2.2.2

where in fib 0 the route to 2.2.2.2 is via gre0
and in fib1 it is via gre1
and in fib2 it is via gre2
then you can use setfib in ipfw and pf to use different tunnels to get
selected traffic to 2.2.2.2..

This is what is being asked for, but you can only add the
interfaces like that if ifconfig only effects differnet FIBS for each
interface.



> 
> Tuning by sysctl/s would seem most useful, at least for development?
> 
>  > Maybe ifconfig can set a new flag somewhere somehow.
>  > 
>  > Maybe a process can set a flag for itself saying what its mode is..
>  > ----------
>  > 
>  > 
>  > The trouble is that there is not an "always correct" answer.
>  > some people may want to see a tunnel turn up on all FIBs
>  > and others may not.
> 
> It's the options that drive ya crazy .. but being able to set/tune the
> forwarding context - one fib, all fibs, or a set of fibs? - may allow
> flexibility in view of the large set of maybes you (so far) mentioned.
> 
> Just some popcorn from the peanut gallery ..
> 
> cheers, Ian




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