CA2256938A1 - Mechanism for network routing - Google Patents

Mechanism for network routing Download PDF

Info

Publication number
CA2256938A1
CA2256938A1 CA002256938A CA2256938A CA2256938A1 CA 2256938 A1 CA2256938 A1 CA 2256938A1 CA 002256938 A CA002256938 A CA 002256938A CA 2256938 A CA2256938 A CA 2256938A CA 2256938 A1 CA2256938 A1 CA 2256938A1
Authority
CA
Canada
Prior art keywords
cost
nodes
node
stack
buffer
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
Application number
CA002256938A
Other languages
French (fr)
Inventor
Jiri Soukup
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CODE FARMS Inc
Original Assignee
CODE FARMS Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CODE FARMS Inc filed Critical CODE FARMS Inc
Priority to CA002256938A priority Critical patent/CA2256938A1/en
Priority to CA002266878A priority patent/CA2266878A1/en
Publication of CA2256938A1 publication Critical patent/CA2256938A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/124Shortest path evaluation using a combination of metrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/121Shortest path evaluation by minimising delays

Abstract

This invention relates to improvements in the manner in which data is routed through a data network. Specifically, an improved method for updating the status of nodes and thereby determining an optimal data route in a network is defined, where a cost is associated with each node, optimal routes are already known and there are only one or a few links which change. The method of determining the optimum path between a source node and all destination nodes comprises: assigning an infinite cost to nodes whose optimal path runs through a disconnected link or through a link whose cost has increased; and starting an expansion process with any of: (i) the nodes which are neighbors with those that have an infinite cost; (ii) the starting nodes of links whose cost has either increased or decreased; and (iii) the starting nodes of new links. In this way a new set of optimum paths to the source node is determined.

Description

