On Feb 16, 2006, at 10:34 PM, Dheeraj Singh wrote:
I am wondering, whether there is any algorithm for performing the IPv6 Lookup and forwarding table.
Is there any work going on over this in any of the forum!!

There are a bunch of papers on this in SIGCOMM and IEEE over the past 15 years or so. One could use a patricia tree, or a radix tree built off the lengths of the prefixes one has received in routing advertisements, or an m-trie, for example.

To figure out the radix model, you basically observe the prefix lengths in your own configuration and being advertised to you. From http://www.ripe.net/ripe/docs/ipv6policy.html#initial_allocation, I observe that you are likely to receive advertisements of:

        /32 prefixes for remote ISPs
        /48 (and /56?) prefixes for customers of your own ISP
/64 prefixes for some customers of your ISP and LANs in your own network
        /128 prefixes of some individual systems

One might also note that /23s are allocated to RIRs, and input that to the program as a given. One might also understand /10 prefixes as address types, as some (multicast) have to be understood differently than unicast addresses. Observing this in the data you receive, you might then go on to build what amounts to a B-Tree, identifying for example

        the first 10 bits as an address type
        the next 13 bits as an RIR key
        the next 9 bits as an ISP identifier within the RIR
        the next 16 bits as a customer identifier within an ISP
        the next 8 bits as customer-or-group-of-LANs
        the next 8 bits as customer-or-LAN
        the remaining 64 bits if appropriate.

Note of course that there is nothing hard and fast here; one could readily imagine an ISP numbering its POPs with /44s and its customers with /56s, for example, in which case routing would advertise /44s and /56s to you. I could also imagine that if you are in the vicinity of the Indian Ocean, you might aggregate (or have someone aggregate to you) all RIPE and ARIN-assigned addresses as "to Europe" and "to North America", and as a result actually have /23s in routing rather than thinking of the fact as a precondition.

In fact, I could think of a lot of things. Which is why you don't want to build the magic numbers in as compile options or hardware offsets, but rather learn them from the route database actually advertised to you.


http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Tree/PATRICIA/
http://www.cs.princeton.edu/software/lcc/doc/mrst.pdf
http://ieeexplore.ieee.org/iel5/9494/30133/01382613.pdf? tp=&arnumber=1382613&isnumber=30133
http://www-inst.eecs.berkeley.edu/~cs268/sp03/notes/Lecture13.pdf
http://netlab.cs.tsinghua.edu.cn/~xuke/papers_on_iplookup.htm

--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www1.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to