In this section, we propose an efficient algorithm named kID-MCP that computes inter-domain paths subject to multiple constraints on independent additive metrics. We have previously presented this heuristic in a conference paper [23] and a research report [19].
11.2.1 Complexity Reduction Approach
We derive the proposed heuristic, kID-MCP, from the exact algorithm ID-MCP presented in Chapter 9. We know that the N P-completeness of the MCP problem comes from the number of paths that must be considered for every intermediate node. Therefore, a method for bounding the complexity of MCP algorithms consists in arbitrary limiting the maximum number of paths that a path computation algorithm considers for every intermediate node.1
We apply this method on ID-MCP to derive the proposed heuristic kID-MCP. In concrete terms, the considered per-domain problem and the method to propagate the per-domain computation results remain the same as for ID-MCP. However, we modify the algorithm
1
120
CHAPTER 11. A SECOND PROPOSITION: FINDING FEASIBLE PATHS RAPIDLY
Figure 11.1: Example topology: we compute a path from s to t with the first and the second metric less than or equal to ten and to eight, respectively
Figure 11.2: Initialization stage of the heuristic
Figure 11.3: Relaxation of node 4 with the heuristic
that solves the per-domain problem: kID-MCP uses a heuristic with a bounded complexity, whereas ID-MCP uses a brute-force approach.
As kID-MCP memorizes only a subset of the non-dominated feasible paths, we need a criterion to select the memorized paths among the non-dominated feasible paths. We have observed that a greedy approach memorizing the paths that are the furthest from the con- straints provides good results. In this chapter, we illustrate our approach with an algorithm that memorizes at most one MCP from every node to the target. Our studies show that this limitation provides good performance. Note nevertheless that extending kID-MCP to increase the limit and to memorize at most an arbitrary number k > 1 of paths for every intermediate node is straightforward. Such extension would augment the chances to find good solutions at the price of a higher computational complexity.
11.2.2 Example of kID-MCP Operations
We illustrate the operations of kID-MCP on a simple scenario before detailing the algorithm. Figure 11.1 depicts the example topology; we represent the values of the metrics for the links as follows: a
b
, where a is the value of the first link metric and b the value of the second metric. In the example, kID-MCP computes a path between s and t with the following constraints: the value of the first and second metric for the end-to-end path must be less than or equal to ten and to eight, respectively.
11.2. PROPOSITION OF KID-MCP: A FAST ALGORITHM 121
Figure 11.4: VSPT of the destination domain
Figure 11.5: Operations of kID-MCP in the upstream domain
The path computation operations begin in the destination domain, as depicted in Fig- ure 11.2. Their purpose is to calculate an MCP from every entry BN to the target t. During an initialization stage (stage 0 ), the node t is associated with the couple0
0
, which represents the weights of an empty path from t to t. Then, the algorithm relaxes the initial path, during stage 1 . This means that it computes the weights of the paths from neighboring nodes, 4 and 5, to the target t through the current node t. This operation discovers a path from node 4 to t with both metrics equal to one and another path from node 5 to t with the first metric equal to two and the second equal to four.
Then, the algorithm selects, among the discovered paths that have not been relaxed yet, the path with the lowest value of the path-length function c(p) defined in Equation (8.3). In our example, the length of the path from node 4 is max( 1
10,18) = 18, whereas the length of the
path from node 5 is larger, with a value of max(2
10,48) = 12. Therefore, the algorithm relaxes
the path from node 4, during stage 2 , as depicted in Figure 11.3. During the relaxation operation, the algorithm discovers a path from node 5 to t through node 4 with a smaller length than the path that was already known:
max 3 10, 2 8 = 3 10 <max 2 10, 4 8 = 1 2. (11.1)
As a result, the algorithm memorizes the newly discovered path and discards the old path. The algorithm repeats the same operations as long as at least one discovered path has not been relaxed. In the example, this means that the algorithm relaxes paths from nodes 6, 5, and 3 successively. The relaxation of the path from node 6 leads to the discovery of two new paths, from node 3 and node 5. Both are immediately discarded, because their length is not smaller than the one of the paths from the same nodes that the algorithm already knows:
max103,48= 12 ≥ max4 10,38 = 25 max105 ,38= 12 ≥ max3 10,28 = 103. (11.2)
Similarly, the relaxation of the saved paths from node 5 and node 3 does not modify the paths memorized.
After completing the relaxation operations, the algorithm extracts a VSPT2 and forwards
it to the upstream domain, as represented in Figure 11.4. Then, the MCP computation
2
122
CHAPTER 11. A SECOND PROPOSITION: FINDING FEASIBLE PATHS RAPIDLY
operations continue in the upstream domain, considering the virtual topology in Figure 11.5. The algorithm starts by selecting the path with the lowest path length c(p) among the paths of the VSPT, and then, relaxes this path, during stage 3 . Subsequently, the algorithm relaxes the discovered paths successively, during the stages 4 to 8 . During these operations, the algorithm discovers a path from s to t through node 1 and immediately discards this path because the path weights infringe the constraints of the request. The value of the second metric, nine, is greater than the constraint eight. The procedure finally returns a single feasible end-to-end path: s → 8 → 7 → 6 → −, where − denotes the nodes traversed in other domains. During the setup of this path, the traversed domains expand “−” into 4 → t, for example with the path-key mechanisms described in Section 9.3.3.
11.2.3 Formal Description of kID-MCP
Figure 11.6 provides a high-level description of kID-MCP. The operations of kID-MCP begin in the destination domain D and progress toward the source domain, as indicated in Fig- ure 11.6, line 1. In each domain, the operations are similar to the ones of ID-MCP, but with an arbitrary limitation on the number of memorized paths and a selection criterion for the memorized paths.
The path computation operations rely on a queue whose elements describe MCPs from intermediate nodes to the target t of the considered request. Any queue element q contains the following information:
• the considered node (q.node),
• the next-hop toward t (q.predecessor),
• the values of the metrics for the path from q.node to t (q.w), and • the state of this path (q.mark).
The next-hop (q.predecessor) of an element q is the node whose relaxation leads to the discovery of q, hence, we call it the predecessor of q. Any queue element is marked as “not relaxed yet” or “relaxed.”
In the destination domain, kID-MCP initializes the queue with a zero-weight path to t (line 3). In any other domain, it initializes the queue with paths from the leaves of the received VSPT and to the target t (line 5). The operations of kID-MCP in each traversed domain rely on a loop, described in lines 6 to 9, that stops as soon as the queue does not contain any element marked as “not relaxed yet”.3 During each loop iteration, the path length of each
queue element q is considered. The algorithm computes this path length from the metric values (q.w). In addition, the algorithm selects and relaxes the element of the queue with the lowest path length among the queue elements that have not been relaxed yet. When the loop ends, the algorithm extracts a VSPT from the queue (line 10). In the source domain, the VSPT includes the elements of the queue that correspond to paths from the source node s. In any other domain, the VSPT includes the elements of the queue that correspond to paths from the entry BNs to the target t.
Figure 11.7 details the operations of the function that builds the domain virtual topologies and that initializes the path computation queue. This function determines the entry BN that
3
11.2. PROPOSITION OF KID-MCP: A FAST ALGORITHM 123
1: for all domain i from D to 1 do
2: if i = D then
3: queue ← {node:t, predecessor:∅, w:0, mark:not relaxed yet} 4: else
5: {queue, virtual_topology} ← concatenate(VSPTi+1, topologyi,
interdom_TE_linksi→i+1)
6: end if
7: while the queue contains one or more elements marked as “not relaxed yet” do
8: element_min = extract_min(queue) 9: element_min.mark ← relaxed
10: queue ← relax(element_min, virtual_topology, queue) 11: end while
12: VSPTi ← extract_VSPT(queue)
13: end for
Figure 11.6: High-level description of kID-MCP
1: for all Leaf v of VSPTi+1 do
2: virtual_topology ← connect_to_virtual_topology(v, topologyi,
interdom_TE_linksi→i+1, VSPTi+1)
3: queue ← {node:v, predecessor:t, w:value of the metrics for v → t in VSPTi+1, mark:not
relaxed yet}
4: end for
5: return queue, virtual_topology
Figure 11.7: Description of “concatenate”, the function building the virtual topology
corresponds to each leaf of the VSPT. Then, it extends the virtual topology of the considered domain to include this entry BN, as shown in line 3. The function also adds into the queue an element that describes the path of the VSPT from this entry BN to t (line 4). Finally, the function returns the extended topology and the initial queue.
Figure 11.8 details the operations of the relaxation function. This function visits every neighbor v of the relaxed element m, except its predecessor, as represented in lines 1 to 8. It evaluates the considered metrics for each newly discovered path pv from v to t through m. This implies that the relaxation function adds the metric values for the link v → m and for the path from m to t, as shown in line 2. If there is already a path q from v to t in the queue and q has not been relaxed yet (line 3), then there are two possibilities: either the length of the new path pv is strictly smaller (line 4), then pv replaces the old path q (line 5), or, the length of the new path pv is not strictly better, then the new path is discarded. If there is
no path from v to t in the queue and the new path pv is feasible (line 7), then the algorithm adds pv to the queue (line 8), else, the algorithm discards pv. Finally, the function returns
the queue.
The path memorization criterion, depicted in Figure 11.8 at line 4, takes only the length c(p) of the paths into account. In concrete terms, according to Equation (8.3), this means that the memorized paths are selected depending on the metric whose value is the closest to the constraints. If the algorithm discovers several paths with the same length and from the same node successively, the first path is memorized and the others are discarded. More
124
CHAPTER 11. A SECOND PROPOSITION: FINDING FEASIBLE PATHS RAPIDLY
1: for all neighbor v of m=element_min.node (except element_min.predecessor) in vir- tual_topology do
2: wv = wv→m+ element_min.w
3: if queue contains already a path q from the node v then
4: if c(pv) < c(q) and q.mark=“not relaxed yet” then
5: replace q by pv in queue 6: end if
7: else
8: if c(pv)≤ 1 then
9: add {node:v, predecessor:m, w:wv, mark:not relaxed yet} to queue
10: end if
11: end if
12: end for 13: return queue
Figure 11.8: Description of “relax”, the relaxation function
sophisticated criteria can be implemented. However, the presentation of these criteria would complicate the description of the proposed algorithm.