A method , comprising: determining , by one or more processors of one or more switches (102-142) included in a network , that a packet is to be transmitted from a source switch to a destination switch , wherein the one or more switches (102-142) are coupled to one another to form one or more routes, and wherein each switch (102-142) includes one or more ports; selecting , by the one or more processors , a next port of a next switch among a plurality of ports (300-307) of one or more other switches (112-116, 122-126, 132) to be used for transmitting the packet, each port of the plurality of ports (300-307) being part of one or more routes, wherein selecting comprises: selecting , by the one or more processors , a first set of ports among the plurality of ports (300-307) based on a static weight configuration associated with each port of the plurality of ports (300-307); selecting , by the one or more processors , a second set of ports among the first set of ports based on congestive conditions along routes requiring equal number of hops to reach the destination switch from each port of the second set of ports ; and selecting , by the one or more processors , the next port among the second set of ports based on an estimated latency to the destination switch associated with each port of the second set of ports ; and routing , by the one or more processors , the packet through the selected next port of the next switch along a respective route of the selected next port. determining , by one or more processors of one or more switches (102-142) included in a network , that a packet is to be transmitted from a source switch to a destination switch , wherein the one or more switches (102-142) are coupled to one another to form one or more routes, and wherein each switch (102-142) includes one or more ports; selecting , by the one or more processors , a next port of a next switch among a plurality of ports (300-307) of one or more other switches (112-116, 122-126, 132) to be used for transmitting the packet, each port of the plurality of ports (300-307) being part of one or more routes, wherein selecting comprises: selecting , by the one or more processors , a first set of ports among the plurality of ports (300-307) based on a static weight configuration associated with each port of the plurality of ports (300-307); selecting , by the one or more processors , a second set of ports among the first set of ports based on congestive conditions along routes requiring equal number of hops to reach the destination switch from each port of the second set of ports ; and selecting , by the one or more processors , the next port among the second set of ports based on an estimated latency to the destination switch associated with each port of the second set of ports ; and selecting , by the one or more processors , a first set of ports among the plurality of ports (300-307) based on a static weight configuration associated with each port of the plurality of ports (300-307); selecting , by the one or more processors , a second set of ports among the first set of ports based on congestive conditions along routes requiring equal number of hops to reach the destination switch from each port of the second set of ports ; and selecting , by the one or more processors , the next port among the second set of ports based on an estimated latency to the destination switch associated with each port of the second set of ports ; and routing , by the one or more processors , the packet through the selected next port of the next switch along a respective route of the selected next port. <EOS>