Patent Publication Number: US-8995827-B2

Title: System and method for finding partially disjoint paths for spare capacity allocation in shared backup path protection for dual fiber cuts

Description:
This application claims the benefit of U.S. Provisional Patent Application Ser. No. 61/738,263, filed on Dec. 17, 2012, and entitled “Spare Capacity Allocation Using Partially Disjoint Paths for Dual Link Failure Protection,” which application is incorporated herein by reference. 
    
    
     TECHNICAL FIELD 
     The present invention relates generally to a system and method for improving spare capacity allocation for network communications, in particular embodiments, to a system and method for finding partially disjoint paths for spare capacity allocation in shared backup path protection for dual fiber cuts. 
     BACKGROUND 
     Modern communications networks are comprised of nodes that transport data through the network via links that connect the nodes. The nodes may include routers, switches, bridges, or combinations thereof that transport the individual data packets or frames through the network over links between the nodes. The data packets may be forwarded on pre-established paths that include nodes and links. Different path protection schemes may be used to protect link or node failures on a path and avoid substantial data loss. Some path protection schemes handle single link failures, where a working path is assigned a backup path that is reserved in case of failures in the working path. Other more stringent schemes may be needed to handle dual link failures, where the working path is assigned a primary backup path that is reserved in case of failures in the working path, and a secondary backup path that is reserved in case of additional failures in the primary backup path. In some cases, at least some portions of the backup paths may share some network resource capacity (e.g., bandwidth) to save resources/cost in the network. Further, the backup paths may not be completely disjoints. When setting up such partially disjoint back up paths for link/path failures, there is a need for a scheme that efficiently allocates shared resources between the paths, also referred to as spare capacity allocation. 
     SUMMARY OF THE INVENTION 
     In accordance with an embodiment, a method implemented by an apparatus for allocating shared spare resource capacity for a plurality of flows on partial disjoint paths (PDP) includes, for each of the flows, finding a working path and a primary backup path that are mutually disjoint between a source node and a terminal node of the flow that are connected via two disjoint routes. The disjoint routes include a plurality of nodes, links, and fiber cuts. The method further includes finding a plurality of secondary backup paths that are partially disjoint and protect each fiber cut group along the two disjoint routes. Each of the fiber cut groups includes all fiber cut pairs on both disjoint routes that have the same effect of interrupting the flow on both disjoint routes. The shared spare resource capacity for the working path, the primary backup path, and the partially disjoint secondary backup paths are then aggregated for all the flows. 
     In accordance with another embodiment, a method implemented by an apparatus for allocating shared spare resource capacity for a flow includes assigning a working path and a primary backup path on two disjoint routes between two end nodes. The method further includes assigning a plurality of secondary backup paths that are partially disjoint and that each pass through one fiber cut group on one of the two disjoint routes and all remaining fiber cut groups on the other one of the two disjoint routes. Each of the fiber cut groups includes all fiber cut pairs on both disjoint routes that have the same effect of interrupting a flow on both disjoint routes. 
     In yet another embodiment, an apparatus for allocating shared spare resource capacity for a flow on two disjoint routes between two end nodes includes a processor and a computer readable storage medium storing programming for execution by the processor. The programming includes instructions to assign to the flow a working path on one of the two disjoint routes and a primary backup path on the other one of the two disjoint routes. The programming further includes instructions to assign a plurality of partially disjoint backup paths to the flow that each passes through one fiber cut group on one of the two disjoint routes and through all remaining fiber cut groups on the other one of the two disjoint routes. Each of the fiber cut groups includes all dual link failures that interrupt the flow on both disjoint routes. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawing, in which: 
         FIG. 1  illustrates a bi-connected network topology including two disjoint paths for a flow and additional partially disjoint paths. 
         FIG. 2  illustrates a model for computing a spare provision matrix (SPM) according to a failure dependent (FD) path protection based spare capacity allocation (SCA) model. 
         FIG. 3  illustrates a model for computing a SPM for primary backup paths. 
         FIG. 4  illustrates a model for computing a SPM for secondary backup paths. 
         FIG. 5  is an embodiment of a model for computing a spare provision matrix (SPM) for partial disjoint paths (PDP). 
         FIG. 6  illustrates an embodiment scheme to construct partially disjoint paths for a flow from a set of fiber cut-groups. 
         FIG. 7  illustrates an embodiment of a successive survivable routing (SSR) method for computing partially disjoint secondary backup paths. 
         FIG. 8  is a block diagram of a processing system that can be used to implement various embodiments. 
     
    
    
     DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS 
     The making and using of the presently preferred embodiments are discussed in detail below. It should be appreciated, however, that the present invention provides many applicable inventive concepts that can be embodied in a wide variety of specific contexts. The specific embodiments discussed are merely illustrative of specific ways to make and use the invention, and do not limit the scope of the invention. 
     A shared backup path protection (SBPP) scheme can be used to protect against dual link failures by pre-planning each traffic flow with mutually disjoint working and two backup paths while minimizing the network overbuild. This scheme requires the network topology to be tri-connected, where there are three disjoint paths that connect between the same two nodes. However, many existing backbone networks are bi-connected with two instead of three fully disjoint paths between node pairs. In practice, partially disjoint paths (PDP) have been used for backup paths instead of fully disjoint paths. System and method embodiments are provided herein to obtain minimum or optimal spare capacity allocation (SCA) using PDP for bi-connected network topology. This is achieved by extending a spare provision matrix (SPM) computation model for SCA to consider PDP for different fiber cuts, as described below. An integer linear programming (ILP) optimization model is formulated for resolving the SCA. Further, an approximation algorithm for SCA with PDP, referred to herein as Successive Survivable Routing (SSR), is presented. 
     On a bi-connected network, a flow (e.g., a data stream) may have two mutually disjoint paths to protect against any dual link failures. This may be the case when the source and destination nodes of a flow are separated by a set of fiber cuts that only contain two fibers or links. Such cuts are referred to herein as cut-pairs.  FIG. 1  shows a bi-connected network topology  100  that includes two disjoint paths and additional partially disjoint paths for a flow between two end nodes (s and t). The two disjoint paths and the additional partially disjoint paths can be found using a max flow based algorithm, as described by V. Y. Liu, et al. (Liu) in “Finding partially disjoint routes for dual fiber cut protection in bi-connected networks,” Optical fiber conference, 2012, which is incorporated herein by reference. 
     The two disjoint paths can be assigned as the working path and the primary backup path. The two disjoint paths also pass through a set of cut-pairs, which can be aggregated into cut-groups. The cut-pairs of this flow in the same cut-group share common links. For example, cut-pairs ( 1 ,  2 ) and ( 1 ,  3 ) can be put into the same cut-group ( 1 , [ 2 ,  3 ]). Dual link failures containing common edge  1  and either  2  or  3  can have the same effect of interrupting both paths for the flow from the source to terminal end point (s→t). After the cut-groups are identified for the flow, multiple secondary backup paths can be found to cover various halves of these cut-groups using the max flow algorithm by Liu, et al.  FIG. 1  includes an example of two secondary backup paths to protect two cut-groups. Using such algorithm, the resulting four paths (working path, primary backup paths, and two secondary backup paths) can protect all dual fiber cuts except the cut-pairs contained in the two cut-groups. Specifically, the two partially disjoint secondary backup paths in  FIG. 1  are used to protect dual fiber cuts distributed over the working and primary backup paths. However, the dual fiber cuts may not be protected by a single secondary backup path alone. Each of these partially disjoint backup paths may only protect a subset of the dual fiber cuts. 
     This type of protection scenarios is similar to a SCA model based on failure dependent (FD) path protection against single link failures described by Y. Liu, et al. in U.S. Pat. No. 6,744,727, entitled “Apparatus and Method for Spare Capacity Allocation,” Jun. 1, 2004, and in “Spare capacity allocation for non-linear cost and failure-dependent path restoration,” Proceedings of the Third International Workshop on Design of Reliable Communication Networks (DRCN), 2001, both of which are incorporated herein by reference. The FD path protection based SCA model computes a set of primary backup paths for the working paths of a flow without a set of secondary backup paths, and therefore does not account for dual link failures. 
       FIG. 2  shows a model  200  for computing a SPM according to the FD path protection based SCA model. In the SCA model  200 , multiple backup paths q r   k  for flow r protect different failure scenarios k represented in the flow failure matrix U. These multiple backup paths q r   k  can be represented in two ways: either for each failure scenario k in Q k , or for each flow r in Q r . The model  200  includes 3-dimensional matrices which are used to compute the SPM. The model  200  includes the equation:
 
 G   k   =Q   k     T     MU   k , 1≦ k≦K,   (1)
 
