Dan McDonald wrote:
On Thu, Mar 01, 2007 at 05:58:07PM -0800, [EMAIL PROTECTED] wrote:
For example, do we need to have 40k entries that all contain the
same data, except for a host IP address?
Nope. And I'm waiting for someone to jump in on this thread and explain why
we don't. <hint hint>
Much of the information in IRE cache entries can be kept on a per
connection basis (in conn_t), or is already stored elsewhere and can be
referenced from conn_t. This reduces the overhead of maintaining the
IRE cache, whose cost outweighs the potential benefits of a having a
cache in the first place (in these kinds of workloads). From what I
gather, a similar line of reasoning was used by Surya when moving
fast-path information from IRE-cache entries to neighbor-cache entries.
For example, the forwarding table route used for reaching the
destination could point directly to an ARP (or neighbor cache) entry
with information on how to reach the next hop, including fast-path
header, etc. The IRE cache isn't needed for this, although that's how
it's currently used.
Another example would be that IRE cache entries cache the source address
used when reaching a destination, potentially saving new connections to
destinations with which we've communicated recently from having to redo
source address selection. It's not clear what this buys us exactly. In
scenarios where a system is a server accepting many connections, this
probably doesn't help us at all, since source address selection isn't
involved in accepting connections.
In scenarios where the system is initiating connections, this obviously
only helps us if the connections are short-lived and many of them are to
the same destination. That's not the case here. In this scenario, it
looks like there are thousands of connection to different off-link
hosts. Each connection attempt results in source address selection
being done anyway, and an IRE cache entry is going to be created every
time to boot. We could skip the IRE cache creation altogether since
we'll never use that IRE cache entry again. Everything we need for each
connection is in the conn_t.
Path-MTU discovery might be tricky without some sort of per-destination
cache, however...
-Seb
_______________________________________________
networking-discuss mailing list
[email protected]