Content deleted Content added
JimJJewett (talk | contribs) →References: welp, that didn't work -- reverting the name on the reference |
JimJJewett (talk | contribs) also point to the much smaller original reference at the "how the algorithm works" section. |
||
Line 4:
The key task to be performed in internet routing is to match a given [[IPv4]] [[IP address|address]] (viewed as a sequence of 32 bits) to the longest [[prefix]] of the address for which routing information is available. This prefix matching problem may be solved by a [[trie]], but trie structures use a significant amount of space (a [[Node (computer science)|node]] for each bit of each address) and searching them requires traversing a sequence of nodes with length proportional to the number of bits in the address. The Luleå algorithm shortcuts this process by storing only the nodes at three levels of the trie structure, rather than storing the entire trie.
Before building the Luleå trie, the routing table entries need to be preprocessed. Any bigger prefix that overlaps a smaller prefix must be repeatedly split into smaller prefixes, and only the split prefixes which does not overlap the smaller prefix is kept. It is also required that the prefix tree is complete. If there is no routing table entries for the entire address space, it must be completed by adding dummy entries, which only carries the information that no route is present for that range. This enables the simplified lookup in the Luleå trie ({{harvnb|Sundström|2007}}). (Note that is a complete PhD thesis; {{harvtxt|Degermark|Brodnik|Carlsson|Pink|1997}} is probably a better starting source.)
The main advantage of the Luleå algorithm for the routing task is that it uses very little memory, averaging 4–5 bytes per entry for large routing tables. This small [[memory footprint]] often allows the entire data structure to fit into the routing processor's cache, speeding operations. However, it has the disadvantage that it cannot be modified easily: small changes to the routing table may require most or all of the data structure to be reconstructed.
|