IP Library Granted Patent US 6,961,009
Granted Patent B2
US 6,961,009 · App. 10/968,868 · Granted Nov 1, 2005

Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation

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 6,961,009
App. No.
10/968,868
Granted
Nov 1, 2005
Kind
B2
Abstract

In a coding system, input data within a system is encoded. The input data might include sequences of symbols that repeat in the input data or occur in other input data encoded in the system. The encoding includes determining a target segment size, determining a window size, identifying a fingerprint within a window of symbols at an offset in the input data, determining whether the offset is to be designated as a cut point and segmenting the input data as indicated by the set of cut points. For each segment so identified, the encoder determines whether the segment is to be a referenced segment or an unreferenced segment, replacing the segment data of each referenced segment with a reference label and storing a reference binding in a persistent segment store for each referenced segment, if needed. Hierarchically, the process can be repeated by grouping references into groups, replacing the grouped references with a group label, storing a binding between the grouped references and group label, if one is not already present, and repeating the process. The number of levels of hierarchy can be fixed in advanced or it can be determined from the content encoded.

Claims (49)

1. An apparatus configured to process input data, wherein the input data is segmented into a plurality of segments, the apparatus comprising:

logic configured to determine one or more segments in the plurality of segments that are to be referenced segments;

for each of the one or more referenced segments, logic configured to replace data for the referenced segments with a reference label;

for each referenced segment not already present in a persistent segment store, logic configured to store a reference binding in the persistent segment store, wherein a reference binding associates a referenced segment's data and its reference label;

logic configured to determine whether any sequence of segments is to be grouped as a reference group;

for each reference group, logic configured to replace a reference label or data for segments in the sequence with a group label; and

for each reference group not already present in the persistent segment store, logic configured to store a group reference binding in the persistent segment store, wherein a group reference binding associates a reference group's reference labels or data with its group label.

2. The apparatus of claim 1 , further comprising:

logic configured to determine whether any sequence of segments is to be grouped as a higher level reference group;

for each higher level reference group, logic configured to replace a group label, a reference label or data for segments in the sequence with a higher level group label; and

for each higher level reference group not already present in the persistent segment store, logic configured to store a higher level group reference binding in the persistent segment store, wherein a higher level group reference binding associates a higher level reference group's group labels, reference labels or data with its higher level group label.

3. The apparatus of claim 1 , further comprising:

logic to determine a set of cut points for the input data based on a fingerprint function, the fingerprint function indicating a cut point based on a number of symbols input into the fingerprint function; and

logic to segment the input data based on the set of cut points.

4. The apparatus of claim 3 , wherein the logic configured to determine the set of cut points comprises:

logic to determine a fingerprint window comprising a sequence of input symbols, wherein the fingerprint window is associated with an offset;

logic to input the sequence of input symbols into the fingerprint function, the fingerprint function outputting a fingerprint value; and

logic to determine from the fingerprint value if a cut point should be determined at the offset.

5. The apparatus of claim 4 , further comprising logic to repeat the advancing, inputting, and determining steps until a cut point is determined.

6. The apparatus of claim 3 , wherein the logic to determine the set of cut points comprises:

if it is not determined from the fingerprint value that a cut point should be determined at a new offset, logic to advance the fingerprint window to comprise a new sequence of input symbols, wherein the fingerprint window is associated with the offset;

logic to input the new sequence of input symbols into the fingerprint function, the fingerprint function outputting a new fingerprint value; and

logic to determine from the new fingerprint value if a cut point should be determined at the new offset.

7. The apparatus of claim 1 , wherein the logic to determine whether any sequence of segments is to be grouped as a reference group comprises:

logic to input the group of references into the fingerprint function, the fingerprint function outputting a fingerprint value; and

logic to determine from the fingerprint value if the group of references should be grouped as a reference group.

8. The apparatus of claim 7 , further comprising:

if it is not determined from the fingerprint value that the group of references should be grouped as the reference group, logic to advance the fingerprint window to comprise a new group of reference labels;

logic to input the new group of reference labels into the fingerprint function, the fingerprint function outputting a new fingerprint value; and

logic to determine from the new fingerprint value if the new group of reference labels should be a grouped as a reference group.

9. The apparatus of claim 8 , further comprising logic to repeat the advancing, inputting, and determining steps until the reference group is determined.

10. An apparatus configured to process input data, the apparatus comprising:

logic configured to determine a first set of segments for the input data based on a first fingerprint function;

logic configured to replace segments in the first set of segments for the input data with reference labels if it is determined they are referenced segments;

for each referenced segment not already present in a persistent segment store, logic configured to store a reference binding in the persistent segment store, wherein a reference binding associates a referenced segment's data and its reference label;

logic configured to determine a second set of segments for the segmented input data based on a second fingerprint function;

logic configured to replace segments in the second set of segments for the input data with group labels if it is determined they are referenced groups; and

for each reference group not already present in the persistent segment store, logic configured to store a group reference binding in the persistent segment store, wherein a group reference binding associates a reference group's references with its group label.

11. The apparatus of claim 10 , wherein the first fingerprint function and the second fingerprint function are identical functions.

12. The apparatus of claim 10 , wherein after segments in the first set of segments for the input data are replaced with reference labels, the input data includes reference labels or data.

13. The apparatus of claim 10 , wherein after segments in the second set of segments for the input data are replaced with group labels, the input data includes group labels, reference labels, or data.

14. A method for processing input data, the method comprising:

(a) identifying sequences of segments in the input data, wherein sequences of segments are determined as groups to be referenced;

(b) for each group, replacing the group with a label in the input data; and

(c) for each group not already present in a persistent segment store, storing a reference binding in the persistent segment store for the group; and

(d) recursively performing steps (a–c) with the replaced groups in the input data a number of times equal to a number of desired levels of reference bindings, wherein at least two levels of reference bindings are stored in the persistent segment store.

15. The method of claim 14 , wherein the first level of reference bindings comprises bindings between reference labels and data in the input data.

16. The method of claim 15 , wherein the second level of reference bindings comprises bindings between group labels and reference labels.

17. The method of claim 14 , wherein identifying sequences of segments in the input data comprises identifying sequences of segments using a fingerprint function.

Assignments (22)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 18, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059232/0551 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
PATENT SECURITY AGREEMENT Recorded Mar 5, 2021
From: RIVERBED TECHNOLOGY, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 055514/0249 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
SECURITY AGREEMENT Recorded Dec 20, 2012
From: RIVERBED TECHNOLOGY, INC.; OPNET TECHNOLOGIES, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 029646/0060 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ZIP CODE FOR RECEIVING PARTY SHOULD BE 94107; INVENTOR SHOULD BE MICHAEL J. DEMMER PREVIOUSLY RECORDED ON REEL 022813 FRAME 0189. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF PATENT APPLICATION SHOWS CORRECT ZIP CODE OF 94107 AND SPELLING OF INVENTOR'S NAME. Recorded Jun 26, 2009
From: MCCANNE, STEVEN; DEMMER, MICHAEL J.
To: NBT TECHNOLOGY, INC.
Reel/Frame 022883/0779 →
CHANGE OF NAME Recorded Jun 11, 2009
From: NBT TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 022813/0060 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2009
From: MCCANNE, STEVEN; DEMME, MICHAEL J.
To: NBT TECHNOLOGY, INC.
Reel/Frame 022813/0189 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2006
From: NBT TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 018350/0162 →