Hierarchical routing is the basis for widely used routing protocols today. The areas of OSPF and the levels in IS-IS are examples of hierarchical routing. Even the BGP routing of the Internet, which appears on the face of it to result in pure shortest-path routing tables, is a form of hierarchical routing, as the shortest-path routes are between IP prefixes which may cover large groups of nodes. Thus the Internet already is using a routing scheme with the potential to be compact, though with unbounded stretch.
The efficiency of hierarchical routing depends on two factors. Firstly, in order to achieve compact routing, a hierarchy must be found in the network or imposed on it – there must be some way to cluster the nodes. Secondly, in order to minimise stretch, that hierarchy must align well with the connectivity of the network. While it is generally possible to impose a hierarchy on most kinds of networks, and so it is nearly always possible to achieve compact routing tables, it may be difficult to optimally align that hierarchy with the connectivity. Though, that hierarchy does not need to be deep to achieve significant benefits in state reduction [43].
However, well-connected, small-world networks, where the network diameter does not increase significantly with network growth[50], such as the Internet, may suffer from larger degrees of average stretch with hierarchical routing than otherwise. E.g., Krioukov et al. [44] estimated that the scheme of Kleinrock and Kamoun [43] would result in average stretch increasing with the network size according to
s ∼ log log Nlog2N on scale-free graphs, with an average stretch of around 15 on Internet-like graphs.
An average stretch of 15 does not compare well with the worst-case stretch of 3 achievable with Cowen Routing, which will be introduced later in Section 2.8. To understand how to improve on hierarchical routing, its strengths and weaknesses need to be understood first. Hierarchical routing is based on the principle of clustering together nodes that are “near” each other in the network, and clustering the clusters similarly, such that the clusters form a hierarchical tree. The nodes are then given labels according to this tree some way, such that these labels allow cluster memberships to be deduced or found. In the simplest case the
2.7 Hierarchical Routing 37
label is structured so that it contains cluster identifiers prepended to each other, giving the precise location in the hierarchy of a node. In more complex schemes, knowledge of the location of the label is distributed over the network in some systematic way. Regardless, each level of clusters reduces the state needed to route to that cluster by others, and the routing of messages then follows the hierarchy.
Figure 2.12: Clustering of nodes into a hierarchy. Destination Next-Hop Hops
15 - 1
16 - 1
17 15,16 2
C 4 1
D 13 1
Table 2.3: Example hierarchical routing table for Node 14 of Figure 2.12 As an example, Figure 2.12 shows a network and a possible clustering of those nodes. A possible hierarchical routing scheme, such as that of Kleinrock and Kamoun [43], might have node 14 labelled as “A.B.14”. Node 14 would store shortest-path routes to its sibling nodes in cluster B, and to the sibling clusters of each of its parents clusters – that is, cluster C as the sibling of B, and cluster D as the sibling of A. The resulting routing table for node 14 is given in Table 2.3. The routing table is significantly more compact, with only 5 entries, than it would be with a full shortest-path routing scheme, which might potentially require 16. However, this obviously must come at the cost of stretched paths. E.g., node 14’s shortest-path to cluster D happens to enter D at an extremal point of cluster D. As a result most paths from node 14 to nodes within cluster D are quite stretched, particularly to any nodes in cluster E. The path from node 14 to node 7 is 4 hops, rather than 2. This is as node 14 will never use node 4 to route toward cluster D, as node 14’s own link to cluster D will always have a lower cost.
As another example, while node 14 generally has stretch-1 paths to nodes in cluster C, the path to node 1 is stretched a little by 4:3. This could be avoided by placing node 1 into cluster B instead, however this would just lead to additional stretch on other paths between other nodes.
Further, if the connectivity between the nodes in cluster D and A, other than node 14, were to increase then this could actually increase the stretch of paths from node 14 to nodes in cluster D. That is, increased connectivity could decrease the length of shortest-paths between node 14 and nodes in D, e.g. if there was a link added between nodes 9 and 15. However as those shorter paths simply will not be used by node 14 then it means the stretch from node 14 will actually increase. The preference for nodes in a hierarchical routing scheme to use the shortest-path to the boundary of a cluster, regardless of the costs from that boundary to the destination inside the cluster, is referred to as “Closest Entry Routing” in [43]. It is also often known as “hot potato routing”. It would also be possible to assign costs to inter-cluster edges, to reflect the suitability of the node the edge is incident on for routing into that cluster. E.g., if the node is more central to the cluster, it could have a lower cost than other nodes. This is called “Overall Best Routing” in [43]. This could help optimise the average stretch, but can not eliminate it.
Hierarchical routing provides universal, compact, routing with good average stretch on at least some networks. Indeed, Kleinrock and Kamoun [43] showed average stretch can diminish to insignificance on many networks with hierarchical routing as they grow. However, hierarchical routing schemes generally did not specify how to efficiently construct a hierarchy in a way that guaranteed acceptable reduction in routing state, and/or that achieved minimal average stretch. E.g., Kleinrock and Kamoun [43] left the choice of hierarchy as a case-by-case optimisation problem; Peleg and Upfal [59] specified a centralised, polynomial-time construction, and gave a guarantee of overall state being compact in the worst-case but did not make that guarantee per-node; and so on.
Further, the problem of worst-case stretch was often left open. Worst-case stretch is intrinsically unbounded in hierarchical routing. The very tool hierarchical
routing uses to provide compact state, of abstracting away nodes by encapsulating them in clusters, also abstracts and hides information about the connectivity within a cluster to all those outside it. The hierarchy of clusters not only abstracts routing state, but imposes itself in such a way that the messages must follow the hierarchy. So two relatively nearby nodes might end up in clusters that are connected via a relatively distant link between parent clusters, and messages between might have to travel a long way up and down the hierarchy, for want of local knowledge about a better link.