Data-Dependent Chunking for Low-Bandwidth Stream Compression

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing data streaming methods face inefficiencies in bandwidth utilization and compression, particularly in low-bandwidth networks, where traditional compression techniques are restrictive and computationally costly, leading to delays in data transfer and increased memory overhead.

Innovation Solution

The method involves partitioning a byte code sequence into data chunks with unique signatures, comparing these signatures to a history buffer for matching, and transmitting references to similar chunks, allowing for tunable chunk sizes and memory overhead, and using secondary compression to enhance efficiency, particularly suitable for real-time applications like RDP.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of substance

If traditional compression techniques are used on data streams, then compression is achieved, but computational cost increases and delays occur

Engineering Contradiction:
Improvedata sizeVSAvoidcompression time
Core Design Contradiction:
Loss of substanceVSLoss of time

Solution Approach 1:

The data stream is divided into fixed-size chunks before compression. Each chunk is processed independently through the compression algorithm, allowing parallel processing and reducing the computational burden on any single chunk. This segmentation enables the system to achieve compression ratios similar to full-stream compression while significantly reducing the time delay, as each chunk can be compressed and transmitted independently without waiting for the entire data stream.

Inventive Principle:
Principle #1Segmentation

2Reliability

If data is transmitted as a whole, then complete data transfer is achieved, but bandwidth utilization is inefficient

Engineering Contradiction:
Improvedata transfer completenessVSAvoidbandwidth usage
Core Design Contradiction:
ReliabilityVSLoss of substance

Solution Approach 1:

The complete data stream is segmented into smaller fixed-size chunks that are transmitted independently over the network. This segmentation allows for more efficient bandwidth utilization as each chunk can be transmitted as soon as it is ready, rather than waiting for the entire data set to be prepared. The receiver reconstructs the complete data by reassembling the chunks in order, maintaining data transfer completeness while improving bandwidth efficiency through pipelined transmission.

Inventive Principle:
Principle #1Segmentation

3Loss of substance

If chunk-based compression is used, then bandwidth usage is reduced, but memory overhead increases

Engineering Contradiction:
Improvebandwidth usageVSAvoidmemory overhead
Core Design Contradiction:
Loss of substanceVSQuantity of substance

Solution Approach 1:

The system allows dynamic adjustment of the chunk size parameter to optimize the balance between bandwidth usage and memory overhead. By changing the chunk size parameter, users can trade off between transmitting more frequently (smaller chunks, lower bandwidth usage per transmission but higher memory overhead for managing more chunks) or transmitting less frequently (larger chunks, higher bandwidth usage per transmission but lower memory overhead). This parameter adjustment capability enables the system to adapt to different network conditions and memory constraints.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentEP2198522B1Optimized data stream compression using data-dependent chunking
Publication Date: 2013.10.23 MICROSOFT CORP
  • EP2198522B1 patent drawingFigure 1
  • EP2198522B1 patent drawingFigure 2
  • EP2198522B1 patent drawingFigure 3(A)

AI summary

Systems and methods for compression of data to be transmitted are described. A data stream, such as a byte code sequence, is partitioned into one or more data chunks. The data chunks can be associated with an identifier, such as a signature that differentiates one data chunk from the other. Thus, different data chunks would be identifiable through different signatures. The data chunks associated with the signatures can be compared with a repository or a history buffer. The history buffer includes a collection of previously transmitted data chunks each associated with their respective signature.