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. Regards, Jakob. -----Original Message----- Date: Mon, 8 Jun 2020 10:14:17 +0200 From: Baldur Norddahl <baldur.norddahl@gmail.com> 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. Regards, Baldur