Hi Jeffrey,

Have you tried FIB library? This problem has been solved there for a long time, and it also has a number of other improvements.

Thanks!

On 10/11/2023 14:08, Warrington, Jeffrey wrote:
On 11/10/23, 2:42 AM, "David Marchand" <david.march...@redhat.com 
<mailto:david.march...@redhat.com>> wrote:

On Fri, Nov 10, 2023 at 12:11 AM Warrington, Jeffrey
<jwarring...@verisign.com <mailto:jwarring...@verisign.com>> wrote:
Minimize the performance impact of large numbers of BGP peering
routes by updating LPM's IPv4 code to use a hash like the IPv6 code.

Co-authored-by: Julien Charbon <jchar...@verisign.com 
<mailto:jchar...@verisign.com>>
Signed-off-by: Julien Charbon <jchar...@verisign.com 
<mailto:jchar...@verisign.com>>
Signed-off-by: Jeff Warrington <jwarring...@verisign.com 
<mailto:jwarring...@verisign.com>>
Co-authored-by: Nicolas Witkowski <nwitkow...@verisign.com 
<mailto:nwitkow...@verisign.com>>
Signed-off-by: Nicolas Witkowski <nwitkow...@verisign.com 
<mailto:nwitkow...@verisign.com>>
Co-authored-by: Rohit Gupta <rogu...@verisign.com <mailto:rogu...@verisign.com>>
Signed-off-by: Rohit Gupta <rogu...@verisign.com <mailto:rogu...@verisign.com>>
Thanks for the patch.
Thanks for the suggestions and feedback.

Cc: lpm maintainers.
Don't forget to Cc: maintainers when sending patches.
You can simply pass --cc-cmd devtools/get-maintainer.sh to git send-email.
Apologies, that was clearly stated in section 8.12, Contributor's Guidelines, 
and I still forgot.

Can you provide performance numbers?
Yes, I have lpm_perf_autotest before and after:

                   Binaries      Add     Delete
23.11-rc1/build-gcc-shared:    145226    90583.5
23.11-rc1/build-gcc-static:    259492    90954.4
23.11-rc1/build-mini:          145222    90375.7
23.11-rc1/build-x86-generic:   259488    90406.7
proposed/build-gcc-shared:        748    1391
proposed/build-gcc-static:        605    1240.69
proposed/build-mini:              621    1196.15
proposed/build-x86-generic:       607    1249.39

After this patch, LPM and LPM6 implementations become close.
Did you consider refactoring so that LPM and LPM6 can share more code?
No, but I should have.  The previous goal was to minimize our change,
and now we should pivot to simplifying the maintenance.

---
lib/lpm/rte_lpm.c | 306 ++++++++++++++++++++++------------------------
lib/lpm/rte_lpm.h | 6 +

Seeing how no other .c is touched and no exposed symbol use it,
exposing the rte_lpm_rule_key structure in the public API is unneeded.
Good point, that's a quick change.

2 files changed, 149 insertions(+), 163 deletions(-)
I'll send an updated patch as soon as I get a chance,
Jeffrey

--
Regards,
Vladimir

Reply via email to