Hi, 
    I plan to submit an IP lookup code to ODP. However, this code is a little 
bit complex. 
So I am here asking for some suggestions. (Please view this email using the 
monospaced font.)

    The code is actually an IP lookup architecture, including a “backend” of 
all IP lookup 
algorithms and the “frontend” for each IP lookup algorithm. I made this design 
because 
normally the data structure for IP lookup is usually highly optimized, 
compressed, containing  
minimall information for fast lookup. However, a full functional IP lookup 
engine should support 
many extra functions rather than just lookup (prefix exist, print all prefix, 
…). One way to do this 
is to design a “control plane” (large data structure containing most of query 
information and can help to 
incremental update the lookup tree in “dataplane") to do this. The control 
plane is the backend, 
while the highly optimized data structure is the dataplane, the front end. 


+------+     +-----+     +-----+
| 1688 | --> | lib | <-- | TBM |
+------+     +-----+     +-----+


     So the code includes a lib/ for backend, and two algorithms in total (Tree 
Bitmap (TBM) and DIR-16-8-8). 
I am now finishing the lib/ and TBM. I am not sure is that:

     1. Is ODP community willing to accept this? or you guys just want a very 
simple implementation?
     2. Should this code including the IP lookup APIs go to helper/ or main 
thread?


     I’ve tested the code using 350K prefixes from the core router’s FIB. The 
backend uses 11MB memory and 
the front end uses 5MB memory. The TBM algorithms achieves 25MLPS (million 
lookups for second, 16.9Gbps for 64B packets) 
on Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz CPU and a very low locality trace 
dedicated for the FIB. On Random traffic, 
the code achieves 55MLPS. 

     Thanks.



_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to