Techniques for network routing and design are provided. A technique for
determining a route for a demand in a network, wherein the network
comprises primary paths and secondary paths, and at least two secondary
paths may share a given link, comprises the following steps/operations.
First, a graph representing the network is transformed. Edges of the
graph represent channels associated with paths and nodes of the graph
represent nodes of the network. The transformation is performed such that
costs associated with the edges reflect costs of using channels in
secondary paths. Then, the shortest path between nodes corresponding to
the demand is found in the transformed graph. The shortest path
represents the least-cost path in the network over which the demand may
be routed. When the above route determination steps/operations result in
a path with at least one loop, an alternative routing process may be
executed so as to determine a loopless path for the demand. Further,
integer linear program formulation design techniques are provided.