where the k-th column vector G k ={g lk } L×1  in matrix G is determined by U&#39;s k-th column vector U k ={u rk } R×1 , M, and Q k . A capital variable U k  is used for a column vector to distinguish the column vector from the row vector u r . Capital variables are similarly used for G k .
 
     In an embodiment, a scheme based on the FD path protection SCA model above can be used for SCA with PDP for dual failure protection in bi-connected network topology. The embodiment scheme extends the model above by arranging all secondary backup paths to align with their protected dual fiber cuts, and then computing the SPM accordingly. After computing the SPM, the SPM can be used for spare capacity sharing based on a scheme for failure independent path protection described by Y. Liu, et al. in “Approximating optimal spare capacity allocation by successive survivable routing,” in Proceeding of IEEE INFOCOM, 2001, and “Approximating optimal spare capacity allocation by successive survivable routing,” IEEE/ACM Transactions on Networking, 2005, both of which are incorporated herein by reference. 
     The embodiment scheme is also based on the SCA model for dual link failures in tri-connected networks by V. Y. Liu, et al., in “Spare Capacity Allocation Using Shared Backup Path Protection for Dual Link Failures,” IEEE 8 th  International Workshop on the Design of Reliable Communication Networks (DRCN), 2011, which is incorporated herein by reference.  FIG. 3  shows a model  300  for computing a SPM for primary backup paths according to this SCA model. The model  300  examines failure scenarios for a single flow r. The contribution of flow r to the spare provision matrix G r  is used as the building block for spare capacity sharing. Element g lk   r  indicates the spare capacity required for flow r on link l when a dual fiber failure case k happens. The total number of dual fiber failure is 
             K   =       {         L           2         }     .           
