Subject: Re: keeping ifindex in 16bits or does it have to be sparse?

From: Stephen Hemminger <[email-masked]>
Date: Tue, 31 Mar 2009 10:02:31 -0700

On Tue, 31 Mar 2009 11:08:17 -0400
Jeremy Jackson <[email-masked]> wrote:

> The question came up when profiling Quagga... a performance issue occurs
> because it's iterating over a linked list of interface structures... and
> this person is using 2000 interfaces for ADSL PPPoE server.  It's an
> interesting use case.
> 
> There are 2 options to make the interface lookup in quagga scale: array
> or hash.  My first thought was array, but it seems that ifindex can get
> sparse, that is, the largest ifindex can be much bigger (eg 408589) the
> number of max number of interfaces.
> 
> So question to netdev, is it possible to reuse ifindex eventually, so it
> won't keep growing with interface add/delete, and are there
> (unnecessary) large jumps in the allocation sequence?
> 

Hash the names as well, since quagga does a lot of lookup by name.