bikeshed for all!

Bruce M. Simpson bms at
Thu Dec 13 16:49:38 PST 2007


Just to chime in and agree with Bjoern, I'm finishing up a routing 
protocol right now so this discussion is somewhat timely.

I disagree that this is a "bikeshed", quite the contrary -- the visual 
and the verbal have to live together, and it's easy for those of us who 
have the semantic map in our minds right now to dismiss the discussion 
as such.

Try walking away from it for 6-9 months, come back, and try to get back 
into it -- choosing good terminology upfront DOES make a difference to 
maintainability of code, and it will make it easier for others 
(students, newbies, other folk) to get involved.


Some folk (e.g. Marko) prefer the term table, though any way you look at 
it, the fib usually uses a trie as its backend data structure -- 
although the TRASH structure Linux has been using is a cross between the 
trie and the hash table.

So perhaps there is some merit in say... setroutetbl.

after all, folk tend to call a "forwarding table entry" a route for the 
sake of brevity.

Bjoern A. Zeeb wrote:
> FIB (Forwarding Information Base) has been very standard for years and
> is often confused with foo and bar;-)

Microsoft use this logical separation of routing and forwarding 
functions in their implementation of IP routing, although they don't 
call their "routing table" a FIB, they call it a "forwarding table", and 
the entries in this are called "forwarding table entries".

XORP adopted the RIB/FIB split from the start as a design decision, in 
doing so the functions of routing protocols can be kept logically 
separate from the forwarding plane, which could be hardware, software, 
or even a combination thereof (e.g. Cisco CEF).

The way this has played out follows the traditional BSD way, where 
routing protocols (e.g. routed) live in userland, whilst forwarding 
(e.g. ip_forward()) lives in the kernel.


More information about the freebsd-net mailing list