fib/rib: allow storing void * instead of nexthop index
Medvedkin, Vladimir
vladimir.medvedkin at intel.com
Wed Jul 31 17:53:44 CEST 2024
Hi Robin,
On 31/07/2024 16:04, Robin Jarry wrote:
> Hi Vladimir,
>
> I noticed that the fib/rib APIs (both IPv4 and IPv6) require the next
> hops to be represented as integer indexes. Reading the code, I noticed
> that they are stored as uint64_t with the MSB used for internal purposes.
I believe you are asking about FIB, not RIB. In current FIB
implementation 1 LSB is used for internal purposes.
>
> This require either having a contiguous array of nexthop objects and
> choose an index in that array,
As far as I know that's what most of "l3 forward" applications (aka
routers) are doing, if they are interested in performance. Not only DPDK
powered.
> or store pointer offsets as nexthop indexes and do pointer arithmetics
> to reconstruct the real pointers. Both are not very practical and/or
> hacky.
>
> Would it be possible to store arbitrary pointers? That would mean
> moving that 64th bit information elsewhere.
For arbitrary pointer - no, since it needs to store 1 more bit for
internal purpose. However, if you have 2 byte aligned pointer you can
store the pointer shifted right by 1 bit, and after lookup just shift
the result back.
>
> I'd love to hear what you think on the matter.
>
> Cheers,
> Robin
>
--
Regards,
Vladimir
More information about the dev
mailing list