# US 12,184,553 B2 · Prediction-based network routing

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

- Number: US 12,184,553 B2
- Document ID: US12184553B2
- Status: Granted
- Kind: B2
- Application number: 18/392,386
- Filed: 2023-12-21
- Published: 2024-04-18
- Granted: 2024-12-31
- Earliest claimed: 2014-06-17
- Assignees: Comcast Cable Communications, LLC
- Applicants: Comcast Cable Communications, LLC
- Inventors: Chris Luke; Anthony Manuel Veiga
- Web page: https://patentgrep.com/patent/US12184553B2

## CPC

- H04L 45/122: by minimising distances, e.g. by selecting a route with minimum of number of hops
- H04L 45/125: based on throughput or bandwidth
- H04L 45/22: {Alternate routing}
- H04L 45/38: {Flow based routing}
- H04L 45/74: Address processing for routing
- H04L 45/7453: using hashing
- H04L 47/122: by diverting traffic away from congested entities
- H04L 47/125: by balancing the load, e.g. traffic engineering
- H04L 47/2483: involving identification of individual flows
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Methods and apparatuses are described for routing of network traffic based on future utilization of a plurality of network devices. For example, future utilization for each of a plurality of network devices may be predicted. Then, based on the predicted future utilization, a route may be determined that comprises at least some of the plurality of network devices. An instruction to route data packets based on the route can then be sent to one (e.g. the first) of the network devices in the determined route.

## Claims

### Claim 1

A method comprising:
predicting, by a computing device, future utilization for each of a plurality of network devices;
determining, by the computing device and based on the predicted future utilization, a route, wherein the route comprises:
a first network device, of the plurality of network devices,
a second network device, of the plurality of network devices, and
an intermediary network device, of the plurality of network devices, between the first network device and the second network device; and
sending, to the first network device and the intermediary network device, an instruction to route data packets based on the route.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving, by the computing device, a request; and
generating, by the computing device and based on the request, a flow identifier, wherein determining the route is based on the flow identifier.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
receiving, by the computing device, a request including one or more header values of a first data packet; and
generating, by the computing device and based on the one or more header values of the first data packet, a flow identifier, wherein determining the route is based on the flow identifier and the method further comprises:
causing the first network device to forward, based on the flow identifier and the request, the first data packet.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
receiving, by the computing device, a request; and
generating, by the computing device and based on a destination address in the request, a flow identifier, wherein:
determining the route is based on the flow identifier,
the destination address is a virtual destination address corresponding to a plurality of servers, and
each of the plurality of servers stores content requested by a first data packet of the request.

### Claim 5 (depends on 1)

The method of claim 1, wherein the route comprises one or more of a plurality of servers storing content.

### Claim 6 (depends on 1)

The method of claim 1, wherein the determining the route comprises selecting, based on a destination address of a first data packet, the route from a plurality of candidate routes.

### Claim 7

A system comprising:
a computing device; and
a first network device of a plurality of network devices;
wherein the computing device comprises:
one or more first processors; and
memory storing first instructions that, when executed by the one or more first processors of the computing device, configure the computing device to:
receive a request;
predict, based on receiving the request, future utilization for each of the plurality of network devices;
determine, based on the predicted future utilization, a route, wherein the route comprises:
the first network device,
a second network device, of the plurality of network devices, and
an intermediary network device, of the plurality of network devices, between the first network device and the second network device; and
send, to the first network device and the intermediary network device, an instruction to route data packets based on the route; and
wherein the first network device comprises:
one or more second processors; and
memory storing second instructions that, when executed by the one or more second processors of the first network device, configure the first network device to:
send, to the computing device, the request.

### Claim 8 (depends on 7)

The system of claim 7, wherein the first instructions, when executed by the one or more first processors of the computing device, further configure the computing device to:
generate, based on the request, a flow identifier, wherein determining the route is based on the flow identifier.

### Claim 9 (depends on 7)

The system of claim 7, wherein the request includes one or more header values of a first data packet, and the first instructions, when executed by the one or more first processors of the computing device, further configure the computing device to:
generate, based on the one or more header values of the first data packet, a flow identifier, wherein determining the route is based on the flow identifier; and
cause the first network device to forward, based on the flow identifier and the request, the first data packet.

### Claim 10 (depends on 7)

