[Babel-users] Removing source-specific for older kernels [was: Higher CPU usage since 1.9.x leads to instability on slow devices]

Juliusz Chroboczek jch at irif.fr
Tue Jun 2 11:14:26 BST 2020


> To my eye, conflict_solution() [2] really stands out.

Thanks a lot to both of you.

That's the disambiguation code, due to Matthieu Boutier.  It's used for
supporting source-specific routing in the case where the kernel doesn't
support it:

  - for IPv4, it is always used for source-specific routing;
  - for IPv6, it is used with kernels earlier than 3.11.

Now it turns out that:

  - people don't do source-specific with IPv4 (they use NAT instead);
  - people have upgraded to 3.11 or later now.

In other words, this code shouldn't trigger in practice.  I have no idea
why it triggers for you, perhaps you're running a very old kernel, perhaps
there's a bug in the detection of the kernel version, or perhaps this part
of the code triggers even when not needed.

Since this code is not used in practice, I'm thinking of removing it
altogether, which will simplify the codebase and avoid this kind of issues
in the future.  How do people feel about that?  To restate, the effect
will be:

  - source-specific IPv4 routes will be ignored;
  - source-specific IPv6 routes will be ignored on kernels before 3.11;
  - no regression on BSD, which doesn't do source-specific in any case.

You will still be able to do IPv6 source-specific if you run a Linux 3.11
or later.  If you have routers running old kernels, you'll need to ensure
you're announcing a non-specific default route.

Please advise.

-- Juliusz



More information about the Babel-users mailing list