Striping algorithm for switching fabric
First Claim
1. A method for routing segments of data belonging to a class of a set of one or more classes, from a first input module in an input stage to a plurality of output modules in an output stage, via a plurality of intermediate stage modules, said first input module having a data path to each of said intermediate stage modules and each of said intermediate stage modules having a data path to at least one of said output modules, an intermediate stage module including a multicast replicator for forwarding a data segment received from an input module to more than one of said output modules, the method comprising the steps of said first input module:
- (a) determining, in dependence upon a measure of relative channel loading of routes from said first input module to said output stage via said data paths, due to data of said class that originated from said first input module during a given prior time period, a given intermediate stage module of said intermediate stage modules through which to send a given next data segment of said class to be sent by said first input module; and
(b) sending said given next data segment on the data path to said given intermediate stage module, wherein;
the data originating from said first input module during said given prior time period includes a prior data segment of said class replicated by said multicast replicator for forwarding to more than one of said output modules, andthe channel loading due to said prior data segment is reflected in said measure of relative channel loading of each of the routes taken by said prior data segment from said first input module to modules in said output stage.
8 Assignments
0 Petitions
Accused Products
Abstract
A striping algorithm selects a route on which to transmit each next data segment, in dependence upon relative channel loading so far, taking account of multicast. Input modules can keep a channel loading history for each route it has, and can update its history for each route that a data segment follows through the fabric. In an embodiment, the input module transmits each data segment toward an i'"'"'th intermediate stage module, where i minimizes
q(i,a(G),c)+q(i,b(G),c)+ . . . +q(i,k(G),c),
where q(i, j, c) indicates the number of bytes of data sent, during a given prior time period, from the input module to each j'"'"'th one of the output modules via each i'"'"'th one of the intermediate stage modules, and a(G), b(G), . . . , and k(G) are the output module(s) in the multicast group G to which the data segment is destined.
-
Citations
106 Claims
-
1. A method for routing segments of data belonging to a class of a set of one or more classes, from a first input module in an input stage to a plurality of output modules in an output stage, via a plurality of intermediate stage modules, said first input module having a data path to each of said intermediate stage modules and each of said intermediate stage modules having a data path to at least one of said output modules, an intermediate stage module including a multicast replicator for forwarding a data segment received from an input module to more than one of said output modules, the method comprising the steps of said first input module:
-
(a) determining, in dependence upon a measure of relative channel loading of routes from said first input module to said output stage via said data paths, due to data of said class that originated from said first input module during a given prior time period, a given intermediate stage module of said intermediate stage modules through which to send a given next data segment of said class to be sent by said first input module; and (b) sending said given next data segment on the data path to said given intermediate stage module, wherein; the data originating from said first input module during said given prior time period includes a prior data segment of said class replicated by said multicast replicator for forwarding to more than one of said output modules, and the channel loading due to said prior data segment is reflected in said measure of relative channel loading of each of the routes taken by said prior data segment from said first input module to modules in said output stage. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. An input module for use in a switch fabric that contains an input stage including said input module, plurality of output modules in an output stage, and a plurality of intermediate stage modules, said input module having a data path to each of said intermediate stage modules and each of said intermediate stage modules having a data path to at least one of said output modules, at least one of said intermediate stage modules including a multicast replicator for forwarding a data segment received from an input module to more than one of said output modules, for routing segments of data belonging to a class of a set of one or more classes from said input module to said output modules via said intermediate stage modules, the input module comprising:
-
determining logic that, in dependence upon a measure of relative channel loading of routes from said input module to said output stage via said data paths, due to data of said class that originated from said input module during a given prior time period, determines a given intermediate stage module of said intermediate stage modules through which to send a given next data segment of said class to be sent by said input module; and sending logic that sends said given next data segment on the data path to said given intermediate stage module, wherein for a prior data segment sent by said sending logic and destined for more than one of said output modules, the channel loading due to said prior data segment is reflected in said measure of relative channel loading of each of the routes taken by said prior data segment from said input module to modules in said output stage. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. A method for routing segments of data belonging to a class of a set of one or more classes, from a first input module to a plurality of output modules via a plurality of intermediate stage modules in accordance with a striping algorithm, said first input module having a data path to each of said intermediate stage modules and each of said intermediate stage modules having a data path to each of said output modules, an intermediate stage module including a multicast replicator for outputting a data segment received from an input module to more than one of said output modules, the method in accordance with the striping algorithm comprising the step of said first input module sending each subject data segment of a plurality of subject data segments via intermediate stage module i, where i minimizes
q(i,j=a(G),c)+q(i,j=b(G),c)+ . . . +q(i,j=k(G),c),where: -
q(i, j, c) indicates the number of bytes of data of each class c sent, during a particular prior time period, from said first input module to each j'"'"'th one of said output modules via each i'"'"'th one of said intermediate stage modules, G is a multicast group of at least one output module to which the subject data segment is destined, a(G), b(G), . . . , and k(G) are the output module(s) in multicast group G, and c is the class of the subject data segment, and wherein the data sent from said first input module during said particular prior time period includes at least one data segment replicated by said multicast replicator for output to more than one of said output modules. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61)
-
-
62. Striping apparatus for use in routing segments of data belonging to a class of a set of one or more classes, from a first input module to a plurality of output modules via a plurality of intermediate stage modules, including data segments destined for more than one of said output modules, said first input module having a data path to each of said intermediate stage modules and each of said intermediate stage modules having a data path to each of said output modules, at least one of said intermediate stage modules including a multicast replicator for outputting a data segment received from an input module to more than one of said output modules, the striping apparatus sending each subject data segment of a plurality of subject data segments via intermediate stage module i, where i minimizes
q(i,j=a(G),c)+q(i,j=b(G),c)+ . . . + q(i,j=k(G),c),where: -
q(i, j, c) indicates the number of bytes of data of each class c sent, during a particular prior time period, from said first input module to each j'"'"'th one of said output modules via each i'"'"'th one of said intermediate stage modules, G is a multicast group of at least one output module to which the subject data segment is destined, a(G), b(G), . . . , and k(G) are the output module(s) in multicast group G, and c is the class of the subject data segment. - View Dependent Claims (63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73)
-
-
74. A method for routing segments of data belonging to a class of a set of one or more classes, from a first input module to a plurality of output modules via a plurality of routes through an intermediate stage, said first input module having a plurality of output ports toward said intermediate stage and said intermediate stage including at least one multicast replicator for outputting a data segment received from an input module to more than one of said output modules, comprising the step of said first input module sending each subject data segment of a plurality of subject data segments via its output port i, where i minimizes
q(i,j=a(G),c)+q(i,j=b(G),c)+ . . . +q(i,j=k(G),c),where: -
q(i, j, c) indicates the number of bytes of data of each class c sent, during a particular prior time period, from said first input module to each j'"'"'th one of said output modules via each i'"'"'th one of said output ports of said first input module, G is a multicast group of at least one output module to which the subject data segment is destined, a(G), b(G), . . . , and k(G) are the output module(s) in multicast group G, and c is the class of the subject data segment, and wherein the data sent from said first input module during said particular prior time period includes at least one data segment replicated by said at least one multicast replicator for output to more than one of said output modules.
-
-
75. Striping apparatus for a fabric having a first input module connected to an intermediate stage connected to a plurality of output modules, the striping apparatus for use in routing segments of data belonging to a class of a set of one or more classes, from the first input module to the plurality of output modules via a plurality of routes through the intermediate stage, including data segments destined for more than one of said output modules, said first input module having a plurality of output ports toward said intermediate stage and said intermediate stage including at least one multicast replicator for outputting a data segment received from an input module to more than one of said output modules, the striping apparatus sending each subject data segment of a plurality of subject data segments via output port i of said first input module, where i minimizes
q(i,j=a(G),c)+q(i,j=b(G),c)+ . . . +q(i,j=k(G),c),where: -
q(i, j, c) indicates the number of bytes of data of each class c sent, during a particular prior time period, from said first input module to each j'"'"'th one of said output modules via each i'"'"'th one of said output ports of said first input module, G is a multicast group of at least one output module to which the subject data segment is destined, a(G), b(G), . . . , and k(G) are the output module(s) in multicast group G, and c is the class of the subject data segment.
-
-
76. A method for forwarding segments of data belonging to a class of a set of one or more classes, from a first input module in an input stage to output modules in an output stage via a plurality of routes, comprising the steps of said first input module:
-
queuing a plurality of data segments of said class in said first module, each of said data segments having a respective group of at least one destination output module; transmitting data segments from said plurality of data segments via said routes; receiving acknowledgments each indicating receipt by an output module of a number x of data segments that originated from said first input module; selecting a subject next data segment from among only those of said queued data segments whose group of destination output modules does not include any particular output module from which an acknowledgment has not yet been received by said first input module covering the y'"'"'th previously sent data segment of said class sent from said first input module and destined for said particular output module, y>
x; andtransmitting said subject next data segment via an i'"'"'th one of said routes, where i minimizes
q(i,j=a(G),c)+q(i,j=b(G),c)+ . . . +q(i,j=k(G),c),where; q(i, j, c) indicates the number of bytes of data of said class sent, during a given prior time period, from said first input module to each j'"'"'th one of said output modules via each i'"'"'th one of said routes, a(G), b(G), . . . , and k(G) are the output module(s) to which said subject next data segment is destined, and c is the class of said subject next data segment. - View Dependent Claims (77, 78, 79, 80)
-
-
81. Switching apparatus comprising:
-
a plurality of input modules and a plurality of output modules; a plurality of intermediate stage modules, each intermediate stage module including a multicast replicator for forwarding a data segment received from an input module to more than one of said output modules; data paths interconnecting each of said input modules with each of said intermediate stage modules and each of said intermediate stage modules with each of said output modules, said input modules transmitting data segments toward said output modules via said intermediate stage modules; and a striping mechanism which determines, for each subject one of said data segments, a respective one of said intermediate stage modules via which the subject data segment should be transmitted, wherein; said striping mechanism is distributed across all of said input modules; and said striping mechanism comprises a path select mechanism in each of said input modules, the path select mechanism in each given one of said input modules selecting intermediate stage modules for only those of said subject data segments being transmitted by said given input module, and without considering any history of path selections made by any others of said input modules. - View Dependent Claims (82, 83, 84, 85, 86, 87, 88)
-
-
89. A combination of first and second data switches connected either in series or in parallel in a data network, each of said data switches comprising:
-
a plurality of input modules and a plurality of output modules; a plurality of intermediate stage modules, each intermediate stage module in each subject one of said data switches including a multicast replicator for forwarding a data segment received from an input module in said subject data switch to more than one of said output modules in said subject data switch; data paths interconnecting each of said input modules with each of the intermediate stage modules in the same data switch and each of said intermediate stage modules with each of said output modules in the same data switch, said input modules transmitting data segments toward the output modules in the same data switch via the intermediate stage modules in the same data switch; and a striping mechanism in each given one of said data switches, distributed across all of the input modules in the given data switch, which determines, for each data segment transmitted from an input module in the given data switch, a respective one of said intermediate stage modules in the given data switch via which the data segment should be transmitted, wherein all of the input modules in both said first and second data switches are identical in the logic they contain, and wherein the number of input modules contained in said second data switch differs from the number of input modules contained in said first data switch. - View Dependent Claims (90, 91, 92, 93, 94, 95, 96, 97)
-
-
98. A method comprising the steps of:
-
providing a plurality of input modules and a plurality of output modules for each of first and second data switches connected either in series or in parallel in a data network; providing a plurality of intermediate stage modules for each of first and second data switches, each intermediate stage module provided for each subject one of said data switches including a multicast replicator for forwarding a data segment received from an input module provided for said subject data switch to more than one of the output modules provided for said subject data switch; each of first and second data switches having data paths interconnecting each of the input modules with each of the intermediate stage modules in the same data switch and each of the intermediate stage modules with each of the output modules in the same data switch, the input modules transmitting data segments toward the output modules in the same data switch via the intermediate stage modules in the same data switch; and providing a striping mechanism for each given one of said data switches, distributed across all of the input modules provided for the given data switch, which determines, for each data segment transmitted from an input module in the given data switch, a respective one of said intermediate stage modules in the given data switch via which the data segment should be transmitted, wherein all of the input modules provided for both said first and second data switches are identical in the logic they contain, and wherein the number of input modules provided for said second data switch differs from the number of input modules provided for said first data switch. - View Dependent Claims (99, 100, 101, 102, 103, 104, 105)
-
-
106. Switching apparatus comprising:
-
a plurality of input modules and a plurality of output modules; a plurality of intermediate stage modules, each intermediate stage module including a multicast replicator for forwarding a data segment received from an input module to more than one of said output modules; data paths interconnecting each of said input modules with each of said intermediate stage modules and each of said intermediate stage modules with each of said output modules, said input modules transmitting data segments toward said output modules via said intermediate stage modules; and a striping mechanism which determines, for each subject one of said data segments, a respective one of said intermediate stage modules via which the subject data segment should be transmitted, wherein; said striping mechanism is distributed across all of said input modules; said striping mechanism comprises a path select mechanism in each of said input modules, the path select mechanism in each given one of said input modules comprising; a mechanism for maintaining a measure of relative channel loading of routes from said each given input module to output modules, due to data that originated from said each given input module during a given prior time period, said measure of relative channel loading reflecting relative channel loading of each of the routes taken by multicast data segments originating from said each given input module; and a path select mechanism which, in dependence upon said measure of relative channel loading, determines a given one of said intermediate stage modules through which to send at least a subset of next data segments to be sent by said each given input module.
-
Specification