A method for determining a set of service links for restoration of one or more service demands in case of one or more service link failures in a data communication network, wherein the data communication network comprises a plurality of vertices interconnected via at least one respective edge, and a service link is a path comprising at least two vertices and at least one edge which satisfies a respective service demand, the method comprising: identifying a communications route cycle within the data communication network, the communications route cycle alternating through a set of vertices and a set of edges in a sequence of v 1, e 1, v 2, e 2,..., v n, e n, v 1, wherein n is an integer greater than 2, v i is a vertex on the communications route cycle, e i is a path between v i and v i+1, 1≤i≤n, and v n+1 =v 1, wherein the set of vertices includes a plurality of vertices, each of the plurality of vertices corresponding to an end point of at least one service demand, wherein each of the one or more service demands is associated with the communications route cycle, wherein end points of each of the one or more service demands correspond to two vertices of the plurality of vertices, and wherein the identified communications route cycle is a shortest cycle of all possible cycles going through all end points of the one or more service demands; identifying a path between a pair of vertices among the plurality of vertices, wherein the path is disjoint to the set of edges of the communications route cycle, wherein the identified path comprises at least one edge which is not comprised in the communications route cycle; and determining the set of service links corresponding to the one or more service demands based on the identified path and communication route cycle, wherein each service link is a path in the data communication network. identifying a communications route cycle within the data communication network, the communications route cycle alternating through a set of vertices and a set of edges in a sequence of v 1, e 1, v 2, e 2,..., v n, e n, v 1, wherein n is an integer greater than 2, v i is a vertex on the communications route cycle, e i is a path between v i and v i+1, 1≤i≤n, and v n+1 =v 1, wherein the set of vertices includes a plurality of vertices, each of the plurality of vertices corresponding to an end point of at least one service demand, wherein each of the one or more service demands is associated with the communications route cycle, wherein end points of each of the one or more service demands correspond to two vertices of the plurality of vertices, and wherein the identified communications route cycle is a shortest cycle of all possible cycles going through all end points of the one or more service demands; identifying a path between a pair of vertices among the plurality of vertices, wherein the path is disjoint to the set of edges of the communications route cycle, wherein the identified path comprises at least one edge which is not comprised in the communications route cycle; and determining the set of service links corresponding to the one or more service demands based on the identified path and communication route cycle, wherein each service link is a path in the data communication network.