in reply to (mem)caching of ip prefixes?

Fangorn:

20MB seems a bit much for storing a 120K lookup table. If all you need is a lookup table to map an IP prefix to a complete address, you might consider an alternative data structure.

Hashes are fantastic, as they let you ignore lots of arcane data structures, but when they consume too much ram for your app, it's time to consider alternatives. You might find a a ranged structure to be more space-efficient (e.g. "127.0.0 - 127.255.255 -> 192.168.3.5") if you have dense clusters of IP prefixes, or perhaps a multi-level tree may be good. Look over your mapping function to see if there is some commonality you could exploit to construct a data structure to simplify things.

If your mapping is somewhat arbitrary (i.e., you can change it around some), you might even consider playing around with computing the new IP address, or computing a lookup into a small index->address table.

...roboticus