Each failure kε1 . . . K stands for a pair of failed fibers i, j and the index k is determined by k=(i−1)×L+(j−i) where 1≦i&lt;j≦L. The model  300  assumes that the failures of two fibers happen at the same time or shortly close to each other so that the traffic rerouting happens only once. In dual fiber failure scenario k, the working and backup paths of flow r may be impacted and the spare capacity on their backup paths needs bandwidth reservation as discussed in the following two cases.
 
     In a first case, when a dual fiber failure k breaks the working path, but not the primary backup path, traffic may be protected by the primary backup path. The links on the primary backup path requires a bandwidth demand m r . In the model  300  formulation, p ri =1 if and only if (iff) fiber i is on the working path p r , and q rj =1 iff a fiber j is on the primary backup path q r . Thus, p ri (1−q rj )=1 indicates that fiber i is on the working path while fiber j is not on the primary backup path. If u rk   [1] =p ri (1−q rj )⊕(1−q ri )p rj , where ⊕ is the logical OR operation which gives 1⊕1=1, then u rk   [1] =1 indicates that failure k contains one fiber on the working path p r  but does not contain any link on the primary backup path q r . For this failure case k, the spare capacity on another link l on the primary backup path can reserve bandwidth m r . This is formulated in g lk   r[1] =m r q rl u rk . These relations can also be rewritten in a vector or matrix format in equations (2) and (3) as follows:
 
 G   r   [1]   ={g   lk   r[1]   }=m   r   q   r   T   u   r   [1] ,  (2)
 
 u   r   [1] =vec( p   r   T     q     r   ⊕  q     r   T   p   r ).  (3)
 
     In the above equations, vec(•) converts a matrix with index (i, j) into a row vector with index k and  q   r =e−q r  where e is a unit row vector with size L. 
     The length of the row vector u r   [1]  is L 2  instead of number of failures 
               (         L           2         )     .         
This helps to maintain easier matrix formulation and conversion between k and i, j. The actual failure size can be controlled by removing duplicated cases during the implementation. For this reason, k=(i−1)L+j and K=L 2  are used in the following context.
 
     In a second case, when the failure case k contains one fiber on the working path p r  and another fiber on the primary backup path q r , traffic is rerouted to the secondary backup path z r . Thus, the links on the secondary backup path need spare capacity to meet bandwidth demand m r  for failure case k.  FIG. 4  shows a model  400  for computing a SPM for secondary backup paths according to the same SCA model. In this case, u rk   [2] =p ri q rj ⊕q ri p rj , and u rk   [2] =1 indicates failure case k breaks the working path p r  and the primary backup path q r  at the same time. Hence, the spare capacity on link l on the secondary backup path is m r . This gives g lk   r[2] =m r z rl u rk   [2] . These equations can be rewritten in matrix format in equations (4) and (5) as follows:
 
 G   r   [2]   ={g   lk   r[2]   }=m   r   z   r   T   u   r   [2] ,  (4)
 
 u   r   [2] =vec( p   r   T   q   r   ⊕q   r   T   p   r ).  (5)
 
     The resulting SPM for primary and secondary backup paths is:
 
 G   r   =G   r   [1]   +G   r   [2] ,  (6)
 
 G=Σ   r=1   R   G   r .  (7)
 
Using the formulations above, the overall SCA model for dual link failures in tri-connected networks is formulated in equations (8) to (15) as follows:
 
min Q,Z,G,s   S=e   T   s   (8)
 
