One of the principle reasons for the success of IP is the flexibility for addressing and routing. At the same time, this has led to problems . Stability of routing is reported to be getting worse, and there is some concern about the exhaustion of the global IPv4 address space. This is being solved by the introduction of IPv6, but the performance problems for route lookup might seem to be exacerbated by this. In fact, the work of Degermark and others at SICS[#!Rout!#], shows that it is feasible to construct a novel data structure that not only permits fast routing lookup, it actually reduces the size of the routing table as well. In fact, the entire routing table of todays Internet can be fitted into the on-chip data cache of a common desktop processor (Pentium) and a lookup (``longest match prefix'') computed in 8 memory accesses in the worst case. The scaling complexity of the data structure is with the route depth, not with the size of the network, and so should not slow down much as we move to a billion end systems.
This is useful since it permits us to consider using IP addresses (and possibly fully generalised port specifications) as the key, the basis for deciding what to do with a packet as well as where to send it. This gives high degrees of flexibility (one can alter QoS mid flow, as well as route).