IP Library Granted Patent US 10,225,045
Granted Patent B2
US 10,225,045 · App. 15/427,941 · Granted Mar 5, 2019

Packet-based adaptive forward error correction

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,225,045
App. No.
15/427,941
Granted
Mar 5, 2019
Kind
B2
Abstract

A system, method, and storage medium provide dynamic, packet-based adaptive forward error correction over a lossy bidirectional data communication medium that couples a transmitting device to a receiving device. The transmitting device repeatedly transmits encoded data packets formed by applying, to unencoded data, a forward error correction (FEC) algorithm having a level N that indicates a number of correctable errors. The receiving device attempts to decode the encoded data packets using the FEC algorithm, requesting retransmission of a packet if there are too many errors to correct. The transmitting device decreases the level N when it does not receive such a request within a given duration. By contrast, the transmitting device increases the level N when it receives a sequence of such requests having a threshold length, each request being received less than the given duration after the previous request.

Claims (41)

1. A system for providing packet-based adaptive forward error correction, the system comprising:

a data communication medium;

a transmitting device coupled to the data communication medium; and a receiving device, coupled to the data communication medium;

wherein the transmitting device is configured to repeatedly:

apply, to unencoded data, a forward error correction (FEC) algorithm having a level N that indicates a number of correctable errors, to thereby form an encoded data packet;

transmit the encoded data packet toward the receiving device using the data communication medium;

determine to use, for subsequent application to unencoded data, an FEC algorithm having a decreased level N, when the transmitting device does not receive a request to retransmit a previously transmitted encoded data packet within a given duration from the receiving device using the data communication medium; and

determine to use, for subsequent application to unencoded data, an FEC algorithm having an increased level N, when the transmitting device receives a sequence of requests to retransmit previously transmitted encoded data packets, each request in the sequence being received less than the given duration after the previous request in the sequence, the sequence having a length that exceeds a given threshold length; and

wherein the receiving device is configured to repeatedly:

receive the encoded data packet, from the transmitting device using the data communication medium;

when the encoded data packet contains no more than N errors, recover the unencoded data by applying the FEC algorithm to the received, encoded data packet; and

when the encoded data packet contains more than N errors, send a request to retransmit the packet, toward the transmitting device using the data communication medium,

wherein the transmitting device comprises a first computing node in a computing system, the receiving device comprises a second computing node in the computing system, and the first computing node and the second computing node are configured to cooperate to perform a computation by communicating packets of data using the data communication medium.

2. The system according to claim 1 , wherein the computing system is a high performance computing system.

3. The system according to claim 1 , wherein the transmitting device is further configured to specify the level N in a header of each encoded data packet.

4. The system according to claim 1 , wherein the level N has a minimum of zero and has a given maximum.

5. The system according to claim 1 , wherein the transmitting device is further configured to retransmit the encoded data packet in response to receiving the request to retransmit the encoded data packet.

6. The system according to claim 1 , wherein the transmitting device is further configured to determine the given duration, the given threshold, or both, so that a number of bits per second of encoded data packets to be transmitted using the FEC algorithm is less than or equal to a number of bits per second of packets to be retransmitted in response to receiving requests to retransmit such encoded data packets using the FEC algorithm.

7. The system according to claim 1 , wherein the transmitting device is further configured to alter the given duration, the given threshold, or both, when the transmitting device is alternating by more than an alternating threshold between using two FEC algorithms having different levels.

8. A method of providing packet-based adaptive forward error correction over a lossy bidirectional data communication medium that couples a transmitting device to a receiving device, the method comprising repeatedly:

transmitting, by the transmitting device toward the receiving device using the data communication medium for subsequent decoding by the receiving device, an encoded data packet formed by applying, to unencoded data, a forward error correction (FEC) algorithm having a level N that indicates a number of correctable errors;

determining to use, by the transmitting device for subsequent application to unencoded data, an FEC algorithm having a decreased level N, when the transmitting device does not receive, within a given duration from the receiving device using the data communication medium, a request to retransmit a previously transmitted encoded data packet; and