subject to:  s =max  G   (9)
 
 G=Q   T   MU   [1]   +Z   T   MU   [2]   (10)
 
 P+Q≦ 1  (11)
 
 P+Q+Z≦ 1  (12)
 
 QB   T   =D   (13)
 
 ZB   T   =D   (14)
 
 Q,Z :binary  (15)
 
     The objective function (8) is used to minimize the total spare capacity reserved on the network. Its decision variables include the spare capacity s; the spare provisioning matrix G; the primary backup path matrix Q; and the secondary backup path matrix Z. In constraint (9), the spare capacity column vector s is derived from the maximum values of elements in rows, across all failures, in the spare provision matrix G. It indicates that the required spare capacity on a link is equivalent to the highest “watermark” from all possible dual fiber failures. In constraint (10), the spare provision matrix is derived from backup paths. It is a matrix format, equivalent to the aggregation of per-flow based information from equations (7), (6), (2), and (4). Constraints (11) and (12) require the working and two backup paths to be mutually disjoint, where these paths use the same link at most once. Constraints (13) and (14) are the flow balance requirements, to guarantee that these paths in Q and Z to be valid routes between the source and destination nodes. Constraint (15) requires backup path decision variables to be binary ensuring each backup path is not bifurcated. Row vectors u [y]  in U [y] , y=1, 2 are derived in equations (3) and (5) to indicate which failure case k could cause traffic detour to its primary or secondary backup path. 
     Table 1 shows the notations used in the models  300  and  400  for dual link failures in tri-connected network topology. The same notations are used for the embodiments herein. 
     
       
         
           
               
               
             
               
                 TABLE 1 
               
               
                   
               
             
            
               
                 N, L, R, K 
                 Numbers of nodes, links, flows, and failures 
               
               
                 n, l, r, k 
                 Indices of nodes, links, flows, and failures 
               
               
                 i, j 
                 Indices of fibers in a dual failure k, 1 ≦ i, j ≦ L 
               
               
                 B = {b nl } N×L   
                 Node link incidence matrix 
               
               
                 D = {d rn } R×N   
                 Flow node incidence matrix 
               
               
                 P = {p r } = {p rl } 
                 Working path link incidence matrix 
               
               
                 Q = {q r } = {q rl } 
                 Primary backup path link incidence matrix 
               
               
                 Z = {z r } = {z rl } 
                 Secondary backup path link incidence matrix, for failure independent case 
               
               
                 Z k  = {z r   k } R×1  = 
                 Secondary backup path link incidence matrix to protect failure k, for failure 
               
               
                 {z rl   k } R×L   
                 independent case 
               
               
                 Z r  = {z r   k } K×1  = 
                 Secondary backup path link incidence matrix for flow r, for failure 
               
               
                 {z rl   k } K×1   
                 independent case 
               
               
                 M = Diag({m r }) 
                 Diagonal matrix of bandwidth m r  of flow r 
               
               
                 G r   [y]  = {g lk   r[y] } L×K   
                 Contribution of flow r&#39;s y-th backup path to G, y = 1 or 2 for primary or 
               
               
                   
                 secondary 
               
               
                 G = {g lk } L×K   
                 Spare provision matrix, g lk  is spare capacity on link l for failure k 
               
               
                 U [y]  = {u rk   [y] } R×K   
                 The incidence matrix for flow r&#39;s y-th backup path and failures, u rk   y  = 1 iff 
               
               
                   
                 failure scenario k causes flow r&#39;s traffic to use its y-th backup path, y = 1 or 2 
               
               
                 T [y]  = {t rl   [y] } R×L   
                 Flow&#39;s tabu-link matrix for its y-th backup path, t rl   [y]  = 1 if link l should not 
               
               
                   
                 be used on flow r&#39;s y-th backup path, y = 1 or 2 
               
               
                 S 1 , S 2   
                 Total spare capacity reserved for the primary or secondary backup paths 
               
               
                 Y r   
                 Number of cut-groups for flow r 
               
               
                 (φ ry , ψ ry ) 
                 Represent cut groups of flow r, 1 ≦ y ≦ Y r . where φ r,y  and ψ r,y  are binary 
               
               
                   
                 vectors whose element i is 1 iff the i-th link belongs to the first (φ) or second 
               
               
                   
                 (ψ) half of the cut-group, and 1 ≦ i ≦ L 
               
               
                 τ ry   
                 Binary vector whose k-th element indicates dual link failure k may be 
               
               
                   
                 protected by the y-th secondary backup path of flow r, 0 ≦ y ≦ Y r   
               
               
                 χ ry   
                 Binary vector whose k-th element indicates dual link failure k may not be 
               
               
                   
                 protected due to either limitation of bi-connectivity or constraints on 
               
               
                   
                 maximum number of paths for flow r, 1 ≦ y ≦ Y r   
               
               
                 ω r   y   
                 The y-th secondary backup path corresponding to the y-th cut-group for flow 
               
               
                   
                 r, which is passing the first half of the y-th cut-group while the second 
               
               
                   
                 halves of the other cut-groups. 
               
               
                   
               
            
           
         
       
     
     To formulate the SCA model using PDP to protect against dual link failures in bi-connected networks, a partial disjoint routing algorithm based on the formulation of the max flow algorithm (used in  FIG. 1 ) is used to identify the dual failure scenarios that a set of secondary backup paths could protect. Next, a formulation based on the FD path protection SCA model (the model  200 ) is used to align these secondary backup paths to their corresponding dual link failure scenarios. The SPM is then computed to be used for spare capacity sharing for dual link failures based on the SCA model (models  300  and  400 ) for dual link failures in tri-connected networks. 
       FIG. 5  shows an embodiment of a model  500  for computing SPM for partial disjoint paths (PDP). The model  500  is used to compute the SPM for multiple secondary backup paths to protect different failures while sharing their spare capacity. These secondary backup paths can be represented according to the specific flow r as Z r , or alternatively for specific failure k as Z k . Both of these matrices contain the same path link incidence vector z r   k  for the secondary path that protects failure k for flow r as defined in Table 1. 
     To formulate the content in vector z r   k  and their corresponding failures protected by these partial disjoint paths, a partial disjoint routing algorithm based on the formulation of the max flow algorithm is used. Using the partial disjoint routing algorithm, a flow on a bi-connected network could encounter a set of cut-groups whose enclosed cut-pairs can partition the source and destination nodes. The number of cut-groups is identical to the minimum number of secondary backup paths to cover all possible dual fiber cuts. The number of cut-groups is denoted as Y r . The cut-groups are in (φ ry , ψ ry ), 1≦y≦Y r , where φ ry  and ψ ry  are binary vectors whose element i is 1 iff the i-th link belongs to the first (φ) or second (ψ) half of the cut-group, and 1≦i≦L. 
     For example, the binary vectors are considered in the equations below for two cut-groups ( 1 , [ 2 ,  3 ]) and ( 4 ,  5 ) in  FIG. 1 , where r=(st), y=1, or 2, and a comma is added between (st) and r for clarity:
 
φ (st),1 =(10000 . . . ),
 
ψ (st),1 =(01100 . . . ),
 
φ (st),2 =(00010 . . . ),
 
ψ (st),2 =(00001 . . . ).  (16)
 
     The corresponding two secondary backup paths for flow r=(st) are represented in the equations below as ω (st)   y , where the index y represents the cut-group whose first half links are used by this path, while its second half links are protected by this path:
 
 p   (st) =(10010 . . . ),
 
 q   (st) =(01101 . . . ),
 
ω (st)   1 =(10001 . . . ),
 
ω (st)   2 =(01110 . . . ).  (17)
 