MECHANISM FOR NETWORK ROUTING
OF THE INVENTION
This invention relates to the field of route determination through a data network.
BACKGROUND TO THE INVENTION
When data is to be routed through a network such as the Internet, each network node maintains information about the currently active network nodes and through which links they are connected. This information is stored in a local database, sometimes called the Link-State Database (LSDB).
This database must reflect how the network dynamically changes as new nodes and connections are introduced, and other nodes or connections fail or are taken out of service.
Dozens of different protocols are currently being used to distribute this information so that all nodes can build their own image of the current network. Each node monitors the quality of its connections to its adjacent neighbors, and if there is any change, the node broadcasts a Link-State Advertisement (LSA). Besides some other information, the LSA includes the identification (ID) of the originating node, and the list of currently active links as a target node identification and an associated cost e.g.
(targetNodeId, metric).
The Link-State Database (LSDB) is a collection of LSAs which provides a fast access to LSAs by the IDs of their originating nodes, usually using a hash table or AVL tree.
Links are directional, and may have a different cost in each direction.
Figure 1A illustrates a network comprised of nodes 100 (represented by example nodes n1 - n5), with links 103 between them. A link cost is shown next to each of the links.
Figures 1B and 1C illustrate LSAs with respect to source nodes n1 and n3 respectively. The link cost between nodes n1 and n2 is shown as 1, the link cost between node n1 and node n3 is shown as 4, etc. In the LSA table shown in Figure 1C, the link cost between node n3 and n1 is shown as 5, (which link is in the opposite direction than the link between nodes n1 and n3).
At regular intervals (typically once each second), each node calculates the minimum cost (= minimum total metric) paths to all other nodes, and stores the result in the routing table. The routing table describes not the complete paths, but only the first hop for each optimal path. Note that for simplicity of representation, in Figures lA, 2A, 7A
and 8A arrowheads at the end of the links indicate unidirectional connections (e.g. are all connections in Figure 1A), lines without arrowheads represent bidirectional connections with the same cost in both directions (e.g. the connection between n7 and n6 in Figure 2A). Both unidirectional and bidirectional connections can also be marked with an arrowhead in the middle of the line, which indicates that the connection is on a shortest path to the source node, and shows which way the shortest path runs (e. g. the arrows on the line between n3 and n1 in Figure 2A) .
The mechanism of finding the routing table, and the internal storage of the required data is critical for making the entire network efficient. This mechanism is processor (CPU) intensive, and it is repeated frequently (typically every second). Most implementations follow the logic of the procedure described by E.W. Djikstra in the paper "A Note On Two Problems In Connection With Graphs", Numerishe Mathematik, vol. 1, 1959, pp. 269-271. This procedure has been proven to be fastest possible in the theoretical sense.
In the Djikstra procedure, with reference to the
2 network shown in Figure 2A and the stack and routing table of Figures 2B and 2C respectively, the source node (n1 in column 1 in Figure 2A, has cost 0. A stack of nodes is retained in column 2 which have a potential to improve the cost of their neighbors; in the beginning only the source node is in this stack. The procedure repeats the following steps (which may be observed from Figure 2B, and stops when the stack is empty:
- Remove the node with the minimum cost from the stack.
- Test whether the cost of all its neighbors can be improved, and if it can be, record the neighbor's traceback, and add to the stack.
It will be noted that the minimum cost node n5 (which has a cost of 1) has been removed from the second column of IS the stack to derive the third column; the minimum cost node n3 with cost = 2 has been removed from the third column of the stack to derive the third column, and so on.
When this procedure is finished, the minimum cost path from the source node n1 to any node nx can be found, by starting from nx and following the tracebacks back to n1.
The routing table shown in Figure 2C lists in the second row, the first hop node along the minimum cost path from the source node n1 to any other node, listed in the first row.
However, the above described procedure has exhibited several problems:
For example, the calculation of the routing table is not part of the procedure described by Djikstra, but it is required for routing of networks. The intuitive procedure (finding all shortest paths, each time recording the first hop) is not efficient. In the worst case (all nodes connected in one long line) it requires the order of O(N*N) steps, where N is the number of nodes.
The Djikstra procedure is theoretically optimal and of
3 complexity O(L*log N) where L is number of links, and N is number of nodes, but in practice retrieval of complex data and its processing and manipulation may overshadow the complexity of the theoretical mechanism.
The basic procedure depends on finding which node in the stack has the smallest cost. The best procedures (binary heap, AVL trees) solve this problem in O(log N) time, which is the reason why the Djikstra procedure requires 0(L*logN) time. If the node with the smallest cost can be found faster (and I will show that this is possible under commonly valid conditions) the Djikstra procedure can be performed in a significantly shorter time.
While the Djikstra procedure is optimal when solving a completely new network problem, it does not deal with situations in which the optimal routes are already known, and in which only one or a few links change. Routers in existing networks simply repeat the entire calculation, instead of taking advantage of many routes remaining the same.
SUMMARY OF THE INVENTION
In accordance with one of the embodiments of the present invention a routing table can be set up in only O(N) steps, which represents a substantial decrease from the number of steps of the prior art.
In accordance with another embodiment, when most of the costs assigned to individual links are relatively small integers (which is the case in computer networks), the next node to expand can be found by index lookup without even partial sorting. This provides a substantial increase in speed.
In accordance with two of the embodiments of the invention, methods of rearrangement of the supporting data and the routing procedure are described so that the routing
4 calculation uses the information from the previous optimization, and is therefore faster than the Djikstra procedure.
This invention is comprised of four embodiments which, applied independently or jointly, significantly speed up the calculation of routing tables in a computer network, by:
(a) provision of a circular buffer in which each entry corresponds to one possible cost value, and points to a section of a sorted linked list which stores the nodes to be processed.
(b) provision of an incremental routing procedure which, in subsequent steps, does not initialize the cost of all nodes to infinity, but increases the former costs by 1, and then sets the cost to infinity for only those nodes whose former routing path leads through a link which has been disabled or has a higher cost now. Then the routing starts with only the source node in the list of nodes to be processed.
(c) provision of an incremental routing procedure which, in subsequent steps, does not initialize the cost of all nodes to infinity, but does that only for those nodes whose former routing path leads through a link which has been disabled or has a higher cost now. The costs of all other nodes remain as left from the previous step. Then, those neighbors of nodes with infinite cost which themselves do not have infinite cost are placed into the list of nodes to be processed. Starting nodes of links whose cost has changed up or down, and of new links that have been added to the network are also placed into the same list.
(d) provision of a mechanism for determining a routing table which follows the tracebacks not always to the source node, but only to the first node which is already recorded in the routing table. While tracing the path, the mechanism
5 keeps a collection of all nodes encountered along the path, and when the tracing stops, the routing table for all these nodes is set to the same value.
In accordance with an embodiment of the invention, a method of determining a circular buffer and an associated stack list for a network comprised of nodes, each node having an associated cost, comprises:
(a) placing references to nodes that must expand into a subsection of the stack list (sublist) which corresponds to their cost, (b) each sublist being devoid of any order, whereby the cost of nodes within each sublist may differ by multiples of buffer index range, (c) using the position in the circular buffer as the indication of cost, and storing there a reference (pointer) to the sublist associated with that particular cost, (d) expanding those nodes listed in the stack that have a cost equal to a cost currently represented by its buffer entry entry, while skipping nodes that are in the same sublist but have higher costs, and expanding those nodes that are possible to be expanded to adjacent nodes, comparing the costs of the adjacent nodes with new costs equal to the cost of the expanded node plus the cost of the link to the adjacent node, and thereby testing whether the cost of the adjacent node can be improved by routing through the expanding node, (e) placing references to those nodes which have just had their costs improved into the stack sublist associated with their new cost, which is the sublist pointed to by a pointer in the buffer index determined by the numerical remainder of the new cost divided by the buffer index range, and (f) once a sublist pointed to by a pointer in the buffer has been processed, incrementing the cost for which the same
6 location is used by the buffer index range.
In accordance with another embodiment, a method of establishing a first hop entry in a routing table for each of plural destination nodes comprises:
(a) starting with a null entry for the first hop of all destination nodes in the routing table, (b) traversing the shortest paths from all destination nodes, (c) but stopping when encountering a node which already has the routing table entry which is not null, or which is the last one before reaching the source node, and (d) then assigning the same first hop to all the nodes on the path currently traversed, whereby the routing table indicating the first hop on the route to all destination nodes is established.
In accordance with another embodiment, a method of determining an optimum path between a source node and all destination nodes in a previously routed network where some nodes or links have changed, comprises:
(a) assigning an infinite cost to destination nodes whose former optimal path to a source node leads through a link whose count has increased or which is not operational, disconnected link or through a link whose cost has increased, (b) incrementing a cost of non-infinite cost nodes by one, and (c) starting from the source node, expanding nodes in the same manner as when routing the network for the first time, whereby new optimum paths between the source node and all other nodes are determined.
In accordance with a further embodiment of the invention, a method of determining an optimum path from a source node to all destination nodes in a previously routed
7 network where some nodes or links have changed, comprises:
(a) assigning an infinite cost to destination nodes whose optimal paths lead through a disconnected link or through a link whose cost has increased, (b) detecting all nodes which are adjacent to all the nodes that now have infinite costs, and placing references to the adjacent nodes into a stack list, under a sublist associated with costs of the adjacent nodes, (c) placing into the stack list references to starting nodes of the links whose cost is not infinite, and has decreased or increased, (d) placing into the stack list starting nodes of all new links, and then (e) expanding the nodes from the stack list in the order of increasing cost, using the same procedure as when routing the network for the first time, whereby the new optimum paths from the source node to all other nodes are determined.
In accordance with another embodiment, a method of determining a stack list for a network comprised of references to nodes, each node having an associated cost, comprises:
(a) listing references to nodes that must expand in a circular stack depending on their cost at a time of the inclusion to the list, (b) maintaining the stack sorted by the reminder of the cost, after dividing it by the buffer index range for a circular buffer, with nodes having equal reminders being grouped into sublists, (c) listing a sequence of consecutive costs in the circular buffer, which also stores pointers to the tails of the associated stack sublist, and which provides a convenient index entry for sorting the stack without
8 searching, (d) expanding each node listed in the stack by adding a link cost from the expanding node to each neighboring node and the cost of the node to be expanded, and thereby determining a potential cost of a neighboring node, and accepting this cost if it is smaller than the original cost of the neighboring node, (e) placing references to neighboring nodes whose costs have improved into the stack at a sublist location which sublist is pointed to by a pointer listed at a buffer index determined by the numerical remainder of the neighboring node cost divided by the buffer index range, and (f) once a sublist pointed to by a pointer in the buffer has been expanded, incrementing the cost in the buffer at the index associated with this pointer.
In accordance with another embodiment, a method of determining a routing table for a network comprised of nodes, comprises:
(a) establishing a null first hop entry in a routing table for each of plural destination nodes, (b) traversing the network from all destination nodes to a source node, or until reaching the first node with a non-zero first hop, (c) determining which node is only a single (first) hop from the source node, and (d) assigning a value of the first hop node to each node traversed from the destination node up to the node where the traversal stopped, whereby the routing table indicating routes between a source node and particular destination nodes is established.
In accordance with another embodiment, a method of determining an optimum path between a source node and all destination nodes in a network of nodes, comprises:
9 (a) assigning an infinite cost to destination nodes whose optimal path to a source node leads through a disconnected link or through a link whose cost has increased, (b) incrementing the cost of non-infinite cost nodes by one, and (c) processing and expanding nodes to their neighbors beginning with the source node, whereby a new set of optimum paths to the source node is determined.
In accordance with a further embodiment, a method of determining an optimum path between a source node and all destination nodes in a network, comprises:
assigning an infinite cost to nodes whose optimal path runs through a disconnected link or through a link whose cost has increased, and then starting the expansion process with any of: (i) the nodes which are neighbors with those that have an infinite cost but which themselves do not have an infinite cost, (ii) the starting nodes of links whose cost has either increased or decreased, and (iii) the starting nodes of new links, thereby to determine a new set of optimum paths to the source node.
It should be noted that when describing a network in this specification, what is meant is an image of the network in a computer, i.e. as described by various software and numerical parameters.
The following terms are used in the specification, and are defined as follows:
"Adjacent destination nodes" means nodes to which there is a direct link form the given node; the link is associated with a cost.
"Adjacent originating nodes" means nodes from which there is a direct link to the given node; the link is associated with a cost.
"Link cost" means the cost or penalty associated with a direct transmission of data from one node to another.
"Source node" is the node for which the routing calculation is being performed, where usually the lists and buffers reside. This is the node whose routing the invention determines.
INTRODUCTION TO THE DRAWINGS
A better understanding of the invention may be obtained by reading the detailed description of the invention below, in conjuncti on with the following drawings, in which:

Figure 1A is a diagram of a network, Figures 1B and 1C are Link-State Advertisements issued from example node n1 and node n3 respectively of the network of Figure 1A , Figure 2A is a diagram of a network, Figure 2B shows the evolution of a stack needed for the routing of t he network from Figure 2A, Figure 2C is a routing table derived for the network of Figure 2A, Figure 3 is an example of a circular stack, Figure 4 is an example of a circular buffer with pointers to the stack of Figure 3, Figure 5A is a diagram illustrating some neighboring nodes to sou rce node n1, Figure 5B is a link cost table for the diagram of Figure 5A, Figure 6 is an example of the circular buffer and stack of Figure 4 after expanding node 1n from Figure 5A, Figure 7A is a representative network, Figure 7B is a routing table derived with respect to the network of Figure 7A, Figure 8A is a sample network, and Figure 8B describes the cost changes when incrementally routing the network of Figure 8A.
DRTAIT_,ED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
All figures demonstrate the invention on simple networks with several nodes. Real networks usually consist of thousands of nodes.
A method for determining a routing table in accordance with an embodiment of the invention will now be described, with reference to Figure 3.
A circular singly or doubly linked (linked in both directions) stack list 201 is established and contains references (pointers) 203 to nodes. Nodes 208 are identified by number, e.g. n1, n8, n10, and are associated with a cost value for each. The node number refers to the IS physical node itself and has no relation to the order in which the nodes are arranged or processed. The stack is sorted using function f=REM(cost,bSz), where bSz is a given number, and cost is the cost of the node at the time when the reference was added to the stack. As the cost of a node changes during the routing process, there can be several references to the same node, for example to n19 in Figure 3.
The cost associated with the node 208 is always the minimum of all the costs encountered during the process. For bSz=6, REM(138,6)=0, REM(139,6)=1, REM(134,6)=2, REM(135,6)=3, REM(136,6)=4, REM(137,6)=5. This naturally leads to the stack being composed of sublists 204, with nodes in each sublist related to the same cost, or at least to the same cost function.
With reference to Figure 4, buffer 205 has exactly bSz pointers 207 to references 203 inside the stack 201. The entry in the buffer with index bufInd is assigned to all costs that satisfy the condition bufInd=REM(cost,bSz). Thus for example, at the situation depicted in Figure 4, index 0 corresponds to cost 138, index 1 corresponds to cost 139, index 2 corresponds to cost 134, index 3 corresponds to cost 135, etc. When all nodes with cost 134 expand, index 2 will be used for the next higher cost, which is 134+ bS2 = 134 + 6 = 140.
The entry at bufInd=2 has a pointer to a sublist 204 inside the stack list 201. The cost function REM(cost,bSz) was identical for all nodes within the sublist at the time when they entered the stack. For example, bufInd=2 points l0 to sublist (nl,n8), where both nodes have cost 134 and f=REM(134,6)=2.
There may be no nodes associated with certain cost values. For example in Figures 3 and 4, no nodes entered the stack with cost 136.
The routing procedure described above requires references 203 to be frequently added or removed from the stack, which is the situation where a doubly linked list is usually employed. However, since the nodes are processed and removed in the order in which they are stored in the stack, and since the buffer entries 207 point to the tails of individual sublists 204 (and not to their heads), the singly linked list is equally fast to connect or disconnect.
The singly linked list is also used in all the illustrations for the purpose of easier understanding of this embodiment of the invention.
Figure 5A shows a subnetwork of nodes which, continuing in the example from Figure 4, are linked to node n1, the next node to expand. The table in Figure 5B shows all the costs, and also the nodes whose cost improves. For example, the cost of n30 can be improved to 134 + 40 = 174 which is better than the old cost (infinity). On the other hand, the cost of n14 could only be improved to 134 + 4 = 137 which is equal to the old cost. Therefore there is no improvement for node n14. When reaching a node 208 which has cost bigger than the current cost from the current buffer entry, the node is not expanded and is left in the stack to be processed later.
Nodes whose cost have improved must be added to the stack. After node n1 expands, the reference to n1 must be removed from the stack. Figure 6 shows the resulting situation. For example, when the cost of node n23 is improved to 135, the reference to it should be inserted to the tail of the sublist 203 for the index REM(135,6) - 3.
The value of 135/6 is 22 and the remainder is 3. Using the remainder guarantees the circular reuse of the buffer.
Node n30 should be inserted to the sublist with index REM(174,6) - 0, which is at the moment used primarily for cost 138. When the expansion process reaches bufInd=O
(cost = 138) and the reference to node n30 (cost = 174), it will detect that the two costs do not match, and therefore will not expand n30, will retain it in the stack, and will prO~e~c~--tO the--next eTitiy -Zn--the--node, - namEriy the- r!~fE:.iBW:c to n16. The similar situation repeats when the expansion reaches bufInd=0 with cost=138+6, then 138 + 12, and so on, until finally n30 should expand when bufInd=0 corresponds to cost 174.
The changes in the stack and buffer can be seen by comparing Figures 4 and 6. For example, in Figure 6 two entries for cost=136 (n17 and n22) have been added, n1 has been removed from the stack, and n8 expands next. Also note the new nodes in the indSuf=0 sublist (n30 and n16).
After n8 expands, the entry for bufInd=2 will be empty, and this entry should be assigned the new cost, 134+6=140.
Thus if the link costs normally are smaller than the buffer size bSz, then the stack list is straightforward to sort and order.

The increments of the buffer index bufInd and of the cost associated with that index should be 1; if bufInd = a and is associated with cost c = b, then bufInd = a + 1 will be associated with c = b + 1. The buffer entry associated with cost c will be successively cost = c + bSz, then cost =
c + 2*bSz, and so on. For example, the buffer entry with buffer index bufInd = 4 and cost c = 136 with buffer size bSz = 6 will, with every successive traversal of the circular buffer, be associated with c = 136; 136 + 6 = 142;
136 + 6*2 = 148; 136 + 6*3 = 154, etc. This property makes it simple to determine which buffer index must be used to store a node with a specified cost, as long as the buffer size is fixed and known.
It has been determined that the complexity of the procedure has been decreased relative to previous procedures from O(L*log N) to O(L).
The above method may be improved by, in addition to use of a circular buffer, use of more traditional data structures suitable for sorting, such as binary heaps or AVL
trees, when expanding through a node with link costs larger than the buffer size.
Once the stack has been completely expanded as described herein, the routing table and LSA can be established in a well known manner. It is preferred, however, to use the embodiment to be described below to establish a routing table.
A representative network is illustrated in Figure 7A, and a corresponding routing table is illustrated in Figure 7B. The routing table lists each of the nodes n2 - n11 to which a communication path is to be established (destination nodes) from node n1 (the source node). In the first row of the table (labeled "To node" each of the destination nodes is listed. The identity of the "first hop", i.e. the identity of the first node which must be traversed to reach a given destination node is shown.
To begin the method, the value of the first hop for all nodes is set as 0 (not shown). Then the shortest path from each destination node is traversed, gathering information about nodes it traverses, until it reaches the source node or until it reaches a non-zero first hop value. Then it assigns the same first hop to all the nodes traverses.
Thus in the example shown, the source node is nl.
Assume that we start with node n2. The order in which we process the nodes is irrelevant. Node nl is traversed, following the arrows marking the shortest path toward n1 in Figure 7A. Successively nodes n2, n3, n4 and n1 are reached. Thus from node nl to any of nodes n2, n3 and n4, node n4 is the first node which must be passed. The value of 0 is thus changed in the first hop columns of the routing table for nodes n2, n3 and n4.
If the next destination node from node nl is n5, traversal of the network ends at node n2 since it already has the first hop value which is non-zero. Since it is already known what is the first node to be visited to arrive at node n2 (i.e. node n4), and since node n5 has been determined to be connected to node n2, the same first hop value of node n2 (i.e. node n4) is assigned to node n5.
The first hop values of each of the destination nodes is similarly determined. It may be seen that the first hop values for node n10 and n7 are n10 (a signal from node n1 having to pass node n10 to node n7, the first hop value of each of nodes n8 and n9 is n8, and the first hop value of node n11 is n11. The routes are illustrated by the arrowheads on the links.
It has been determined that the complexity of this operation described above has been decreased from O(N*N) to O(N), which saves considerable processing load.
Figure 8A illustrates a network of nodes for which least processing time is to be established to determine an optimum communication path between a source node and a destination node. In the prior art noted earlier, Dijkstra assigns an infinite cost to all nodes, and then finds the optimum path between nodes by expanding to neighbors.
In the present embodiment, the uniform initial assignment of all node costs to infinity is avoided.
Infinite cost is assigned only to nodes at the end of links which have been disconnected, or whose cost has increased.
In accordance with this embodiment of the invention, the cost of all other nodes, excluding also the source node (e. g. node n1) is incremented by one.
After assigning an infinite cost to the nodes whose minimum cost path to n1 leads through a disconnected or increased cost link, the source node is entered into a list of nodes to be processed and expanded. Once the source node has been processed, nodes from the stack are processed and this expansion continues until the stack is empty.
The incrementing of the cost by one is performed to force whatever routing method which is chosen, to traverse all critical node links. If this were not done, then the routing expansion may bypass a link whose cost has been changed, but which is surrounded by links and nodes whose cost had not changed.
In accordance with another embodiment, expansion does not start from the source node, but instead from a set of nodes which bound areas in which there has been a change in the link cost. In this case, the nodes that are set to be processed are:
(1) neighbors of nodes which have been assigned an infinite cost but which themselves do not have an infinite cost, (2) starting nodes of links whose cost has either increased or decreased, or (3) starting nodes of new links.
In the example of Figure 8A, the link labeled A
represents one with an increased cost, the link labeled B
represents a new link, the link labeled C represents one with a decreased cost, and the link labeled D represents an interrupted link, e.g. link between node n4 and node n1 has been severed. Also it may be seen that the link between node n8 and node n7 has a decreased cost and the link between node n12 and node n11 has an increased cost. There is also a new link between nodes n1 and n8.
In both of the latter embodiments of the invention, IS a table shown in Figure 8B lists in the first row each of the possible destination nodes from node n1. In the second row, the original trace from each destination node toward the source node is listed. Thus for example, the trace from node n2 toward n1 is node n12, the trace from node n3 is node n4, the trace from node n13 is node n12, etc. (see the arrowhead directions on the links).
However, it is noted that the trace from node n4 is now interrupted. No node is entered as its trace.
In the third row, labeled "cut off", the paths which lead through the interrupted link from node n1 to node n4 have no entries.
In the fourth row, the original optimal node costs are listed. In the fifth row, the new node costs before starting the expansion procedure are listed, with the cut-off nodes having infinite costs.
Thus nodes n3, n4, n5, n6 and n7 are assigned an infinite cost, since their optimum path passes through the interrupted link between nodes n4 and n1.

In accordance with the first of the latter two embodiments, the stack of nodes to be processed initially contain only the source node nl. All of the costs associated with the other nodes are incremented by one.
Thus in the row labeled "new cost (1)", each of the costs shown have been given the value "1" greater than the original cost.
Then node nl is processed. As may be seen in Figure 8A, there are links from node ni to nodes n11, n12 and n8.
Using the first sorting embodiment method described above, nodes n12, nll and n8 are in turn expanded. Continued expansion and processing provides a new link and link cost structure for the network.
In accordance with the second of the latter two embodiments, instead of starting from node n1, the stack list of nodes to be considered to be processed comprises those nodes bordering on the changed link values. First we add to the stack nodes adjacent to nodes with an infinite cost, but themselves not having a finite cost. This adds nodes n2, n8, n9.
In the second step, we add starting nodes of the links whose costs had changed: n7, n8, nll, n12. We add both n11 and n12 because this is a bi-directional link. In the third step, we add starting nodes of new links - only n1 because n8 is already on the list.
The bottom part of Figure 8B - under stack (2) -shows the nodes that have to be inserted into the stack due to the various link modifications. For example, new bi-directional link B requires insertion of n1 and n8 into the stack, nodes n2, n8, n9 are neighbors of nodes with the infinite costs, etc. All together, nodes nl, n2, n8, n9, n11, n12 form the starting set from which to expand.
Even though these are almost all nodes with finite costs in this small example, the routing task set up in this manner requires less time when dealing with large, complex networks. The reason is that the overall number of expansions has been significantly decreased.
A list of nodes which start the expansion for the new configuration and routing of the network has thus been derived. Processing and sorting of the list of nodes can then proceed using the first embodiment described, or using any other sorting and routing method.
A person understanding the above-described invention may now conceive of alternative designs, using the principles described herein. All such designs which fall within the scope of the claims appended hereto are considered to be part of the present invention.

Claims (18)

I claim:
1. A method of determining a stack list for a network comprised of references to nodes, each node having an associated cost, comprising:
(a) listing references to nodes that must expand in a circular stack depending on their cost at a time of the inclusion to the list, (b) maintaining the stack sorted by the reminder of the cost, after dividing it by the buffer index range for a circular buffer, with nodes having equal reminders being grouped into sublists, (c) listing a sequence of consecutive costs in the circular buffer, which also stores pointers to the tails of the associated stack sublist, and which provides a convenient index entry for sorting the stack without searching, (d) expanding each node listed in the stack by adding a link cost from the expanding node to each neighboring node and the cost of the node to be expanded, and thereby determining a potential cost of a neighboring node, and accepting this cost if it is smaller than the original cost of the neighboring node, (e) placing references to neighboring nodes whose costs have improved into the stack at a sublist location which sublist is pointed to by a pointer listed at a buffer index determined by the numerical remainder of the neighboring node cost divided by the buffer index range, and (f) once a sublist pointed to by a pointer in the buffer has been expanded, incrementing the cost in the buffer at the index associated with this pointer.
2. A method as defined in claim 1 in which the increment in step (f) is the buffer index range.
3. A method as defined in claim 2, including maintaining each node in the stack unexpended in the event its cost is in excess of costs within the cost range of the buffer, and subsequently expanding each respective unexpended node once the range of the buffer includes the cost of the respective unexpended node.
4. A method of determining a routing table for a network comprised of nodes, comprising:
(a) establishing a null first hop entry in a routing table for each of plural destination nodes, (b) traversing the network from a destination node to a source node, (c) determining which node is only a single (first) hop from the source node, and (d) assigning a value of the first hop node to each node traversed from the destination node to the source node, whereby the routing table indicating routes between a source node and particular destination nodes is established.
5. A method as defined in claim 4, further including (e) traversing the network from another destination node toward the source node until a non-null first hop routing table value is reached, and (f) assigning this first hop non-null value to all nodes traversed on this path.
6. A method as defined in claim 5, including repeating steps (e) and (f) for each node in the network which has a null first hop value.
7. A method of determining an optimum path between a source node and all destination nodes in a network of nodes whose configuration or link costs have changed, comprising:
(a) assigning an infinite cost to destination nodes whose optimal path to a source node leads through a disconnected link or through a link whose cost has increased, (b) incrementing the cost of non-infinite cost nodes by one, and (c) processing and expanding nodes to their neighbors beginning with the source node, whereby a new set of optimum paths to the source node is determined.
8. A method of determining an optimum path between a source node and all destination nodes in a network whose configuration or link costs have changed, comprising:
assigning an infinite cost to nodes whose optimal path runs through a disconnected link or through a link whose cost has increased, and then starting the expansion process with any of: (i) the nodes which are neighbors with those that have an infinite cost but which themselves do not have an infinite cost, (ii) the starting nodes of links whose cost has either increased or decreased, and (iii) the starting nodes of new links, thereby to determine a new set of optimum paths to the source node.
9. A method as defined in claim 7 in which the processing and expanding step comprises:
(a) listing references to nodes that must expand in a circular stack in conjunction with an associated cost, (b) maintaining the stack sorted by the remainder of cost, with nodes having similar costs being grouped into sublists, (c) listing a sequence of consecutive costs in a circular buffer, those costs of the circular buffer which correspond to costs of the sublist having pointers to tails of the respective sublists of the stack having said corresponding costs, (d) expanding each node listed in the stack by adding a link cost from the expanding node to each neighboring node and the cost of the node to be expanded, and thereby accepting this cost if it lowers the cost of a neighboring node, (e) placing references to those nodes whose cost improved in the stack at a sublist location which sublist is pointed to by a pointer listed at a buffer index determined by the numerical remainder of the neighboring node cost divided by the buffer index range, and (f) once a sublist pointed to by a pointer in the buffer has been expanded, incrementing the cost in the buffer at the index associated with the pointer to the expanded sublist.
10. A method as defined in claim 9, in which the increment in step (f) is the buffer index range.
11. A method as defined in claim 10, including maintaining each node in the stack unexpended in the event its cost is in excess of costs within the cost range of the buffer, and subsequently expanding each respective unexpended node once the range of the buffer includes the cost of the respective unexpended node.
12. A method as defined in claim 8 in which the processing and expanding step comprises:
(e) listing references to nodes that must expand in a circular stack in conjunction with an associated cost, (f) maintaining the stack sorted by the remainder of the cost, with nodes having similar costs being grouped into sublists, (g) listing a sequence of consecutive costs in a circular buffer, those costs of the circular buffer which correspond to costs of the sublist having pointers to tails of the respective sublists of the stack having said corresponding costs, (h) expanding each node listed in the stack by adding a link cost from the expanding node to each neighboring node and the cost of the node to be expanded, and thereby determining a new cost of a neighboring node, and accepting this cost if it is lower than the original cost, (i) placing references to neighboring nodes whose cost decreased in the stack at a sublist location which sublist is pointed to by a pointer listed at a buffer index determined by the numerical remainder of the neighboring node cost divided by the buffer index range, and (j) once a sublist pointed to by a pointer in the buffer has been expanded, incrementing the cost in the buffer at the index associated with the pointer to the expanded sublist.
13. A method as defined in claim 12, in which the increment in step (j) is the buffer index range.
14. A method as defined in claim 13, including maintaining each node in the stack unexpanded in the event its cost is in excess of costs within the cost range of the buffer, and subsequently expanding each respective unexpanded node once the range of the buffer includes the cost of the respective unexpanded node.
15. A method of determining a circular buffer and an associated stack list for a network comprised of nodes, each node having an associated cost, comprising:
(a) placing references to nodes that must expand into a subsection of the stack list (sublist) which corresponds to their cost, (b) each sublist being devoid of any order, whereby the cost of nodes within each sublist may differ by multiples of buffer index range, (c) using the position in the circular buffer as the indication of cost, and storing thereat a reference (pointer) to the sublist associated with that particular cost, (d) expanding those nodes listed in the stack that have a cost equal to a cost currently represented by its buffer entry, while skipping nodes that are in the same sublist but have higher costs, and expanding those nodes that are possible to be expanded to adjacent nodes, comparing the costs of the adjacent nodes with new costs equal to the cost of the expanded node plus the cost of the link to the adjacent node, and thereby testing whether the cost of the adjacent node can be improved by routing through the expanding node, (e) placing references to those nodes which have just had their costs improved into the stack sublist associated with their new cost, which is the sublist pointed to by a pointer in the buffer index determined by the numerical remainder of the new cost divided by the buffer index range, and (f) once a sublist pointed to by a pointer in the buffer has been processed, incrementing the cost for which the same location is used by the buffer index range.
16. A method of establishing a first hop entry in a routing table for each of plural destination nodes comprising:
(a) starting with a null entry for the first hop of all destination nodes in the routing table, (b) traversing the shortest paths from all destination nodes, (c) but stopping when encountering anode which already has the routing table entry which is not null, or which is the last one before reaching the source node, and (d) then assigning the same first hop to all the nodes on the path currently traversed, whereby the routing table indicating the first hop on the route to all destination nodes is established.
17. A method of determining an optimum path between a source node and all destination nodes in a previously routed network where some nodes or links have changed, comprising:
(a) assigning an infinite cost to destination nodes whose former optimal path to a source node leads through a link whose count has increased or which is not operational, disconnected link or through a link whose cost has increased, (b) incrementing a cost of non-infinite cost nodes by one, and (c) starting from the source node, expanding nodes in the same manner as when routing the network for the first time, whereby new optimum paths between the source node and all other nodes are determined.
18. A method of determining an optimum path from a source node to all destination nodes in a previously routed network where some nodes or links have changed, comprises:
(a) assigning an infinite cost to destination nodes whose optimal paths lead through a disconnected link or through a link whose cost has increased, (b) detecting all nodes which are adjacent to all the nodes that now have infinite costs, and placing references to the adjacent nodes into a stack list, under a sublist associated with costs of the adjacent nodes, (c) placing into the stack list references to starting nodes of the links whose cost is not infinite, and has decreased or increased, (d) placing into the stack list starting nodes of all new links, and then (e) expanding the nodes from the stack list in the order of increasing cost, using the same procedure as when routing the network for the first time, whereby the new optimum paths from the source node to all other nodes are determined.
CA002256938A 1998-12-23 1998-12-23 Mechanism for network routing Abandoned CA2256938A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CA002256938A CA2256938A1 (en) 1998-12-23 1998-12-23 Mechanism for network routing
CA002266878A CA2266878A1 (en) 1998-12-23 1999-03-25 Incremental network routing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CA002256938A CA2256938A1 (en) 1998-12-23 1998-12-23 Mechanism for network routing

Publications (1)

Publication Number Publication Date
CA2256938A1 true CA2256938A1 (en) 2000-06-23

Family

ID=29425889

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002256938A Abandoned CA2256938A1 (en) 1998-12-23 1998-12-23 Mechanism for network routing

Country Status (1)

Country Link
CA (1) CA2256938A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9118593B2 (en) 2010-10-07 2015-08-25 Enghouse Networks Limited System and method for best value routing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9118593B2 (en) 2010-10-07 2015-08-25 Enghouse Networks Limited System and method for best value routing

Similar Documents

Publication Publication Date Title
US7072304B2 (en) Network path selection based on bandwidth
CA2417864C (en) Method and apparatus for selecting maximally disjoint shortest paths in a network
CN101388030B (en) Database and database processing methods
US6467019B1 (en) Method for memory management in ternary content addressable memories (CAMs)
KR100441317B1 (en) Method and apparatus for classifying data packets
US6633548B2 (en) Method and apparatus for ternary content addressable memory (TCAM) table management
US8090901B2 (en) TCAM management approach that minimize movements
US5909440A (en) High speed variable length best match look-up in a switching device
JP3735471B2 (en) Packet relay device and LSI
US7664040B2 (en) Method of accelerating the shortest path problem
US20040133590A1 (en) Tree data structure with range-specifying keys and associated methods and apparatuses
US6098157A (en) Method for storing and updating information describing data traffic on a network
WO2000024159A2 (en) Method and apparatus for address lookup
EP0948849A2 (en) High speed variable length best match look-up in a switching device
CN107431660B (en) Search device, search method, and recording medium
US20050083937A1 (en) IP address lookup method using pipeline binary tree, hardware architecture, and recording medium
US7460538B2 (en) Communication control apparatus and method for searching an internet protocol address
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
US20030023581A1 (en) Method and system for performing a longest prefix match search
JP2003224581A (en) Longest match retrieval circuit, its method, its program, and recording medium
CA2256938A1 (en) Mechanism for network routing
EP1657859B1 (en) Protocol speed increasing device
US6967959B2 (en) Method for forming a database to route a data packet and method for routing and a router using the method thereof
EP1128608A2 (en) Method and means for classifying data packets
CA2266878A1 (en) Incremental network routing

Legal Events

Date Code Title Description
FZDE Discontinued