IP Library Granted Patent US 10,903,853
Granted Patent B2
US 10,903,853 · App. 16/103,681 · Granted Jan 26, 2021

Computation of forward error correction data units using loss vector probabilities

Inventors: Renat Vafin (Tallinn, EE); Soren Vang Andersen (Esch-sur-Alzette, LU); Mattias Nilsson (Sundbyberg, SE)
Assignee: Microsoft Technology Licensing, LLC
H03M13/05H04L1/0009H04L1/0015H04L1/0033H04L1/0057H04L1/0083
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,903,853
App. No.
16/103,681
Granted
Jan 26, 2021
Kind
B2
Abstract

Correction data units for data packets of a data stream are generated. A correction data unit is based on a set of the data packets of the stream. The stream is transmitted over a communication channel. A performance measure to be optimized is selected, which relates to the recovery of lost data packets of the stream. To optimize the performance measure, a plurality of correction data vectors are determined, and a plurality of a plurality of non-recovery probabilities, corresponding to the correction data vectors, are initialized. One or more of the correction data vectors are selected that contribute towards a non-recovery probability of an original data packet. The non-recovery probability associated with the original data packet is then minimized based on the selected one or more correction data vectors. The selected one or more correction data vectors are then used to determine which of the original data packets or data correction units to transmit.

Claims (36)

1. A method of transmitting a data stream over a communication channel, the method comprising:

identifying a plurality of forward error correction (FEC) data vectors corresponding to a correction data unit to be generated with respect to a plurality of original data packets of a data stream and to be transmitted from a transmitter to a receiver over a communication channel, wherein each of the plurality of FEC data vectors indicate respective ones of the original data packets for inclusion in generating the correction data unit;

identifying a plurality of loss vectors each indicating predicted success of transmission for respective ones of the plurality of original data packets and the correction data unit, wherein each of the plurality of loss vectors is associated with an occurrence probability indicating a probability that the plurality of original data packets and the correction data unit are successfully transmitted as indicated by the respective loss vector;

calculating a non-recovery probability for each of the plurality of FEC data vectors using the occurrence probabilities for each of the plurality of loss vectors, the non-recovery probability indicating a probability that a respective original data packet is lost and not recoverable using the correction data unit; and

selecting an FEC data vector from the plurality of FEC data vectors having a least non-recovery probability;

generating the correction data unit according to the selected FEC data vector; and

transmitting the plurality of original data packets and the generated correction data unit over the communication channel.

2. The method of claim 1 , wherein the FEC data vector selected from the plurality of FEC data vectors is defined by a predetermined number of original data packets selected from the plurality of original data packets.

3. The method of claim 1 , wherein the occurrence probabilities for the plurality of loss vectors are identified using a network model.

4. The method of claim 3 , wherein the network model is a Gilbert model.

5. The method of claim 1 , wherein an FEC data vector of the first plurality of FEC data vectors is determined to contribute to the non-recovery probability of the particular original data packet where the particular original data packet is identified by a respective loss vector of the plurality of loss vectors as being lost and the corresponding correction data unit is identified by the respective loss vector as being lost.

6. The method of claim 1 , further comprising updating the non-recovery probabilities based on at least one most recent data packet and on at least one most recent correction data unit transmitted from the transmitter to the receiver.

7. The method of claim 6 , wherein updating the plurality of non-recovery probabilities comprises updating the occurrence probabilities for the plurality of loss vectors based on the at least one most recent data packet and the at least one most recent correction data unit.

8. A system for transmitting a data stream over a communication channel, the system comprising:

a non-transitory computer-readable memory device storing computer-executable instructions; and

one or more hardware processors that, having executed the computer-executable instructions, configure the system to:

identify a plurality of forward error correction (FEC) data vectors corresponding to a correction data unit to be generated with respect to a plurality of original data packets of a data stream and to be transmitted from a transmitter to a receiver over a communication channel, wherein each of the plurality of FEC data vectors indicate respective ones of the original data packets for inclusion in generating the correction data unit;

