# US 10,374,945 B1 · Application-centric method to find relative paths

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

- Number: US 10,374,945 B1
- Document ID: US10374945B1
- Status: Granted
- Kind: B1
- Application number: 15/927,125
- Filed: 2018-03-21
- Granted: 2019-08-06
- Earliest claimed: 2018-03-21
- Assignees: Citrix Systems, Inc.
- Applicants: Citrix Systems, Inc.
- Inventors: Praveen Raja Dhanabalan; Surya Prakash Patel
- Web page: https://patentgrep.com/patent/US10374945B1

## CPC

- H04L 65/403: Arrangements for multi-party communication, e.g. for conferences (data switching systems for conference H04L12/18; arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities H04M3/56; television conferencing systems H04N7/15)
- H04L 45/123: {Evaluation of link metrics (techniques for monitoring network metrics H04L43/08)}
- H04L 45/125: based on throughput or bandwidth
- H04L 45/22: {Alternate routing}
- H04L 45/24: Multipath
- H04L 45/302: Route determination based on requested QoS
- H04L 45/306: {Route determination based on the nature of the carried application}
- H04L 47/2475: for supporting traffic characterised by the type of applications
- H04L 47/283: in response to processing delays, e.g. caused by jitter or round trip time [RTT]
- H04L 47/29: {using a combination of thresholds}
- H04L 65/4015: {where at least one of the additional parallel sessions is real time or time sensitive, e.g. white board sharing, collaboration or spawning of a subconference}
- H04L 65/80: Responding to QoS
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

The systems and methods discussed herein provide for network communications via a plurality of paths, responsive to network traffic characteristics such as class, quality of service (QoS) requirements, application, network delay, loss rates, jitter, bandwidth, and application chattiness. Path selection may be application-specific, as one path that is bad or inadequate for the requirements of one application may be good or adequate for the requirements of a second application. By taking into account application-specific communications characteristics, as well as network path characteristics, path selection may be optimized, resulting in higher quality of service for each application, better throughput, and more efficient use of bandwidth and network resources.

## Claims

### Claim 1

A method for application-based network path selection, comprising:
establishing, by a first device, communications with a second device via each of a first network path and a second network path;
identifying, by the first device, an application corresponding to a packet for transmission;
determining, by the first device, whether an estimated chattiness of the application exceeds a threshold; and
transmitting, by the first device to the second device, the packet via a selected one of the first network path and the second network path,
wherein the first network path is selected responsive to the estimated chattiness exceeding the threshold and the first network path having a lower net transmission time for the predetermined number of packets than the second network path, and
the second network path is selected responsive to the estimated chattiness not exceeding the threshold and the second network path having a lower latency than the first network path.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
measuring a chattiness of the application; and
recalculating the estimated chattiness as a weighted average of the measured chattiness of the application and at least one prior measured chattiness of the application.

### Claim 3 (depends on 2)

The method of claim 2, wherein the packet is transmitted via the first network path, and further comprising:
determining that the measured chattiness of the application does not exceed the threshold; and
responsive to the determination that the measured chattiness of the application does not exceed the threshold, transmitting an additional received packet corresponding to the application via the second network path.

### Claim 4 (depends on 2)

The method of claim 2, wherein the packet is transmitted via the second network path, and further comprising:
determining that the measured chattiness of the application exceeds the threshold; and
responsive to the determination that the measured chattiness of the application exceeds the threshold, transmitting an additional received packet corresponding to the application via the first network path.

### Claim 5 (depends on 2)

The method of claim 2, wherein recalculating the estimated chattiness further comprises:
determining that the measured chattiness and the estimated chattiness have values on opposite sides of the threshold; and
responsive to the determination that the measured chattiness and the estimated chattiness have values on opposite sides of the threshold, increasing a weight for the measured chattiness in the weighted average.

### Claim 6 (depends on 2)

The method of claim 2, wherein recalculating the estimated chattiness further comprises:
determining that the measured chattiness and the estimated chattiness have values on the same side of the threshold; and
responsive to the determination that the measured chattiness and the estimated chattiness have values on the same side of the threshold, decreasing a weight for the measured chattiness in the weighted average.

### Claim 7 (depends on 1)

