# US 8,788,899 B2 · Processing transport packets

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,788,899 B2
- Document ID: US8788899B2
- Status: Granted
- Kind: B2
- Application number: 13/105,682
- Filed: 2011-05-11
- Published: 2011-11-17
- Granted: 2014-07-22
- Earliest claimed: 2010-05-13
- Assignees: Skype
- Applicants: Magnus Hiie
- Inventors: Magnus Hiie
- Web page: https://patentgrep.com/patent/US8788899B2

## CPC

- H04L 1/0042: {Encoding specially adapted to other signal generation operation, e.g. in order to reduce transmit distortions, jitter, or to improve signal shape (H04L1/0067 takes precedence)}
- H04L 1/0076: {Distributed coding, e.g. network coding, involving channel coding (coding in both space and time H04L1/0618; cooperative diversity H04B7/022)}
- H04L 1/1867: Arrangements specially adapted for the transmitter end
- H04L 63/0457: {wherein the sending and receiving network entities apply dynamic encryption, e.g. stream encryption (cryptographic mechanisms or cryptographic arrangements for stream encryption H04L9/065)}
- G11B 20/0021: {involving encryption or decryption of contents recorded on or reproduced from a record carrier}
- H04L 9/3236: {using cryptographic hash functions}
- H04L 2001/0097: {Relays}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G11B: INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER (recording measured values in a way that does not require playback through a transducer G01D9/00; recording or playback apparatus using mechanically marked tape, e.g. punched paper tape, or using unit records, e.g. punched or magnetically marked cards G06K; transferring data from one type of record carrier to another G06K1/18; circuits for coupling output of reproducer to radio receiver H04B1/20; gramophone pick-ups or like acoustic electromechanical transducers or circuits therefor H04R)

## Abstract

Method, relay node and computer program product for processing transport packets, the transport packets conveying: (i) data stream units forming a data stream, and (ii) correction data units relating to the data stream units, where each transport packet contains information identifying the content of units in that transport packet. Transport packets are received at the relay node, the data stream units in the transport packets received at the relay node being insufficient to constitute the data stream. At least some of the correction data units and the data stream units in the received transport packets are used to generate substitute data stream units thereby to substantially recover the data stream at the relay node. The relay node packetises the data stream units of the substantially recovered data stream with correction data units to form output transport packets for transmission from the relay node, and then the output transport packets are transmitted from the relay node.

## Claims

### Claim 1

A method comprising:
processing transport packets, the transport packets conveying: (i) data stream units forming a data stream, and (ii) correction data units relating to the data stream units generated from an operation performed on a first encrypted data stream unit and a second encrypted data stream unit, each transport packet containing the data stream units, the correction data units, and information identifying the content of the units in that transport packet, the processing transport packets further comprising:
receiving transport packets at a relay node, the data stream units in the transport packets received at the relay node being insufficient to reconstitute the data stream;
using at least some of the correction data units and the data stream units in the received transport packets to generate substitute data stream units thereby to substantially recover the data stream at the relay node;
packetising, at the relay node, the data stream units of the substantially recovered data stream with correction data units to form output transport packets for transmission from the relay node; and
transmitting said output transport packets from the relay node.

### Claim 2 (depends on 1)

The method of claim 1 wherein the data stream units are encrypted data stream units.

### Claim 3 (depends on 2)

The method of claim 2 wherein the relay node does not perform any decryption on the data stream units of the received transport packets.

### Claim 4 (depends on 1)

The method of claim 1 wherein said information identifying the content of the units in the transport packet identifies the relationships between the correction data units and the data stream units.

### Claim 5 (depends on 1)

The method of claim 1 wherein said information identifying the content of the units in the transport packet is unencrypted.

### Claim 6 (depends on 4)

The method of claim 4 wherein said information identifying the content of the units in the transport packet is in a header of each transport packet.

### Claim 7 (depends on 1)

The method of claim 1 wherein the substantially recovered data stream comprises all of the data stream units in the data stream such that the substantially recovered data stream reconstitutes the original data stream.

### Claim 8 (depends on 1)

The method of claim 1 wherein the correction data units relate to the data stream units by being the results of performing XOR operations on at least one of the data stream units.

### Claim 9 (depends on 8)

The method of claim 8 wherein at least one of the substitute data stream units is generated by performing an XOR operation on one of the correction data units and one of the data stream units in the received transport packets.

### Claim 10 (depends on 8)

The method of claim 8 wherein at least one of the substitute data stream units is generated by performing an XOR operation on two of the correction data units in the received transport packets.

### Claim 11 (depends on 1)

The method of claim 1 wherein the substitute data stream units replace data stream units in lost transport packets.

### Claim 12 (depends on 1)

The method of claim 1 wherein the received transport packets are received at the relay node over a network from a transmitting end point.

### Claim 13 (depends on 1)

The method of claim 1 wherein the output transport packets are transmitted from the relay node over a network to a destination end point.

### Claim 14 (depends on 1)

The method of claim 1 wherein the correction data units are forward error correction data units.

### Claim 15 (depends on 1)

The method of claim 1 wherein each of the received transport packets comprises an unencrypted header, the data stream unit, and the correction data unit.

### Claim 16 (depends on 15)