The system of claim 7, wherein the first instructions, when executed by the one or more first processors of the computing device, further configure the computing device to:
generate, based on a destination address in the request, a flow identifier, wherein:
determining the route is based on the flow identifier,
the destination address is a virtual destination address corresponding to a plurality of servers, and
each of the plurality of servers stores content requested by a first data packet of the request.

### Claim 11 (depends on 7)

The system of claim 7, wherein the route comprises one or more of a plurality of servers storing content.

### Claim 12 (depends on 7)

The system of claim 7, wherein the determining the route comprises selecting, based on a destination address of a first data packet, the route from a plurality of candidate routes.

### Claim 13

A computing device comprising:
one or more processors; and
memory storing instructions that, when executed by the one or more processors, configure the computing device to:
predict future utilization for each of a plurality of network devices;
determine, based on the predicted future utilization, a route, wherein the route comprises:
a first network device, of the plurality of network devices,
a second network device, of the plurality of network devices, and
an intermediary network device, of the plurality of network devices, between the first network device and the second network device; and
send, to the first network device and the intermediary network device, an instruction to route data packets based on the route.

### Claim 14 (depends on 13)

The computing device of claim 13, wherein the instructions, when executed by the one or more processors, further configure the computing device to:
receive a request; and
generate, based on the request, a flow identifier, wherein determining the route is based on the flow identifier.

### Claim 15 (depends on 13)

The computing device of claim 13, wherein the instructions, when executed by the one or more processors, further configure the computing device to:
receive a request including one or more header values of a first data packet;
generate, based on the one or more header values of the first data packet, a flow identifier, wherein determining the route is based on the flow identifier; and
cause the first network device to forward, based on the flow identifier and the request, the first data packet.

### Claim 16 (depends on 13)

The computing device of claim 13, wherein the instructions, when executed by the one or more processors, further configure the computing device to:
receive a request; and
generate, based on a destination address in the request, a flow identifier, wherein:
determining the route is based on the flow identifier,
the destination address is a virtual destination address corresponding to a plurality of servers, and
each of the plurality of servers stores content requested by a first data packet of the request.

### Claim 17 (depends on 13)

The computing device of claim 13, wherein the route comprises one or more of a plurality of servers storing content.

### Claim 18 (depends on 13)

The computing device of claim 13, wherein the determining the route comprises selecting, based on a destination address of a first data packet, the route from a plurality of candidate routes.

### Claim 19

One or more non-transitory computer-readable media storing instructions that, when executed, cause:
predicting, by a computing device, future utilization for each of a plurality of network devices;
determining, by the computing device and based on the predicted future utilization, a route, wherein the route comprises:
a first network device, of the plurality of network devices,
a second network device, of the plurality of network devices, and
an intermediary network device, of the plurality of network devices, between the first network device and the second network device; and
sending, to the first network device and the intermediary network device, an instruction to route data packets based on the route.

### Claim 20 (depends on 19)

The one or more non-transitory computer-readable media of claim 19, wherein the stored instructions, when executed, further cause:
receiving, by the computing device, a request; and
generating, by the computing device and based on the request, a flow identifier, wherein determining the route is based on the flow identifier.

### Claim 21 (depends on 19)

The one or more non-transitory computer-readable media of claim 19, wherein the stored instructions, when executed, further cause:
receiving, by the computing device, a request including one or more header values of a first data packet;
generating, by the computing device and based on the one or more header values of the first data packet, a flow identifier, wherein determining the route is based on the flow identifier; and
causing the first network device to forward, based on the flow identifier and the request, the first data packet.

### Claim 22 (depends on 19)

The one or more non-transitory computer-readable media of claim 19, wherein the stored instructions, when executed, further cause:
receiving, by the computing device, a request; and
generating, by the computing device and based on a destination address in the request, a flow identifier, wherein:
determining the route is based on the flow identifier,
the destination address is a virtual destination address corresponding to a plurality of servers, and
each of the plurality of servers stores content requested by a first data packet of the request.

### Claim 23 (depends on 19)

The one or more non-transitory computer-readable media of claim 19, wherein the route comprises one or more of a plurality of servers storing content.

### Claim 24 (depends on 19)

The one or more non-transitory computer-readable media of claim 19, wherein the determining the route comprises selecting, based on a destination address of a first data packet, the route from a plurality of candidate routes.
