Methods for distributing software-determined global load information
Systems and methods are provided for performing routing in a switch network or fabric. Switches can be configured in a hierarchical topology having a plurality of groups, where switches in a group are connected to one another, and groups are connected to other groups. Routing can be performed by maintaining per-group group load information. A packet can be routed between at least two groups using the per-group group load information to effect a set of routing decisions. The set of routing decisions can be biased towards or away one or more paths.
1. A method of routing data in a network having a plurality of switches configured in a hierarchical topology having a plurality of groups, each of the plurality of groups comprising a subset of the plurality of switches being connected to one another, and each of the plurality of groups being connected to at least one other of the plurality of groups, the method comprising:
maintaining per-group group load information provided by a load source outside the network, wherein the per-group group load information comprises a software-configurable value based on local traffic in each of the plurality of groups;
determining global non-minimal global port loads for a plurality of ports, wherein each global non-minimal global port load comprises a maximum of a load associated with a global port connected to one of the plurality of groups and the per-group group load information associated with the one of the plurality of groups reached by the global port; and
routing a packet between at least two of the plurality of groups using the per-group group load information and the global non-minimal global port loads to affect a set of routing decisions and to bias the set of routing decisions towards or away one or more paths.
2. The method of claim 1 , wherein the per-group group load information comprises a software-configurable value based on injection load present across input edge ports of each of the plurality of groups comprising the network.
3. The method of claim 1 , wherein the per-group group load information comprises a value based on categorization of one or more of the plurality of groups as groups suitable for use as intermediate groups for global non-minimal routing.
4. The method of claim 1 , wherein the per-group group load information is representative of an amount of local traffic within each of the plurality of groups.
5. The method of claim 1 , further comprising distributing the per-group group load information to ports of groups operatively linked to one or more other groups within the network.
6. The method of claim 5 , further comprising learning per-group group load information associated with the other groups, the other groups comprising groups at the other end of each global link terminated by a switch.
7. The method of claim 1 , wherein the software-configurable value based on local traffic in each of the plurality of groups is based on one or more jobs or services running within each of the respective groups.
8. The method of claim 1 , wherein the software-configurable values of the per-group group load information are not computed by a switch.
9. A switch, comprising:
an application-specific integrated circuit (ASIC) to:
determine loads associated with groups of switches within a switch fabric, wherein the switches comprise a plurality of ports;
set group load values for the groups of switches based on the determined loads, the group load values comprising software-configurable values based on local traffic for each of the groups of switches;
determine global non-minimal global port loads for the plurality of ports, wherein each global non-minimal global port load comprises a maximum of a load associated with a global port connected to a group of switches and the group load value for the group of switches connected to the global port;
based on the group load values and the global non-minimal global port loads, assess a suitability of ports of switches within a first group of switches to use in directing a packet to one of a plurality of intermediate groups of switches connected to one of the ports of the switches within the first group of switches; and
based on the assessment, route the packet towards a port upon a determination that the port is suitable or route the packet away from the port upon a determination that the port is unsuitable.
10. The switch of claim 9 , wherein the loads comprise a software-configurable value for each group of switches calculated based on a measure of injection load present across input edge ports of each group of switches.
11. The switch of claim 9 , wherein the group load values comprise a software-configurable value for each group of switches dependent on a policy discouraging routing traffic through the group of switches based on at least one of jobs and services running on the group of switches.
12. The switch of claim 9 , wherein upon setting the group load value, the ASIC is to distribute the group load value to ports of the group of switches operatively linked to one or more other groups of switches within the switch fabric.
13. The switch of claim 12 , wherein the ASIC learns of group load values associated with other groups of switches within the switch fabric, the other groups of switches comprising groups of switches at the other end of each global link terminated by the switch.
14. The switch of claim 9 , wherein to assess the suitability of the port, the ASIC is to consider the group load value of the port in addition to a local load associated with the port.
15. The switch of claim 9 , comprising a software-configurable table storing a plurality of bias values, wherein the ASIC assesses the suitability of the ports of switches within the first group of switches based on applying a bias value of the plurality of bias values to each of the ports of switches within the first group of switches.
16. The switch of claim 15 , wherein the bias value applied to each of the ports of switches within the first group of switches is respectively based on a categorization of each port being one of: a minimal preferred candidate port, a non-preferred minimal candidate port, or a non-minimal candidate port.
17. A switch fabric comprising a plurality of switches configured in a hierarchical topology, wherein subsets of the plurality of switches connected to one another form a plurality of groups, each of the plurality of groups being connected to at least one other of the plurality of groups, a first switch of a first group of the plurality of groups configured to:
maintain per-group group load information provided by a load source outside the switch fabric; and
route a packet between at least two of the plurality of groups using the per-group group load information and global non-minimal global ports loads to effect a set of routing decisions, wherein the per-group group load information comprises a software-configurable value for each of the plurality of groups based on local traffic in each respective group, and the global non-minimal global port loads comprise a maximum of a load associated with a global port connected to another group and the per-group group load information for the group connected to the global port, wherein the set of routing decisions bias routing of the packet towards or away one or more paths.
18. The switch fabric of claim 17 , wherein the per-group group load information comprises a software-configurable value based on injection load present across input edge ports of each of the plurality of groups.
19. The switch fabric of claim 17 , wherein the per-group group load information comprises a value based on categorization of one or more of the plurality of groups as groups suitable for use as intermediate groups for global non-minimal routing.
20. The switch fabric of claim 17 , wherein the per-group group load information is representative of an amount of local traffic within each of the plurality of groups.