The method of claim 1, further comprising identifying a priority level of the received packet, from a plurality of predetermined priority levels.

### Claim 8 (depends on 7)

The method of claim 7, wherein the received packet has a first priority level, and further comprising:
receiving an additional packet having a second priority level lower than the first priority level; and
responsive to the additional packet having the second priority level lower than the first priority level and responsive to the first network path having lower net transmission time for the predetermined number of packets than the second network path, transmitting the additional packet via the first network path.

### Claim 9 (depends on 7)

The method of claim 7, wherein the received packet has a first priority level, and further comprising:
receiving an additional packet having a second priority level higher than the first priority level; and
responsive to the additional packet having the second priority level higher than the first priority level and responsive to the second network path having lower latency than the first network path, transmitting the additional packet via the second network path.

### Claim 10 (depends on 1)

The method of claim 1, wherein determining whether the estimated chattiness of the application exceeds the threshold further comprises calculating the threshold based on a bandwidth delay product and an average number of active connections between the first device and the second device.

### Claim 11

A system for application-based network path selection, comprising:
a first device in communication with a second device via each of a first network path and a second network path;
wherein the first device comprises a path selector configured to:
identify an application corresponding to a packet to be transmitted, determine whether an estimated chattiness of the application exceeds a threshold, and
select either the first network path or the second network path,
wherein the first network path is selected responsive to the estimated chattiness exceeding the threshold and the first network path having a lower net transmission time for the predetermined number of packets than the second network path; and
the second network path is selected responsive to the estimated chattiness not exceeding the threshold and the second network path having a lower latency than the first network path; and
wherein the first device is configured to transmit the packet via the selected network path to the second device.

### Claim 12 (depends on 11)

The system of claim 11, wherein the path selector is further configured to:
measure a chattiness of the application; and
recalculate the estimated chattiness as a weighted average of the measured chattiness of the application and at least one prior measured chattiness of the application.

### Claim 13 (depends on 12)

The system of claim 12, wherein the packet is transmitted via the first network path, and wherein the path selector is further configured to:
determine that the measured chattiness of the application does not exceed the threshold, and
responsive to the determination that the measured chattiness of the application does not exceed the threshold, select to transmit an additional received packet corresponding to the application via the second network path.

### Claim 14 (depends on 12)

The system of claim 12, wherein the packet is transmitted via the second network path, and wherein the path selector is further configured to:
determine that the measured chattiness of the application exceeds the threshold; and
responsive to the determination that the measured chattiness of the application exceeds the threshold, select to transmit an additional received packet corresponding to the application via the first network path.

### Claim 15 (depends on 12)

The system of claim 12, wherein the path selector is further configured to:
determine that the measured chattiness and the estimated chattiness have values on opposite sides of the threshold; and
responsive to the determination that the measured chattiness and the estimated chattiness have values on opposite sides of the threshold, increase a weight for the measured chattiness in the weighted average.

### Claim 16 (depends on 12)

The system of claim 12, wherein the path selector is further configured to:
determine that the measured chattiness and the estimated chattiness have values on the same side of the threshold; and
responsive to the determination that the measured chattiness and the estimated chattiness have values on the same side of the threshold, decrease a weight for the measured chattiness in the weighted average.

### Claim 17 (depends on 11)

The system of claim 11, wherein the path selector is further configured to identify a priority level of the received packet, from a plurality of predetermined priority levels.

### Claim 18 (depends on 17)

The system of claim 17, wherein the received packet has a first priority level, and wherein the path selector is further configured to:
responsive to an additional packet received by the first device for transmission to the second device having a second priority level lower than the first priority level and responsive to the first network path having lower net transmission time for the predetermined number of packets than the second network path, select to transmit the additional packet via the first network path.

### Claim 19 (depends on 17)

The system of claim 17, wherein the received packet has a first priority level, and wherein the path selector is further configured to:
responsive to an additional packet, received by the first device for transmission to the second device, having a second priority level higher than the first priority level and responsive to the second network path having lower latency than the first network path, select to transmit the additional packet via the second network path.

### Claim 20 (depends on 11)

The system of claim 11, wherein the path selector is further configured to calculate the threshold based on a bandwidth delay product and an average number of active connections between the first device and the second device.
