Route caching ?

Bruce M. Simpson bms at FreeBSD.org
Wed Aug 22 10:13:22 PDT 2007


Claudio Jeker wrote:
> Just because you believe that route caches are great doesn't mean it is
> true. Show some real code and include benchmarks with various workloads
> (e.g. a core router that is hit by many many many sessions).
>   

It is a reasonable approach, for a uniprocessor design, to focus on 
optimizing the route lookup as much as possible. Does this approach 
scale to SMP, though? This is still a very much open question and from 
what I have seen of the OpenBSD implementation, it only addresses the 
uniprocessor case - again please correct me here if I have missed any 
details.

I believe the Linux dst cache is strongly tied to the IBM-patented 
Remote-Copy-Update algorithm based on what I've read about their LC-trie 
implementation.

> Until now all caching solutions resulted in very bad performance on busy
> boxes. Remember ip_fastforward or how was it called? Another example are
> all crapy L3 switches that burn down if the CAM (chache) is flodded.
>   

I assume you are referring to NetBSD's flow-based IP forwarding cache, 
which was implemented outside of the scope of SMP; spl-style interrupt 
priority masking was still in use at that time.

It is established that saturating content-addressable memory is going to 
lead to the slow path being taken, however, that's the trade-off one 
makes with these designs.

> IMO it is better to make the route lookup faster and forget about caching.
>   
My concern is that you may be comparing apples with oranges here.

In the case of SMP, locking does become a consideration, and caches, if 
carefully implemented, are one way of addressing this.

On the other hand, CPU affinity has been proposed as a limited solution, 
however it depends how this is implemented - affinity for lookups, 
forwarding, or both?

Perhaps there is something I am missing about how the OpenBSD 
implementation deals with SMP, as I am not as familiar with their code 
as FreeBSD's.

regards,
BMS


More information about the freebsd-net mailing list