Broadly, techniques for solving network routing within a predetermined
error are disclosed. These techniques may be applied to networks
supporting dedicated reserve capacity, where reserved capacity on links
in the network is dedicated for a particular commodity (generally, a
source and sink pair of computers), and shared recovery, where reserved
capacity on links is shared amongst two or more commodities. These
techniques use an iterative process to determine flows on each of the
links in a network. Costs are set for each commodity, and primary and
secondary (i.e., backup) flows are initialized. A commodity is selected
and demand for the commodity is routed through the shortest path. Costs
are updated for each potential failure mode. For each commodity, the
flows and costs are updated. Once all flows and costs are updated, then
it is determined if a function is less than a predetermined value. If the
function is less than a predetermined value, then the commodity
selection, and flow and cost adjustments are again performed. If the
function is greater than the predetermined amount, then the network
routing problem is solved to within a predetermined amount from an
optimal network routing.