On Wed, Jul 10, 2019 at 10:08:38PM +0200, Claudio Jeker wrote:
> This diff is a bit of a monster. It changes the Adj-RIB-Out to be a
> peer specific set of RB trees instead of using a rib in the original
> sense. The reason for this is that the more peers a system has the
> more elements end up being linked into the adj-rib-out and many
> operations do linear searches which does not scale.
> 
> I did some testing with 4000 peers sending 1 prefix each which then
> are sent back to all peers (resulting in 16Mio updates being put in
> Adj-RIB-Out).  Without this diff the system takes about 1h to bring up
> all sessions. With the diff the system finishes in around 5min.
> 
> To not increase the memory footprint struct prefix is now using a
> union for the lists or RB trees. Additionally the rib dump runner was
> adjusted so that it also works with the Adj-RIB-Out. bgpctl show rib
> out changed a bit since it will dump now one peer after the other
> apart from that behaviour should be the same.

Some testing indicates that things indeed seem faster.

More reports from the real world would be appreciated, to better
understand the specific performance characteristics this change
introduces in various different deployment models, but that can happen
in tree.

OK job@

Kind regards,

Job

Reply via email to