Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 29 Apr 2008 12:17:15 -0700
From:      Julian Elischer <julian@elischer.org>
To:        Kevin Oberman <oberman@es.net>
Cc:        FreeBSD Net <freebsd-net@freebsd.org>
Subject:   Re: multiple routing tables review patch ready for simple testing.
Message-ID:  <4817743B.6090107@elischer.org>
In-Reply-To: <20080429185100.57C2445010@ptavv.es.net>
References:  <20080429185100.57C2445010@ptavv.es.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Kevin Oberman wrote:
>> Date: Tue, 29 Apr 2008 00:44:18 -0700
>> From: Julian Elischer <julian@elischer.org>
>> Sender: owner-freebsd-net@freebsd.org
>>
>> The patch can be found at
>>   http://www.freebsd.org/~julian/mrt.diff
>>  (or http://www.freebsd.org/~julian/mrt6.diff for RELENG_6)
>>  
>> or source can be taken from perforce at:
>>  //depot/user/julian/routing/src
>>
>> a kernel needs to be created with the option ROUTETABLES=N
>>
>> e.g.
>>  +options                ROUTETABLES=2           # max 16. 1 is back 
>> compatible.
>>
>> leaving this out will result in just a single routing table as per normal.
>>
>> the max is 16 but I have an artificial (even lower) at 8 but that may
>> be gone by the time people try it :-)
>>
>> I ws informed early in this project that kernel routing tables should
>> now be refered to as FIBs (forwarding Information base?).
>>
>> the new command "setfib" sets teh default fib for a process and all its
>> decendents
> 
> I have been working with big routers in my day job for years and it's
> really frustrating to not have this sort of capability when I work with
> FreeBSD, but I don't expect a general purpose OS to ever have the
> routing capabilities of a dedicated router.
> 
> I think this will really, really be nice for my needs, though.
> 
> As terminology goes, I think you have it slightly off.
> 
> Modern routers have two "classes" of tables to move packets between
> interfaces: the RIB Routing information base) and the FIB (Forwarding
> Information Base). A router has multiple RIBs, usually one for each
> network layer protocol (IPv4 and IPv6, both unicast and multicast) and
> added RIBs for policy based routes. They may be further broken up by the
> protocol used to populate the table (BGP, OSPF, ISIS, MPLS, static,
> connected, ...)
> 
> The RIBs exports data, as needed to a single FIB which is used by the
> ASICs (hardware forwarding engines) to do the actual forwarding of the
> packets. In a real router, the forwarding of almost all packets is done
> in hardware with no real involvement by the processor that determines the
> routes. (N.B. This is a gross simplification of what modern routers
> do or can do, but I don't want to send a book to the list.)
> 
> A general purpose OS is a different beast as it has no physical
> equivalent of the FIB. It may have multiple routing tables, though, to
> I think setrib would be a term less likely to cause confusion then
> setfib even though, in the case of your FreeBSD patches, it's really
> both.

The way I see it the routing daemons (e.g. quagga) have the RIBS
and the kernel has FIBS because it doesn't really know the big picture.

If we need to change the terminology now is the time..
I asked for comments on terminology before and this is what we
came up with.. but once it gets committed.... it gets set in stone.









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