IP Library Granted Patent US 9,930,146
Granted Patent B2
US 9,930,146 · App. 15/090,248 · Granted Mar 27, 2018

System and method for compressing content centric networking messages

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 9,930,146
App. No.
15/090,248
Granted
Mar 27, 2018
Kind
B2
Abstract

A computer system can compress or decompress a type-length-value (TLV) component in a message. During operation, the computer can select a compression table associated with a network interface used to send and/or to receive the message, and can search the compression table for an entry that includes a prefix of a value from type-length-value (TLV) component being compressed or decompressed. If compressing the message, the computer may generate a compressed block that corresponds to a compressed version of the TLV component, such that the compressed block includes the compression encoding in place of the prefix in the TLV component's value. The computer can also generate a compressed message that includes the compressed block in place of the TLV component, without a compression table.

Claims (70)

1. A method, comprising:

selecting, by a computer and from a message, a type-length-value (TLV) component to compress;

searching a compression table for an entry that includes a prefix of the TLV component's value;

obtaining a compression encoding for the TLV value from the compression table entry;

generating a compressed block that corresponds to a compressed version of the TLV component, wherein the compressed block includes the compression encoding in place of the prefix in the TLV component's value; and

generating a compressed message that includes the compressed block in place of the TLV component.

2. The method of claim 1 , further comprising:

determining an interface for forwarding the message, based on the message's name; and

selecting the compression table that corresponds to the interface.

3. The method of claim 2 , further comprising:

in response to generating the compressed message, forwarding the compressed message via the interface.

4. The method of claim 1 , wherein generating the compressed block involves:

determining that the compression encoding corresponds to a subset of the TLV's value; and

setting a continuation field of the compressed block, wherein the continuation field indicates that additional data follows the compressed block.

5. The method of claim 4 , wherein generating the compressed block further involves:

in response to determining that a suffix of the TLV component's value does not have a matching entry in the compression table:

determining a size of the suffix;

appending, to the end of the compressed block, a size field that includes the suffix's size; and

appending the suffix to the size field.

6. The method of claim 4 , wherein generating the compressed block further involves:

in response to determining that a sequence of characters following the TLV component's value have a matching entry in the compression table:

appending, to the compressed block, a size field with a zero value; and

appending, to the size field, one or more additional compressed blocks that compress a remaining portion of the TLV component's value.

7. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:

selecting, from a message, a type-length-value (TLV) component to compress;

searching a compression table for an entry that includes a prefix of the TLV component's value;

obtaining a compression encoding for the TLV value from the compression table entry;

generating a compressed block that corresponds to a compressed version of the TLV component, wherein the compressed block includes the compression encoding in place of the prefix in the TLV component's value; and

generating a compressed message that includes the compressed block in place of the TLV component.

8. The non-transitory computer-readable storage medium of claim 7 , further comprising:

determining an interface for forwarding the message, based on the message's name; and

selecting the compression table that corresponds to the interface.

9. The non-transitory computer-readable storage medium of claim 8 , further comprising:

in response to generating the compressed message, forwarding the compressed message via the interface.

10. The non-transitory computer-readable storage medium of claim 7 , wherein generating the compressed block involves:

determining that the compression encoding corresponds to a subset of the TLV's value; and

setting a continuation field of the compressed block, wherein the continuation field indicates that additional data follows the compressed block.

11. The non-transitory computer-readable storage medium of claim 10 , wherein generating the compressed block further involves:

in response to determining that a suffix of the TLV component's value does not have a matching entry in the compression table:

determining a size of the suffix;

appending, to the end of the compressed block, a size field that includes the suffix's size; and

appending the suffix to the size field.

12. The non-transitory computer-readable storage medium of claim 10 , wherein generating the compressed block further involves:

in response to determining that a sequence of characters following the TLV component's value have a matching entry in the compression table:

appending, to the compressed block, a size field with a zero value; and

appending, to the size field, one or more additional compressed blocks that compress a remaining portion of the TLV component's value.

13. A method, comprising:

receiving, by a computing device via a network interface, a compressed message;

selecting a compression table associated with the interface;

decompressing a message portion from a respective compressed block of the compressed message, using the compression table;

in response to determining that the respective compressed block corresponds to a TLV component:

computing a length of the message portion; and

recreating the TLV component using the message portion and the computed length; and

generating a decompressed message, which includes the TLV component in place of the compressed block.

14. The method of claim 13 , further comprising:

synchronizing entries of the compression table with a computer node accessible via the interface.

15. The method of claim 13 , wherein decompressing the message portion from the respective compressed block involves:

detecting that a continuation field of the compressed block indicates that additional data follows the compressed block; and

reading a size field following the compressed block in the compressed message.

16. The method of claim 15 , wherein decompressing the message portion from the respective compressed block further involves:

in response to determining that the size field includes a non-zero value:

reading a number of bytes that follow the compressed block, corresponding to the size to obtain a data suffix; and

appending the data suffix to the message portion.

17. The method of claim 15 , wherein decompressing the message portion from the respective compressed block further involves:

in response to determining that the size field includes a zero value:

decompressing a second compressed block that follows the respective compressed block in the compressed message, to obtain a second message portion; and

appending the second message portion to the message portion.

18. The method of claim 13 , wherein decompressing the message portion from the respective compressed block involves:

detecting that a continuation field of the compressed block indicates that additional data does not follow the compressed block; and

appending the decompressed message portion to the decompressed message.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2017
From: PALO ALTO RESEARCH CENTER INCORPORATED
To: CISCO SYSTEMS, INC.
Reel/Frame 041714/0373 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2017
From: CISCO SYSTEMS, INC.
To: CISCO TECHNOLOGY, INC.
Reel/Frame 041715/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2016
From: SOLIS, IGNACIO
To: PALO ALTO RESEARCH CENTER INCORPORATED
Reel/Frame 038187/0821 →