# US 10,313,229 B2 · Method and apparatus for path selection

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

- Number: US 10,313,229 B2
- Document ID: US10313229B2
- Status: Granted
- Kind: B2
- Application number: 15/367,059
- Filed: 2016-12-01
- Published: 2017-03-23
- Granted: 2019-06-04
- Earliest claimed: 2013-08-05
- Assignees: Riverbed Technology, Inc.
- Applicants: Riverbed Technology, Inc.
- Inventors: Sudeep Modi; Joyu Wu; Anoop A. Gupta; Devanath Srinivasa; Gabriel Levy; Luca Niccolini; Sarath Kumar Sankaran Kutty
- Web page: https://patentgrep.com/patent/US10313229B2

## CPC

- H04L 45/28: using route fault recovery
- H04L 45/22: {Alternate routing}
- H04L 45/26: {Route discovery packet}
- H04L 45/38: {Flow based routing}
- H04L 45/74: Address processing for routing
- H04L 49/252: {Store and forward routing}
- H04L 67/563: Data redirection of data network streams
- H04L 12/2854: {Wide area networks, e.g. public data networks}
- H04L 45/66: {Layer 2 routing, e.g. in Ethernet based MAN's}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Systems and techniques are described for path selection. A packet can be transparently intercepted at an intermediary device. Next, the intermediary device may modify one or more bits in the header of the packet. The intermediary device can then forward the packet to the next hop device. In some network configurations, the modifications to the one or more bits in the header of the packet may cause a downstream device to select a path that is different from the path that would have been selected by the downstream device if the one or more bits in the header of the packet had not been modified. A path selection policy can be used to determine whether or not one or more bits in the header of the packet are to be modified.

## Claims

### Claim 1

A method performed by an intermediary device in a network, the network comprising a first router, a second router, a third router, and the intermediary device, wherein the intermediary device is interposed between the first router and the second router, wherein the third router is coupled to the intermediary device, and wherein, at the first router, the second router is a next hop router for packets destined to a network-layer destination address, the method comprising:
transparently intercepting a packet forwarded by the first router to the second router, wherein the packet is destined to the network-layer destination address, and wherein a link-layer header of the packet includes a first link-layer address associated with the first router and a second link-layer address associated with the second router;
determining that the packet is to be routed via the third router instead of the second router;
replacing the second link-layer address in the link-layer header of the packet with a third link-layer address associated with the third router; and
forwarding the packet to the third router.

### Claim 2 (depends on 1)

The method of claim 1, wherein said determining that the packet is to be routed via the third router instead of the second router comprises determining that a path to the network-layer destination address that passes through the second router has a fault.

### Claim 3 (depends on 2)

The method of claim 2, wherein said determining that the path to the network-layer destination address that passes through the second router has the fault comprises:
sending a probe packet along the path; and
determining that the path has the fault if a response to the probe packet includes an error message or if no response is received to the probe packet within a predetermined time period.

### Claim 4 (depends on 1)

The method of claim 1, wherein said determining that the packet is to be routed via the third router instead of the second router comprises:
determining a network flow associated with the packet; and
using a path selection table to determine that the third router is associated with the network flow.

### Claim 5 (depends on 4)

The method of claim 4, further comprising creating the path selection table based on a path selection policy that specifies that packets belonging to the network flow are to be routed via a path that passes through the third router.

### Claim 6 (depends on 5)

The method of claim 5, wherein said creating the path selection table comprises:
for a first packet in a set of packets,
analyzing the first packet to determine a first fingerprint associated with the first packet,
identifying a first application associated with the first fingerprint,
selecting a first path associated with the first application based on the path selection policy;
determining a first network flow associated with the first packet; and
storing an association between the first network flow and the first path in the path selection table.

### Claim 7

A non-transitory computer-readable storage medium storing instructions that, when executed by an intermediary device in a network, cause the intermediary device to perform a method, wherein the network comprises a first router, a second router, a third router, and the intermediary device, wherein the intermediary device is interposed between the first router and the second router, wherein the third router is coupled to the intermediary device, wherein, at the first router, the second router is a next hop router for packets destined to a network-layer destination address, and wherein the method comprising:
transparently intercepting a packet forwarded by the first router to the second router, wherein the packet is destined to the network-layer destination address, and wherein a link-layer header of the packet includes a first link-layer address associated with the first router and a second link-layer address associated with the second router;
determining that the packet is to be routed via the third router instead of the second router;
replacing the second link-layer address in the link-layer header of the packet with a third link-layer address associated with the third router; and
forwarding the packet to the third router.

### Claim 8 (depends on 7)

The non-transitory computer-readable storage medium of claim 7, wherein said determining that the packet is to be routed via the third router instead of the second router comprises determining that a path to the network-layer destination address that passes through the second router has a fault.

### Claim 9 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein said determining that the path to the network-layer destination address that passes through the second router has the fault comprises:
sending a probe packet along the path; and
determining that the path has the fault if a response to the probe packet includes an error message or if no response is received to the probe packet within a predetermined time period.

### Claim 10 (depends on 7)

The non-transitory computer-readable storage medium of claim 7, wherein said determining that the packet is to be routed via the third router instead of the second router comprises:
determining a network flow associated with the packet; and
using a path selection table to determine that the third router is associated with the network flow.

### Claim 11 (depends on 10)

The non-transitory computer-readable storage medium of claim 10, further comprising creating the path selection table based on a path selection policy that specifies that packets belonging to the network flow are to be routed via a path that passes through the third router.

### Claim 12 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein said creating the path selection table comprises:
for a first packet in a set of packets,
analyzing the first packet to determine a first fingerprint associated with the first packet,
identifying a first application associated with the first fingerprint,
selecting a first path associated with the first application based on the path selection policy;
determining a first network flow associated with the first packet; and
storing an association between the first network flow and the first path in the path selection table.

### Claim 13

An intermediary device, wherein the intermediary device is in a network comprising a first router, a second router, a third router, and the intermediary device, wherein the intermediary device is interposed between the first router and the second router, wherein the third router is coupled to the intermediary device, wherein, at the first router, the second router is a next hop router for packets destined to a network-layer destination address, and wherein the intermediary device comprising:
a processor; and
a non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the processor to perform a method comprising:
transparently intercepting a packet forwarded by the first router to the second router, wherein the packet is destined to the network-layer destination address, and wherein a link-layer header of the packet includes a first link-layer address associated with the first router and a second link-layer address associated with the second router;
determining that the packet is to be routed via the third router instead of the second router;
replacing the second link-layer address in the link-layer header of the packet with a third link-layer address associated with the third router; and
forwarding the packet to the third router.

### Claim 14 (depends on 13)

The intermediary device of claim 13, wherein said determining that the packet is to be routed via the third router instead of the second router comprises determining that a path to the network-layer destination address that passes through the second router has a fault.

### Claim 15 (depends on 14)

The intermediary device of claim 14, wherein said determining that the path to the network-layer destination address that passes through the second router has the fault comprises:
sending a probe packet along the path; and
determining that the path has the fault if a response to the probe packet includes an error message or if no response is received to the probe packet within a predetermined time period.

### Claim 16 (depends on 13)

The intermediary device of claim 13, wherein said determining that the packet is to be routed via the third router instead of the second router comprises:
determining a network flow associated with the packet; and
using a path selection table to determine that the third router is associated with the network flow.

### Claim 17 (depends on 16)

The intermediary device of claim 16, further comprising creating the path selection table based on a path selection policy that specifies that packets belonging to the network flow are to be routed via a path that passes through the third router.

### Claim 18 (depends on 17)

The intermediary device of claim 17, wherein said creating the path selection table comprises:
for a first packet in a set of packets,
analyzing the first packet to determine a first fingerprint associated with the first packet,
identifying a first application associated with the first fingerprint,
selecting a first path associated with the first application based on the path selection policy;
determining a first network flow associated with the first packet; and
storing an association between the first network flow and the first path in the path selection table.
