[PATCH v2] lpm: improve performance with copious IPv4 peering routes

Medvedkin, Vladimir vladimir.medvedkin at intel.com
Fri Nov 10 18:27:25 CET 2023


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.marchand at redhat.com <mailto:david.marchand at redhat.com>> wrote:
>
>> On Fri, Nov 10, 2023 at 12:11 AM Warrington, Jeffrey
>> <jwarrington at verisign.com <mailto:jwarrington at 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 <jcharbon at verisign.com <mailto:jcharbon at verisign.com>>
>>> Signed-off-by: Julien Charbon <jcharbon at verisign.com <mailto:jcharbon at verisign.com>>
>>> Signed-off-by: Jeff Warrington <jwarrington at verisign.com <mailto:jwarrington at verisign.com>>
>>> Co-authored-by: Nicolas Witkowski <nwitkowski at verisign.com <mailto:nwitkowski at verisign.com>>
>>> Signed-off-by: Nicolas Witkowski <nwitkowski at verisign.com <mailto:nwitkowski at verisign.com>>
>>> Co-authored-by: Rohit Gupta <rogupta at verisign.com <mailto:rogupta at verisign.com>>
>>> Signed-off-by: Rohit Gupta <rogupta at verisign.com <mailto:rogupta at 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



More information about the dev mailing list