[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-26 Thread Matthew Hall
Hi guys, So I just finally fixed all the weird unit test failures for the basic-mode. But the rte_lpm_lookupx4 will take quite a bit longer because it uses a lot of real weird SSE intrinsic functions I never used before in my life. However pretty soon I should get some kind of results how it

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-24 Thread Matthew Hall
On Wed, Jun 24, 2015 at 10:04:53AM +0300, Vladimir Medvedkin wrote: > I published changes to rte_lpm_tbl24_entry only because it was just an idea > :) Understood. Just wanted to be sure I understood it right to convert it into C code. :) > different defines and checks should be modified too.

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-24 Thread Vladimir Medvedkin
Hi Matthew, I published changes to rte_lpm_tbl24_entry only because it was just an idea :) So rte_lpm_tbl8_entry should look like: struct rte_lpm_tbl8_entry { uint32_t next_hop :24; /**< next hop. */ uint32_t valid :1; /**< Validation flag. */ uint32_t valid_group

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-23 Thread Matthew Hall
OK, I went and made a whole ton of patches to LPM and the tests and examples, now the selftest errors out... but I think maybe I don't have an adequate amount of hugepages. How much hugepage memory did people have when they did the selftest successfully before? I just keep seeing this over and

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-23 Thread Matthew Hall
On Tue, Jun 23, 2015 at 09:13:14PM -0700, Matthew Hall wrote: > Vladimir, > > One thing I was confused, you published the changes to rte_lpm_tbl24_entry > but > you didn't say what you did to change rte_lpm_tbl8_entry, as that one only > had > an 8-bit next_hop as well. I wanted to be sure I

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-23 Thread Matthew Hall
On Tue, Jun 23, 2015 at 10:19:58AM +0300, Vladimir Medvedkin wrote: > Hi all, > > Matthew, I think ipv6 lpm code need less changes > struct rte_lpm6_tbl_entry { > uint32_t next_hop: 21; /**< Next hop / next table to be > checked. */ > uint32_t depth :8; /**< Rule

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-23 Thread Vladimir Medvedkin
Hi all, Matthew, I think ipv6 lpm code need less changes struct rte_lpm6_tbl_entry { uint32_t next_hop: 21; /**< Next hop / next table to be checked. */ uint32_t depth :8; /**< Rule depth. */ /* Flags. */ uint32_t valid :1; /**< Validation flag.

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-23 Thread Stephen Hemminger
In order to make Vyatta/Brocade router work with LPM code I ended up redoing the layout. It is: /** Tbl24 entry structure. */ struct rte_lpm_tbl24_entry { /* Using single uint8_t to store 3 values. */ uint8_t valid :1; /**< Validation flag. */ uint8_t ext_entry

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-23 Thread Matthew Hall
On Mon, Jun 22, 2015 at 11:51:02PM -0400, Stephen Hemminger wrote: > In order to make Vyatta/Brocade router work with LPM code > I ended up redoing the layout. It is: > > And also several other scalability improvements (plus IPv6) > and the correct handling of /32. > > Unfortunately, this is such

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-22 Thread Vladimir Medvedkin
Hi Matthew, I just recently thought about next_hop extension. For ipv4 we can do something like: struct rte_lpm_tbl24_entry { /* Stores Next hop or group index (i.e. gindex)into tbl8. */ union { uint32_t next_hop :24; uint32_t tbl8_gindex :24;

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-22 Thread Matthew Hall
That's a lot better indeed! 16 million CIDR blocks would be a huge improvement. Do you happen to know what is also possible for rte_lpm6? Matthew. On Mon, Jun 22, 2015 at 01:11:14PM +0300, Vladimir Medvedkin wrote: > Hi Matthew, > > I just recently thought about next_hop extension. For ipv4 we

[dpdk-dev] rte_lpm with larger nexthops or another method?

2015-06-21 Thread Matthew Hall
Hello, I have gone out on the internet for days looking at a bunch of different radix tree implementations to see if I could figure a way to implement my own tree, just to work around the really low 255 CIDR block limitation in librte_lpm. Unfortunately every single one I could find falls into