[Xorp-hackers] FEA performance improvements: only 'pull' active interfaces.

Ben Greear greearb at candelatech.com
Thu Mar 13 09:28:36 PDT 2008


As previously mentioned, I notice that fea pays attention to all 
interfaces, not just those
it's configured to use.

To help improve scalability, especially in a virtualized environement, I 
am attempting
the following:

1)  Only have the _pulled_config pull information for devices stored in 
the _local_config
tree.  This means asking netlink for specific if-index values instead of 
the entire tree.

2)  The netlink observer will ignore anything not in the _local_config, 
and will remove
interfaces from _local_config if it observes them unregistering from the 
system.

3)  When adding an interface (though XRL), the ifconfig object will add 
it to _local_config,
tell the pulled_config to pull it from the system, and if found, will 
save it in the _original_config
as well in case we want to roll back to the original system state.  Once 
added, nothing is removed
from the _original_config.

4)  There is an XRL method to configure all interfaces from the system.  
I am hoping this isn't
actually needed and can be removed, as it would require reading the 
entire set of interfaces.  I
can (re)add code to support this if needed, but maybe it isn't really 
useful and could be removed?


I am only implementing the optimizations for the netlink related 
portions.  The remainder of the iftree-get/set logic
will use the current method of reading all interfaces regardless of 
local config.

I believe this will go a long way towards helping fea scale to 1000+ 
interfaces, but don't have performance
numbers or working code quite yet.

Thanks,
Ben

-- 
Ben Greear <greearb at candelatech.com> 
Candela Technologies Inc  http://www.candelatech.com




More information about the Xorp-hackers mailing list