# US 10,313,467 B2 · Contextual routing device caching

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

- Number: US 10,313,467 B2
- Document ID: US10313467B2
- Status: Granted
- Kind: B2
- Application number: 14/493,193
- Filed: 2014-09-22
- Published: 2016-03-24
- Granted: 2019-06-04
- Earliest claimed: 2014-09-22
- Assignees: Belkin International, Inc.
- Applicants: Belkin International, Inc.
- Inventors: Ryan Yong Kim
- Web page: https://patentgrep.com/patent/US10313467B2

## CPC

- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 12/2834: {Switching of information between an external network and a home network (access arrangements H04L12/2856)}
- H04L 45/742: {Route cache; Operation thereof}
- H04L 49/252: {Store and forward routing}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 63/0464: {using hop-by-hop encryption, i.e. wherein an intermediate entity decrypts the information and re-encrypts it before forwarding it}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/2885: Hierarchically arranged intermediate devices, e.g. for hierarchical caching
- H04L 67/5681: Pre-fetching or pre-delivering data based on network characteristics
- H04L 67/5682: Policies or rules for updating, deleting or replacing the stored data
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- H04L 63/0471: {applying encryption by an intermediary, e.g. receiving clear information at the intermediary and encrypting the received information at the intermediary before forwarding}
- H04L 63/168: {above the transport layer}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A routing device capable of performing application layer data caching is described. Application data caching at a routing device can alleviate the bottleneck that an application data host may experience during high demands for application data. Requests for the application data can also be fulfilled faster by eliminating the network delays for communicating with the application data host. The techniques described can also be used to perform analysis of the underlying application data in the network traffic transiting though a routing device.

## Claims

### Claim 1

A method comprising:
receiving, on a routing device, a network resource identifier to request application data;
receiving the application data corresponding to the network resource identifier;
deriving a data digest from the received application data, wherein the data digest represents a portion of the received application data;
associating the data digest with the network resource identifier;
comparing the network resource identifier to previously received network resource identifiers;
comparing the data digest to previous data digests associated with the previously received network resource identifiers;
determining a total number of combination matches, wherein a combination match includes a previously received network resource identifier that matches the network resource identifier and a previous data digest associated with the previously received network resource identifier that matches the data digest;
comparing the total number of combination matches with a threshold number of combination matches, wherein the threshold number of combination matches is determined using a type of data associated with the application data; and
determining whether to cache the application data in an application data cache of the routing device based on at least the comparison of the total number of combination matches with a threshold number of combination matches.

### Claim 2 (depends on 1)

The method of claim 1, wherein the application data is determined to be cached when the network resource identifier and the data digest match at least a threshold number of previously received network resource identifiers and associated previous data digests.

### Claim 3 (depends on 2)

The method of claim 2, wherein the application data is determined to be cached when the threshold number of previously received network resource identifiers are received within a predetermined time period.

### Claim 4 (depends on 1)

The method of claim 1, wherein the application data is determined not to be cached when the data digest does not match one or more of the previous data digests associated with the previously received network resource identifiers matching the network resource identifier.

### Claim 5 (depends on 1)

The method of claim 1, wherein when the application data is determined to be cached, the method further comprises:
determining a time-to-live for the application data based on a number of previously received network resource identifiers matching the network resource identifier.

### Claim 6 (depends on 5)

The method of claim 5, further comprising:
receiving a subsequent network resource identifier matching the network resource identifier; and
updating the time-to-live of the application data.

### Claim 7 (depends on 5)

The method of claim 5, further comprising:
de-caching the application data from the application data cache of the routing device after the time-to-live of the application data has expired.

### Claim 8 (depends on 1)

The method of claim 1, wherein the application data is encrypted when the application data is received, and the method further comprises decrypting the received application data before deriving the data digest.

### Claim 9 (depends on 8)

The method of claim 8, wherein the application data is re-encrypted before being cached.

### Claim 10 (depends on 8)

The method of claim 8, wherein the application data is cached unencrypted.

### Claim 11

