| ▲ | debugga 12 hours ago | |||||||||||||||||||||||||||||||||||||||||||
Clean-room, portable C++17 implementation of the PlanB IPv6 LPM algorithm. Includes: - AVX-512 SIMD path + scalar fallback - Wait-free lookups with rebuild-and-swap dynamic FIB - Benchmarks on synthetic data and real RIPE RIS BGP (~254K prefixes) Interesting result: on real BGP + uniform random lookups, a plain Patricia trie can sometimes match or beat the SIMD tree due to cache locality and early exits. Would love feedback, especially comparisons with PopTrie / CP-Trie. | ||||||||||||||||||||||||||||||||||||||||||||
| ▲ | talsania 6 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||||||||
254K prefixes with skewed distribution means early exits dominate, and no SIMD throughput advantage survives a branch that terminates at depth 3. The interesting edge case is deaggregation events where prefix counts spike transiently and the rebuild-and-swap FIB has to absorb a table that's temporarily 2x normal size | ||||||||||||||||||||||||||||||||||||||||||||
| ▲ | Sesse__ 9 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
The obvious question, I guess: How much faster are you than whatever is in the Linux kernel's FIB? (Although I assume they need RCU overhead and such. I have no idea what it all looks like internally.) | ||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
| ▲ | newman314 8 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||||||||
I wonder if this would port nicely over to rustybgp. | ||||||||||||||||||||||||||||||||||||||||||||