US20140140347A1  Tiebreaking in shortest path determination  Google Patents
Tiebreaking in shortest path determination Download PDFInfo
 Publication number
 US20140140347A1 US20140140347A1 US14075305 US201314075305A US2014140347A1 US 20140140347 A1 US20140140347 A1 US 20140140347A1 US 14075305 US14075305 US 14075305 US 201314075305 A US201314075305 A US 201314075305A US 2014140347 A1 US2014140347 A1 US 2014140347A1
 Authority
 US
 Grant status
 Application
 Patent type
 Prior art keywords
 node
 path
 paths
 identifiers
 cost
 Prior art date
 Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
 Abandoned
Links
Images
Classifications

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
 H04L45/00—Routing or path finding of packets in data switching networks
 H04L45/12—Shortest path evaluation

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
 H04L45/00—Routing or path finding of packets in data switching networks

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
 H04L45/00—Routing or path finding of packets in data switching networks
 H04L45/22—Alternate routing

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
 H04L45/00—Routing or path finding of packets in data switching networks
 H04L45/24—Multipath
Abstract
A consistent tiebreaking decision between equalcost shortest (lowest cost) paths is achieved by comparing an ordered set of node identifiers for each of a plurality of endtoend paths. Alternatively, the same results can be achieved, onthefly, as a shortest path tree is constructed, by making a selection of an equalcost path using the node identifiers of the diverging branches of the tree. Both variants allow a consistent selection to be made of equalcost paths, regardless of where in the network the shortest paths are calculated. This ensures that traffic flow between any two nodes, in both the forward and reverse directions, will always follow the same path through the network.
Description
 [0001]This application is a continuation of U.S. patent application Ser. No. 13/023,823 filed Feb. 9, 2011, which is a continuation of U.S. patent application Ser. No. 11/964,478 filed Dec. 26, 2007.
 [0002]This invention relates to consistently selecting paths among multiple possibilities, such as equalcost shortest paths, in a packetforwarding communications network, such as an Ethernet network.
 [0003]In packetforwarding communications networks, a node can learn about the topology of the network and can decide, on the basis of the knowledge it acquires of the topology, how it will route traffic to each of the other network nodes. The main basis for selecting a path is path cost, which can be specified in terms of a number of hops between nodes, or by some other metric such as bandwidth of links connecting nodes, or both. Open Shortest Path First (OSPF) and Intermediate SystemtoIntermediate System (ISIS) are widely used linkstate protocols which establish shortest paths based on each node's advertisements of path cost. These protocols typically do not attempt to tiebreak between multiple, equalcost, paths. Instead, they typically spread traffic across several equalcost paths. The spreading algorithms are not specified and can vary from router to router. Alternatively, they may make a local selection of a single path, but without consideration of consistency with the selection made by other routers. Consequently, in either case the reverse direction of a flow is not guaranteed to use the path used by the forward direction.
 [0004]Multicast routing protocols such as Multicast Open Shortest Path First (MOSPF) depend on each router in a network constructing the same shortest path tree. For this reason, MOSPF implements a tiebreaking scheme based on link type, LAN vs. pointtopoint, and router identifier to ensure that identical trees are produced. However, basing the tiebreaking decision on the parent with the largest identifier implies that, in general, the paths used by the reverse flows will not be the same as the paths used by the forward flows.
 [0005]Spanning Tree Protocols (Spanning Tree Protocol (STP), Rapid Spanning Tree Protocol (RSTP), Multiple Spanning Tree Protocol (MSTP) are ways of creating loopfree spanning trees in an arbitrary topology. The Spanning Tree Protocol is performed by each node in the network. All of the Spanning Tree Protocols use a local tiebreaking decision based on (bridge identifier, port identifier) to select between equalcost paths. In Spanning tree a root node is elected first, and then the tree is constructed with respect to that root by all nodes. So, although all paths are symmetrical for go and return traffic (by definition, a simple tree makes this the only possible construct), the election process is slow and the simple tree structure cannot use any redundant capacity. Similarly, Radia Perlman's Rbridges proposal uses the identifier of the parent node as tiebreaker.
 [0006]Mick Seaman in his Shortest Path Bridging proposal to the IEEE 802.1 Working Group (http://www.ieee802.org/1/files/public/docs2005/newseamanshortestpath030502.pdf) describes a simple protocol enhancement to the Rapid Spanning Tree Protocol which enforces consistent tiebreaking decisions, by adding a ‘cut vector’. The proposal uses a VID per node, to identify a Spanning Tree per node. In order to fit all the information that needs to be transmitted by a bridge in a single legal Ethernet frame, this technique currently limits the size of the Ethernet network to 32 bridges.
 [0007]
FIG. 1 illustrates how, even for a trivial network example, a tiebreaking method based on the parent node identifier fails to produce symmetric paths. In this example, the links are considered as having equalcost and so the determination of path cost simply considers the number of hops. Consider first computing the path from A to B. When the computation reaches node 2, the existence of equalcost paths will be discovered. There is a first path (A136) and a second path (A145). If the tiebreaking algorithm selects a path based on the parent node with the smallest identifier, it will select the second path (A145) because node identifier 5 is smaller than node identifier 6. However, now consider computing the path from B to A. When the computation reaches node 1, the existence of equalcost paths will be discovered. There is a first path (B263) and a second path (B254). Using the same tiebreaking criterion, the tiebreaking algorithm selects the first path (B263) because node identifier 3 is smaller than node identifier 4. So, it can be seen that the shortest path computations made by nodes A and B provide inconsistent results.  [0008]There is a requirement in some emerging protocols, such as Provider Link State Bridging (PLSB), a proposal to IEEE 802.1aq, to preserve congruency of forwarding across the network for both unicast and unknown/multicast traffic and to use a common path in both forward and reverse directions of flow. Accordingly, it is important that nodes can consistently arrive at the same decision when tiebreaking between equalcost paths. Furthermore, it is desirable that a node can perform the tiebreaking with the minimum amount of processing effort.
 [0009]A first aspect of the invention provides a method of determining forwarding information for use in forwarding packets at a first node of a packetforwarding network. The method determines the shortest paths between the first node and a second node of the network and determines when a plurality of shortest paths have substantially equalcost. The method forms, for each substantially equalcost path, a set of node identifiers which define the set of nodes in the path and then orders each set of node identifiers using a first ordering criterion to form a path identifier. The first ordering criterion is independent of the order in which node identifiers appear in the path. The method then selects between the plurality of equalcost paths by comparing the path identifiers. Each node of the network has a unique node identifier.
 [0010]Advantageously, the first ordering criterion is increasing lexicographic order or decreasing lexicographic order, although any ordering criterion can be used which creates a totally ordered set of node identifiers.
 [0011]Preferably, the method further comprises ordering the plurality of path identifiers into an ordered list using a second ordering criterion. Similarly, the second ordering criterion can be increasing lexicographic order, decreasing lexicographic order or any ordering criterion which creates a totally ordered set of path identifiers.
 [0012]Another aspect of the invention provides a method of determining forwarding information for use in forwarding packets at a first node of a packetforwarding network. The method comprises determining shortest paths between the first node and a second node of the network by iteratively forming a shortest path tree and determines, while forming the shortest path tree, when a plurality of paths have equalcost, each equalcost path comprising a branch which diverges from a divergence node common to the equalcost paths. The method identifies, in each diverging branch, a node identifier using a first selection criterion to form a branch identifier and selects between the plurality of branches by comparing the branch identifiers.
 [0013]Advantageously, the method uses a total ordering criterion to compare and select a node identifier in each branch, such as lexicographic order.
 [0014]Advantageously, the method records the node identifier which meets the first selection criterion in each of the diverging branches while backtracking to the divergence node. This has an advantage in further simplifying computation and reducing storage requirements.
 [0015]Both aspects of the invention can be used to select two equalcost paths by using different first ordering/selection criteria and a common second ordering/selection criterion or by using a common first ordering criterion/selection and different second ordering/selection criteria. Three or four equalcost paths can be selected in a similar manner by consistently applying the first and second ordering/selection criteria at nodes and selecting identifiers at a particular position in the ordered lists.
 [0016]The invention can be used as a tiebreaker to select between equalcost paths by comparing an ordered set of node identifiers for each of a plurality of endtoend paths. Alternatively, it has been found that the same results can be achieved, onthefly, as a shortest path tree is constructed, by making a selection of an equalcost path using the node identifiers of the diverging branches of the tree, local to where the selection decision needs to be made. This has advantages of reducing the amount of computation, and reducing the amount of data which needs to be stored. Branches can be compared on a pairwise basis to further reduce the amount of computation. This becomes particularly important as the size and complexity of the network increases. Both variants of the invention have the important property of allowing a consistent selection to be made of equalcost paths, regardless of where in the network the shortest paths are calculated. This ensures that traffic flow between any two nodes, in both the forward and reverse directions, will always follow the same path through the network.
 [0017]The invention is not intended to be restricted to any particular way of determining a shortest path: Dijkstra's algorithm, Floyd's algorithm, or any other suitable alternative can be used.
 [0018]The invention can be used as a tiebreaker between equalcost paths having exactly the same value, or paths which are within a desired offset of one another both in terms of link metric or number of hops. This may be desirable in real life situation to increase the diversity between the set of eligible paths. For example, it may not always be costeffective to deploy nodes and links in the symmetrical fashion in general required to achieve exactly equalcost between any two endpoints. By relaxing the constraint to requiring that the hop count on different routes be within one hop of each other, modest asymmetry can still result in eligible routes, and loopfree topology is still guaranteed because a difference of two hops is the minimum necessary to achieve a looping path.
 [0019]It will be understood that the term “shortest path” is not limited to determining paths based only on distance, and is intended to encompass any metric, or combination of metrics, which can be used to specify the “cost” of a link. A nonexhaustive list of metrics is: distance, number of hops, capacity, speed, usage, availability.
 [0020]The method is stable in the sense that the selection of an equalcost shortest path is not affected by the removal of parts of the network that are not on the selected paths, such as failed nodes or links.
 [0021]Advantageously, the network is an Ethernet network although the invention can be applied to other types of packetforwarding networks, especially those that have a requirement for symmetrical trafficrouting paths.
 [0022]The functionality described here can be implemented in software, hardware or a combination of these. The invention can be implemented by means of a suitably programmed computer or any form of processing apparatus. Accordingly, another aspect of the invention provides software for implementing any of the described methods. The software may be stored on an electronic memory device, hard disk, optical disk or other machinereadable storage medium. The software may be delivered as a computer program product on a machinereadable carrier or it may be downloaded to a node via a network connection.
 [0023]A further aspect of the invention provides a network node comprising a processor which is configured to perform any of the described methods.
 [0024]A further aspect of the invention provides a network of nodes which each consistently apply the described methods to select between equalcost paths.
 [0025]Embodiments of the invention will be described, by way of example only, with reference to the accompanying drawings in which:
 [0026]
FIG. 1 shows a network topology having equalcost paths;  [0027]
FIG. 2 shows an example of a packetforwarding network in which the invention can be implemented;  [0028]
FIG. 3 schematically shows apparatus at one of the bridging nodes ofFIG. 2 ;  [0029]
FIG. 4 shows the locality of tiebreaking decisions;  [0030]
FIGS. 5 to 7 show example network topologies for illustrating calculation of shortest paths;  [0031]
FIG. 8 shows a further example network topology for illustrating calculation of shortest paths;  [0032]
FIGS. 9 to 11 show tiebreaking steps of a shortest path calculation of the network topology shown inFIG. 8 ;  [0033]
FIG. 12 shows an example of nodes dualhomed onto a mesh network;  [0034]
FIGS. 13A and 13B illustrate properties of the tiebreaking method of the invention.  [0035]
FIG. 2 shows an example of a link state protocol controlled Ethernet network 10 in which the invention can be implemented andFIG. 3 schematically shows apparatus at one of the nodes 4148. Nodes (also called bridges, or bridging nodes) 4148 forming the mesh network exchange link state advertisements 56 with one another. This is achieved via the well understood mechanism of a link state routing system. A routing system module 51 exchanges information 56 with peer nodes in the network regarding the network topology using a link state routing protocol. This exchange of information allows the nodes to generate a synchronized view of the network topology. At each node, a Shortest Path Determination module 52 calculates a shortest path tree, which determines the shortest path to each other node. The shortest paths determined by module 52 are used to populate a Forwarding Information Base 54 with entries for directing traffic through the network. As will be described in greater detail below, situations will arise when module 52 will encounter multiple equalcost paths. A tiebreaking module 53 selects one (or more) of the equalcost paths in a consistent manner. In normal operation, packets are received 57 at the node and a destination lookup module 55 determines, using the FIB 54, the port (or multiple ports in the case of multicast distribution) over which the received packet should be forwarded 58. If there is not a valid entry in the FIB 54 then the packet may then be discarded. It will be appreciated that the modules shown inFIG. 3 are for illustrative purposes only and may be implemented by combining or distributing functions among the modules of a node as would be understood by a person of skill in the art.  [0036]Various shortest path algorithms can be used to determine if a given node is on the shortest path between a given pair of bridges. An allpairs shortest path algorithm such as Floyd's algorithm [R. Floyd: Algorithm 97 (shortest path), Communications of the ACM, 7:345, 1962] or Dijkstra's singlesource shortest path algorithm [E. W. Dijkstra: A note on two problems in connexion with graphs, Numerical Mathematics, 1:269271, 1959] can be implemented in the node 4148 to compute the shortest path between pairs of nodes. It should be understood that any suitable shortest path algorithm could also be utilized. The link metric used by the shortest path algorithm can be static or dynamically modified to take into account traffic engineering information. For example, the link metric can include a measure of cost such as capacity, speed, usage and availability.
 [0037]By way of introduction to the problem, the requirements of a tiebreaking algorithm which can make consistent decisions between equalcost paths will firstly be described. The list of requirements is set out in Table 1 below:
 [0000]
TABLE 1 # Requirement Description 1 Complete The tiebreaking algorithm must always be able to choose between two paths 2 Commutative tiebreak(a, b) = tiebreak(b, a) 3 Associative tiebreak(a, tiebreak(b, c)) = tiebreak(tiebreak(a, b), c) 4 Symmetric tiebreak(reverse(a), reverse(b)) = reverse(tiebreak(a, b)) 5 Local tiebreak(concat(a, c), concat(b, c)) = concat(tiebreak(a, b), c)  [0038]The essence of a tiebreaking algorithm is to always ‘work’. No matter what set of paths the algorithm is presented with, the algorithm should always be able to choose one and only one path. First and foremost, the tiebreaking algorithm should therefore be complete (1). For consistent tiebreaking, the algorithm must produce the same results regardless of the order in which equalcost paths are discovered and tiebreaking is performed. That is, the tiebreaking algorithm should be commutative (2) and associative (3). The requirement that tiebreaking between three paths must produce the same results regardless of the order in which pairs of paths are considered (3) is not so obvious and yet it is absolutely necessary for consistent results as equalcost paths are discovered in a different order depending on the direction of the computation through the network. The tiebreaking algorithm must be symmetric (4), i.e. the tiebreaking algorithm must produce the same result regardless of the direction of the path: the shortest path between two nodes A and B must be the reverse of the shortest path between B and A. Finally, locality is a very important property of shortest paths that is exploited by routing systems (5). The locality property simply says that: a subpath of a shortest path is also a shortest path. This seemingly trivial property of shortest paths has an important application in packet networks that use destinationbased forwarding. In these networks, the forwarding decision at intermediate nodes along a path is based solely on the destination address of the packet, not its source address. Consequently, in order to generate its forwarding information, a node needs only compute the shortest path from itself to all the other nodes and the amount of forwarding information produced grows linearly, not quadratically, with the number of nodes in the network. In order to enable destinationbased forwarding, the tiebreaking algorithm must therefore preserve the locality property of shortest paths: a subpath of the shortest path selected by the tiebreaking algorithm must be the shortest path selected by the tiebreaking algorithm.
 [0039]Considerations of computational efficiency put another seemingly different requirement on the tiebreaking algorithm: the algorithm should be able to make a tiebreaking decision as soon as equalcost paths are discovered.
FIG. 4 illustrates this point. An intermediate node I is connected by two equalcost paths, p and q, to node A and by another pair of equalcost paths, r and s, to node B. There are therefore four equalcost paths between nodes A and B, all going through node I: p+r, p+s, q+r, q+s. As the computation of the shortest path from A to B progresses, the existence of equalcost subpaths between A and I will be discovered first. To avoid having to carry forward knowledge of these two paths, the tiebreaking algorithm should be able to choose between them as soon as the existence of the second equalcost shortest subpath is discovered. The tiebreaking decisions made at intermediate nodes will ultimately affect the outcome of the computation. By eliminating one of the two subpaths, p and q, between nodes A and I, the algorithm removes two of the four shortest paths between nodes A and B from further consideration. Similarly, in the reverse direction, the tiebreaking algorithm will choose between subpaths r and s before making a final determination. These local decisions must be consistent with one another and, in particular, the choice between two equalcost paths should remain the same if the paths were to be extended in the same way. For instance, in the case depicted inFIG. 3 , the tiebreaking algorithm should verify the following four identities:  [0000]
tiebreak(concat(p,r),concat(q,r))=concat(tiebreak(p,q),r)  [0000]
tiebreak(concat(p,s),concat(q,s))=concat(tiebreak(p,q),s)  [0000]
concat(p,tiebreak(r,s))=tiebreak(concat(p,r),concat(p,s))  [0000]
concat(q,tiebreak(r,s))=tiebreak(concat(q,r),concat(q,s))  [0040]It turns out that the symmetry (4) and locality (5) conditions are both necessary and sufficient to guarantee that the tiebreaking algorithm will make consistent local decisions, a fact that can be exploited to produce very efficient implementations of the singlesource shortest path algorithm in the presence of equalcost shortest paths.
 [0041]The list of requirements set out in Table 1 is not intended to be exhaustive, and there are other properties of shortest paths that could have been included in Table 1. For example, if a link which is not part of a shortest path is removed from the graph, the shortest path is not affected. Likewise, the tiebreaking algorithm's selection between multiple equalcost paths should not be affected if a link which is not part of the selected path is removed from the graph, and that even if this link is part of some of the equalcost paths that were rejected by the algorithm.
 [0042]A first embodiment of a consistent tiebreaking algorithm will now be described. This algorithm begins by forming a path identifier for each path. The path identifier is an ordered list of the identifiers of each node traversed by the path through the network. The node identifiers are sorted in lexicographic order. The path identifier is the resulting concatenation of the ordered node identifiers.
FIG. 5 shows an example network, with end nodes A, B and intermediate nodes 09. A first path (along the top ofFIG. 5 ) between nodes A and B traverses nodes having the node identifiers A056148B. After ordering the list of node identifiers in ascending lexicographic order, the path can be represented by the path identifier 014568AB. This construction ensures that a path and its reverse will have the same path identifier. Furthermore, because the algorithm is only dealing with shortest paths or nearly shortest paths, only two paths—the direct path and the corresponding reverse path—can share an identifier. Finally, the tiebreaking algorithm simply selects the path with the smallest (or largest) path identifier. The algorithm can be summarised as:  [0043]1) Sort the set of identifiers of the nodes in the path according to a first ordering criterion which achieves a total ordering of the set of node identifiers. A preferred first ordering criterion is increasing or decreasing lexicographic order;
 [0044]2) Concatenate the set of ordered node identifiers to create a path identifier;
 [0045]3) Sort the path identifiers according to a second ordering criterion which achieves a total ordering of the set of path identifiers. A preferred second ordering criterion is increasing or decreasing lexicographic order;
 [0046]4) Select the path whose path identifier appears at one end (first or last) of the sorted set of path identifiers. Advantageously, this step selects the path identifier appearing first in the ordered set of path identifiers.
 [0047]Each node in the network that performs this algorithm consistently uses the same ordering criteria and selects a path at the same agreed position in the set of path identifiers, in order to select the same path.
 [0048]The term “lexicographic order” means the set of node identifiers are arranged in order of size of identifier. So, if node identifiers are alphabetic, the set of node identifiers are arranged in alphabetic order A, B, C, D . . . etc.; if node identifiers are numerical, the set of node identifiers are arranged in numerical order. Clearly, this scheme can accommodate any way of labelling nodes, and any combination of types of identifier. For example, a mix of numbers and letters could be ordered by agreeing an order for numbers with respect to letters (e.g. order numbers first, then letters). Alternatively, each character can be given it's American Standard Code for Information Interchange (ASCII) code and the ASCII codes can be sorted in increasing (decreasing) order. Each node uses the same convention to order the node identifiers of paths in the same manner. This algorithm will produce consistent results because: there is a onetoone mapping between a path (strictly speaking between the pair made up of a path and its reverse) and its identifier, and there is a strict ordering of the path identifiers.
 [0049]Referring again to
