Claims
- 1. An apparatus, comprising:
a transmission module to split a data segment into a plurality of data stripes and transmit each data stripe over an associated data channel, wherein the plurality of data channels are organized into at least one group and each group has an associated parity channel to transmit a parity stripe, the parity stripe being generated based on the data stripes within the group; a reception module to receive the plurality of data stripes over the appropriate data channels and the at least one parity stripe over the parity channel, and check for errors within each stripe; and a controller to control the operation of the apparatus.
- 2. The apparatus of claim 1, wherein said transmission module generates the parity stripe for a group by XORing each of the associated data stripes within the group.
- 3. The apparatus of claim 1, wherein said transmission module generates an error code for each stripe and transmits the error code along with the stripe.
- 4. The apparatus of claim 3, wherein the error code is a cyclic redundancy code (CRC).
- 5. The apparatus of claim 1, wherein said reception module checks for errors by computing an error code for each stripe and comparing it to a transmitted error code.
- 6. The apparatus of claim 1, wherein said reception module discards the data segment if more than one stripe in a group contains errors.
- 7. The apparatus of claim 1, wherein said reception module tracks the number or errors per serial channel and compares to a threshold.
- 8. The apparatus of claim 7, wherein said controller may deactivate a serial channel and reconfigure said transmission module and said reception module to utilize a different configuration of data channels and parity channels if the number of errors in the serial channel exceeds the threshold.
- 9. The apparatus of claim 1, wherein said reception module recreates a data stripe containing errors by XORing each of the other data stripes and the parity stripe within the group.
- 10. A method, comprising:
configuring a plurality of serial channels into data channels and parity channels, wherein a group of data channels is associated with each parity channel; dividing a data segment into a plurality of data stripes and associating each data stripe with one of the data channels; creating a parity stripe for each group of data stripes and associating the parity stripe with one of the parity channels; and transmitting the data stripes and parity stripes from a first card to a second card.
- 11. The method of claim 10, further comprising creating an error code for each stripe and appending the error code to the end of the stripe.
- 12. The method of claim 11, wherein the error code is a cyclic redundancy code (CRC).
- 13. The method of claim 10, wherein said creating includes creating the parity stripe by XORing each of the data stripes within the group.
- 14. The method of claim 10, wherein said creating includes creating the parity stripe by bitwise XORing each of the data stripes within the group.
- 15. The method of claim 10, further comprising computing an error code for the data segment and appending it at the end of the data segment.
- 16. The method of claim 10, further comprising:
receiving the data stripes and the parity stripes at the second card; recreating a data stripe containing errors by utilizing an associated parity stripe, wherein said recreating is limited to a single data stripe per group containing errors; and assembling the data segment from the data stripes.
- 17. A method for striping data over a plurality of serial channels, the method comprising
configuring the serial channels into data channels and parity channels, wherein a group of data channels is associated with each parity channel; receiving a plurality of data stripes that make up a data segment over associated data channels; receiving a parity stripe over an associated parity channel for each group of data stripes, detecting errors in the data stripes; recreating a data stripe having errors if it is the only data stripe within the group containing errors; and assembling the data stripes into the data segment.
- 18. The method of claim 17, wherein said detecting includes computing an error code for each data stripe and comparing it to a transmitted error code within each data stripe.
- 19. The method of claim 17, wherein said recreating includes XORing each of the other data stripes and the parity stripe within the group.
- 20. The method of claim 17, further comprising
recording number of errors associated with each serial channel; comparing an error count for each serial channel to a threshold; and taking action if the threshold is exceeded.
- 21. The method of claim 20, wherein the action comprises shutting down.
- 22. The method of claim 20, wherein the action is to reconfigure the system to not use the serial channel exceeding the threshold and to utilize remaining serial channels to stripe data.
- 23. The method of claim 17, further comprising discarding a data segment if more than one data stripe in a group contains errors.
- 24. A store and forward device for striping data over a plurality of serial channels, the device comprising:
a plurality of interface cards to receive and transmit data; a backplane connecting the plurality of cards together via a plurality of serial channels; a transmission module to split a data segment into a plurality of data stripes and transmit each data stripe over an associated data channel, wherein the plurality of data channels are organized into at least one group and each group has an associated parity channel to transmit a parity stripe, the parity stripe being generated based on the data stripes within the group; a reception module to receive the plurality of data stripes over the appropriate data channels and the at least one parity stripe over the parity channel, check for errors within each stripe; and a controller to control the operation of the apparatus.
- 25. The device of claim 24, wherein
said transmission module generates an error code for each stripe and transmits the error code along with the stripe; and said reception module checks for errors by computing an error code for each stripe and comparing it to a transmitted error code.
- 26. The device of claim 24, wherein said reception module discards data segment if more than one data stripe in a group contains errors.
- 27. The device of claim 24, wherein said controller may deactivate a serial channel and reconfigure said transmission module and said reception module to utilize a different configuration of data channels and parity channels if number of errors in the serial channel exceeds a threshold.
- 28. The device of claim 24, wherein said interface cards are Ethernet cards.
- 29. An apparatus, comprising:
a transmission module to split a data segment into a plurality of data stripes, generate an error code for each data stripe, and transmit the data stripes and the associated error codes over associated data channels; a reception module to receive the data stripes and the associated error codes over associated data channels, compute error codes for each stripe and compare the computed error codes to the transmitted error codes; and a controller to control the operation of the apparatus.
- 30. The apparatus of claim 29, wherein the error code computed for each stripe is a cyclic redundancy code (CRC).
- 31. The apparatus of claim 29, wherein said reception module recreates the data segment by combining each of the received data stripes.
- 32. The apparatus of claim 29, wherein the error code computed for each data segment is a cyclic redundancy code (CRC).
- 33. The apparatus of claim 29, wherein
said transmission module generates an error code for the data segment and transmits the data segment error code at end of the data segment; and said reception module generates an error code for the recreated data segment and compares it to the transmitted data segment to check for errors within the data segment.
- 34. The apparatus of claim 29, wherein
said transmission module organizes the plurality of data channels into at least one group and each group has an associated parity channel to transmit a parity stripe to be utilized for error correction, the parity stripe being generated based on the data stripes within the group; and said reception module recreates an errored data stripe by using the parity stripe and remaining data stripes within a group, if only a single data stripe within the group is errored.
- 35. The apparatus of claim 29, wherein
said reception module tracks number of errors per channel; and said controller may deactivate a serial channel and reconfigure said transmission module and said reception module to utilize remaining data channels for striping data if the number of errors in the serial channel exceeds a threshold.
- 36. A computer program product, disposed on a computer readable medium, the program including instructions for causing a processor to:
configure a plurality of serial channels into data channels and parity channels, wherein a group of data channels is associated with each parity channel; divide a data segment into a plurality of data stripes and associating each data stripe with one of the data channels; create a parity stripe for each group of data stripes and associating the parity stripe with one of the parity channels; and transmit the data stripes and parity stripes from a first card to a second card.
- 37. The program of claim 36, further comprising instructions that cause the processor to determine an error code for a stripe and transmit the determined error code at the end of the stripe.
Parent Case Info
[0001] This application claims priority under 35 U.S.C. §119(e) of U.S. Provisional Application No. 60/367,630 entitled “Error Detection and Correction of Data Striped Over Multiple Serial Channels” filed on Mar. 25, 2002 which is herein incorporated by reference, but is not admitted to be prior art.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60367630 |
Mar 2002 |
US |