# US 8,786,473 B2 · Systems and methods for sharing compression histories between multiple devices

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

- Number: US 8,786,473 B2
- Document ID: US8786473B2
- Status: Granted
- Kind: B2
- Application number: 13/276,097
- Filed: 2011-10-18
- Published: 2012-02-09
- Granted: 2014-07-22
- Earliest claimed: 2007-03-12
- Assignees: Citrix Systems, Inc.
- Applicants: Allen R. Samuels; Richard Jensen; Zubin Dittia; Dan S. Decasper; Michael Ovsiannikov; Robert D. Plamondon
- Inventors: Allen R. Samuels; Richard Jensen; Zubin Dittia; Dan S. Decasper; Michael Ovsiannikov; Robert D. Plamondon
- Web page: https://patentgrep.com/patent/US8786473B2

## CPC

- H03M 7/3084: {using adaptive string matching, e.g. the Lempel-Ziv method}
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)

## Abstract

Systems and methods of storing previously transmitted data and using it to reduce bandwidth usage and accelerate future communications are described. By using algorithms to identify long compression history matches, a network device may improve compression efficiently and speed. A network device may also use application specific parsing to improve the length and number of compression history matches. Further, by sharing compression histories and compression history indexes across multiple devices, devices can utilize data previously transmitted to other devices to compress network traffic. Any combination of the systems and methods may be used to efficiently find long matches to stored data, synchronize the storage of previously sent data, and share previously sent data among one or more other devices.

## Claims

### Claim 1

A method for sharing portions of a compression history among a plurality of devices, the method comprising:
(a) receiving, by a first device from a second device, an index of entries for a compression history shared between the second device and a third device, the index of entries comprising location identifiers of data stored on the second device;
(b) identifying, by the first device, that a portion of a data stream, received by the first device, matches an entry of the index of entries received from the second device; and
(c) transmitting, by the first device to the second device, the location identifier corresponding to the matching entry.

### Claim 2 (depends on 1)

The method of claim 1, further comprising receiving, by the first device from the second device, a portion of the compression history corresponding to the location identifier.

### Claim 3 (depends on 2)

The method of claim 2, further comprising determining, by the first device, that the portion of the compression history matches the portion of the data stream.

### Claim 4 (depends on 3)

The method of claim 3, further comprising transmitting, by the first device to a fourth device, information identifying the portion of the compression history.

### Claim 5 (depends on 1)

The method of claim 1, wherein step (a) further comprises receiving, by the first device, a portion of the index of entries for the compression history shared between the second device and the third device.

### Claim 6 (depends on 1)

The method of claim 1, wherein step (a) further comprises receiving, by the first device, the index of entries responsive to the second device detecting that the first device is in a cluster with the second device.

### Claim 7 (depends on 1)

The method of claim 1, wherein step (b) further comprises receiving, by the first device, the data stream destined for a fourth device.

### Claim 8 (depends on 1)

The method of claim 1, wherein step (b) further comprises identifying, by the first device, that the portion of the data streams matches within a predetermined threshold a portion of the index of entries.

### Claim 9 (depends on 1)

The method of claim 1, wherein step (c) further comprises transmitting, by the first device, a request to the second device to send the portion of the compression history corresponding to the location identifier to the first device.

### Claim 10 (depends on 1)

The method of claim 1, wherein step (c) comprises transmitting, by the first device, one or more location identifiers of one or more portions of the compression history subsequent to the location identifier.

### Claim 11

A system for sharing portions of a compression history among a plurality of devices, the system comprising:
a first device comprising a compression history
a second device sharing a compression history with a third device, the second device transmitting an index of entries for the compression history shared between the second device and the third device, the index of entries comprising location identifiers of data stored on the second device; and
wherein the first device identifies that a portion of a data stream, received by the first device, matches an entry in the index of entries received from the second device and transmits to the second device, the location identifier corresponding to the matching entry.

### Claim 12 (depends on 11)

The system of claim 11, wherein the first device receives from the second device, a portion of the compression history corresponding to the location identifier.

### Claim 13 (depends on 12)

The system of claim 12, wherein the first device determines that the portion of the compression history matches the portion of the data stream.

### Claim 14 (depends on 13)

The system of claim 13, wherein the first device transmits to a fourth device information identifying the portion of the compression history.

### Claim 15 (depends on 11)

The system of claim 11, wherein the first device receives a portion of the index of entries for the compression history shared between the second device and the third device.

### Claim 16 (depends on 11)

The system of claim 11, wherein the first device receives the index of entries responsive to the second device detecting that the first device is in a cluster with the second device.

### Claim 17 (depends on 11)

The system of claim 11, wherein the first device receives the data stream destined for a fourth device.

### Claim 18 (depends on 11)

The system of claim 11, wherein the first device identifies that the portion of the data streams matches within a predetermined threshold a portion of the index of entries.

### Claim 19 (depends on 11)

The system of claim 11, wherein the first device transmits a request to the second device to send the portion of the compression history corresponding to the location identifier to the first device.

### Claim 20 (depends on 11)

The system of claim 11, wherein the first device transmits to the second device one or more location identifiers of one or more portions of the compression history subsequent to the location identifier.
