A network device for data packet forwarding, the network device comprising: a packet ingress module operable to receive a data packet having a destination local identifier, DLID, identifying a destination node of the data packet and to extract the DLID from the data packet; a static route module operable to determine a statically routed destination port of the network device as a function of the DLID; a congestion monitoring module operable to determine whether the statically routed destination port is congested; a management module operable to receive commands, data and other management information from a fabric manager, the management module being operable to manage a port group forwarding table and a port group table that are configured by the fabric manager; and an adaptive route module operable to: determine a port group as a function of the DLID in response to a determination that the statically routed destination port is congested, wherein the port group identifies two or more ports of the network device, wherein to determine the port group as a function of the DLID comprises to index the port group forwarding table with the DLID to determine a port group identifier; select a dynamic destination port of the port group in response to the determination that the statically routed destination port is congested, wherein to select the dynamic destination port of the port group comprises to index the port group table with the port group identifier to determine a port group mask, wherein the port group mask is indicative of a plurality of valid destination ports for the DLID, and select the dynamic destination port from the plurality of valid destination ports of the port group mask; and forward the data packet to the dynamic destination port in response to the determination that the statically routed destination port is congested. a packet ingress module operable to receive a data packet having a destination local identifier, DLID, identifying a destination node of the data packet and to extract the DLID from the data packet; a static route module operable to determine a statically routed destination port of the network device as a function of the DLID; a congestion monitoring module operable to determine whether the statically routed destination port is congested; a management module operable to receive commands, data and other management information from a fabric manager, the management module being operable to manage a port group forwarding table and a port group table that are configured by the fabric manager; and an adaptive route module operable to: determine a port group as a function of the DLID in response to a determination that the statically routed destination port is congested, wherein the port group identifies two or more ports of the network device, wherein to determine the port group as a function of the DLID comprises to index the port group forwarding table with the DLID to determine a port group identifier; select a dynamic destination port of the port group in response to the determination that the statically routed destination port is congested, wherein to select the dynamic destination port of the port group comprises to index the port group table with the port group identifier to determine a port group mask, wherein the port group mask is indicative of a plurality of valid destination ports for the DLID, and select the dynamic destination port from the plurality of valid destination ports of the port group mask; and forward the data packet to the dynamic destination port in response to the determination that the statically routed destination port is congested. determine a port group as a function of the DLID in response to a determination that the statically routed destination port is congested, wherein the port group identifies two or more ports of the network device, wherein to determine the port group as a function of the DLID comprises to index the port group forwarding table with the DLID to determine a port group identifier; select a dynamic destination port of the port group in response to the determination that the statically routed destination port is congested, wherein to select the dynamic destination port of the port group comprises to index the port group table with the port group identifier to determine a port group mask, wherein the port group mask is indicative of a plurality of valid destination ports for the DLID, and select the dynamic destination port from the plurality of valid destination ports of the port group mask; and forward the data packet to the dynamic destination port in response to the determination that the statically routed destination port is congested. index the port group table with the port group identifier to determine a port group mask, wherein the port group mask is indicative of a plurality of valid destination ports for the DLID, and select the dynamic destination port from the plurality of valid destination ports of the port group mask; and forward the data packet to the dynamic destination port in response to the determination that the statically routed destination port is congested.