A routing device, comprising:
an application data cache;
one or more data processors; and
a non-transitory computer readable storage medium containing instructions, which when executed on the one or more data processors, cause the one or more data processors to perform operations including:
receiving a network resource identifier to request application data;
receiving the application data corresponding to the network resource identifier;
deriving a data digest from the received application data, wherein the data digest represents a portion of the received application data;
associating the data digest with the network resource identifier;
comparing the network resource identifier to previously received network resource identifiers;
comparing the data digest to previous data digests associated with the previously received network resource identifiers;
determining a total number of combination matches, wherein a combination match includes a previously received network resource identifier that matches the network resource identifier and a previous data digest associated with the previously received network resource identifier that matches the data digest;
comparing the total number of combination matches with a threshold number of combination matches, wherein the threshold number of combination matches is determined using a type of data associated with the application data; and
determining whether to cache the application data in an application data cache of the routing device based on at least the comparison of the total number of combination matches with a threshold number of combination matches.

### Claim 12 (depends on 11)

The routing device of claim 11, wherein the application data is determined to be cached when the network resource identifier and the data digest matches a threshold number of previously received network resource identifiers and associated previous data digests.

### Claim 13 (depends on 12)

The routing device of claim 12, wherein the application data is determined to be cached when the threshold number of previously received network resource identifiers is received within a predetermined time period.

### Claim 14 (depends on 11)

The routing device of claim 11, wherein the application data is determined not to be cached when the data digest does not match one or more of the previous data digests associated with the previously received network resource identifiers matching the network resource identifier.

### Claim 15 (depends on 11)

The routing device of claim 11, wherein when the application data is determined to be cached, the operations further include:
determining a time-to-live for the application data based on a number of previously received network resource identifiers matching the network resource identifier.

### Claim 16 (depends on 15)

The routing device of claim 15, wherein the operations further includes:
receiving a subsequent network resource identifier matching the network resource identifier; and
updating the time-to-live of the application data.

### Claim 17 (depends on 15)

The routing device of claim 15, wherein the operations further include:
de-caching the application data from the application data cache of the routing device after the time-to-live of the application data has expired.

### Claim 18 (depends on 11)

The routing device of claim 11, wherein the application data is encrypted when the application data is received, and the operations further include decrypting the received application data before deriving the data digest.

### Claim 19 (depends on 18)

The routing device of claim 18, wherein the application data is re-encrypted before being cached.

### Claim 20 (depends on 18)

The routing device of claim 18, wherein the application data is cached unencrypted.

### Claim 21

A non-transitory computer-readable storage medium having instructions stored thereon, which when executed by a computing device, cause the computing device to perform operations including:
receiving a network resource identifier to request application data;
receiving the application data corresponding to the network resource identifier;
deriving a data digest from the received application data, wherein the data digest represents a portion of the received application data;
associating the data digest with the network resource identifier;
comparing the network resource identifier to previously received network resource identifiers;
comparing the data digest to previous data digests associated with the previously received network resource identifiers;
determining a total number of combination matches, wherein a combination match includes a previously received network resource identifier that matches the network resource identifier and a previous data digest associated with the previously received network resource identifier that matches the data digest;
comparing the total number of combination matches with a threshold number of combination matches, wherein the threshold number of combinations is determined using a type of data associated with the application data; and
determining whether to cache the application data in an application data cache of a routing device based on at least the comparison of the total number of combination matches with a threshold number of combination matches.

### Claim 22 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein the application data is determined to be cached when the network resource identifier and the data digest matches a threshold number of previously received network resource identifiers and associated previous data digests.

### Claim 23 (depends on 22)

The non-transitory computer-readable storage medium of claim 22, wherein the application data is determined to be cached when the threshold number of previously received network resource identifiers is received within a predetermined time period.

### Claim 24 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein the application data is determined not to be cached when the data digest does not match one or more of the previous data digests associated with the previously received network resource identifiers matching the network resource identifier.

### Claim 25 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein when the application data is determined to be cached, the operations further include:
determining a time-to-live for the application data based on a number of previously received network resource identifiers matching the network resource identifier.

### Claim 26 (depends on 25)

The non-transitory computer-readable storage medium of claim 25, wherein the operations further includes:
receiving a subsequent network resource identifier matching the network resource identifier; and
updating the time-to-live of the application data.

### Claim 27 (depends on 25)

The non-transitory computer-readable storage medium of claim 25, wherein the operations further include:
de-caching the application data from the application data cache of the routing device after the time-to-live of the application data has expired.

### Claim 28 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein the application data is encrypted when the application data is received, and the operations further include decrypting the received application data before deriving the data digest.

### Claim 29 (depends on 28)

The non-transitory computer-readable storage medium of claim 28, wherein the application data is re-encrypted before being cached.

### Claim 30 (depends on 28)

The non-transitory computer-readable storage medium of claim 28, wherein the application data is cached unencrypted.