FIG. 5 , the top path between nodes A and B is represented, after ordering, by the path identifier 014568AB. Similarly, a second path between nodes A and B traverses nodes A079148B and this can be represented, after ordering, by the path identifier 014789AB. Finally, a third path (along the bottom ofFIG. 5 ) between nodes A and B traverses nodes A079238B and this can be represented, after ordering, by the path identifier 023789AB. The tiebreaking algorithm compares each element of the ordered path identifier, in an agreed direction. In this example, the convention that will be used is that each node selects the lowest of the ordered path identifiers, when the path identifiers are compared in a particular direction (e.g. lefttoright). The ordered path identifiers, for the three equalcost paths are:  [0050]014568AB
 [0051]014789AB
 [0052]023789AB
 [0053]Starting with the lefthand element of the identifiers, all three path identifiers begin with ‘0’. The next elements are ‘1’ or ‘2’, so only the top two identifiers need to be considered any further. Reaching the fourth element, “0145 . . . ” is smaller than “0147 . . . ” and so the top path is selected. Real node identifiers in ISIS and Ethernet are composed of six 8bit bytes and are usually written as an hexadecimal string such as: 00e07bc1a8c2. Nicknames of nodes can also be used, providing they are used consistently.
 [0054]
FIG. 6 shows a simple network topology to illustrate the effects of different ordering criteria. Two nodes, X, Y, are connected by four equalcost paths having the node identifiers 18. Four possible options will now be described:
 sort node IDs by ascending order; sort path IDs by ascending order; select first (smallest) path ID. If the node identifiers in each path are ordered in ascending order of size (e.g. the top path with nodes 1, 7 becomes 17), that gives the path identifiers 17, 28, 35, 46. Arranging these path identifiers in ascending order of size, and selecting the first path identifier in the ordered list, has the result of selecting the first (top) path, with the nodes 1 and 7.
 sort node IDs by ascending order; sort path IDs by ascending order; select last (largest) path ID. This option has the result of selecting the last (bottom) path, with the nodes 4 and 6.
 sort node IDs by descending order; sort path IDs by ascending order; select first (smallest) path ID. Sorting the node identifiers in each path in descending order of size gives path identifiers (71, 82, 53, 64). Arranging these path identifiers in ascending order of size gives (53, 64, 71, 82) and selecting the first (smallest) path identifier in the ordered list, has the result of selecting the third path, with the nodes 3 and 5.
 sort node IDs by descending order; sort path IDs by ascending order; select last (largest) path ID. This option has the result of selecting the second path, with the nodes 8 and 2.

 [0059]As will be described in more detail below, there are situations in which it is desirable for nodes to apply multiple, different, ordering and/or selection criteria to select multiple equalcost paths.
 [0060]So far this description assumes that the algorithm is nonlocal and that tiebreaking is performed after all the equalcost paths have been found. However, it has been found that a local version of this algorithm can produce the same results by considering only the nodes on the diverging branches. Indeed, the tiebreaking result depends only on the relative positions of the smallest node identifier in the diverging branches. A second embodiment of a consistent tiebreaking algorithm can be summarised as:
 [0061]1) Find the node identifier in the diverging branch of the first path which meets a first selection criterion. This can be considered a branch identifier for the first path;
 [0062]2) Find the node identifier in the diverging branch of the second path which meets the first selection criterion. This can be considered a branch identifier for the second path;
 [0063]3) Select one of the paths using a second selection criterion, which operates on the branch identifiers selected by steps (1) and (2).
 [0064]Preferred options for the first selection criterion are to find the node identifier which is the first (or last) when the node identifiers are arranged using a total ordering scheme, such as lexicographic order (increasing or decreasing lexicographic order). As will be explained below, it is not necessary for the scheme to compile the total set of node identifiers in a branch and then order the set. Instead, the scheme can iteratively compare pairs of node identifiers using an awareness of lexicographic order. Similarly, preferred options for the second selection criterion are to find the branch identifier which is the first (or last) when the branch identifiers are arranged using a total ordering scheme, such as lexicographic order (increasing or decreasing lexicographic order).
 [0065]Referring again to the topology of