The original failure vector for secondary paths u r   [2]  in equation (5) above takes all dual links on the first two paths. Due to the existence of the cut-pairs in these Y r  cut-groups, multiple secondary backup paths are protecting different subsets of these dual link failures.
 
     More notations are further introduced below to model the various dual link failures surrounding the cut-groups.  FIG. 6  shows an embodiment scheme  600  to construct PDP for a flow from a set of fiber cut-groups. Using the partial disjoint path routing algorithm, multiple secondary paths are constructed to protect corresponding cut-groups so that the y-th secondary backup path may always protect the dual failures, which include the second half of the y-th cut-groups and the first halves of other cut-groups. This is accomplished by forcing this backup path to pass the first half of the y-th cut-group and the second halves of any other cut-groups. as shown in  FIG. 6 . 
     In the scheme  600 , the dual link failures protected by the y-th secondary backup paths can be represented in τ ry  as follows:
 
τ ry =vec({circumflex over (φ)} ry   T ψ ry ⊕ψ ry   T {circumflex over (φ)} ry ), 1≦ y≦Y   r ,  (18)
 
where {circumflex over (φ)} ry =Φ r −φ ry , {circumflex over (ψ)} ry =Ψ r −ψ ry , and Φ r =Σ y=1   Y     r    φ ry , Ψ r =Σ y=1   Y     r    ψ ry . The first two secondary backup paths can also protect other dual link failures that straddle on the first two paths which do not belong to the cut-pairs defined above. This is represented using τ r0 , plus its components τ r0   1  and τ r0   2  (for failures protected by the first two secondary backup paths) as:
 
     
       
         
           
             
               
                 
                   
                     
                       
                         
                           τ 
                           
                             r 
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             0 
                           
                         
                         = 
                           
                         ⁢ 
                         
                           
                             τ 
                             
                               
                                   
                               
                               ⁢ 
                               
                                 r 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 0 
                               
                             
                             1 
                           
                           + 
                           
                             τ 
                             
                               
                                   
                               
                               ⁢ 
                               
                                 r 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 0 
                               
                             
                             2 
                           
                         
                       
                     
                   
                   
                     
                       
                         
                           = 
                             
                           ⁢ 
                           
                             
                               vec 
                               ⁡ 
                               
                                 ( 
                                 
                                   
                                     
                                       p 
                                       r 
                                       T 
                                     
                                     ⁢ 
                                     
                                       q 
                                       r 
                                     
                                   
                                   ⊕ 
                                   
                                     
                                       q 
                                       r 
                                       T 
                                     
                                     ⁢ 
                                     
                                       p 
                                       r 
                                     
                                   
                                 
                                 ) 
                               
                             
                             - 
                             
                               vec 
                               ⁡ 
                               
                                 ( 
                                 
                                   
                                     
                                       Φ 
                                       r 
                                       T 
                                     
                                     ⁢ 
                                     
                                       Ψ 
                                       r 
                                     
                                   
                                   ⊕ 
                                   
                                     
                                       Ψ 
                                       r 
                                       T 
                                     
                                     ⁢ 
                                     
                                       Φ 
                                       r 
                                     
                                   
                                 
                                 ) 
                               
                             
                           
                         
                         , 
                       
                     
                   
                   
                     
                       
                         = 
                           
                         ⁢ 
                         
                           
                             u 
                             r 
                             
                               [ 
                               2 
                               ] 
                             
                           
                           - 
                           
                             
                               vec 
                               ⁡ 
                               
                                 ( 
                                 
                                   
                                     
                                       Φ 
                                       r 
                                       T 
                                     
                                     ⁢ 
                                     
                                       Ψ 
                                       r 
                                     
                                   
                                   ⊕ 
                                   
                                     
                                       Ψ 
                                       r 
                                       T 
                                     
                                     ⁢ 
                                     
                                       Φ 
                                       r 
                                     
                                   
                                 
                                 ) 
                               
                             
                             . 
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   19 
                   ) 
                 
               
             
           
         
       
     
     The dual link failures that cannot be protected by these secondary backup paths are those failures whose links belong to the first and second halves of the same cut-groups, modeled as χ ry  in:
 
χ ry =vec(φ ry   T ψ ry ⊕ψ ry   T φ ry ), 1≦ y≦Y   r .  (20)
 
