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