Extending FIBs to support multi-tenancy

Jonathan T. Looney jtl at freebsd.org
Sun Dec 20 01:36:46 UTC 2015


On Fri, Dec 18, 2015 at 9:07 PM, Patrick Kelsey <kelsey at ieee.org
<mailto:jtl at freebsd.org>> wrote:

> > Further, per-thread FIBs may not solve your scaling problem. You
>initially
> > stated that your objection to VNET was that you would need a minimum
>of "A
> > * B * C threads to ensure that any given service on any single tenant
> > network could fully utilize the system's resources to process
>requests".
> > If you assign threads to a particular FIB, then you are back in the A
>* B
> > * C scaling model that you didn't want.
>
> I think it would be reduced to A * C threads, where A was the number of
> services and C the number of CPUs - what you would drop is the B
>dimension
> (replication of service connections across all tenant networks).

I may not have stated this clearly, so I'll restate it.

I see two main alternatives:

1. There is a stable relationship between threads and FIBs. This requires
dedicating threads to a particular FIB (and potentially leads back to the
A * B * C scaling model, although I admit that depends on some of the
implementation details).

2. Threads service requests from multiple FIBs. This requires changing the
default FIB for a thread every time it switches to servicing a different
request. This could be quite complex.

If Ryan is thinking about a different model, he can correct me. :-)

Jonathan




More information about the freebsd-transport mailing list