The unprotected dual link failures in χ ry , 1≦y≦Y r , and the dual link failures protected by all secondary backup paths τ ry , 0≦y≦Y r  are identical to all dual link failures that could disconnect the first two paths u r   [2] . This can be shown as follows:
 
     
       
         
           
             
               
                 
                   
                     
                       
                         
                           
                             
                               ∑ 
                               
                                 y 
                                 = 
                                 1 
                               
                               
                                 Y 
                                 r 
                               
                             
                             ⁢ 
                             
                               χ 
                               ry 
                             
                           
                           + 
                           
                             
                               ∑ 
                               
                                 y 
                                 = 
                                 0 
                               
                               
                                 Y 
                                 r 
                               
                             
                             ⁢ 
                             
                               τ 
                               ry 
                             
                           
                         
                         , 
                         
                           = 
                             
                           ⁢ 
                           
                             
                               
                                 ∑ 
                                 
                                   y 
                                   = 
                                   1 
                                 
                                 
                                   Y 
                                   r 
                                 
                               
                               ⁢ 
                               
                                 ( 
                                 
                                   
                                     χ 
                                     ry 
                                   
                                   + 
                                   
                                     τ 
                                     ry 
                                   
                                 
                                 ) 
                               
                             
                             + 
                             
                               τ 
                               
                                 r 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 0 
                               
                             
                           
                         
                         , 
                       
                     
                   
                   
                     
                       
                         
                           = 
                             
                           ⁢ 
                           
                             
                               
                                 ∑ 
                                 
                                   y 
                                   = 
                                   1 
                                 
                                 
                                   Y 
                                   r 
                                 
                               
                               ⁢ 
                               
                                 [ 
                                 
                                   
                                     
                                       
                                         
                                           vec 
                                           ⁢ 
                                           
                                             ( 
                                             
                                               
                                                 
                                                   ϕ 
                                                   ry 
                                                   T 
                                                 
                                                 ⁢ 
                                                 
                                                   ψ 
                                                   ry 
                                                 
                                               
                                               ⊕ 
                                               
                                                 
                                                   ψ 
                                                   ry 
                                                   T 
                                                 
                                                 ⁢ 
                                                 
                                                   ϕ 
                                                   ry 
                                                 
                                               
                                             
                                             ) 
                                           
                                         
                                         + 
                                       
                                     
                                   
                                   
                                     
                                       
                                         vec 
                                         ⁡ 
                                         
                                           ( 
                                           
                                             
                                               
                                                 ϕ 
                                                 ry 
                                                 T 
                                               
                                               ⁢ 
                                               
                                                 
                                                   ψ 
                                                   ^ 
                                                 
                                                 ry 
                                               
                                             
                                             ⊕ 
                                             
                                               
                                                 ψ 
                                                 ry 
                                                 T 
                                               
                                               ⁢ 
                                               
                                                 
                                                   ϕ 
                                                   ^ 
                                                 
                                                 ry 
                                               
                                             
                                           
                                           ) 
                                         
                                       
                                     
                                   
                                 
                                 ] 
                               
                             
                             + 
                             
                               τ 
                               
                                 r 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 0 
                               
                             
                           
                         
                         , 
                       
                     
                   
                   
                     
                       
                         
                           = 
                             
                           ⁢ 
                           
                             
                               
                                 ∑ 
                                 
                                   y 
                                   = 
                                   1 
                                 
                                 
                                   Y 
                                   r 
                                 
                               
                               ⁢ 
                               
                                 [ 
                                 
                                   vec 
                                   ⁡ 
                                   
                                     ( 
                                     
                                       
                                         
                                           ϕ 
                                           ry 
                                           T 
                                         
                                         ⁢ 
                                         
                                           Ψ 
                                           r 
                                         
                                       
                                       ⊕ 
                                       
                                         
                                           Ψ 
                                           r 
                                           T 
                                         
                                         ⁢ 
                                         
                                           Φ 
                                           r 
                                         
                                       
                                     
                                     ) 
                                   
                                 
                                 ] 
                               
                             
                             + 
                             
                               τ 
                               
                                 r 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 0 
                               
                             
                           
                         
                         , 
                       
                     
                   
                   
                     
                       
                           
                         ⁢ 
                         
                           
                             
                               vec 
                               ⁡ 
                               
                                 ( 
                                 
                                   
                                     
                                       Φ 
                                       r 
                                       T 
                                     
                                     ⁢ 
                                     
                                       Ψ 
                                       r 
                                     
                                   
                                   ⊕ 
                                   
                                     
                                       Ψ 
                                       r 
                                       T 
                                     
                                     ⁢ 
                                     
                                       Φ 
                                       r 
                                     
                                   
                                 
                                 ) 
                               
                             
                             + 
                             
                               τ 
                               
                                 r 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 0 
                               
                             
                           
                           , 
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                         ⁢ 
                         
                           
                             u 
                             r 
                             
                               [ 
                               2 
                               ] 
                             
                           
                           . 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   21 
                   ) 
                 
               
             
           
         
       
     
     According to the model  500  above, the secondary backup paths for flow r and failure k are denoted as a binary vector ω r   k . The paths can be aggregated based on each failure k as Z k , 1≦k≦K; or based on each flow r as Z r , 1≦r≦R. The representation of Z r  is used below to contain all these paths in ω r   y  for different dual link failures. Similarly, these partially disjoint secondary backup paths in ω r   y  may be aggregated using the other approach with Z k  based on each dual link failure k. 
     In the model  500 , the number of cut-groups of a flow r is Y r . Using the partially disjoint path routing algorithm formulation, the number of partially disjoint backup paths is also Y r . These paths are denoted above as z r   y . These backup paths and their protected dual link failures indicated in τ ry , 0≦y≦Y r  are considered in the subsequent formulations below, ignoring the dual link failures in χ ry  that cannot be protected. In equation (21), all dual link failures that disrupt the flow r are shown in u r   [2]  and include the above two types of failures: protectable failures indicated in τ ry  and unprotected failures χ ry . The unprotected failures are due to the limitation of bi-connectivity and the constraint enforced while performing the partially disjoint path routing procedure, which limits the maximum number of backup paths to a smaller number than the number of cut-groups. 
     The partially disjointed paths in ω r   y  can be organized into the per-flow based secondary backup path matrix Z r  as follows:
 
 Z   r =τ r0   1 ω r   1 +τ r0   2 ω r   2 +Σ y=1   Y     r   τ ry ω r   y , 1≦ r≦R.   (22)
 