determining to use, by the transmitting device for subsequent application to unencoded data, an FEC algorithm having an increased level N, when the transmitting device receives a sequence of requests to retransmit previously transmitted packets, each request in the sequence being received less than the given duration after the previous request in the sequence, the sequence having a length that exceeds a given threshold,

wherein the transmitting device comprises a first computing node in a computing system, the receiving device comprises a second computing node in the computing system, and the first computing node and the second computing node are configured to cooperate to perform a computation by communicating packets of data using the data communication medium.

9. The method according to claim 8 , wherein the computing system is a high performance computing system.

10. The method according to claim 8 , wherein transmitting includes specifying the level N in a header of each encoded data packet.

11. The method according to claim 8 , wherein the level N has a minimum of zero and has a given maximum.

12. The method according to claim 8 , further comprising the transmitting device retransmitting the previously transmitted encoded data packet in response to receiving the request to retransmit the encoded data packet.

13. The method according to claim 8 , further comprising the transmitting device determining the given duration, the given threshold, or both, so that a number of bits per second of encoded data packets to be transmitted using the FEC algorithm is less than or equal to a number of bits per second of packets to be retransmitted in response to receiving requests to retransmit such encoded data packets using the FEC algorithm.

14. The method according to claim 8 , further comprising the transmitting device altering the given duration, the given threshold, or both, when the transmitting device is alternating by more than an alternating threshold between using two FEC algorithms having different levels.

15. A tangible storage medium in which is non-transitorily stored program code that, when executed by a transmitting device, causes the transmitting device to perform a method of packet-based adaptive forward error correction over a lossy bidirectional data communication medium that couples the transmitting device to a receiving device, the method comprising repeatedly:

transmitting, by the transmitting device toward the receiving device using the data communication medium for subsequent decoding by the receiving device, an encoded data packet formed by applying, to unencoded data, a forward error correction (FEC) algorithm having a level N that indicates a number of correctable errors;

determining to use, by the transmitting device for subsequent application to unencoded data, an FEC algorithm having a decreased level N, when the transmitting device does not receive, within a given duration from the receiving device using the data communication medium, a request to retransmit a previously transmitted encoded data packet; and

determining to use, by the transmitting device for subsequent application to unencoded data, an FEC algorithm having an increased level N, when the transmitting device receives a sequence of requests to retransmit previously transmitted packets, each request in the sequence being received less than the given duration after the previous request in the sequence, the sequence having a length that exceeds a given threshold,

wherein the transmitting device comprises a first computing node in a computing system, the receiving device comprises a second computing node in the computing system, and the first computing node and the second computing node are configured to cooperate to perform a computation by communicating packets of data using the data communication medium.

16. The storage medium according to claim 15 , wherein the computing system is a high performance computing system.

17. The storage medium according to claim 15 , wherein the program code for transmitting includes program code for specifying the level N in a header of each encoded data packet.

18. The storage medium according to claim 15 , wherein the level N has a minimum of zero and has a given maximum.

19. The storage medium according to claim 15 , further comprising program code for retransmitting the previously transmitted encoded data packet in response to receiving the request to retransmit the encoded data packet.

20. The storage medium according to claim 15 , further comprising program code for determining the given duration, the given threshold, or both so that a number of bits per second of encoded data packets to be transmitted using the FEC algorithm is less than or equal to a number of bits per second of packets to be retransmitted in response to receiving requests to retransmit such encoded data packets using the FEC algorithm.

21. The storage medium according to claim 15 , further comprising program code for altering the given duration, the given threshold, or both, when the transmitting device is alternating by more than an alternating threshold between using two FEC algorithms having different levels.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2019
From: DROPPS, FRANK R.; SIKKINK, MARK R.
To: SILICON GRAPHICS INTERNATIONAL CORP.
Reel/Frame 048196/0674 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2017
From: SILICON GRAPHICS INTERNATIONAL CORP.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 044128/0149 →