FIG. 6 , the four equalcost paths between nodes X and Y can represent four equalcost diverging branches from a parent node X. The tiebreaking algorithm needs to select one of the four branches. There are four possible options:
 identify the smallest node ID in each branch. This results in (1, 2, 3, 4) as the branch identifiers. Then, identify the smallest of the branch identifiers. This has the result of selecting the first (top) path, with the nodes 1 and 7.
 identify the smallest node ID in each branch. Then, identify the largest of the branch identifiers. This option has the result of selecting the last (bottom) path, with the nodes 4 and 6.
 identify the largest node ID in each branch. This results in (5, 6, 7, 8) as the branch identifiers. Then, identify the smallest of the branch identifiers. This has the result of selecting the path with the nodes 3 and 5.
 identify the largest node ID in each branch. Then, identify the largest of the branch identifiers. This option has the result of selecting the path with the nodes 2 and 8.

 [0070]As will be described in more detail below, there are situations in which it is desirable for nodes to apply multiple, different, ordering and/or selection criteria to select multiple equalcost paths.
 [0071]This algorithm can be implemented very easily and efficiently with simple comparisons.
FIG. 7 shows another network topology. The local version of the method, will start at node 13, and proceed to find two diverging paths leading from node 15. The method explores the two separate paths as far as node 16, where the two paths converge again. At this point, the method examines the node identifiers for each of the two paths. For the first path, the node identifiers are: 10, 14, 17, 21 and for the second path the node identifiers are: 11, 12, 19, 20. The path with the lowest identifier (10) is the top path. Two ways of comparing the paths will be described. Firstly, the method can maintain a list of node identifiers for each of the diverging paths and can compare the elements of these lists. Alternatively, the method can simply backtrack from node 16 towards node 15, keeping track of the lowest node identifier found in each branch. At each backward step, the method compares the lowest node identifier found so far, with the new node identifier encountered at that step. The lowest node identifier is stored. When the method has backtracked as far as node 15, the two lowest values (10 in the top branch, 11 in the lower branch) can simply be compared to one another to find the path having the lowest node identifier. Accordingly, the top path is selected.  [0072]One of the most common algorithms for finding shortest cost paths in a network is Dijkstra's algorithm [Dijkstra 59]. It solves the problem of finding the shortest paths from a point in a graph (the source or root node) to all possible destinations when the length of a path is defined as the sum of the positive hopbyhop link costs. This problem is sometimes called the singlesource shortest paths problem. For a graph, G=(N, L) where N is a set of nodes and L is a set of links connecting them, Dijkstra's algorithm uses a priority queue, usually called TENT, to visit the nodes in order of increasing distance from the source node. The other data structures needed to implement Dijkstra's algorithm are:
 [0073]Distance: an array of best estimates of the shortest distance from the source node to each node
 [0074]Parent: an array of predecessors for each node
 [0075]The following text describes the known Dijkstra's algorithm, and describes how it can be modified to perform a tiebreak when multiple equalcost paths are discovered. Dijkstra's algorithm is described here because it is one of the most commonly used shortest path finding algorithms. However, it will be appreciated that other algorithms could equally be used. The initialization phase sets the Distance of each node, except the source node itself, to Infinity. The Distance of the source node is set to zero and its Parent is set to Null as it is the root of the tree. At the start of the computation, the priority queue contains only the source node. As the algorithm progresses, nodes are added to the priority queue when a path from the source node to them is found. Nodes are pulled out of the priority queue in order of increasing distance from the source node, after the shortest path between them and the source node has been found. The algorithm stops when all the nodes reachable from the source node have been cycled through the priority queue. While the priority queue TENT is not empty, the algorithm performs the following steps:
 [0076]1) Find the node N in TENT which is closest to the source node and remove it from TENT
 [0077]2) For each node connected to N, if the node's distance to the source would be reduced by making N its parent, then change the node's parent to N, set the node's distance to the new distance, and add the node to TENT.
 [0078]Upon completion of the algorithm, Distance(node) contains the shortest distance from the source node to the node (or Infinity if the node is not reachable from the source node) and Parent(node) contains the predecessor of the node in the spanning tree (except for the source node and the nodes which are not reachable from the source node). The parent of a node is updated only if changing parents actually reduces the node's distance. This means that, if multiple equalcost shortest paths exist between the source node and some other node, only the first one encountered during the execution of the algorithm will be considered.
 [0079]The above steps are conventional steps of Dijkstra's algorithm. At this point Dijkstra is modified to add a consistent tiebreaking step. Step 2 above is modified as follows:
 [0080]2) For each node connected to node N do the following:
 [0081]2a) if the node's distance to the source would be reduced by making N its parent, then change the node's parent to N, set the node's distance to the new distance, and add the node to TENT.
 [0082]2b) if the node's distance to the source node would remain the same after making N its parent, then invoke the tiebreaking algorithm to determine if the node's parent should be changed.
 [0083]The tiebreaking algorithm is invoked when a convergence point of two diverging branches is reached. For example, considering the topology shown in