identify a plurality of loss vectors each indicating predicted success of transmission for respective ones of the plurality of original data packets and the correction data unit, wherein each of the plurality of loss vectors is associated with an occurrence probability indicating a probability that the plurality of original data packets and the correction data unit are successfully transmitted as indicated by the respective loss vector;

calculate a non-recovery probability for each of the plurality of FEC data vectors using the occurrence probabilities for each of the plurality of loss vectors, the non-recovery probability indicating a probability that a respective original data packet is lost and not recoverable using the correction data unit; and

select an FEC data vector from the plurality of FEC data vectors having a least non-recovery probability.

9. The system of claim 8 , wherein the FEC data vector selected from the plurality of FEC data vectors is defined by a predetermined number of original data packets selected from the plurality of original data packets.

10. The system of claim 8 , wherein the occurrence probabilities for the plurality of loss vectors are identified using a network model.

11. The system of claim 10 , wherein the network model is a Gilbert model.

12. The system of claim 8 , wherein an FEC data vector of the first plurality of FEC data vectors is determined to contribute to the non-recovery probability of the particular original data packet where the particular original data packet is identified by a respective loss vector of the plurality of loss vectors as being lost and the corresponding correction data unit is identified by the respective loss vector as being lost.

13. The system of claim 8 , wherein the system is further configured to update the non-recovery probabilities based on at least one most recent data packet and on at least one most recent correction data unit transmitted from the transmitter to the receiver.

14. The system of claim 13 , wherein the system is configured to update the plurality of non-recovery probabilities by updating the occurrence probabilities for the plurality of loss vectors based on the at least one most recent data packet and the at least one most recent correction data unit.

15. A system for transmitting a data stream over a communication channel, the system comprising:

means for identifying a plurality of forward error correction (FEC) data vectors corresponding to a plurality of correction data unit to be generated with respect to a plurality of original data packets of a data stream and to be transmitted from a transmitter to a receiver over a communication channel, wherein each of the plurality of FEC data vectors indicate respective ones of the original data packets for inclusion in generating the correction data unit;

means for determining identifying a plurality of loss vectors each indicating predicted success of transmission for respective ones of the plurality of original data packets and the correction data unit, wherein each of the plurality of loss vectors is associated with an occurrence probability indicating a probability that the plurality of original data packets and the correction data unit are successfully transmitted as indicated by the respective loss vector;

means for calculating a non-recovery probability for each of the plurality of FEC data vectors using the occurrence probabilities for each of the plurality of loss vectors, the non-recovery probability indicating a probability that a respective original data packet is lost and not recoverable using the correction data unit; and

means for selecting an FEC data vector from the plurality of FEC data vectors having a least non-recovery probability.

16. The system of claim 15 , wherein the FEC data vector selected from the plurality of FEC data vectors is defined by a predetermined number of original data packets selected from the plurality of original data packets.

17. The system of claim 15 , wherein the occurrence probabilities for the plurality of loss vectors are identified using a network model.

18. The system of claim 17 , wherein the network model is a Gilbert model.

19. The system of claim 15 , wherein an FEC data vector of the first plurality of FEC data vectors is determined to contribute to the non-recovery probability of the particular original data packet where the particular original data packet is identified by a respective loss vector of the plurality of loss vectors as being lost and the corresponding correction data unit is identified by the respective loss vector as being lost.

20. The system of claim 15 , further comprising means for updating the non-recovery probabilities based on at least one most recent data packet and on at least one most recent correction data unit transmitted from the transmitter to the receiver.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2018
From: VAFIN, RENAT; ANDERSEN, SOREN VANG; NILSSON, MATTIAS
To: MICROSOFT CORPORATION
Reel/Frame 046650/0206 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2018
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 046650/0327 →
Priority Claims (1)
GB 1112110.0 · Jul 14, 2011 · national
Continuity (3)
Continuation 14054609 · Oct 15, 2013
Continuation In Part 13295864 · Nov 14, 2011
Related Publication 20190007060A1 · Jan 3, 2019
Cited By (1)
US 12,362,858