[Xorp-users] Multicore scalability
Bruce Simpson
bms at incunabulum.net
Sun Jun 28 05:03:26 PDT 2009
Jaime Nebrera wrote:
> ...
> If I understand it properly, the routing is done at the kernel level
> (using the standard Linux forwarding mode), and thus should scale with
> multiple cores. When a control package arrives or there is a route cache
> miss this "forwarding data plane" asks the user space process on the
> outcome of the package.
>
> This part is essentially mono core, but the forwarding itself should
> be multi core capable.
>
> Am I right?
>
Yup. The BSD/Linux software forwarding planes will make use of multiple
cores -- how scalable it is, though, is down to the implementation.
Usually only 1 route at a time can be pushed to the kernel as they
generally use some kind of reader-writer lock, even if the
routing/netlink sockets use message passing.
But the user space "route miss" behaviour you describe doesn't normally
exist. There are hooks available in PF_ROUTE and PF_NETLINK to do it,
but to my knowledge it is never used for normal IP forwarding. It
originally existed to support X.25, it can be used to support on-demand
routing protocols for tactical MANET networks (e.g. AODV).
If XORP were refactored to use Boost ASIO -- threading the individual
processes will get easier. At the end of the day, multicore optimization
is largely down to appropriate use of shared data
structures/locking/lock-free techniques -- and understanding the system
as a whole.
cheers,
BMS
More information about the Xorp-users
mailing list