The method of claim 15 wherein each of the transport packets comprises a payload and the unencrypted header, and wherein the data stream units and the correction data units are in the payloads of the transport packets.

### Claim 17 (depends on 1)

The method of claim 1 wherein the operation performed to generate the correction data units are comprises an XOR operation performed on the first encrypted data stream unit and the second encrypted data stream unit.

### Claim 18 (depends on 1)

The method of claim 1 further comprising generating new correction data units at the relay node and including the new correction data units in the output transport packets transmitted from the relay node.

### Claim 19 (depends on 1)

The method of claim 1 wherein each of the data stream units includes a sequence number indicating the order of each data stream unit in the data stream.

### Claim 20 (depends on 1)

The method of claim 1 further comprising generating all substitute data stream units that can be derived from the correction data units in the received transport packets.

### Claim 21 (depends on 1)

The method of claim 1 further comprising determining that particular data stream units of the data stream are not received at the relay node in the received transport packets, wherein said substitute data stream units are generated to replace those particular data stream units of the data stream in response to said determination.

### Claim 22 (depends on 21)

The method of claim 21 wherein said determination comprises determining whether data stream units are received at the relay node within a predetermined time of their expected arrival times at the relay node.

### Claim 23 (depends on 1)

The method of claim 1 further comprising storing the received transport packets in a buffer at the relay node for a limited time period.

### Claim 24

A relay node for processing transport packets comprising:
a buffer configured to store the transport packets, the transport packets conveying: (i) data stream units forming a data stream, and (ii) correction data units relating to the data stream units, each transport packet containing the data stream units, the correction data units sufficient to enable generation of substitute data stream units for at least one transport packet, and information identifying the content of the units in that transport packet, the relay node further comprising:
a receiver configured to receive transport packets, the data stream units in the transport packets received at the relay node being insufficient to reconstitute the data stream;
a generator configured to use at least some of the correction data units and the data stream units in the received transport packets to generate substitute data stream units thereby to substantially recover the data stream at the relay node;
a packetiser configured to packetise, at the relay node, the data stream units of the substantially recovered data stream with correction data units to form output transport packets for transmission from the relay node; and
a transmitter configured to transmit said output transport packets from the relay node.

### Claim 25 (depends on 24)

The relay node of claim 24 wherein the relay node is not configured to perform any decryption on the data stream units of the received transport packets.

### Claim 26 (depends on 24)

The relay node of claim 24 further comprising a further generator configured to generate new correction data units and including the new correction data units in the output transport packets transmitted from the relay node.

### Claim 27 (depends on 24)

The relay node of claim 24 further comprising a determiner configured to determine that particular data stream units of the data stream are not received at the relay node in the received transport packets, wherein said generator is configured to generate substitute data stream units to replace those particular data stream units of the data stream in response to said determination.

### Claim 28 (depends on 24)

The relay node of claim 24 further comprising a buffer for storing the received transport packets for a limited time period.

### Claim 29

A computer program product embodied on a computer readable storage device comprising computer readable instructions for execution by computer processing means at a relay node comprising:
processing transport packets, the transport packets conveying: (i) data stream units forming a data stream, and (ii) correction data units relating to the data stream units generated from an operation to combine correction data from at least two encrypted data stream units, each transport packet containing the data stream units, the correction data units, and information identifying the content of the units in that transport packet, the instructions further comprising instructions for:
receiving transport packets at the relay node, the data stream units in the transport packets received at the relay node being insufficient to constitute the data stream;
using at least some of the correction data units and the data stream units in the received transport packets to generate substitute data stream units thereby to substantially recover the data stream at the relay node;
packetising, at the relay node, the data stream units of the substantially recovered data stream with correction data units to form output transport packets for transmission from the relay node; and
transmitting said output transport packets from the relay node.

### Claim 30

A method comprising:
processing transport packets, each of the transport packets comprising encrypted data stream units and non-encrypted correction data units, the correction data units conveying information relating to encrypted data stream units sufficient to enable generation of substitute data stream units for at least one transport packet, and each transport packet containing unencrypted recovery data indicating how the correction data units relate to the encrypted data stream units, the method further comprising:
receiving transport packets at a relay node;
using at least some of the correction data units in the received transport packets and the unencrypted recovery data to recover a lost transport packet at the relay node;
packetising, at the relay node, correction data units to form output transport packets for transmission from the relay node; and
transmitting said output transport packets from the relay node.

### Claim 31

A method comprising:
processing transport packets, each of the transport packets comprising encrypted data stream units, non-encrypted correction data units generated from an operation performed on a first encrypted data stream unit and a second encrypted data stream unit, and a sequence number, the sequence number conveying information relating to encrypted data stream units forming a data stream, and each transport packet containing unencrypted recovery data indicating how the non-encrypted correction data units relate to the encrypted data stream units, the method further comprising:
receiving transport packets at a relay node;
using at least some of the units in the received transport packets and the unencrypted recovery data at the relay node to generate substitute units which relate to the encrypted data stream units for use in substantially recovering the data stream;
packetising, at the relay node, at least some of the units of the received transport packets and the substitute units to form output transport packets for transmission from the relay node; and
transmitting said output transport packets from the relay node.
