1. A method for routing a data packet, the method comprising: determine, by a switching node, if a first network or a second network is a leader, the first network including a first plurality of switching nodes following a first routing objective, the second network including a second plurality of switching nodes, the second plurality of switching nodes being a sub-set of the first plurality of switching nodes, the second plurality of switching nodes following a second routing objective, at least one of the first network and the second network is an overlay network; and if the first network is the leader, determining, by the switching node, constraints based on the second routing objective, and routing, by the switching node, the data packet based on the first routing objective and the determined constraints of the second routing objective; if the second network is the leader, determining, by the switching node, constraints based on the first routing objective, and routing, by the switching node, the data packet based on the second routing objective and the determined constraints of the first routing objective.