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