Subject: Re: [PATCH net-next] ipv6: implement rt_genid_bump_ipv6 with fn_sernum and remove rt6i_genid

From: Hannes Frederic Sowa <[email-masked]>
Date: Thu, 11 Sep 2014 10:30:07 +0200

On Mi, 2014-09-10 at 13:09 -0700, David Miller wrote:
> From: Hannes Frederic Sowa <[email-masked]>
> Date: Wed, 10 Sep 2014 11:31:28 +0200
> 
> > In case we need to force the sockets to relookup the routes we now
> > increase the fn_sernum on all fibnodes in the routing tree. This is a
> > costly operation but should only happen if we have major routing/policy
> > changes in the kernel (e.g. manual route adding/removal, xfrm policy
> > changes).
> 
> Core routers can update thousands of route updates per second, and they
> do this via what you refer to as "manual route adding/removal".

Sorry, I was too unspecific here. Route changes because of address
removal/addition on the local stack.

The reason why we do the bump_id here is that we want to flush all the
socket caches in case we have either lost or gained access to a new
source address.

If you think about e.g. BGP routers which update lots of routes, they
aren't affected and the flush won't happen on every route change.

> I don't think we want to put such a scalability problem into the tree.
> 
> There has to be a lightweight way to address this.

I am still investigating why this bump_id actually happened. Seems the
reason is only sctp ontop of IPv6 and maybe we can build something much
more lightweight, yes.

Thanks,
Hannes