IP Library › Granted Patent US 11,405,054
Granted Patent B1
US 11,405,054 · App. 17/148,005 · Granted Aug 2, 2022

Dynamic dictionary-based network compression

Inventor: Charles Micou (London, GB)
Assignee: Improbable Worlds Limited
H03M7/3088A63F13/35H04L67/42H04L69/04
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 11,405,054
App. No.
17/148,005
Granted
Aug 2, 2022
Kind
B1
Abstract

Methods and systems for providing dynamic dictionary-based compression and decompression are described herein. A computing device may receive, during a currently running session with a client device, a plurality of messages. The computing device may determine, based on the plurality of messages, one or more frames. The computing device may determine, based on the one or more frames, data samples. The computing device may compress the one or more frames based on a compression dictionary. The computing device may train, during the currently running session, the compression dictionary based on the determined data samples, to create a new compression dictionary. The computing device may determine, during the currently running session and based on receiving additional messages, one or more additional frames. In addition, the computing device may compress the one or more additional frames based on the new compression dictionary.

Claims (72)

1. A method comprising:

receiving, by a server device during a currently running session with a client device, a plurality of messages associated with changes to one or more states maintained by the server device;

determining, based on the plurality of messages, one or more frames, each frame comprising at least one of the plurality of messages;

determining, based on the one or more frames, data samples;

compressing the one or more frames based on a compression dictionary;

training, during the currently running session, the compression dictionary based on the determined data samples, to create a new compression dictionary;

determining, during the currently running session and based on receiving additional messages, one or more additional frames; and

compressing, during the currently running session, the one or more additional frames based on the new compression dictionary.

2. The method of claim 1 , further comprising:

periodically retraining the compression dictionary based on most recent data samples determined during the currently running session.

3. The method of claim 1 , further comprising:

generating a dictionary ID that identifies the compression dictionary; and

sending the dictionary ID to at least one computing device to which data will be sent using the identified compression dictionary.

4. The method of claim 1 , wherein the determining data samples comprises:

grouping the determined one or more frames based on one or more common characteristics associated with the plurality of messages; and

determining, based on the grouped frames, the data samples.

5. The method of claim 1 , further comprising:

sending, during the currently running session, the new compression dictionary to at least one computing device.

6. The method of claim 1 , further comprising:

fragmenting, based on a size of a data packet that comprises the one or more additional frames, the new compression dictionary into a plurality of fragments; and

sending the data packet to at least one computing device, wherein the data packet comprises at least one of the plurality of fragments of the new compression dictionary.

7. The method of claim 1 , further comprising:

sending the new compression dictionary to at least one computing device, wherein the compressing the one or more additional frames comprises:

in response to receiving a message that the new compression dictionary has been received by the at least one computing device, compressing the one or more additional frames based on the new compression dictionary.

8. An apparatus comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

receive, during a currently running session with a client device, a plurality of messages associated with changes to one or more states maintained by the server device;

determine, based on the plurality of messages, one or more frames, each frame comprising at least one of the plurality of messages;

determine, based on the one or more frames, data samples;

compress the one or more frames based on a compression dictionary;

train, during the currently running session, the compression dictionary based on the determined data samples, to create a new compression dictionary;

determine, during the currently running session and based on receiving additional messages, one or more additional frames; and

compress, during the currently running session, the one or more additional frames based on the new compression dictionary.

9. The apparatus of claim 8 , wherein the instructions that, when executed by the one or more processors, cause the apparatus to:

periodically retrain the compression dictionary based on most recent data samples determined during the currently running session.

10. The apparatus of claim 8 , wherein the instructions that, when executed by the one or more processors, cause the apparatus to:

generate a dictionary ID associated with the compression dictionary; and

send the dictionary ID to at least one computing device to which data will be sent using the identified compression dictionary.

11. The apparatus of claim 8 , wherein the instructions that, when executed by the one or more processors, cause the apparatus to:

group the determined one or more frames based on one or more common characteristics associated with the plurality of messages; and

determine, based on the grouped frames, the data samples.

12. The apparatus of claim 8 , wherein the instructions that, when executed by the one or more processors, cause the apparatus to:

send, during the currently running session, the new compression dictionary to at least one computing device.

13. The apparatus of claim 8 , wherein the instructions that, when executed by the one or more processors, cause the apparatus to:

fragment, based on a size of a data packet that comprises the one or more additional frames, the new compression dictionary into a plurality of fragments; and

send the data packet to at least one computing device, wherein the data packet comprises at least one of the plurality of fragments of the new compression dictionary.

14. The apparatus of claim 8 , wherein the instructions that, when executed by the one or more processors, cause the apparatus to:

send the new compression dictionary to at least one computing device,

in response to receiving a message that the new compression dictionary has been received by the at least one computing device, compress the one or more additional frames based on the new compression dictionary.

15. One or more non-transitory computer-readable media, when executed by one or more processors, cause:

receiving, during a currently running session with a client device, a plurality of messages associated with changes to one or more states maintained by the server device;

determining, based on the plurality of messages, one or more frames, each frame comprising at least one of the plurality of messages;

determining, based on the one or more frames, data samples;

compressing the one or more frames based on a compression dictionary;

training, during the currently running session, the compression dictionary based on the determined data samples, to create a new compression dictionary;

determining, during the currently running session and based on receiving additional messages, one or more additional frames; and

compressing the one or more additional frames based on the new compression dictionary.

16. The one or more non-transitory computer-readable media of claim 15 , when executed by the one or more processors, cause:

periodically retraining the compression dictionary based on most recent data samples determined during the currently running session.

17. The one or more non-transitory computer-readable media of claim 15 , when executed by the one or more processors, cause:

generating a dictionary ID associated with the compression dictionary; and

sending the dictionary ID to at least one computing device to which data will be sent using the identified compression dictionary.

18. The one or more non-transitory computer-readable media of claim 15 , when executed by the one or more processors, cause:

grouping the determined one or more frames based on one or more common characteristics associated with the plurality of messages; and

determining, based on the grouped frames, the data samples.

19. The one or more non-transitory computer-readable media of claim 15 , when executed by the one or more processors, cause:

fragmenting, based on a size of a data packet that comprises the one or more additional frames, the new compression dictionary into a plurality of fragments; and

sending the data packet to at least one computing device, wherein the data packet comprises at least one of the plurality of fragments of the new compression dictionary.

20. The one or more non-transitory computer-readable media of claim 15 , when executed by the one or more processors, cause:

sending the new compression dictionary to at least one computing device, wherein the compressing the one or more additional frames comprises:

in response to receiving a message that the new compression dictionary has been received by the at least one computing device, compressing the one or more additional frames based on the new compression dictionary.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2021
From: MICOU, CHARLES
To: IMPROBABLE WORLDS LIMITED
Reel/Frame 054908/0431 →
Cited By (1)
US 12,362,765