[dpdk-dev] lpm performance

Andriy Berestovskyy aber at semihalf.com
Tue Sep 20 11:41:13 CEST 2016


Hey,
You are correct. The LPM might need just one (TBL24) or two memory
reads (TBL24 + TBL8). The performance also drops once you have a
variety of destination addresses instead of just one (cache misses).

In your case for the dst IP 192.168.1.2 you will have two memory reads
(TBL24 + TBL8), because 192.168.1/24 block has the more specific route
192.168.1.1/32.

Regards,
Andriy

On Tue, Sep 20, 2016 at 12:18 AM, 张伟 <zhangwqh at 126.com> wrote:
> Hi all,
>
>
> Does anyone test IPv4 performance? If so, what's the throughput? I can get almost 10Gb with 64 byte packets.  But before the test, I would expect it will be less than 10G.  I thought the performance will not be affected by the  number of rule entires. But the throughput will be related to whether the flow needs to check the second layer table : TBL8.  Is my understanding correct? I added this flow entries following this link:
> http://www.slideshare.net/garyachy/understanding-ddpd-algorithmics
> slide 10,
>
>
>
> struct ipv4_lpm_route ipv4_lpm_route_array[] = {
>
>         {IPv4(192, 168, 0, 0), 16, 0},
>
>         {IPv4(192, 168, 1, 0), 24, 1},
>
>         {IPv4(192, 168, 1, 1), 32, 2}
>
> };
>
> send the flow with dst IP:
>
> 192.168.1.2
>
> It should check the second layer table. But the performance is still 10G.  Does any part go wrong with my setup? Or it really can achieve 10G with 64 byte packet size.
>
> Thanks,
>
>



-- 
Andriy Berestovskyy


More information about the dev mailing list