FIG. 7 , if Dijkstra's algorithm is started from node 13, diverging branches are discovered leading from node 15 (an upper branch with nodes 10, 14, 17, 21 and a lower branch with nodes 11, 12, 19, 20) and these diverging branches converge at node 16. It is at node 16 that the tiebreaking algorithm would be invoked to select between the two branches.  [0084]The pseudocode below shows an implementation of the modified Dikstra's algorithm with consistent tiebreaking using a priority queue implementation of the TENT set. The Enqueue operation takes two arguments, a queue and a node, and puts the node in the proper queue position according to its distance from the source node. The Dequeue operation removes from the queue the node at the head of the queue i.e. the node with the smallest distance from the source node.
 [0000]
for each Node in Network do Distance(Node) = Infinity; Empty(Tent); Distance(Source) = 0; Parent(Source) = Null; Node = Source; do for each Link in OutgoingLinks(Node) do newDistance = Distance(Node) + Cost(Link); Child = EndNode(Link); if (newDistance < Distance(Child) do Distance(Child) = newDistance; Parent(Child) = Node; Enqueue(Tent, Child); else if (newDistance == Distance(Child) do Parent(Child) = TieBreak(Node, Parent(Child)); while (Node = Dequeue(Tent));  [0085]The tiebreaking algorithm operates by backtracking the two equalcost paths, starting from the current parent and the new candidate parent of the node respectively, all the way back to the divergence point. The fact that the two diverging paths may have a different number of hops complicates matters slightly as the two paths must be backtracked by an unknown, unequal number of hops. This problem can be resolved by always backtracking the longer of the two paths first or both simultaneously when they have equalcost. Alternatively, this difficulty can be eliminated altogether by ensuring that two paths will only be considered to be of equalcost if, and only if, they have the same number of hops. This is easily accomplished by either incorporating a hop count in the path cost or by using the hop count as a first order tiebreaker.
 [0086]The following pseudocode shows an implementation of the tiebreaking algorithm that assumes that the two paths have the same number of hops (and therefore so do their diverging branches). The tiebreaking function takes the two nodes at the end of two equal paths and returns one of them to indicate which of the two paths it selected.
 [0000]
old = oldParent; new = newParent; oldMinId = SysId(old); newMinId = SysId(new); while ((old=Parent(old)) != (new=Parent(new))) do tmp = SysId(old); if (tmp < oldMinId) do oldMinId = tmp; tmp = SysId(new); if (tmp < newMinId) do newMinId = tmp; if (newMinId < oldMinId) return newParent; else return oldParent;  [0087]The frequency with which the algorithm needs to be performed depends on the application. PLSB essentially needs to compute the allpairs shortest paths (sometimes a subset thereof). In this case Dijkstra's algorithm needs to be run for all the nodes in the network (all but one to be precise). Floyd's algorithm computes the allpairs shortest paths so it would need to be run only once. Other applications may only require the computation of a smaller number of paths (e.g. if only one shortest path is required then Dijkstra's algorithm would have to be run only once with one of the path's endpoints as the source).
 [0088]
FIG. 8 shows an example network of nodes AH, J interconnected by links. For each link, a metric associated with that link is shown as an integer value on the link. There are six different, equalcost, shortest paths between node A and node B in this network. These are shown in the table below with their respective length and path identifier:  [0000]
Path AGDHB AGCHB AGCJB AFCHB AFCJB AFEJB Length 10 10 10 10 10 10 Identifier ABDGH ABCGH ABCGJ ABCFH ABCFJ ABEFJ  [0089]All of these six paths have the same length, 10. The nonlocal version of the tiebreaking algorithm will select the one with the smallest path identifier (ABCFH), i.e. path AFCHB. The remainder of this section shows how the local version of the tiebreaking algorithm arrives at the same result by making only local tiebreaking decisions as equalcost paths and subpaths are discovered during the execution of Dijkstra's algorithm. Dijsktra's algorithm initializes a table of distances and parents (or predecessors) for the nodes in the network. All the distances are initially set to infinity except for the source node whose distance is set to zero. The parents are undefined at this stage:
 [0000]
Node A B C D E F G H J Distance 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ Parent — — — — — — — — —  [0090]Dijkstra's algorithm also initializes its priority queue to contain only the source node, A: TENT=[(A, 0)].
 [0091]The first iteration of the Dijkstra loop selects the first and only node in TENT, node A. Then for each of node A's neighbours, namely nodes F and G, it updates their distance to the source and makes node A their parent. Finally these two nodes are added to the TENT priority queue.
 [0092]During this first iteration of Dijkstra's algorithm the table of distances and parents becomes:
 [0000]
Node A B C D E F G H J Distance 0 ∞ ∞ ∞ ∞ 2 1 ∞ ∞ Parent — — — — — A A — —  [0093]At the end of this first iteration the priority queue is: TENT=[(G, 1), (F, 2)].
 [0094]The second iteration of the Dijkstra loop removes the node with the smallest distance, node G, from the priority queue. It updates two of G's neighbours that have not been processed yet, nodes C and D, and adds them to the priority queue:
 [0000]
Node A B C D E F G H J Distance 0 ∞ 5 4 ∞ 2 1 ∞ ∞ Parent — — G G — A A — —  [0095]At the end of the second iteration, the priority queue is: TENT=[(F, 2), (D, 4), (C, 5)].
 [0096]The third iteration of the Dijkstra loop removes node F from the priority queue. It updates two neighbours of node F, nodes C and E, and adds node E to the priority queue (node C is there already). The distance of node C does not change but there is a new candidate equal path between node A and node C going through node F. The tiebreaking algorithm must therefore be invoked to choose between this new path going through node F and the old one going through node G. This is shown in
FIG. 9 . The tiebreaking algorithm is invoked with the new candidate parent of node C, node F, and its old parent, node G. oldMin is set to the identifier of the old parent, G, and newMin is set to the identifier of the new parent, F. Because nodes F and G share the same parent (node A), the backtracking loop is not executed. The tiebreaking simply compares oldMin and newMin and because newMin=F<G=oldMin, node F is selected as the new parent of node C:  [0000]
Node A B C D E F G H J Distance 0 ∞ 5 4 4 2 1 ∞ ∞ Parent — — F G F A A — —
At the end of the third iteration, the priority queue is: TENT=[(D, 4), (E, 4), (C, 5)]. The fourth iteration of the Dijkstra loop removes one of the two nodes with distance 4, node D for instance, from the priority queue. Of D's two neighbours only one, node H, is updated and added to the priority queue:  [0000]
Node A B C D E F G H J Distance 0 ∞ 5 4 4 2 1 6 ∞ Parent — — F G F A A D —  [0097]At the end of the fourth iteration, the priority queue is: TENT=[(E, 4), (C, 5), (H, 6)].
 [0098]The fifth iteration of the Dijkstra loop removes node E from the priority queue. Of E's two neighbours only one, node J, is updated and added to the priority queue.
 [0000]
Node A B C D E F G H J Distance 0 ∞ 5 4 4 2 1 6 6 Parent — — F G F A A D E  [0099]At the end of the fifth iteration, the priority queue is: TENT=[(C, 5), (H, 6), (J, 6)].
 [0100]The sixth iteration of the Dijkstra's loop removes node C from the priority queue. Two of C's neighbours, nodes J and H, have equalcost paths to node A through node C. The tiebreaking algorithm must therefore be invoked twice for nodes J and H respectively.
 [0101]For node J, the tiebreaking algorithm is invoked with the new potential parent, node C, and the old parent, node E. oldMin is set to the identifier of the old parent, E, and newMin is set to the identifier of the new parent, C. Because these two nodes, E and C, share the same parent (node F), the backtracking loop is not executed. The tiebreaking simply compares oldMin and newMin and because newMin=C<E=oldMin, the new parent is selected. Node J's parent is therefore replaced by node C. This is shown in
FIG. 10 .  [0102]For node H, the tiebreaking algorithm is invoked with the new potential parent, node C, and the old parent, node D. oldMin is set to the identifier of the old parent, D, and newMin is set to the identifier of the new parent, C. Because these two nodes have different parents, both paths must be backtracked one hop further. D's parent is G and because G>oldMin (=D), oldMin does not change. C's parent is F and because F>newMin (=C), newMin does not change either. Because F and G share the same parent, node A, the backtracking loop stops. The tiebreaking algorithm then compares oldMin and newMin and because newMin=C<D=oldMin, node C is selected to become node H's new parent. This is shown in
FIG. 11 .  [0000]
Node A B C D E F G H J Distance 0 ∞ 5 4 4 2 1 6 6 Parent — — F G F A A C C  [0103]At the end of the sixth iteration, the priority queue is: TENT=[(H, 6), (J, 6)].
 [0104]The seventh iteration of the Dijkstra's loop removes one of the two nodes with distance 6, node H for instance, from the priority queue. Only one of H's neighbours, node B, is updated and added to the priority queue:
 [0000]
Node A B C D E F G H J Distance 0 10 5 4 4 2 1 6 6 Parent — H F G F A A C C  [0105]At the end of the seventh iteration, the priority queue is: TENT=[(J, 6), (B, 10)].
 [0106]The eighth iteration of the Dijkstra's loop removes node J from the priority queue. Of J's neighbours, only node B needs to be updated. Its distance does not change but there is a new candidate equal path between node A and node B going through node J.
 [0107]The tiebreaking algorithm is invoked with the new potential parent of node B, node J, and the old parent, node H. oldMin is set to the identifier of the old parent, H, and newMin is set to the identifier of the new parent, J. Because these two nodes, H and J, share the same parent (node C), the backtracking loop is not executed. The tiebreaking simply compares oldMin and newMin and because oldMin=H<J=newMin, the old parent is selected and node B's parent remains the same.
 [0000]
Node A B C D E F G H J Distance 0 10 5 4 4 2 1 6 6 Parent — H F G F A A C C  [0108]At the end of the eighth iteration, the priority queue is: TENT=[(B, 10)].
 [0109]Finally the last iteration of the Dijkstra's loop removes node B from the queue and the algorithm terminates because none of B's neighbours can be updated (node B is the node that is the furthest away from the source node A).
 [0110]The reverse of the shortest path from node A to node B can be read directly from the parent table starting at node B and following the parents until node A is reached: BHCFA. The shortest path from node A to node B selected by the local tiebreaking algorithm is therefore its reverse path: AFCHB.
 [0111]Although there are 6 equalcost paths between nodes A and B, the local tiebreaking was only invoked a total of 4 times during the execution of Dijkstra's algorithm. At its first invocation, the tiebreaking algorithm had to choose between subpaths AFC and AGC. It selected subpath AFC, thereby eliminating two paths, AGCJB and AGCHB, from further consideration. At its second invocation, the tiebreaking algorithm had to choose between subpaths AFCJ and AFEJ. It selected subpath AFCJ, thereby eliminating a third path, AFEJB, from further consideration. At its third invocation, the tiebreaking algorithm had to choose between subpaths AGDH and AGCH. It selected subpath AGCH, thereby eliminating a fourth path, AGDHB, from further consideration. Finally, at its fourth invocation, the tiebreaking algorithm had to choose between paths AFCHB and AFCJB. It eliminated a fifth path, AFCJB, and selected path AFCHB as the final solution.
 [0112]Selection of EqualCost MultiPaths for Load Spreading
 [0113]In many networking applications it is often advantageous to use several equalcost paths, especially if this can be achieved in a consistent fashion. By using two variants of the tiebreaking algorithm, it is possible to use two equalcost paths between a pair of nodes when they exist.
FIG. 12 shows a common networking scenario in which edge nodes X and Y are each dualhomed on a full mesh of core nodes A, B, C, D. For redundancy, each edge node is connected to two core nodes, with node X connected to core nodes A and B and node Y connected to nodes C and D. Each core node is connected to all of the other core nodes, e.g. node A is connected to B, C, and D. The problem with this topology is that if only one shortest path is used between a pair of nodes, a lot of access capacity will be wasted under normal circumstances. When multiple equalcost shortest paths exist between two nodes, two variants of the tiebreaking algorithm can be used to consistently select exactly two paths. Any convention, agreed by all nodes, can be used to make the selection between equalcost paths. One particularly convenient convention is to select a first path having the smallest identifier and a second path having the largest identifier. InFIG. 12 , since the core nodes are fully meshed, four equalcost paths exist between the edge nodes X and Y: (X, A, C, Y), (X, A, D, Y), (X, B, C, Y), (X, B, D, Y). The two variants of the tiebreaking algorithm will select these two paths:  [0114](X, min(A, B), min(C, D), Y) and,
 [0115](X, max(A, B), max(C, D), Y).
 [0116]Because the node identifiers are unique, min(A, B) !=max(A, B) and min(C, D) !=max(C, D): these two paths are maximally diverse: they have only their endpoints in common. In
FIG. 12 , the two selected paths are (X, A, C, Y) and (X, B, D, Y).  [0117]
FIGS. 13A and 13B illustrate other important properties of the tiebreaking method of the present invention:
 a single failure in the presence of equalcost paths cannot force a loop;
 a failure cannot both close the loop and shift the point of attachment of the root;
 a failure cannot produce a shorter path;
 the tiebreaking algorithm prevents ranking of equalcost paths from changing the shortest path.

 [0122]
FIGS. 13A and 13B illustrate these properties with a simple network topology having nodes A, B, C, D and R. ConsideringFIG. 13A , the shortest path between R and a set of nodes AD uses a link RA. There is a choice of two equalcost branches to reach node C 10 from Node A. Using one of the tiebreaking methods described above, the branch ABC is consistently selected rather than the branch ADC. Similarly, in the reverse direction, the link CBA is consistently selected instead of CDA.FIG. 13B shows a situation, at a later point in time, when the link RA has failed. Node R now connects to the set of nodes AD via the next best link, RC. There is a choice of two equalcost branches to reach node 15 A from Node C. Again, the branch CBA is consistently selected rather than the branch CDA. Without the use of this consistent tiebreaking algorithm, a loop ABCDA could arise following the failure in link RA, with nodes A and B being slow and promiscuous in their behaviour and nodes C and D being agile. This property is particularly useful to guarantee loop freeness for multicast forwarding.  [0123]The invention is not limited to the embodiments described herein, which may be modified or varied without departing from the scope of the invention.
Claims (39)
152. (canceled)
53. A method of determining forwarding information for use in forwarding packets at a forwarding node of a packetforwarding network, the forwarding node having a processor and each node of the network having a unique node identifier, the method comprising:
determining, by the forwarding node, shortest paths between a first node and a second node of the network;
determining, by the forwarding node, when at least two of the shortest paths have substantially equalcost;
forming, by the forwarding node for each substantially equalcost path, a set of node identifiers which define the set of nodes in the path;
ordering, by the forwarding node, each set of node identifiers using a first ordering criterion to form a path identifier, and concatenating the node identifiers in that order to form a path identifier, wherein the first ordering criterion is independent of the order in which node identifiers appear in the path; and
selecting, by the forwarding node, between the plurality of equalcost paths by comparing the path identifiers.
54. The method of claim 53 , wherein determining when the plurality of shortest paths have substantially equalcost comprises determining when the plurality of shortest paths have exactly equalcost.
55. The method of claim 53 , wherein the first ordering criterion creates a totally ordered set of node identifiers.
56. The method of claim 53 , wherein the first ordering criterion is one of increasing lexicographic order and decreasing lexicographic order.
57. The method of claim 53 , further comprising ordering the plurality of path identifiers into an ordered list using a second ordering criterion.
58. The method of claim 57 , wherein:
the second ordering criterion creates a totally ordered set of path identifiers; and
selecting between the plurality of equalcost paths comprises selecting the equalcost path that appears at one end of the ordered list of path identifiers.
59. The method of claim 58 , wherein selecting between the plurality of equalcost paths comprises selecting the equalcost path that appears one of:
first in the ordered list of path identifiers; and
last in the ordered list of path identifiers.
60. The method of claim 57 , wherein the second ordering criterion is one of:
increasing lexicographic order; and
decreasing lexicographic order.
61. The method of claim 57 , wherein selecting at least one equalcost path of the plurality of equalcost paths by comparing the path identifiers comprises one of:
selecting two of the substantially equalcost paths by using two different first ordering criteria to form two sets of path identifiers and a common second ordering criterion to select two different path identifiers, one from each of the two sets; and
selecting two of the substantially equalcost paths by using a common first ordering criterion to form path identifiers and two different second ordering criteria to select two different path identifiers.
62. The method of claim 57 , further comprising selecting four of the substantially equalcost paths by:
using two different first ordering criteria and a common second ordering criterion to create two respective ordered lists of path identifiers, each ordered list of path identifiers corresponding to a respective one of the two different first ordering criteria; and
selecting the equalcost paths corresponding to path identifiers that appear first and last in each of the two ordered lists of path identifiers.
63. The method of claim 61 , wherein:
the common ordering criteria is one of increasing lexicographic order and decreasing lexicographic order; and
the two different ordering criteria are increasing lexicographic order and decreasing lexicographic order.
64. A forwarding node for use in a packetforwarding network, comprising:
a processor; and
a nontransitory processorreadable medium storing instructions executable by the processor:
to determine shortest paths between a first node and a second node of the network;
to determine when at least two of the shortest paths have equalcost;
to form for each equalcost path, a set of node identifiers which define the set of nodes in the path;
to select, by the forwarding node, one of the equalcost paths, the selected equalcost path having the property that, if the node identifiers assigned to nodes in each equalcost path are sorted according to a first ordering criterion to derive a path identifier for each equalcost path, and if the resulting path identifiers are sorted according to a second ordering criterion to derive an ordered list of path identifiers, then the selected equalcost path is at one extreme of the ordered list of path identifiers.
65. The forwarding node of claim 64 , wherein the instructions executable to determine when the plurality of shortest paths have substantially equalcost comprise instructions executable to determine when the plurality of shortest paths have exactly equalcost.
66. The forwarding node of claim 64 , wherein the first ordering criterion creates a totally ordered set of node identifiers.
67. The forwarding node of claim 64 , wherein the first ordering criterion is one of increasing lexicographic order and decreasing lexicographic order.
68. The forwarding node of claim 64 , further comprising instructions executable to order the plurality of path identifiers into an ordered list using a second ordering criterion.
69. The forwarding node of claim 68 , wherein:
the second ordering criterion creates a totally ordered set of path identifiers; and
selecting between the plurality of equalcost paths comprises selecting the equalcost path that appears at one end of the ordered list of path identifiers.
70. The forwarding node of claim 69 , wherein the instructions executable to select between the plurality of equalcost paths comprises instructions executable to select the equalcost path that appears one of:
first in the ordered list of path identifiers; and
last in the ordered list of path identifiers.
71. The forwarding node of claim 70 , wherein the second ordering criterion is one of:
increasing lexicographic order; and
decreasing lexicographic order.
72. The forwarding node of claim 70 , wherein the instructions executable to select at least one equalcost path of the plurality of equalcost paths by comparing the path identifiers comprises one of:
instructions executable to select two of the substantially equalcost paths by using two different first ordering criteria to form two sets of path identifiers and a common second ordering criterion to select two different path identifiers, one from each of the two sets; and
instructions executable to select two of the substantially equalcost paths by using a common first ordering criterion to form path identifiers and two different second ordering criteria to select two different path identifiers.
73. The forwarding node of claim 70 , wherein the instruction further comprise instructions executable to select four of the substantially equalcost paths by:
using two different first ordering criteria and a common second ordering criterion to create two respective ordered lists of path identifiers, each ordered list of path identifiers corresponding to a respective one of the two different first ordering criteria; and
selecting the equalcost paths corresponding to path identifiers that appear first and last in each of the two ordered lists of path identifiers.
74. The forwarding node of claim 72 , wherein:
the common ordering criteria is one of increasing lexicographic order and decreasing lexicographic order; and
the two different ordering criteria are increasing lexicographic order and decreasing lexicographic order.
75. A computer program product comprising a nontransitory machinereadable medium bearing instructions which, when executed by at least one processor, cause the at least one processor to implement the method of claim 53 .
76. A method of determining forwarding information for use in forwarding packets at a forwarding node of a packetforwarding network, the forwarding node having a processor and each node of the network having a unique node identifier, the method comprising:
determining, by the forwarding node, shortest paths between a first node and a second node of the network;
determining, by the forwarding node while determining the shortest paths, when at least two of the shortest paths have equalcost, each equalcost path comprising a branch which diverges from a divergence node common to the equalcost paths;
selecting, by the forwarding node, in each diverging branch, a node identifier using a first selection criterion to form a branch identifier, the first selection criterion being independent of an order in which nodes corresponding to the node identifiers appear in the branch; and
selecting, by the forwarding node, between the plurality of branches by comparing the branch identifiers.
77. The method of claim 76 , wherein the first selection criterion is a total ordering criterion.
78. The method of claim 76 , wherein the first selection criterion is lexicographic order.
79. The method of claim 78 , wherein the selecting a node identifier comprises selecting one of:
a node identifier appearing first in lexicographic order;
a node identifier appearing last in lexicographic order.
80. The method of claim 76 , wherein selecting a node identifier comprises selecting, in each diverging branch, the respective node identifier which best meets the first selection criterion.
81. The method of claim 80 , wherein:
the diverging branches converge at a convergence node; and
selecting the respective node identifier that best meets the first selection criterion comprises, for each diverging branch:
recording the node identifier of a respective node adjacent to the convergence node on that branch;
processing from the convergence node along the branch toward the divergence node nodebynode until a respective node adjacent to the divergence node is reached while comparing each node identifier with the previously recorded node identifier and recording the node identifier of those two node identifiers which meets the first selection criterion; and
when the respective node adjacent to the divergence node is reached, selecting the recorded node identifier as the respective branch identifier for the branch.
82. The method of claim 76 , wherein selecting at least one branch of the plurality of branches comprises comparing branch identifiers using a second selection criterion.
83. The method of claim 82 , wherein the second selection criterion is a total ordering criterion.
84. The method of claim 83 , wherein the second selection criterion is lexicographic order.
85. The method of claim 84 , wherein selecting at least one branch of the plurality of branches comprises selecting one of:
a branch identifier appearing first in lexicographic order;
a branch identifier appearing last in lexicographic order.
86. The method of claim 76 , wherein selecting at least one branch of the plurality of branches comprises successive steps of comparing two of the branch identifiers.
87. The method of claim 82 , wherein selecting at least one branch of the plurality of branches by comparing the branch identifiers comprises one of:
selecting two of the branches by using two different first selection criteria to form two different sets of branch identifiers and a common second selection criterion to select one branch identifier from each of the two sets; and
selecting two of the branches by using a common first selection criterion to form branch identifiers and two different second selection criteria to select two different branch identifiers.
88. The method of claim 82 , wherein selecting at least one of the plurality of branches by comparing the branch identifiers comprises selecting four of the branches by:
using two different first selection criteria, forming two respective sets of branch identifiers, each set of branch identifiers corresponding to a respective one of the two different first selection criteria; and
using two different second selection criteria, selecting two respective branch identifiers from each of the two sets of branch identifiers associated with the two different first selection criteria.
89. The method of claim 87 , wherein:
the common selection criterion is one of largest node identifier and smallest node identifier; and
the two different selection criteria are largest branch identifier and smallest branch identifier.
90. A computer program product comprising a nontransitory machinereadable storage medium bearing instructions which, when executed by a processor, cause the processor to implement the method of claim 76 .
Priority Applications (3)
Application Number  Priority Date  Filing Date  Title 

US11964478 US7911944B2 (en)  20071226  20071226  Tiebreaking in shortest path determination 
US13023823 US8699329B2 (en)  20071226  20110209  Tiebreaking in shortest path determination 
US14075305 US20140140347A1 (en)  20071226  20131108  Tiebreaking in shortest path determination 
Applications Claiming Priority (1)
Application Number  Priority Date  Filing Date  Title 

US14075305 US20140140347A1 (en)  20071226  20131108  Tiebreaking in shortest path determination 
Related Parent Applications (1)
Application Number  Title  Priority Date  Filing Date  

US13023823 Continuation US8699329B2 (en)  20071226  20110209  Tiebreaking in shortest path determination 
Publications (1)
Publication Number  Publication Date 

US20140140347A1 true true US20140140347A1 (en)  20140522 
Family
ID=40798344
Family Applications (3)
Application Number  Title  Priority Date  Filing Date 

US11964478 Active 20280723 US7911944B2 (en)  20071226  20071226  Tiebreaking in shortest path determination 
US13023823 Active 20280824 US8699329B2 (en)  20071226  20110209  Tiebreaking in shortest path determination 
US14075305 Abandoned US20140140347A1 (en)  20071226  20131108  Tiebreaking in shortest path determination 
Family Applications Before (2)
Application Number  Title  Priority Date  Filing Date 

US11964478 Active 20280723 US7911944B2 (en)  20071226  20071226  Tiebreaking in shortest path determination 
US13023823 Active 20280824 US8699329B2 (en)  20071226  20110209  Tiebreaking in shortest path determination 
Country Status (7)
Country  Link 

US (3)  US7911944B2 (en) 
EP (2)  EP2232792A4 (en) 
JP (2)  JP5362743B2 (en) 
KR (1)  KR20100112144A (en) 
CN (2)  CN103973566A (en) 
CA (1)  CA2742887A1 (en) 
WO (1)  WO2010032081A1 (en) 
Families Citing this family (59)
Publication number  Priority date  Publication date  Assignee  Title 

US7030863B2 (en) *  20000526  20060418  America Online, Incorporated  Virtual keyboard system with automatic correction 
US7286115B2 (en)  20000526  20071023  Tegic Communications, Inc.  Directional input system with automatic correction 
US7821503B2 (en)  20030409  20101026  Tegic Communications, Inc.  Touch screen and graphical user interface 
US7750891B2 (en)  20030409  20100706  Tegic Communications, Inc.  Selective input system based on tracking of motion parameters of an input device 
US7958120B2 (en)  20050510  20110607  Netseer, Inc.  Method and apparatus for distributed community finding 
US9110985B2 (en) *  20050510  20150818  Neetseer, Inc.  Generating a conceptual association graph from largescale looselygrouped content 
WO2007084616A3 (en)  20060118  20080417  Behnam AttaranRezael  System and method for contextbased knowledge search, tagging, collaboration, management and advertisement 
US8825657B2 (en)  20060119  20140902  Netseer, Inc.  Systems and methods for creating, navigating, and searching informational web neighborhoods 
US8843434B2 (en)  20060228  20140923  Netseer, Inc.  Methods and apparatus for visualizing, managing, monetizing, and personalizing knowledge search results on a user interface 
CA2663186C (en) *  20061013  20171212  Firetide, Inc.  Mesh node mobility across static and mobile mesh networks 
US9817902B2 (en) *  20061027  20171114  Netseer Acquisition, Inc.  Methods and apparatus for matching relevant content to user intention 
CN103299550B (en) *  20101104  20151209  纽昂斯通讯公司  Spell Check keyboard having automatic correction system 
US8201087B2 (en)  20070201  20120612  Tegic Communications, Inc.  Spellcheck for a keyboard system with automatic correction 
US8225203B2 (en)  20070201  20120717  Nuance Communications, Inc.  Spellcheck for a keyboard system with automatic correction 
US7911944B2 (en) *  20071226  20110322  Nortel Networks Limited  Tiebreaking in shortest path determination 
US8761022B2 (en)  20071226  20140624  Rockstar Consortium Us Lp  Tiebreaking in shortest path determination 
US8027310B2 (en) *  20080129  20110927  Ericsson Ab  Flexible mobile IP foreign agent architecture for enabling converged services 
US8116229B2 (en) *  20080219  20120214  Cisco Technology, Inc.  Reducing packet drops in networks guaranteeing inorder delivery 
US20090281900A1 (en) *  20080506  20091112  Netseer, Inc.  Discovering Relevant Concept And Context For Content Node 
US20090300009A1 (en) *  20080530  20091203  Netseer, Inc.  Behavioral Targeting For Tracking, Aggregating, And Predicting Online Behavior 
US8565075B2 (en) *  20081030  20131022  Verizon Patent And Licensing Inc.  Method and system for determining alternate paths 
US8417695B2 (en) *  20081030  20130409  Netseer, Inc.  Identifying related concepts of URLs and domain names 
US8248925B2 (en) *  20090908  20120821  Rockstar Bidco, LP  Method and apparatus for selecting between multiple equal cost paths 
US8539155B1 (en) *  20090921  20130917  Tilera Corporation  Managing home cache assignment 
US9065743B2 (en) *  20091224  20150623  At&T Intellectual Property I, L.P.  Determining connectivity in a failed network 
US8681635B2 (en) *  20091231  20140325  Mapquest, Inc.  Computerimplemented systems and methods for planning a route 
WO2011083846A1 (en) *  20100108  20110714  日本電気株式会社  Communication system, forwarding nodes, path management server and communication method 
ES2401160T3 (en) *  20100506  20130417  Deutsche Telekom Ag  Method and system for controlling data communication within a network 
US9210071B2 (en)  20100816  20151208  Telefonaktiebolaget L M Ericsson (Publ)  Automated traffic engineering for fat tree networks 
US9160651B2 (en)  20130724  20151013  Telefonaktiebolaget L M Ericsson (Publ)  Metric biasing for bandwidth aware tie breaking 
US8553584B2 (en) *  20100908  20131008  Telefonaktiebolaget L M Ericsson (Publ)  Automated traffic engineering for 802.1AQ based upon the use of link utilization as feedback into the tie breaking mechanism 
US9503360B2 (en) *  20100927  20161122  Ciena Corporation  Method and apparatus for traffic engineering in shortest path bridged networks 
JP5668759B2 (en) *  20101101  20150212  日本電気株式会社  Communication system, control device, the packet transfer route control method and program 
CN102111912B (en) *  20110309  20130710  南京瀚之显电子科技有限公司  Centralized construction method for Zigbee homogeneous treetype wireless sensor network 
US8804490B2 (en)  20110729  20140812  Telefonaktiebolaget L M Ericsson (Publ)  Controller placement for fast failover in the split architecture 
US9185027B2 (en)  20110729  20151110  Telefonaktiebolaget L M Ericsson (Publ)  Method and apparatus for resilient routing of control traffic in a splitarchitecture system 
US8774192B2 (en) *  20110910  20140708  Arnab Das  Methods systems, and devices for robustness improvement in a mobile ad hoc network using reputationbased routing 
US8811212B2 (en) *  20120222  20140819  Telefonaktiebolaget L M Ericsson (Publ)  Controller placement for fast failover in the split architecture 
US8982689B2 (en) *  20120420  20150317  Telefonaktiebolaget L M Ericsson (Publ)  Split tiebreakers for 802.1AQ 
US8848509B2 (en)  20120427  20140930  Telefonaktiebolaget L M Ericsson (Publ)  Three stage folded Clos optimization for 802.1aq 
CN102769887A (en) *  20120502  20121107  黄林果  Multipath selection method of wireless mesh network 
WO2013173900A1 (en) *  20120522  20131128  Rockstar Bidco Lp  Tiebreaking in shortest path determination 
US9077562B2 (en)  20120608  20150707  Cisco Technology, Inc.  System and method for layer2 multicast multipathing 
CN103546381B (en) *  20120712  20170609  华为技术有限公司  Create a twoway multicast distribution tree based interior gateway protocol method, apparatus and system 
US9178837B2 (en)  20120717  20151103  Cisco Technology, Inc.  System and method for layer2 network routing 
CN102880739A (en) *  20120731  20130116  中国兵器科学研究院  Network minimum path set determination method based on adjacency list 
CN103036791B (en) *  20121130  20150819  福建星网锐捷网络有限公司  A method and apparatus for determining multipoint path 
CN103078796B (en) *  20130128  20160330  杭州华三通信技术有限公司  A route calculation method and apparatus 
US20140269410A1 (en) *  20130314  20140918  Cisco Technology, Inc.  Efficient Flooding of Link State Packets for Layer 2 Link State Protocols 
US9419919B2 (en) *  20130315  20160816  Cisco Technology, Inc.  VPC auto configuration 
CN104641604B (en) *  20130408  20171215  华为技术有限公司  A method and apparatus for determining the shortest path 
US9264312B2 (en) *  20130930  20160216  Cisco Technology, Inc.  Method and system to calculate multiple shortest path first trees 
US9166887B2 (en)  20131226  20151020  Telefonaktiebolaget L M Ericsson (Publ)  Multicast convergence 
EP2933958A1 (en) *  20140417  20151021  Cisco Technology, Inc.  Segment routing  egress peer engineering (SPEPE) 
US9225629B2 (en) *  20140530  20151229  Telefonaktiebolaget L M Ericsson (Publ)  Efficient identification of node protection remote LFA target 
US9565623B2 (en) *  20140812  20170207  Digi International Inc.  Systems and methods for ordering candidates for wireless network association 
US9753439B2 (en) *  20141002  20170905  FisherRosemount Systems, Inc.  Multiprotocol device supporting wireless plant protocols 
US20170033939A1 (en) *  20150728  20170202  Ciena Corporation  Multicast systems and methods for segment routing 
US20170358914A1 (en) *  20160614  20171214  Meshed Power Systems, Inc.  Fault recovery systems and methods for electrical power distribution networks 
Family Cites Families (45)
Publication number  Priority date  Publication date  Assignee  Title 

US5023916A (en) *  19890828  19910611  HewlettPackard Company  Method for inspecting the leads of electrical components on surface mount printed circuit boards 
JPH05207132A (en) *  19920123  19930813  Nippon Telegr & Teleph Corp <Ntt>  Generation, arrangement and decision method for connection route between exchanges for communication network design 
DE69636126D1 (en) *  19951115  20060614  Enterasys Networks Inc  Distributed connectionoriented services for switched telecommunications network 
JP3315588B2 (en) *  19960516  20020819  株式会社日立製作所  atm exchange to perform the traffic flow control 
US6961341B1 (en) *  19960702  20051101  Microsoft Corporation  Adaptive bandwidth throttling for network services 
GB9727163D0 (en)  19971224  19980225  Northern Telecom Ltd  Traffic route finder in communications network 
US6697333B1 (en) *  19980304  20040224  Alcatel Canada Inc.  Bandwidth load consideration in network route selection 
US6633544B1 (en)  19980624  20031014  At&T Corp.  Efficient precomputation of qualityofservice routes 
JP2000032040A (en) *  19980707  20000128  Nippon Telegr & Teleph Corp <Ntt>  Method and system for visualizing server access path 
US6928484B1 (en) *  20000118  20050809  Cisco Technology, Inc.  Method and apparatus for discovering edgedisjoint shortest path pairs during shortest path tree computation 
US7123620B1 (en)  20000425  20061017  Cisco Technology, Inc.  Apparatus and method for scalable and dynamic traffic engineering in a data communication network 
US6990073B1 (en) *  20010328  20060124  Lsi Logic Corporation  Data packet congestion management technique 
US7308198B1 (en) *  20010516  20071211  Tellabs Operations, Inc.  Method for allocating protection bandwidth in a telecommunications mesh network 
GB0120033D0 (en) *  20010816  20011010  Fujitsu Ltd  Cell selection 
JP3726741B2 (en) *  20011116  20051214  日本電気株式会社  Packet transfer apparatus, method and program 
JP3904435B2 (en) *  20011128  20070411  株式会社日立製作所  Web services for congestion control apparatus and method 
US7046634B2 (en)  20020415  20060516  Tropic Networks Inc.  Method and apparatus for selecting maximally disjoint shortest paths in a network 
US20040032832A1 (en)  20020730  20040219  Snehal Desai  System and method for determining the shortest path between a pair of nodes in an equal cost network 
US8560223B2 (en) *  20020829  20131015  Mapquest, Inc.  Automated route determination 
JP2004129054A (en) *  20021004  20040422  Ntt Docomo Inc  Pathway controller and method for generating pathway control information 
US7224668B1 (en) *  20021127  20070529  Cisco Technology, Inc.  Control plane security and traffic flow management 
US20040105388A1 (en) *  20021202  20040603  David Wilkins  Router node with control fabric and resource isolation therein 
US7346706B2 (en) *  20030502  20080318  Alcatel  Equivalent multiple path traffic distribution in communications networks 
US7606161B2 (en) *  20030627  20091020  Broadcom Corporation  Distributing information across equalcost paths in a network 
JP2005086460A (en) *  20030909  20050331  Nec Corp  Device and method for designing path, and program 
GB2421158B (en)  20031003  20070711  Avici Systems Inc  Rapid alternate paths for network destinations 
US7609705B2 (en) *  20040520  20091027  HewlettPackard Development Company, L.P.  Determination of a plurality of paths before selection of one path of the plurality of paths for transmission of one or more packets 
US7382734B2 (en) *  20040520  20080603  HewlettPackard Development Company, L.P.  Directing a path verification request along a specific path to a mesh network switch to test operability of the specific path 
US7463587B2 (en)  20050111  20081209  Alcatel Lucent  System and method for identifying precomputed paths in a policybased routing network 
US9306831B2 (en) *  20050214  20160405  Cisco Technology, Inc.  Technique for efficient load balancing of TELSPs 
US7889681B2 (en) *  20050303  20110215  Cisco Technology, Inc.  Methods and devices for improving the multiple spanning tree protocol 
US7529199B1 (en) *  20050531  20090505  Cisco Technology, Inc.  System and method for resolving conflicts in proxy routing information associated with multicast distribution trees 
US20070008949A1 (en) *  20050707  20070111  Nokia Corporation  Method for automatic route aggregation in a communication system 
US8027345B2 (en) *  20050727  20110927  Sharp Laboratories Of America, Inc.  Method for automatically providing quality of service 
JP4687332B2 (en) *  20050825  20110525  日本電気株式会社  Data signal transmission method of the OLT and the optical access network of an optical access network 
WO2007038856A1 (en) *  20051005  20070412  Nortel Networks Limited  Provider link state bridging 
US20070147255A1 (en)  20051223  20070628  Ozgur Oyman  Routing in wireless mesh networks 
GB0621508D0 (en)  20061030  20061206  Cotares Ltd  Method of and apparatus for generating routes 
US8094555B2 (en) *  20061127  20120110  Cisco Technology, Inc.  Dynamic weightedfair loadbalancing 
CN101785257B (en) *  20070301  20140723  极进网络有限公司  Software control plane for switches and routers 
JP4918900B2 (en) *  20070913  20120418  日本電気株式会社  Wireless multihop network, nodes, multicast routing method, and program 
US8953486B2 (en) *  20071109  20150210  Cisco Technology, Inc.  Global autoconfiguration of network devices connected to multipoint virtual connections 
US7911944B2 (en)  20071226  20110322  Nortel Networks Limited  Tiebreaking in shortest path determination 
US9444720B2 (en) *  20090505  20160913  Ciena Corporation  Method and apparatus for multicast implementation in a routed ethernet mesh network 
US8553562B2 (en)  20100908  20131008  Telefonaktiebolaget L M Ericsson (Publ)  Automated traffic engineering for multiprotocol label switching (MPLS) with link utilization as feedback into the tiebreaking mechanism 
Also Published As
Publication number  Publication date  Type 

US7911944B2 (en)  20110322  grant 
US20110128857A1 (en)  20110602  application 
JP5362743B2 (en)  20131211  grant 
JP5676710B2 (en)  20150225  grant 
EP2232792A1 (en)  20100929  application 
EP2232792A4 (en)  20120418  application 
KR20100112144A (en)  20101018  application 
CN101965715A (en)  20110202  application 
JP2011508555A (en)  20110310  application 
EP2582103A3 (en)  20130731  application 
US8699329B2 (en)  20140415  grant 
CA2742887A1 (en)  20100325  application 
US20090168768A1 (en)  20090702  application 
EP2582103A2 (en)  20130417  application 
CN101965715B (en)  20140611  grant 
CN103973566A (en)  20140806  application 
JP2014017842A (en)  20140130  application 
WO2010032081A1 (en)  20100325  application 
Similar Documents
Publication  Publication Date  Title 

Orda  Routing with endtoend QoS guarantees in broadband networks  
US8155028B2 (en)  Method and apparatus for providing full logical connectivity in MPLS networks  
US20030103449A1 (en)  Traffic engineering in bidirectional ring networks  
US20060268879A1 (en)  Quality of service aware robust link state routing for mesh networks  
US6757258B1 (en)  Method and apparatus for reducing OSPF flooding  
US7158486B2 (en)  Method and system for fast computation of routes under multiple network states with communication continuation  
US20100284309A1 (en)  Method and Apparatus for Multicast Implementation In a Routed Ethernet Mesh Network  
US20070165532A1 (en)  Techniques for detecting loopfree paths that cross routing information boundaries  
US20120300668A1 (en)  Generating a loopfree routing topology using routing arcs  
Rai et al.  IP resilience within an autonomous system: current approaches, challenges, and future directions  
US20110268118A1 (en)  Method for routing data packets using vlans  
US7099286B1 (en)  Method and system for finding shared risk diverse paths  
US20060133282A1 (en)  Systems and methods for multipath routing  
US7535828B2 (en)  Algorithm for backup PE selection  
US20030023750A1 (en)  Control method for data path loadbalancing on a data packet network  
US20120300669A1 (en)  Topologybased consolidation of link state information  
US20070002770A1 (en)  Mechanism to load balance traffic in an ethernet network  
US20040193729A1 (en)  Routing scheme based on virtual space representation  
US20050259649A1 (en)  System and method for implementing multiple spanning trees per network  
US20050259646A1 (en)  Virtual network device clusters  
US20030043756A1 (en)  System and method for deadlockfree routing on arbitrary network topologies  
Feigenbaum et al.  Mechanism design for policy routing  
US20090161584A1 (en)  Method for a root path calculation in a shortest path bridge  
US20070258390A1 (en)  System and method for running a multiple spanning tree protocol with a very large number of domains  
US20110228788A1 (en)  Alternate down paths for directed acyclic graph (dag) routing 
Legal Events
Date  Code  Title  Description 

AS  Assignment 
Owner name: RPX CLEARINGHOUSE LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ROCKSTAR CONSORTIUM US LP;ROCKSTAR CONSORTIUM LLC;BOCKSTAR TECHNOLOGIES LLC;AND OTHERS;REEL/FRAME:034924/0779 Effective date: 20150128 