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]

Reply via email to