Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Aug 2001 11:26:07 -0400
From:      Leo Bicknell <bicknell@ufp.org>
To:        Wes Peters <wes@softweyr.com>
Cc:        Randy Bush <randy@psg.com>, Leo Bicknell <bicknell@ufp.org>, freebsd-hackers@FreeBSD.ORG, freebsd-net@FreeBSD.ORG
Subject:   Re: 303,000 routes in kernel
Message-ID:  <20010806112607.A6191@ussenterprise.ufp.org>
In-Reply-To: <3B6EB550.FEED14E7@softweyr.com>; from wes@softweyr.com on Mon, Aug 06, 2001 at 09:18:40AM -0600
References:  <20010804215529.C7176@cicely20.cicely.de> <32301.996956619@verdi.nethelp.no> <20010805002233.A7991@cicely20.cicely.de> <20010804184045.A87444@ussenterprise.ufp.org> <200108050027.f750RkG77073@earth.backplane.com> <E15TGwI-0000bu-00@roam.psg.com> <3B6EB550.FEED14E7@softweyr.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Aug 06, 2001 at 09:18:40AM -0600, Wes Peters wrote:
> > to be clear.  they keep the *forwarding* table on card/in-cache, not the
>                               ^^^^^^^^^^^^^^^^^^
> Which is, essentially, a route cache.  

Per the dictionary definition of cache, perhaps, but 'cache' means
something very different to those of us in router land.

A cache based router (think 75xx Cisco _WITHOUT_ CEF), when a packet
comes in for a route that has not been used the cache misses, the
packet is punted to a general purpose CPU, the lookup done, and a
cache entry installed on a linecard.  Cache memories were limited,
and were as such aged.  This scheme had a number of problems:

1) High first packet penality of a flow.

2) The number of flows could exceed available cache memory.

3) The aging process hammered the box.

4) The aging process often removed active flows, causing a first
   packet penality mid-flow, sometimes causing TCP events (eg
   backoff).

This became a larger problem day by day, as a larger percentage
of the routing entries were sitting in the cache.

So, router vendors went with cache-free designs.  In a cache free
design there is the RIB - Routing Information Base which contains
routes the way routing protocols see them (eg, destination foo is
in bgp which has a next hop in ospf which has a next hop out a
connected interface), there are many levels of indirection there
so recalculations can be done.  At various checkpoints (typically
after each protocol does a recalculation) the router builds the
FIB - Forwarding Information base.  This takes all the levels of
indirection, and boils them down to where the packet goes (desination
to connected interface).  This table as such is smaller, and only
ever requires a single lookup to know where to send a packet.

The new routing designs then use the FIB (distributed to the
linecards on the Cisco GSR and 7500 with CEF, kept on a central
forwarding engine on the Juniper M-series).  The important thing
to note (which makes it not a cache in my book) is that it is
th full table, need it or not, there can be no "miss" for an
active route.

Back to the original topic, small UDP packets from a DNS server.
In the caching routers, each packet would generate a cache entry,
which 95% of the time would never be used again before it was
aged.  The adding and removing of entries hammered the routers.
Newer routers always have all entries in the FIB, so there is no
penality for throwing packets at the box that go in different
directions, or that go once and are never seen from again.

So, if you want to call it a cache, that's fine.  If you say 
that to a router jockey, you're going to give them the impression
you're talking about the first setup though, which I don't think
is what you want.

-- 
Leo Bicknell - bicknell@ufp.org
Systems Engineer - Internetworking Engineer - CCIE 3440
Read TMBG List - tmbg-list-request@tmbg.org, www.tmbg.org

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




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