Apparatus and method for a fault-tolerant scalable switch fabric with quality-of-service (QOS) support
First Claim
1. An apparatus for routing within a switch fabric, comprising:
- a first arbitration component, the first arbitration component configured to receive a first plurality of request-to-sends (RTSs) from a first plurality of fabric gateways including a first fabric gateway, the first arbitration component configured to arbitrate the first plurality of RTSs according to an arbitration scheme; and
a second arbitration component, the second arbitration component configured to receive a second plurality of request-to-sends (RTSs) from a first plurality of fabric gateways including the first fabric gateway, the first arbitration component configured to arbitrate the second plurality of RTSs according to the arbitration scheme.
6 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the present invention relate to portions of a switch fabric having a single logical stage and at least one physical stage. In addition, the data paths and the control paths of the switch fabric can be decoupled thereby allowing additional processing to be performed than would otherwise be the case with control rates that matched the high data rates. In other words, data cells received on high speed links can be spread over many lower speed links; consequently, the data cells can transit the switch fabric at that high speed while the control information associated with the data can be processed at that lower speed. Because the control information can be processed at a lower speed (associated with the control path), the control information can be processed over a greater period of time.
71 Citations
84 Claims
-
1. An apparatus for routing within a switch fabric, comprising:
-
a first arbitration component, the first arbitration component configured to receive a first plurality of request-to-sends (RTSs) from a first plurality of fabric gateways including a first fabric gateway, the first arbitration component configured to arbitrate the first plurality of RTSs according to an arbitration scheme; and a second arbitration component, the second arbitration component configured to receive a second plurality of request-to-sends (RTSs) from a first plurality of fabric gateways including the first fabric gateway, the first arbitration component configured to arbitrate the second plurality of RTSs according to the arbitration scheme. - View Dependent Claims (2)
-
-
3. A method for routing cells within a switch fabric, comprising:
-
receiving a plurality of cells within a frame, the frame being associated with a plurality of time slots, a subset of cells from the plurality of cells being uniquely associated with each time slot associated with the frame; and shifting, for each time slot associated with the frame, a frame position for the subset of cells associated with that time slot by an incremental amount from a prior time slot within the frame to produce a shifted frame, wherein the shifting shifts the frame position for each cell of a column at least one additional row from a shifted frame position in a prior column. - View Dependent Claims (6, 76)
-
-
4. A method for routing cells within a switch fabric, comprising:
-
receiving a plurality of cells within a frame, the frame being associated with a plurality of time slots, a subset of cells from the plurality of cells being uniquely associated with each time slot associated with the frame; and shifting, for at least some time slots associated with the frame, a frame position for the subset of cells associated with those time slots by an incremental amount from a prior time slot within the frame to produce a shifted frame, wherein; the incremental amount is one from an initial value of zero associated with a first time slot, the frame position for the subset of cells not associated with the first time slot being shifted an amount of zero, the frame position for the subset of cells associated with the first time slot being shifted an amount of one.
-
-
5. A method for routing cells within a switch fabric, comprising:
-
receiving a plurality of cells within a frame, the frame being associated with a plurality of time slots, a subset of cells from the plurality of cells being uniquely associated with each time slot associated with the frame; and shifting, for each time slot associated with the frame, a frame position for the subset of cells associated with that time slot by an incremental amount from a prior time slot within the frame to produce a shifted frame, wherein; the frame being associated with a plurality of rows, each row associated with the frame being associated with an input link, the shifted frame being associated with a plurality of rows, each row associated with the shifted frame being associated with an output link, each row associated with the shifted frame having a portion of each row associated with the frame.
-
-
7. A method for routing cells within a switch fabric, comprising:
-
receiving a plurality of cells within a frame, the frame being associated with its own plurality of time slots and its own plurality of rows, each row associated with the frame being associated with an input link; and reordering the plurality of cells within the frame to produce a shifted frame, the shifted frame having its own plurality of time slots and its own plurality of rows, each row associated with the shifted frame being associated with an output link, each cell being reordered so that each row associated with the frame is uniquely associated with a time slot associated with the shifted frame. - View Dependent Claims (8, 9, 10)
-
-
11. A method for routing cells within a switch fabric, comprising:
-
time-division multiplexing a plurality of cells associated with a first frame and a plurality of RTSs, the first frame being associated with its own plurality of time slots, a plurality of input links and a plurality of output links; and time-division demultiplexing a plurality of CTSs associated with a second frame, a first CTS from the plurality of CTSs associated with the second frame being associated with an availability of a first RTS associated with a cell from the plurality of cells associated with the first frame. - View Dependent Claims (12)
-
-
13. A method for routing cells within a switch fabric, comprising:
-
time-division multiplexing a plurality of cells associated with a first frame, the first frame being associated with its own plurality of time slots, a plurality of input links and a plurality of output links; and time-division demultiplexing a plurality of CTSs associated with a second frame, a first CTS from the plurality of CTSs associated with the second frame being associated with an availability of a first RTS associated with a cell from the plurality of cells associated with the first frame; and time-division multiplexing a plurality of cells associated with a third frame within a delay less than two time slots, the plurality of cells associated with the third frame being associated with its own plurality of time slots, the plurality of input links and the plurality of output links, the plurality of cells associated with the third frame being next in time from the plurality of cells associated with the first frame.
-
-
14. An apparatus, comprising:
-
a plurality of input ports, the plurality of input ports configured to receive a first plurality of cells within a frame, a subset of cells from the plurality of cells being uniquely associated with each time slot associated with the frame; a cell slot translator coupled to the plurality of input ports, the cell slot translator configured to shift, for each time slot associated with the frame, a frame position for the subset of cells associated with that time slot by an incremental amount from a prior time slot within the frame to produce a shifted frame; and a plurality of output ports coupled to the cell slot translator, the plurality of output ports configured to send the shifted frame so that the subset of cells for the first sent time slot of the shifted frame are sent before the subset of cells for the received third time slot of the frame. - View Dependent Claims (77)
-
-
15. A method for routing cells within a switch fabric, comprising:
-
receiving a plurality of cells each having a data portion and a control portion that is unrelated to the data portion for that cell, for each cell from the plurality of cells having a control portion that includes a return-to-send (RTS) that RTS identifying a virtual-output queue (VOQ) having a buffered data portion; grouping a first plurality of RTSs and a second plurality of RTSs associated with the plurality of received cells to produce a set of grouped RTSs, the first plurality of RTSs being associated with a first frame, the second plurality of RTSs being associated with a second frame different from the first frame; and arbitrating the set of grouped RTSs to produce a plurality of selected RTSs. - View Dependent Claims (16, 17, 18, 19)
-
-
20. An apparatus, comprising:
-
a first switching component, the first switching component being configured to receive a plurality of cells each having a data portion and a control portion that is unrelated to the data portion for that cell, for each cell from the plurality of cells having a control portion that includes a return-to-send (RTS) that RTS identifying a virtual-output queue (VOQ) having a buffered data portion, the first switching component being further configured to group a first plurality of RTSs and a second plurality of RTSs associated with the plurality of received cells to produce a set of grouped RTSs, the first plurality of RTSs being associated with a first frame, the second plurality of RTSs being associated with a second frame different from the first frame, the first switching component being further configured to arbitrate the set of grouped RTSs to produce a plurality of selected RTSs. - View Dependent Claims (21, 22)
-
-
23. An apparatus associated with a plurality of links, comprising:
-
a first memory component, the first memory component configured to group a plurality of output port requests; a second memory component coupled to the first memory component, the second memory component being configured to store a vector for each time slot associated with a frame, the vector for each time slot indicating a status of output port requests for each link from the plurality of links; a plurality of comparators coupled to the second memory component, each comparator from the plurality of comparators being associated with an input port and an output port, each comparator from the plurality of comparators being configured to compare an input port schedule value with the plurality of input port requests to produce an output port grant, each comparator from the plurality of comparators being further configured to compare an output port schedule value with a plurality of output port grants including the produced output port grant to produce an input port/output port designation; and a third memory component coupled to the plurality of comparators, the third memory component being configured to store the input port/output port designation produced by each comparator from the plurality of comparators. - View Dependent Claims (24, 25)
-
-
26. A method for routing cells within a switch fabric, comprising:
-
grouping a plurality of request-to-sends (RTSs); forming a plurality of vectors based on the grouped RTSs, each vector from the plurality of vectors being associated with a time slot within a frame, the vector for each time slot indicating a status of output port request for each link from a plurality of links; and arbitrating the plurality of RTSs based on the plurality of vectors to produce a set of input port/output port designations. - View Dependent Claims (27)
-
-
28. An apparatus, comprising:
a first switching component having a grouping memory, an arbitration component and its own plurality of input ports and its own plurality of output ports, the first switching component receiving a first plurality of request-to-sends (RTSs) at its plurality of input ports within a first frame having its own plurality of time slots, the first plurality of RTSs being stored in the grouping memory, the arbitration component arbitrating concurrently the first plurality of RTSs to produce a plurality of selected RTSs. - View Dependent Claims (29, 30, 31, 32)
-
33. An apparatus within a switching fabric, comprising:
-
a buffer memory; a data storage controller coupled to the buffer memory, the data storage controller being configured to receive a plurality of data cells associated with a first time slot, each data cell from the plurality of data cells being uniquely associated with its own cell framer and its own receipt time; and a data alignment controller coupled to the data storage controller, the data alignment controller being configured to send a forwarding signal to the data storage controller at the latest receipt time associated with the plurality of data cells that is within a timeout period. - View Dependent Claims (34, 35, 36)
-
-
37. A method, comprising:
-
receiving a plurality of cells associated with a first time slot, each cell from the plurality of cells being uniquely associated with its own cell framer and its own receipt time; buffering each cell from the plurality of cells as that cell is received; and sending the plurality of cells after every cell from the plurality of cells are received within a timeout period, and providing, before sending the plurality of cells, an idle cell for each cell from the plurality of cells that are not received within the timeout period.
-
-
38. A switching fabric, comprising:
-
a first physical switch stage having its own plurality of components; and a second physical switch stage having its own plurality of components, the plurality of components associated with the second physical switch stage being coupled to the plurality of components associated with the first physical switch stage, the plurality of components associated with the second physical switch stage including at least a first component and a second component, the first component and the second component each having its own deskew module configured to forward substantially simultaneously a first data cell associated with a first time slot and a first receipt time, and a second data cell associated with the first time slot and a second receipt time later than the first receipt time. - View Dependent Claims (39, 40, 41, 42, 43, 44, 45)
-
-
46. A switching fabric, comprising:
-
a first plurality of line cards; a first plurality of multiplexer/demultiplexer cards coupled to the first plurality of line cards; a first plurality of switching cards removably coupled to and geometrically reconfigurable with the first plurality of multiplexer/demultiplexer cards; a second plurality of line cards; a second plurality of multiplexer/demultiplexer cards coupled to the first plurality of line cards and the second plurality of line cards, the second plurality of line cards being coupled to the first plurality of multiplexer/demultiplexer cards; and a second plurality of switching cards removably coupled to and geometrically reconfigurable with the first plurality of multiplexer/demultiplexer cards and the second plurality of multiplexer/demultiplexer cards. - View Dependent Claims (47)
-
-
48. A switching fabric, comprising:
-
a first plurality of fabric gateway components; a first plurality of multiplexer/demultiplexer components coupled to the first plurality of fabric gateway components; a second plurality of fabric gateway components; a second plurality of multiplexer/demultiplexer components coupled to the second plurality of fabric gateway components; and a plurality of switching components removably coupled to the first set of multiplexer/demultiplexer components and the second set of multiplexer/demultiplexer components. - View Dependent Claims (49, 50, 51, 52, 53, 54)
-
-
55. A switching fabric, comprising:
-
a plurality of fabric gateway components; and a plurality of configurable components each having a first configuration and a second configuration, the first configuration being a multiplexer/demultiplexer, the second configuration being a switching component, a first set of configurable components from the plurality of configurable components each being configured as the first configuration, the first set of configurable components being coupled to the plurality of fabric gateway components, a second set of configurable components from the plurality of configurable components each being configured as the second configuration, the second set of configurable components being removably coupled to the plurality of the first set of configurable components. - View Dependent Claims (56, 57)
-
-
58. A method for configuring a switching fabric having at least a first plurality of configurable components coupled to its own plurality of line cards and having a first configuration and a second configuration, the first configuration being a multiplexer/demultiplexer, the second configuration being a switching component, comprising:
-
providing a second plurality of configurable components being in the second configuration; reconfiguring the first plurality of configurable components from the second configuration to the first configuration; and removably coupling the second plurality of configurable components to the first plurality of configurable components. - View Dependent Claims (59, 60, 61)
-
-
62. A method for expanding a switching fabric having at least a first plurality of multiplexer/demultiplexer cards coupled to its own plurality of line cards, and a second plurality of multiplexer/demultiplexer cards coupled to its own plurality of line cards, the first plurality of multiplexer/demultiplexer cards and the second plurality of multiplexer/demultiplexer cards being removably coupled to a first plurality of switching cards, the first plurality of switching cards each having at least one switching component, said method comprising:
-
uncoupling the first plurality of switching cards from the first plurality of multiplexer/demultiplexer cards and the second plurality of multiplexer/demultiplexer cards; providing at least a third plurality of multiplexer/demultiplexer cards coupled to its own plurality of line cards; providing a second plurality of switching cards; and removably coupling the first plurality of switching cards and the second plurality of switching cards to the first plurality of multiplexer/demultiplexer cards, the second plurality of multiplexer/demultiplexer cards and the third plurality of multiplexer/demultiplexer cards. - View Dependent Claims (63)
-
-
64. A method for expanding a switching fabric having at least a first plurality of multiplexer/demultiplexer component coupled to its own plurality of fabric gateway components, and a second plurality of multiplexer/demultiplexer components coupled to its own plurality of fabric gateway components, the first plurality of multiplexer/demultiplexer components and the second plurality of multiplexer/demultiplexer components being removably coupled to a first plurality of switching components, said method comprising:
-
uncoupling the first plurality of switching components from the first plurality of multiplexer/demultiplexer cards and the second plurality of multiplexer/demultiplexer cards; providing at least a third plurality of multiplexer/demultiplexer components coupled to its own plurality of fabric gateway components; providing a second plurality of switching components; removably coupling the first plurality of switching components and the second plurality of switching components to the first plurality of multiplexer/demultiplexer components, the second plurality of multiplexer/demultiplexer components and the third plurality of multiplexer/demultiplexer components. - View Dependent Claims (65)
-
-
66. A method for randomizing a plurality of request-to-sends (RTSs) within a switching fabric, each RTS from the plurality of RTSs being associated with a destination identifier from a plurality of destination identifiers, said method comprising:
-
performing, for each time slot associated with a frame, the following; randomly selecting a link from a plurality of links for that time slot; inserting a first RTS from the plurality of RTSs into a cell associated with the selected link for that time slot; and inserting, for each link from the plurality of links for that time slot, a remaining RTSs from the plurality of RTSs into a respective cell associated with that time slot.
-
-
67. An apparatus, comprising:
-
a plurality of input ports; a plurality of output ports; and a switching fabric coupled to the plurality of input ports and the plurality of output ports, the switching fabric having a distributed scheduler configured to schedule the routing of a plurality of cells from the plurality of input ports to the plurality of output ports, the distributed scheduler having a control path with its own rate and a data path with its own rate, the rate of the control path of the distributed scheduler being less than a rate of a control path of a centralized scheduler with a data path having a rate similar to the data rate of the distributed scheduler. - View Dependent Claims (68, 78, 79)
-
-
69. A method for routing cells within a switching fabric, comprising:
-
receiving a plurality of cells each being associated with a priority value from a plurality of priority values, the plurality of priority values including a first priority value and a second priority value; buffering the plurality of cells in a plurality of virtual output queues (VOQs) including a first VOQ, the first VOQ being associated with the first priority value and the second priority value, each remaining VOQ from the plurality of VOQs being uniquely associated with a remaining priority value from the plurality of priority values, each cell from the plurality of cells being buffered in the VOQ that is associated with the priority value matching the prior value of that cell; and sending, for each cell buffered in the first VOQ, a new-cell indication signal having the first priority value when a queue length of the first VOQ is above a predefined threshold and having the second priority value when the queue length of the first VOQ is not above the predefined threshold. - View Dependent Claims (70, 71)
-
-
72. An apparatus, comprising:
-
a plurality of virtual output queues (VOQs) including a first VOQ, the first VOQ being associated with a first priority value and a second priority value from a plurality of priority values, each remaining VOQ from the plurality of VOQs being uniquely associated with a remaining priority value from a plurality of priority values; a first counter associated with the first VOQ and the first priority value, the first counter being configured to count each cell being buffered in the first VOQ and having the first priority value; a second counter associated with the first VOQ and the second priority value, the second counter being configured to count each cell being buffered in the first VOQ and having the second priority value; and a signal generator coupled to the first VOQ, the signal generator being configured to send, for each cell buffered in the first VOQ, a new-cell indication signal having the first priority value when a count of the first counter is above a predefined threshold and having the second priority value when a count of the second counter is not above the predefined threshold. - View Dependent Claims (73, 74, 75)
-
-
80. A method for identifying a path to forward data, comprising:
-
receiving control information and data from at least one source within randomized time slots; performing arbitration based on the control information to determine a mapping of which source will be routed to which output; and specifying at least one path through which to route further data associated with the control information from the at least one source to at least one destination. - View Dependent Claims (81, 82, 83, 84)
-
Specification