For the y-th secondary backup path, its contribution to the spare provisioning matrix G ry   [2]  can be obtained by equations (23) and (24) as follows:
 
 G   ry   [2]   =m   r ω r   y     T   τ ry , 3≦ y≦Y   r ,  (23)
 
 G   r1   [2]   =m   r ω r   1     T   (τ r1 +τ r0   1 ),
 
 G   r2   [2]   =m   r ω r   2     T   (τ r2 +τ r0   2 ).  (24)
 
The SPM for the secondary backup paths is given in equations (25) and (26) as follows:
 
 G   r   [2] =Σ y=1   Y     r     G   ry   [2] ,  (25)
 
 G   [2] =Σ r=0   R   G   r   [2] ,  (26)
 
     In an embodiment, an ILP formulation of the SCA problem for dual link failures using PDP in bi-connected networks includes equations (8), (9), (11), (13), (18), (19) and (23) to (30) as follows:
 
min Q,ω     r       y     ,G,s   S=e   T   s,   (8′)
 
 s.t.: s =max  G,   (9′)
 
 P+Q≦ 1,  (11′)
 
 QB   T   =D,   (13′)
 
τ ry =vec(φ ry   T {circumflex over (ψ)} ry ⊕ψ ry   T {circumflex over (φ)} ry ), 1≦ y≦Y   r ,  (18′)
 
τ r0 =vec( p   r   T   q   r   ⊕q   r   T   p   r )−vec(Φ r   T Ψ r ⊕Ψ r   T Φ r ),  (19′)
 
 G   ry   [2]   =m   r ω r   Y     T    τ ry , 3 ≦y≦Y   r ,  (23′)
 
 G   r1   [2]   =m   r ω r   1     T   (τ r1 +τ r0   1 ),
 
 G   r2   [2]   =m   r ω r   2     T   (τ r2 +τ r0   2 ),  (24′)
 
 G   r   [2] =Σ y=1   Y     r     G   ry   [2] ,  (25′)
 
 G   [2] =Σ r=0   R   G   r   [2] ,  (26′)
 
 G=Q   T   MU   [1]   +G   [2] ,  (27)
 
 p   r   +q   r +ω r   y −φ ry −Σ j=1;j≠y   Y     r   ψ rj ≦1, 1≦ y≦Y   r , 1 ≦r≦R,   (28)
 
ω r   y   B   T   =D,  1≦ y≦Y   r , 1≦ r≦R,   (29)
 
 Q,ω   r   y : binary, 1≦ y≦Y   r , 1≦ r≦R.   (30)
 
Equations (8′), (9′), (11′), (13′), (18′), (19′), and (23′) to (26′) above are similar to the previously introduced equations with the same numbers. The cut-groups related information in (φ ry , ψ ry ) is pre-computed for each flow r according to the max flow based algorithm.
 
     In another embodiment, the ILP formulation establishes the matrix G r   [2]  using the construction of u r   [2]  in equation (21) and Z r  in equation (2), as follows:
 
 G   r   [2]   =m   r   z   r   k   u   k   [2] , 1≦ k≦K,  1≦ r≦R.   (31)
 
This approach has the same effect as using equations in (23) to (25) above but it keeps the matrix diagram as shown in  FIG. 5 . The two ILP formulations above can be solved using commercial software such as AMPL/CPLEX that enumerates all possible solutions for relatively small matrix cases, e.g., for smaller networks with fewer flows/links. For relatively large network or matrix cases, a heuristic approach may be more suitable.
 
     The Successive Survivable Routing (SSR) algorithm is used to find near optimal solution in shorter time (than the commercial software solution for the ILP formulation) for relatively large scale SCA problems. The SSR algorithm was developed for the single failure problem, and subsequently extended to the FD dependent path restoration SCA problem, the two layer single failure SCA case, and to dual link failures.  FIG. 7  shows an embodiment of a SSR method  700  for computing partially disjoint secondary backup paths, which can be used for the SCA problem for dual link failures using PDP in bi-connected networks. The method  700  finds the SCA solutions by routing the partially disjoint secondary backup paths iteratively. The working paths and primary backup paths can be handled using as the SCA model for dual link failures in tri-connected networks. 
     In the method  700 , each backup path computation uses a shortest path algorithm. The link routing metric is the incremental spare capacity v r   y ={v rl   y } for flow r&#39;s y-th secondary backup path. It is computed from the most recent spare provision matrix G [2]  that is further based on previously routed backup paths. After all flows find their Y r  partially disjoint secondary backup paths, the SSR algorithm continues to update existing backup paths whenever a new one could use less spare capacity. This process keeps reducing total spare capacity until it converges, (e.g., there are no more backup path updates). Different random ordering of the flows for routing backup paths are used to provide diversity and avoid local minima. The best solution is used as the final one. 
     The SSR method  700  includes several steps for a given flow r and its y-th secondary backup path as shown in  FIG. 7 . Block  710  includes a first step, where the protectable failures in vector τ ry  for flow r&#39;s y-th cut-group are calculated based on the cut-group information stored in φ ry  and ψ ry  found using the max flow based algorithm, the working path in p r , the primary backup path in q r , and the source and destination nodes s(r), d(r). The protectable failures in τ ry  are then computed using equations (18) and (19). Block  720  includes a second step, where the current y-th secondary backup path of flow r is first removed, if there is one, and then the spare provision matrix G [2]  is updated using equations (23) to (26). 
     Block  730  includes a third step, where the link metric v r   y  is calculated from G [2]  and flow r&#39;s y-th secondary backup path contribution G ry   [2]  using equations (23) to (24). Specifically, given G, ω r   y , and G ry   [2]  for current flow r, G −ry  (the spare provision matrix) and s −ry  (the link spare capacity vector after current secondary backup path ω r   y  is removed) are obtained using G −ry =G−G ry   [2]  and s −ry =max G −ry . Further, ω r   y * is used to denote an alternative backup path for flow r&#39;s y-th secondary backup path, and a function G ry   [2] *(ω r   y *)=m r ω r   y * T [τ ry +τ r0   1  δ(y==1)+τ r0   2  δ(y==2)] is defined, where δ(x)=1 if x is true or 0 otherwise. This new path ω r   y * produces a new spare capacity reservation vector in a function format of
 
 s *(ω ry *)=max[ G   −ry   +G   ry   [2] *(ω r   y *)].  (32)
 
