Constraint-Driven Routing