We formulate the egress-selection problem as a path-based
multicommodity-flow problem that accounts for the constraints that the
routing matrix
imposes on the flow of traffic. For a
router
and prefix
, we consider the topology
induced
by the links
for which
. All links in
the graph
can be used to route traffic
from
to
through the egress point
. We call
a
path in the multicommodity-flow formulation. We represent the actual
routing of the traffic from
to
by a
-decision variable
, such that
if and only if the path
is selected to send traffic from
to
. The choice of
a path
determines the egress point
selected. For all
pairs
, the egress-selection problem requires that a single
egress point
be chosen. We express this requirement by
the following equation:
The contribution of the traffic going from
to
to the load on
link
is the product of the traffic demand
, the
routing-matrix element
, and the decision variable
. The total load on a link is the sum of all the
contributions, i.e.
A piecewise-linear integer-programming formulation for the
single egress-selection problem is to minimize the objective function
such that the
-decision
variables
sum to
for each
pair. Defining
to be a linear variable and applying a standard
transformation results in the linear integer-programming
formulation:
![]() |
||
| s.t. | ||
![]() |
||
![]() |
||
However, in general, this integer multicommodity-flow problem is
intractable. Instead, we consider its linear-programming relaxation
obtained by relaxing the integrality constraints
to simply
. For both networks we consider,
the CPLEX solver produced solutions with only integer values of
, allowing us to configure the
values to pick
the single egress point
for each
pair.
For situations where the solution of the linear-programming relaxation
is fractional, applying a simple heuristic based on randomized
rounding can produce a valid egress selection. For each pair
with fractional
values, egress point
is
selected with probability
. Randomized rounding is repeatedly
applied and the best solution found is output by the algorithm.