Partial vs Full tables

Jakob Heitz (jheitz) jheitz at
Mon Jun 8 18:19:42 UTC 2020

These are the first steps to optimization. Hysteresis is another.
They work in ideal cases. However, when coding, we need to consider
all cases. How do you set the timer?
The timer has to anticipate the future. It's like an automatic
transmission. It can't anticipate the future. However, the worst
that can happen if the automatic transmission anticipates
incorrectly is that it hunts.


-----Original Message-----
Date: Mon, 8 Jun 2020 10:14:17 +0200
From: Baldur Norddahl <baldur.norddahl at>

On 08.06.2020 07.56, Jakob Heitz (jheitz) via NANOG wrote:
> FIB compression comes with some risks.
> When routes churn, there are certain cases when you have to decompress the FIB.
> Then, the FIB must have the space, or else OOPS.
> If a set of compressed routes has to change to decompress some and compress a
> different set to improve overall compression, there is a lot of FIB
> programming going on. This can cause very long convergence times.

The easy solution is to introduce some delay before programming the FIB. 
Or even process RIB updates as a separate thread, such that the FIB 
update thread does not try to program every step the RIB might go 
through. Instead the FIB update thread would take a snapshot of where we 
are now and where do we want to be and only program the diff.

Given the concept is a smaller FIB size, this might actually end up 
being less FIB programming.



More information about the NANOG mailing list