IP Library › Granted Patent US 11,863,207
Granted Patent B2
US 11,863,207 · App. 17/849,311 · Granted Jan 2, 2024

Dynamic dictionary-based network compression

Inventor: Charles Micou (London, GB)
Assignee: Improbable Worlds Limited
H03M7/3088A63F13/35H04L67/01H04L69/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,863,207
App. No.
17/849,311
Granted
Jan 2, 2024
Kind
B2
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 (66)

1. A method comprising:

receiving, by a server device during a currently running session with a client device, a plurality of messages associated with 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;

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

training, during the currently running session, the compression dictionary based on the one or more frames, to update the compression dictionary; and

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

2. The method of claim 1 , further comprising:

periodically retraining the compression dictionary based on most recent frames 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 , further comprising:

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

determining, based on the grouped frames, data samples for training the compression dictionary.

5. The method of claim 1 , further comprising:

sending, during the currently running session, the updated 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 updated 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 updated compression dictionary.

7. The method of claim 1 , further comprising:

sending the updated 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 updated compression dictionary has been received by the at least one computing device, compressing the one or more additional frames based on the updated 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 one or more states maintained by the apparatus;

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

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

train, during the currently running session, the compression dictionary based on the one or more frames, to update the compression dictionary; and

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

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

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

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

generate a dictionary ID that identifies 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, when executed by the one or more processors, cause the apparatus to:

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

determine, based on the grouped frames, data samples for training the compression dictionary.

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

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

13. The apparatus of claim 8 , wherein the instructions, 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 updated 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 updated compression dictionary.

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

send the updated 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 updated compression dictionary has been received by the at least one computing device, compress the one or more additional frames based on the updated compression dictionary.

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

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

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

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

training, during the currently running session, the compression dictionary based on the one or more frames, to update the compression dictionary; and

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

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

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

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

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.

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

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

determining, based on the grouped frames, data samples for training the compression dictionary.

19. The one or more non-transitory computer-readable media of claim 15 , wherein the instructions, 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 updated 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 updated compression dictionary.

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

sending the updated 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 updated compression dictionary has been received by the at least one computing device, compressing the one or more additional frames based on the updated compression dictionary.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2022
From: MICOU, CHARLES
To: IMPROBABLE WORLDS LTD
Reel/Frame 060310/0908 →
Continuity (2)
Continuation 17148005 · Jan 13, 2021
Related Publication 20230006690A1 · Jan 5, 2023