This in only a rough draft - Megan 04/13/92 Minutes from the Routing Table Lookup BOF, Wednesday at 7:00 The purpose of the meeting was simply to discuss the various known approaches to software-driven routing table lookup algorithms. There is no intention to meet again, and no documentation is expected. Presentations were given by the following: Paul Tsuchiya Cecilia Algorithm Joel Halpern Patricia Algorithm Keith Sklower Radix Algorithm (in Unix BSD) Rob Coltun Binary Search Algorithm Fred Baker 16-wide Radix Algorithm Dino Farinacci Hash Algorithm Very briefly, Cecilia, Patricia, Sklower Radix, and 16-wide radix are all radix-type algorithms, meaning that they follow the search tree by branching according to the value of certain bits of the "key" (the address being looked up). The three former algorithms check one bit at a time, while the 16-wide checks 4 bits at a time. The three former algorithms can check bits in any order, while the 16-wide checks bits strictly MSB to LSB. The Binary Search Algorithm does a greater than/less than compare to determine how to traverse the search tree. The Hash Algorithm is not a tree-based search algorithm as the first 5 are, and won't be further discussed in these minutes. Of the 6 algorithms, only Cecilia and Patricia handle non-contiguous masks efficiently (meaning, a tree of small size and depth). Sklower's Radix handles non-contiguous masks, but at the expense of a larger depth. Cecilia has an efficient delete operation, whereas Patricia does not. Patricia uses roughly 1/2 the memory of Cecilia. Note that in most router applications, a delete operation is not that important because routes don't appear and then disappear forever often. Occasionally reforming the tree from scratch for the purpose of garbage collection suffices. All of the algorithms can handle contiguous masks, but the hash algorithm performance decreases as the number of different sized masks increases. Of the first 5 algorithms, only the Binary Search is balanced. However, note that this is only with respect to the number of elements in the tree, not with respect to the frequency with which each element is searched. Usually the 16-wide Radix will have the smallest depth, because it covers 4 bits with a single compare rather than just 1. However, since it goes strictly left to right, if the left bits do not differ in any of the routing table entries, the 16-wide Radix can be deeper than the first 4 algorithms.