The constraint ω r   y *=e−p r −q r +φ ry +Σ j=1; j≠y   Y     r    ψ rj  is also used, which assumes that the partially disjoint secondary backup path uses all other links not used by the first two paths, excluding those specified in the cut-groups as indicated in φ ry  and ψ rj . As such, the following vector can be found:
 
 v   r   y   ={v   rl   y } L×1   =s *(ω r   y *)− s   −ry ,  (33)
 
where the element v rl   y  is the cost of the incremental spare capacity on link l if this link is used on the backup path.
 
     Block  740  includes a fourth step, where the shortest path algorithm is used with the link metric v r   y  to find a new or updated backup path ω r   y ′. This path may be partially disjoint according to the constraint enforced in block  730 . The total incremental spare capacity along the path is also minimized due to the link costs used in block  730  (equation (33)). Block  750  includes a fifth step, where the original backup path ω r   y  is replaced with the new backup path ω r   y ′ if the new path has the lower cost based on the link metrics in v r   y , e.g., the new path is updated only when v r   yT  ω r   y &lt;v r   yT  ω r   y ′. 
     Condition block  760  includes a sixth step, where if a termination condition is not met then the method  700  returns to block  720  for the next backup paths, for all Y r  secondary backup paths corresponding to their cut-groups of flow r and then for all flows 1≦r≦R. After the end of each iteration for all flows, the algorithm can stop and go to block  770  if the termination condition is met. For instance, the termination condition may be met when there is no backup update for all flows in the recent iteration, or when the maximum (predetermined) number of updates is reached. Block  770  includes a seventh step, where the best results are reported after terminating the iterations of the SSR algorithm. 
       FIG. 8  is a block diagram of a processing system  800  that can be used to implement various embodiments. For example, the processing system  800  may be part of or coupled to a network component, such as a router, a server, or any other suitable network component or apparatus. Specific devices may utilize all of the components shown, or only a subset of the components, and levels of integration may vary from device to device. Furthermore, a device may contain multiple instances of a component, such as multiple processing units, processors, memories, transmitters, receivers, etc. The processing system  800  may comprise a processing unit  801  equipped with one or more input/output devices, such as a speaker, microphone, mouse, touchscreen, keypad, keyboard, printer, display, and the like. The processing unit  801  may include a central processing unit (CPU)  810 , a memory  820 , a mass storage device  830 , a video adapter  840 , and an I/O interface  860  connected to a bus. The bus may be one or more of any type of several bus architectures including a memory bus or memory controller, a peripheral bus, a video bus, or the like. 
     The CPU  810  may comprise any type of electronic data processor. The memory  820  may comprise any type of system memory such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), read-only memory (ROM), a combination thereof, or the like. In an embodiment, the memory  820  may include ROM for use at boot-up, and DRAM for program and data storage for use while executing programs. In embodiments, the memory  820  is non-transitory. The mass storage device  830  may comprise any type of storage device configured to store data, programs, and other information and to make the data, programs, and other information accessible via the bus. The mass storage device  830  may comprise, for example, one or more of a solid state drive, hard disk drive, a magnetic disk drive, an optical disk drive, or the like. 
     The video adapter  840  and the I/O interface  860  provide interfaces to couple external input and output devices to the processing unit. As illustrated, examples of input and output devices include a display  890  coupled to the video adapter  840  and any combination of mouse/keyboard/printer  870  coupled to the I/O interface  860 . Other devices may be coupled to the processing unit  801 , and additional or fewer interface cards may be utilized. For example, a serial interface card (not shown) may be used to provide a serial interface for a printer. 
     The processing unit  801  also includes one or more network interfaces  850 , which may comprise wired links, such as an Ethernet cable or the like, and/or wireless links to access nodes or one or more networks  880 . The network interface  850  allows the processing unit  801  to communicate with remote units via the networks  880 . For example, the network interface  850  may provide wireless communication via one or more transmitters/transmit antennas and one or more receivers/receive antennas. In an embodiment, the processing unit  801  is coupled to a local-area network or a wide-area network for data processing and communications with remote devices, such as other processing units, the Internet, remote storage facilities, or the like. 
     While this invention has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications and combinations of the illustrative embodiments, as well as other embodiments of the invention, will be apparent to persons skilled in the art upon reference to the description. It is therefore intended that the appended claims encompass any such modifications or embodiments.