Disjoint path computation systems and methods in optical networks
10003867 ยท 2018-06-19
Assignee
Inventors
Cpc classification
H04Q2011/0073
ELECTRICITY
International classification
Abstract
Systems and methods for computing disjoint paths in a network considering continuity constraints include, responsive to a request for disjoint paths in the network which are subject to the continuity constraints, initializing a plurality of variables associated with a graph defining the network where edges constitute nodes and vertices constitute links; determining a first path through the graph; determining an auxiliary directed graph based on the first path; and determining a second path through the auxiliary directed graph, wherein the second path is determined by considering entry into cut edges, exit from cut edges, and a destination in the auxiliary directed graph and the plurality of variables are adjusted based on the entry, the exit, and the destination to address the continuity constraints. This approach concept applies to not just continuity constraints but to any constraints, which are non-additive in nature; the objective function is still additive for Shortest Path First (SPF).
Claims
1. A computer-implemented method for computing disjoint paths in a network considering continuity constraints, the computer-implemented method comprising: responsive to a request for disjoint paths in the network which are subject to the continuity constraints, initializing a plurality of variables associated with a graph defining the network where edges constitute nodes and vertices constitute links; determining a first path through the graph using a Non-Viable Segment without the continuity constraints to yield the first path, P.sub.1, and a tree, T; determining an auxiliary directed graph based on the first path by applying weight modifications to the tree, T, and reversing edges of the first path, P.sub.1; determining a second path through the auxiliary directed graph, wherein the second path is determined by considering entry into cut edges, exit from cut edges, and a destination in the auxiliary directed graph and the plurality of variables are adjusted based on the entry, the exit, and the destination to address the continuity constraints; and causing implementation of the determined first path and the determined second path in the network.
2. The computer-implemented method of claim 1, wherein the continuity constraints comprise one of wavelength and spectrum continuity in the network.
3. The computer-implemented method of claim 1, further comprising: returning no solution if the first path does not exist.
4. The computer-implemented method of claim 1, wherein the determining the first path and determining the second path utilize Shortest Path First (SPF).
5. The computer-implemented method of claim 1, wherein the plurality of variables comprise a set of Continuity Constraints (CT) for each of paths CT.sub.1, CT.sub.2, and wherein the set of CT are modified traversing the auxiliary directed graph during the determining the second path, and subsequent to reaching the destination, if the set of CT are not empty, the set of CT form the disjoint paths.
6. The computer-implemented method of claim 1, wherein an alternating path and cut edges are used to apply the continuity constraints for both the disjoint paths during the determining the second path.
7. The computer-implemented method of claim 1, further comprising: if no solution is found, reiterating the first path using an updated Non-Viable Segment.
8. The computer-implemented method of claim 1, wherein the continuity constraints are applied only amongst alternating path segments of the first path and the second path.
9. An apparatus adapted to compute disjoint paths in a network considering continuity constraints, the apparatus comprising: circuitry adapted to initialize a plurality of variables associated with a graph defining the network where edges constitute nodes and vertices constitute links responsive to a request for disjoint paths in the network which are subject to the continuity constraints; circuitry adapted to determine a first path through the graph using a Non-Viable Segment without the continuity constraints to yield the first path, P.sub.1, and a tree, T; circuitry adapted to determine an auxiliary directed graph based on the first path by applying weight modifications to the tree, T, and reversing edges of the first path, P.sub.1; and circuitry adapted to determine a second path through the auxiliary directed graph, wherein the second path is determined by considering entry into cut edges, exit from cut edges, and a destination in the auxiliary directed graph and the plurality of variables are adjusted based on the entry, the exit, and the destination to address the continuity constraints, wherein each of the circuitry comprises hardware.
10. The apparatus of claim 9, wherein the continuity constraints comprise one of wavelength and spectrum continuity in the network.
11. The apparatus of claim 9, wherein the first path and the second path are determined using Shortest Path First (SPF).
12. The apparatus of claim 9, wherein the plurality of variables comprise a set of Continuity Constraints (CT) for each of paths CT.sub.1, CT.sub.2, and wherein the set of CT are modified traversing the auxiliary directed graph during the determining the second path, and subsequent to reaching the destination, if the set of CT are not empty, the set of CT form the disjoint paths.
13. The apparatus of claim 9, further comprising: circuitry adapted to reiterate the first path using an updated Non-Viable Segment if no solution is found.
14. A system adapted to compute disjoint paths in a network considering continuity constraints, the system comprising: a network interface and a processor communicatively coupled to one another; and memory storing instructions that, when executed, cause the processor to responsive to a request, via the network interface, for disjoint paths in the network which are subject to the continuity constraints, initialize a plurality of variables associated with a graph defining the network where edges constitute nodes and vertices constitute links, determine a first path through the graph using a Non-Viable Segment without the continuity constraints to yield the first path, P.sub.1, and a tree, T, determine an auxiliary directed graph based on the first path by applying weight modifications to the tree, T, and reversing edges of the first path, P.sub.1, and determine a second path through the auxiliary directed graph, wherein the second path is determined by considering entry into cut edges, exit from cut edges, and a destination in the auxiliary directed graph and the plurality of variables are adjusted based on the entry, the exit, and the destination to address the continuity constraints.
15. The system of claim 14, wherein the continuity constraints comprise one of wavelength and spectrum continuity in the network.
16. The system of claim 14, wherein the plurality of variables comprise a set of Continuity Constraints (CT) for each of paths CT.sub.1, CT.sub.2, and wherein the set of CT are modified traversing the auxiliary directed graph during the determining the second path, and subsequent to reaching the destination, if the set of CT are not empty, the set of CT form the disjoint paths.
17. The system of claim 14, wherein the memory storing instructions that, when executed, further cause the processor to if no solution is found, reiterating the first path using an updated Non-Viable Segment.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The present disclosure is illustrated and described herein with reference to the various drawings, in which like reference numbers are used to denote like system components/method steps, as appropriate, and in which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
DETAILED DESCRIPTION OF THE DISCLOSURE
(13) Again, in various exemplary embodiments, the present disclosure relates to disjoint path computation systems and methods in optical networks which determine a pair of disjoint (separate) paths for providing resiliency in connections. The systems and methods consider the constraints of wavelength continuity based on a modified Suurballe's algorithm. The problem is simply defined as: Given a graph G(V, E) (V=vertices, E=edge), a disjoint shortest pair by Suurballe's algorithm may not yield a feasible or optimal solution for spectrum continuity constraints when one could exist. This can be proved via contradictionfor spectral continuity constraints, look for a maximal spectral continuity existence on a path, given the spectrum required. A simple application of continuity constraints during the two Dijkstra iterations (as part of Suurballe's algorithm) is not a valid solution, since the step of removing overlapping edges in the Suurballe's algorithm makes the pre-computed spectral continuity non-maximal (since removing a constraint can either make the solution better or keep it same) thus contradicting the objective of achieving maximal continuity constraint.
(14) Calculation of disjoint paths is a requirement for DWDM networks for purposes of providing a resilient network with protection switching capability to higher layers. This application provides a solution to the problem of finding optimal disjoint routes and corresponding spectrum/wavelengths available on the same with spectrum continuity constraint. The systems and methods overcome the above problems associated with the additional constraint of wavelength/spectral continuity and provide a deterministic approach to evaluating a disjoint shortest pair of paths abiding with RWA and RSA constraints in grid-based or gridless networks.
(15) The disjoint path computation systems and methods can be used in flexible grid (flex grid) networks or gridless networks to find disjoint paths for Media Channels (MC) and Network Media Channels (NMC). Further, the systems and methods can be used in fixed grid networks to find disjoint paths. Also, the systems and methods can be used in Contention-less Direction-less and Color-less (CDC) networks where flexibility is higher leading to more constraints.
(16) Again, Suurballe's algorithm provides a disjoint pair in a weighted graph. It applies two path computations as sub-steps. However, it may fail for spectrum continuity if applied directly or even with spectrum continuity constraints applied in path computation. The systems and methods include modifications to support the spectrum continuity constraints, including 1) use of non-viable path in a first path computation in Suurballe's algorithm, 2) use of alternating path and cut edges to apply spectrum continuity constraints for first and second routes during a second path computation; 3) if no solution is found, then reiterate with an updated non-viable path set. Thus, the systems and methods use Suurballe's algorithm with modifications to create an auxiliary graph for the second path computation.
(17) The systems and methods converge to a feasible, optimal solution. There is no requirement to run all the iterations; the systems and methods provide a solution set with a minimal number of iterations. Thus, the systems and methods are a greedy approach to solving the problem. Another aspect of the problem is defined as the mechanism to apply Link constraints which are non-integral (non-comparable) in nature such as spectral continuity during Suurballe's algorithm. The systems and method include an approach on how to apply such constraints in Suurballe's algorithm. Note, for DWDM networks, the constraints are spectrum continuity, but this could be any non-integral constraint in other applications of Suurballe's algorithm. The systems and methods resolve to find cut-edges and corresponding alternating path segments during each Dijkstra run in Suurballe's algorithm. The systems and methods can also be applied to node disjoint computation by simply applying the mentioned principles on the dual or Line graph of the original network graph.
(18) Exemplary Network
(19) Referring to
(20) The network 10 can include a control plane 16 operating on and/or between the nodes 12. The control plane 16 includes software, processes, algorithms, etc. that control configurable features of the network 10, such as automated discovery of the nodes 12, capacity on the links 14, port availability on the nodes 12, connectivity between ports; dissemination of topology and bandwidth information between the nodes 12; calculation and creation of paths for calls or services; network level protection and restoration; and the like. In an exemplary embodiment, the control plane 16 can utilize Automatically Switched Optical Network (ASON) as defined in G.8080/Y.1304, Architecture for the automatically switched optical network (ASON) (February 2005), the contents of which are herein incorporated by reference; Generalized Multi-Protocol Label Switching (GMPLS) Architecture as defined in Request for Comments (RFC): 3945 (October 2004) and the like, the contents of which are herein incorporated by reference; Optical Signaling and Routing Protocol (OSRP) which is an optical signaling and routing protocol from Ciena Corporation similar to PNNI (Private Network-to-Network Interface) and MPLS; or any other type control plane for controlling network elements at multiple layers, and establishing and maintaining connections between nodes. Those of ordinary skill in the art will recognize the network 10 and the control plane 16 can utilize any type of control plane for controlling the nodes 12 and establishing, maintaining, and restoring calls or services between the nodes 12.
(21) A Software Defined Networking (SDN) controller 18 can also be communicatively coupled to the network 10 through one or more of the nodes 12. SDN is an emerging framework which includes a centralized control plane decoupled from the data plane. SDN provides the management of network services through abstraction of lower-level functionality. This is done by decoupling the system that makes decisions about where traffic is sent (the control plane) from the underlying systems that forward traffic to the selected destination (the data plane). SDN works with the SDN controller 18 knowing a full network topology through configuration or through the use of a controller-based discovery process in the network 10. The SDN controller 18 differs from a management system in that it controls the forwarding behavior of the nodes 12 only, and performs control in real time or near real time, reacting to changes in services requested, network traffic analysis and network changes such as failure and degradation. Also, the SDN controller 18 provides a standard northbound interface to allow applications to access network resource information and policy-limited control over network behavior or treatment of application traffic. The SDN controller 18 sends commands to each of the nodes 12 to control matching of data flows received and actions to be taken, including any manipulation of packet contents and forwarding to specified egress ports. Examples of SDN include OpenFlow (www.opennetworking.org), General Switch Management Protocol (GSMP) defined in RFC 3294 (June 2002), and Forwarding and Control Element Separation (ForCES) defined in RFC 5810 (March 2010), the contents of all are incorporated by reference herein.
(22) Note, the network 10 can use the control plane 16 separately from the SDN controller 18. Conversely, the network 10 can use the SDN controller 18 separately from the control plane 16. Also, the control plane 16 can operate in a hybrid control mode with the SDN controller 18. In this scheme, for example, the SDN controller 18 does not necessarily have a complete view of the network 10. Here, the control plane 16 can be used to manage services in conjunction with the SDN controller 18. The SDN controller 18 can work in conjunction with the control plane 16 in the sense that the SDN controller 18 can make the routing decisions and utilize the control plane 16 for signaling thereof. In the terminology of ASON and OSRP, SNCs are end-to-end signaled paths or calls since from the point of view of a client signal; each is a single network segment. In GMPLS, the connections are an end-to-end path referred to as LSPs. In SDN, such as in OpenFlow, services are called flows. In the various descriptions herein, reference is made to SNC or SNCP for illustration only of an exemplary embodiment of the systems and methods. Those of ordinary skill in the art will recognize that SNCs, LSPs, flows, or any other managed service in the network can be used with the systems and methods described herein for end-to-end paths. Also, as described herein, the term services is used for generally describing connections such as SNCs, LSPs, flows, etc. in the network 10. Note, the control plane 16 and the SDN controller 18 are one exemplary application of the disjoint path computation systems and methods. Those of ordinary skill in the art will recognize the disjoint path computation systems and methods can apply to any network with non-integral constraints, such as DWDM networks with spectrum continuity as a constraint.
(23) Exemplary Network Element/Node
(24) Referring to
(25) In an exemplary embodiment, the node 30 includes common equipment 32, one or more line modules 34, and one or more switch modules 36. The common equipment 32 can include power; a control module; operations, administration, maintenance, and provisioning (OAM&P) access; user interface ports; and the like. The common equipment 32 can connect to a management system 38 through a data communication network 40 (as well as a Path Computation Element (PCE), SDN controller, OpenFlow controller, etc.). The management system 38 can include a network management system (NMS), element management system (EMS), or the like. Additionally, the common equipment 32 can include a control plane processor, such as a controller 50 illustrated in
(26) Further, the line modules 34 can include a plurality of optical connections per module and each module may include a flexible rate support for any type of connection, such as, for example, 155 Mb/s, 622 Mb/s, 1 Gb/s, 2.5 Gb/s, 10 Gb/s, 40 Gb/s, and 100 Gb/s, N1.25 Gb/s, and any rate in between as well as future higher rates. The line modules 34 can include wavelength division multiplexing interfaces, short reach interfaces, and the like, and can connect to other line modules 34 on remote network elements, end clients, edge routers, and the like, e.g. forming connections on the links in the network 10. From a logical perspective, the line modules 34 provide ingress and egress ports to the node 30, and each line module 34 can include one or more physical ports. The switch modules 36 are configured to switch channels, timeslots, tributary units, packets, etc. between the line modules 34. For example, the switch modules 36 can provide wavelength granularity (Layer 0 switching); OTN granularity such as Optical Channel Data Unit-1 (ODU1), Optical Channel Data Unit-2 (ODU2), Optical Channel Data Unit-3 (ODU3), Optical Channel Data Unit-4 (ODU4), Optical Channel Data Unit-flex (ODUflex), Optical channel Payload Virtual Containers (OPVCs), ODTUGs, etc.; Ethernet granularity; and the like. Specifically, the switch modules 36 can include Time Division Multiplexed (TDM) (i.e., circuit switching) and/or packet switching engines. The switch modules 36 can include redundancy as well, such as 1:1, 1:N, etc. In an exemplary embodiment, the switch modules 36 provide OTN switching and/or Ethernet switching.
(27) Those of ordinary skill in the art will recognize the node 30 can include other components which are omitted for illustration purposes, and that the systems and methods described herein are contemplated for use with a plurality of different network elements with the node 30 presented as an exemplary type of network element. For example, in another exemplary embodiment, the node 30 may not include the switch modules 36, but rather have the corresponding functionality in the line modules 34 (or some equivalent) in a distributed fashion. For the node 30, other architectures providing ingress, egress, and switching are also contemplated for the systems and methods described herein. In general, the systems and methods described herein contemplate use with any network element providing switching of channels, timeslots, tributary units, wavelengths, etc. and using the control plane. Furthermore, the node 30 is merely presented as one exemplary node 30 for the systems and methods described herein.
(28) Exemplary Controller
(29) Referring to
(30) The network interface 54 can be used to enable the controller 50 to communicate on the DCN 40, such as to communicate control plane information to other controllers, to the management system 38, to the nodes 30, and the like. The network interface 54 can include, for example, an Ethernet card (e.g., 10BaseT, Fast Ethernet, Gigabit Ethernet) or a wireless local area network (WLAN) card. The network interface 54 can include address, control, and/or data connections to enable appropriate communications on the network. The data store 56 can be used to store data, such as control plane information, provisioning data, OAM&P data, etc. The data store 56 can include any of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, and the like)), nonvolatile memory elements (e.g., ROM, hard drive, flash drive, CDROM, and the like), and combinations thereof. Moreover, the data store 56 can incorporate electronic, magnetic, optical, and/or other types of storage media. The memory 58 can include any of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)), nonvolatile memory elements (e.g., ROM, hard drive, flash drive, CDROM, etc.), and combinations thereof. Moreover, the memory 58 may incorporate electronic, magnetic, optical, and/or other types of storage media. Note that the memory 58 can have a distributed architecture, where various components are situated remotely from one another, but may be accessed by the processor 52. The I/O interface 60 includes components for the controller 50 to communicate with other devices. Further, the I/O interface 60 includes components for the controller 50 to communicate with the other nodes, such as using overhead associated with OTN signals.
(31) In an exemplary embodiment, the controller 50 is configured to communicate with other controllers 50 in the network 10 to operate the control plane for control plane signaling. This communication may be either in-band or out-of-band. For SONET networks and similarly for SDH networks, the controllers 50 may use standard or extended SONET line (or section) overhead for in-band signaling, such as the Data Communications Channels (DCC). Out-of-band signaling may use an overlaid Internet Protocol (IP) network such as, for example, User Datagram Protocol (UDP) over IP. In an exemplary embodiment, the controllers 50 can include an in-band signaling mechanism utilizing OTN overhead. The General Communication Channels (GCC) defined by ITU-T Recommendation G.709 are in-band side channels used to carry transmission management and signaling information within Optical Transport Network elements. The GCC channels may be used for in-band signaling or routing to carry control plane traffic. Other mechanisms are also contemplated for control plane signaling.
(32) The controller 50 is configured to operate the control plane 16 in the network 10. That is, the controller 50 is configured to implement software, processes, algorithms, etc. that control configurable features of the network 10, such as automating discovery of the nodes, capacity on the links, port availability on the nodes, connectivity between ports; dissemination of topology and bandwidth information between the nodes; path computation and creation for connections; network level protection and restoration; and the like. As part of these functions, the controller 50 can include a topology database that maintains the current topology of the network 10 based on control plane signaling (e.g., HELLO messages) and a connection database that maintains available bandwidth on the links 14 again based on the control plane signaling. Again, the control plane is a distributed control plane; thus, a plurality of the controllers 50 can act together to operate the control plane using the control plane signaling to maintain database synchronization. In source-based routing, the controller 50 at a source node for a connection is responsible for path computation and establishing by signaling other controllers 50 in the network 10, such as through a SETUP message. For example, the source node and its controller 50 can signal a path through various techniques. As described herein, the connection refers to a signaled, end-to-end connection such as an SNC, SNCP, LSP, etc. which are generally a service. Path computation generally includes determining a path, i.e. traversing the links through the nodes from the originating node to the destination node based on a plurality of constraints such as administrative weights on the links, bandwidth availability on the links, etc.
(33) In an exemplary embodiment, the controller 50 can be configured, through the control plane 16, to implement the disjoint path computation systems and methods. In another exemplary embodiment, the controller 50 can be a PCE configured to implement the disjoint path computation systems and methods. Various other implementations are also contemplated for implementing the disjoint path computation systems and methods.
(34) Disjoint Path Computation
(35) A disjoint shortest pair computation is well known based on network flow principles. Again, for DWDM networks, the same computation does not take care of wavelength continuity in fixed grid and spectrum continuity in flex grid networks. The systems and methods described herein provide an approach to consider these constraints based on a modified Suurballe's algorithm. Again, the problem is defined as given a graph G(V,E), a disjoint shortest pair by Suurballe's algorithm may not yield a feasible or optimal solution for spectrum continuity constraints when one could exist. For continuity constraints, the systems and methods look for maximal spectral continuity existence on a path, given the spectrum required. A simple application of continuity constraints during the two Dijkstra iterations (as part of Suurballe's algorithm) is not a valid solution, since the step of removing reversed edges in Suurballe's algorithm yields non-maximal continuity constraints, thus invalidating the above solution.
(36) Suurballe's algorithm basically involves two steps using Dijkstra's algorithm. To begin describing Suurballe's algorithm, let G be a weighted directed graph containing a set V of n vertices and a set E of m directed edges; let s be a designated source vertex in G, and let t be a designated destination vertex. Let each edge (u, v) in E, from vertex u to vertex v, have a non-negative cost w(u, v). Define d(s, u) to be the cost of the shortest path to vertex u from vertex s in the shortest path tree rooted at s. In terms of the network 10, vertices are the nodes 12 and edges are the links 14. The output provides a disjoint pair of paths between the nodes 12 designated by the edges s, t.
(37) Conventional operation of Suurballe's algorithm includes steps of:
(38) First, find the shortest path tree T rooted at node s by running Dijkstra's algorithm. This tree contains for every vertex u, the shortest path from s to u. Let P.sub.1 be the shortest cost path from s to t. The edges in T are called tree edges, and the remaining edges are called non-tree edges.
(39) Second, modify the cost of each edge in the graph by replacing the cost w(u, v) of every edge (u, v) by w(u, v)=w(u, v)d(s, v)+d(s, u). According to the resulting modified cost function, all tree edges have a cost of 0, and non-tree edges have a non-negative cost.
(40) Third, create a residual graph G.sub.t formed from G by removing the edges of G on path P.sub.1 that are directed into s and then reverse the direction of the zero length edges along path P.sub.1.
(41) Fourth, find the shortest path P.sub.2 in the residual graph G.sub.t by running Dijkstra's algorithm.
(42) Finally, discard the reversed edges of P.sub.2 from both paths. The remaining edges of P.sub.1 and P.sub.2 form a subgraph with two outgoing edges at s, two incoming edges at t, and one incoming and one outgoing edge at each remaining vertex. Therefore, this subgraph includes two edge-disjoint paths from s to t and possibly some additional (zero-length) cycles. Return the two disjoint paths from the subgraph.
(43) Disjoint Path ComputationDWDM Problem Definition
(44) Referring to
(45) In
(46) There are two problems with the conventional Suurballe's algorithm in DWDM networks with a requirement for wavelength continuity, namely one may not get a solution when one is available, and one may get a sub-optimal solution.
(47) In
(48) In
(49) In
(50) Disjoint Path ComputationGraph Definitions
(51) Referring to
(52) Referring to
(53) From these graphs and definitions, the following insights apply: the continuity constraint need not apply on cut edges 208 and cut-edge augmenting path segments 210; the continuity constraint needs to be applied only amongst alternating path segments of the two paths 220, 222; and these rules hold even for the network with no cut edges.
(54) Disjoint Path Computation Process
(55) Referring to
(56) The process 300 starts with CT.sub.1=NULL, CT.sub.2=NULL, CE= (Reversed edges of P.sub.1 common to P.sub.1 and P.sub.2) (CE=cut edges) (step 308) and PATH=2, Non-viable Segment=NS= (step 310). The process 300 includes running SPF with Non-Viable Segment NS and without continuity constraints yielding P.sub.1 and tree T (step 312). Next, the process 300 includes applying weight modifications on the tree T and reversing edges of P.sub.1=>an auxiliary directed graph G=(V, E) is formed (step 314).
(57) Next, a connector 316 in
(58) The second SPF is performed as follows based on vertex m. First, if e.sub.i,i+1P.sub.1 AND e.sub.i1, 1 NOTP.sub.1 (Entering a CUT EDGE from vertex m)CE=CE U e.sub.i,i+1, CT.sub.PATH=CT.sub.PATH AND .sub.m,PATH, and IF CT.sub.PATH IS NULL: NS=NS U P.sub.1 and return FAIL and proceed to step 320;
(59) Else If e.sub.i,i+1 NOTP.sub.1 AND e.sub.i1,IP.sub.1 (Exiting a CUT EDGE from vertex m)CE=CE U e.sub.i,i+1, PATH=PATH.sup.C (Toggle PATH i.e. If Path==1 THEN PATH=2 ELSE PATH=1), CT.sub.PATH=CT.sub.PATH AND .sub.m,PATH, and IF CT.sub.PATH IS NULL: NS=NS U P.sub.1 and return FAIL;
(60) Else If Vertex m==DestinationCT.sub.1=CT.sub.1 AND .sub.m,1, CT.sub.2=CT.sub.2 AND .sub.m,2, and IF CT.sub.1 IS NULL: NS=NS U P.sub.1 and return FAIL; IF CT.sub.2 IS NULL: NS=NS U P.sub.1 and return FAIL.
(61) If step 318 yields two paths, these are the two shortest feasible paths (step 320), and if not, the process returns to step 312 with the current variables set based on above.
(62) In the process 300, steps 302-310 are initialization steps, steps 312-314 involve computing the first path, and steps 316-322 involve computing the second path.
(63) Referring to
(64) The process 400 includes initialization with CT.sub.1=NULL, CT.sub.2=NULL, CE=, PATH=2, NS= (step 402) and running SPF with NS to obtain the first path, P.sub.1 (step 404). The process 400 includes applying weight modification on the tree T and reversing edges of P.sub.1 to yield the auxiliary graph, G (step 406). If P.sub.1 does not exist (step 408), there is no solution (step 410) and if P.sub.1 does exist (step 408), the process 400 includes computing a second SPF on the auxiliary graph (step 412).
(65) After the step 412, the process 400 determines whether it is entering a cut edge (step 414), exiting a cut edge (step 416), or at the destination (step 418). If entering a cut edge (step 414), the process 400 includes setting CE=CE U e.sub.i,i+1 and CT.sub.PATH=CT.sub.PATH and .sub.m,PATH (step 420). If existing a cut edge (step 416), the process 400 includes setting CE=CE U e.sub.i,i+1, PATH=PATH.sup.C (toggle PATH), and CT.sub.PATH=CT.sub.PATH and .sub.m,PATH (step 422). If at the destination (step 418), the process 400 includes setting CT.sub.1=CT.sub.1 and .sub.m,1 and CT.sub.2=CT.sub.2 and .sub.m,2 (step 424).
(66) After steps 420, 422, 424, the process 400 checks if either CT.sub.PATH is NULL (step 426), and if not, NS=NS U P.sub.1 (step 428) and the process 400 returns to step 404. If either CT.sub.PATH is NULL (step 426), the process 400 finds CT.sub.1=CT.sub.1 and .sub.m,1 and CT.sub.2=CT.sub.2 and .sub.m,2 and ends (step 430).
(67) Referring to
(68) The processes 300, 400 are executing Suurballe's algorithm and are modifying weights to get the minimal disjoint pair, on every iteration. If there are no CUT EDGES, the processes 300, 400 is equivalent to Suurballe's algorithm with continuity constraint applied afterward. If there are CUT EDGES, the continuity constraints are only applied to the alternating path segments of the two disjoint paths and thus allows an RSA/RWA constrained disjoint pair computation. If a feasible minimal solution is not found, then the processes 300, 400 runs again to yield the next best shortest path by not using the Non-Viable Segment (NS). Thus, the processes 300, 400 never go back to compute the same Shortest path again.
(69) Example Disjoint Path Computation
(70) Referring to
(71) Disjoint Path Computation Process
(72) Referring to
(73) The continuity constraints can include one of wavelength and spectrum continuity in the network. The determining the first path and determining the second path can utilize Shortest Path First (SPF). The plurality of variables can include a set of Cut Trees (CT), CT.sub.1, CT.sub.2, and wherein the set of CT are modified traversing the auxiliary directed graph, and subsequent to reaching the destination, if the set of CT are not empty, the set of CT form the disjoint paths. The first path can be determined using a Non-Viable Segment without the continuity constraints to yield the first path, P.sub.1, and a tree, T, and wherein the auxiliary directed graph can be determined by applying weight modifications to the tree, T, and reversing edges of the first path, P.sub.1. An alternating path and cut edges are used to apply the continuity constraints for both the disjoint paths during the determining the second path.
(74) In another exemplary embodiment, an apparatus adapted to compute disjoint paths in a network considering continuity constraints includes circuitry adapted to initialize a plurality of variables associated with a graph defining the network where edges constitute nodes and vertices constitute links responsive to a request for disjoint paths in the network which are subject to the continuity constraints; circuitry adapted to determine a first path through the graph and determining an auxiliary directed graph based on the first path; and circuitry adapted to determine a second path through the auxiliary directed graph, wherein the second path is determined by considering entry into cut edges, exit from cut edges, and reaching a destination in the auxiliary directed graph and the plurality of variables are adjusted based on the entry, the exit, and the destination to address the continuity constraints.
(75) In a further exemplary embodiment, a system adapted to compute disjoint paths in a network considering continuity constraints includes a network interface and a processor communicatively coupled to one another; and memory storing instructions that, when executed, cause the processor to, responsive to a request, via the network interface, for disjoint paths in the network which are subject to the continuity constraints, initialize a plurality of variables associated with a graph defining the network where edges constitute nodes and vertices constitute links, determine a first path through the graph and determining an auxiliary directed graph based on the first path, and determine a second path through the auxiliary directed graph, wherein the second path is determined by considering entry into cut edges, exit from cut edges, and reaching a destination in the auxiliary directed graph and the plurality of variables are adjusted based on the entry, the exit, and the destination to address the continuity constraints.
(76) It will be appreciated that some exemplary embodiments described herein may include one or more generic or specialized processors (one or more processors) such as microprocessors; Central Processing Units (CPUs); Digital Signal Processors (DSPs): customized processors such as Network Processors (NPs) or Network Processing Units (NPUs), Graphics Processing Units (GPUs), or the like; Field Programmable Gate Arrays (FPGAs); and the like along with unique stored program instructions (including both software and firmware) for control thereof to implement, in conjunction with certain non-processor circuits, some, most, or all of the functions of the methods and/or systems described herein. Alternatively, some or all functions may be implemented by a state machine that has no stored program instructions, or in one or more Application Specific Integrated Circuits (ASICs), in which each function or some combinations of certain of the functions are implemented as custom logic or circuitry. Of course, a combination of the aforementioned approaches may be used. For some of the exemplary embodiments described herein, a corresponding device in hardware and optionally with software, firmware, and a combination thereof can be referred to as circuitry configured or adapted to, logic configured or adapted to, etc. perform a set of operations, steps, methods, processes, algorithms, functions, techniques, etc. on digital and/or analog signals as described herein for the various exemplary embodiments.
(77) Moreover, some exemplary embodiments may include a non-transitory computer-readable storage medium having computer readable code stored thereon for programming a computer, server, appliance, device, processor, circuit, etc. each of which may include a processor to perform functions as described and claimed herein. Examples of such computer-readable storage mediums include, but are not limited to, a hard disk, an optical storage device, a magnetic storage device, a ROM (Read Only Memory), a PROM (Programmable Read Only Memory), an EPROM (Erasable Programmable Read Only Memory), an EEPROM (Electrically Erasable Programmable Read Only Memory), Flash memory, and the like. When stored in the non-transitory computer readable medium, software can include instructions executable by a processor or device (e.g., any type of programmable circuitry or logic) that, in response to such execution, cause a processor or the device to perform a set of operations, steps, methods, processes, algorithms, functions, techniques, etc. as described herein for the various exemplary embodiments.
(78) Although the present disclosure has been illustrated and described herein with reference to preferred embodiments and specific examples thereof, it will be readily apparent to those of ordinary skill in the art that other embodiments and examples may perform similar functions and/or achieve like results. All such equivalent embodiments and examples are within the spirit and scope of the present disclosure, are contemplated thereby, and are intended to be covered by the following claims.