IP Library › Granted Patent US 10,749,795
Granted Patent B2
US 10,749,795 · App. 16/028,861 · Granted Aug 18, 2020

Systems and methods for selecting communication paths for applications sensitive to bursty packet drops

Inventors: Sachin Shelar (Bengaluru, IN); Praveen Raja Dhanabalan (Bengaluru, IN); Surya Prakash Patel (Bengaluru, IN)
Assignee: Citrix Systems, Inc.
H04L45/3065H04L43/0829H04L45/14H04L45/302H04L45/38
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 10,749,795
App. No.
16/028,861
Granted
Aug 18, 2020
Kind
B2
Abstract

Described embodiments provide systems and methods for selecting communication paths for applications sensitive to bursty packet drops. A device intermediary to a client and a server may identify an application for which packets are to be communicated between the client and the server. The device may determine a sensitivity level of the application to a network disruption affecting the packets. The device may estimate, for each path between the client and the server for communicating the one or more packets, a path quality for the path indicating a likelihood that the network disruption affects the one or more packets. The device may select path for communicating the packets based on the sensitivity level of the application and the path quality. The device may communicate the packets between the client and the server via the path.

Claims (55)

1. A method of selecting connection paths, comprising:

identifying, by a device intermediary to a client and a server, an application for which one or more packets are to be communicated between the client and the server;

determining, by the device, a sensitivity level of the application, the sensitivity level indicating application performance in response to a network disruption affecting the one or more packets;

determining, by the device, for each of a plurality of paths between the client and the server for communicating the one or more packets, a path quality for the path indicating a likelihood that the network disruption affects the one or more packets;

selecting, by the device, from the plurality of paths between the client and the server, a path for communicating the one or more packets based on the sensitivity level of the application and the path quality;

communicating, by the device, the one or more packets between the client and the server via the selected path;

storing, on a buffer of the device, the one or more packets transmitted between the client and the server via the selected path responsive to determining that the sensitivity level of the application satisfies a first sensitivity level greater than a second sensitivity level;

selecting, by the device, based on a number of packets lost over a predefined time window, a subset of the one or more packets maintained on the buffer; and

retransmitting, by the device, the subset of the one or more packets to at least one of the client and the server via the selected path, at least one of the subset of the one or more packets including a loss feedback indicator to cause at least one of the client or the server to perform a countermeasure, the countermeasure including accepting the one or more packets out of sequence.

2. The method of claim 1 , wherein identifying the application further comprises parsing the one or more packets received by the device to identify a traffic type for the application;

wherein determining the sensitivity level of the application further comprises determining the sensitivity level of the application from a plurality of sensitivity levels based on the traffic type, each of the plurality of sensitivity levels corresponding to one of a plurality of traffic types.

3. The method of claim 1 , wherein determining the sensitivity level further comprises associating the application to the sensitivity level of a plurality of sensitivity levels based on a traffic type of the application, the plurality of sensitivity levels including: a low-sensitivity level for traffic types with bulk data transfers, a medium-sensitivity level for traffic types with interactive network traffic, and a high-sensitivity level for traffic types with real-time network traffic.

4. The method of claim 1 , wherein determining the path quality further comprises calculating, for each of the plurality of paths, an average packet loss for the path by smoothing a packet loss distribution indicating a rate of the one or more packets dropped over a predefined time period; and

wherein selecting the path from the plurality of paths further comprises selecting the path corresponding to a lowest average packet loss.

5. The method of claim 1 , further comprising

setting, by the device, a predetermined threshold for selection of the path from the plurality of paths for the application based on the sensitivity level;

comparing, by the device, for each of the plurality of paths, the path quality to the predetermined threshold; and

wherein selecting the path from the plurality of paths further comprises selecting the path responsive to determining that the path quality for the path is greater than the predetermined threshold.

6. The method of claim 1 , wherein determining the path quality further comprises estimating, for each of the plurality of paths, the path quality based on at least one of: a packet loss distribution indicating a rate of the one or more packets dropped over a time period across the path; a latency indicating a delay rate in a transmission of the one or more packets across the path; and a jitter indicating a variance in the transmission of the one or more packets across the path.

7. The method of claim 1 , further comprising:

detecting, by the device, while communicating the one or more packets, a disruption event interrupting communication of the one or more packets via the selected path between the client and the server; and

providing, by the device, responsive to detecting the disruption event in the selected path, the loss feedback indicator of the disruption event in a body of at least one of the subset of the one or more packets to cause at least one of the client or the server to perform the countermeasure.

8. The method of claim 1 , further comprising:

determining, by the device subsequent to communicating via the selected path, for each of the plurality of paths, a second path quality for the path indicating the likelihood that the network disruption affects the one or more packets;

selecting, by the device, from the plurality of paths, a second path for communicating the one or more packets based on the sensitivity level of the application to the network disruption and the second path quality; and

switching, by the device, from the selected path to the second path for communicating subsequent packets between the client and the server.

9. The method of claim 1 , wherein communicating the one or more packets further comprises communicating the one or more packets via the selected path between the client and the server and through the device and a second device, the second device deployed intermediary between the device and the at least one of the client and the server.

10. A system for selecting connection paths, comprising:

a device intermediary to a client and a server, the device having one or more processors coupled with memory, configured to:

identify an application for which one or more packets are to be communicated between the client and the server;

determine a sensitivity level of the application to a network disruption affecting the one or more packets;

estimate, for each of a plurality of paths between the client and the server for communicating the one or more packets, a path quality for the path indicating a likelihood that the network disruption affects the one or more packets;

select, from the plurality of paths between the client and the server, a path for communicating the one or more packets based on the sensitivity level of the application and the path quality;

communicate the one or more packets between the client and the server via the path selected based on the sensitivity level and the path quality;

store, on a buffer of the device, the one or more packets transmitted between the client and the server via the selected path responsive to determining that the sensitivity level of the application satisfies a first sensitivity level greater than a second sensitivity level;

select, based on a number of packets lost over a predefined time window, a subset of the one or more packets maintained on the buffer; and

retransmit the subset of the one or more packets to at least one of the client and the server via the selected path, at least one of the subset of the one or more packets including a loss feedback indicator to cause at least one of the client or the server to perform a countermeasure, the countermeasure including accepting the one or more packets out of sequence.

11. The system of claim 10 , wherein the device is further configured to parse the one or more packets received by the device to identify a traffic type for the application; and

wherein the device is further configured to determine the sensitivity level of the application from a plurality of sensitivity levels based on the traffic type, each of the plurality of sensitivity levels corresponding to one of a plurality of traffic types.

12. The system of claim 10 , wherein the device is further configured to group the application to the sensitivity level of a plurality of sensitivity levels based on a traffic type of the application, the plurality of sensitivity levels including: a low-sensitivity level for traffic types with bulk data transfers, a medium-sensitivity level for traffic types with interactive network traffic, and a high-sensitivity level for traffic types with real-time network traffic.

13. The system of claim 10 , wherein the device is further configured to:

calculate, for each of the plurality of paths, an average packet loss for the path by smoothing a packet loss distribution indicating a rate of the one or more packets dropped over a time period; and

determine the path from the plurality of paths corresponding to a lowest average packet loss.

14. The system of claim 10 , wherein the device is further configured to:

set a predetermined threshold for selection of the path from the plurality of paths for the application based on the sensitivity level;

compare, for each of the plurality of paths, the path quality to the predetermined threshold; and

select the path from the plurality of paths, responsive to determining that the path quality for the path is greater than the predetermined threshold.

15. The system of claim 10 , wherein the device is further configured to estimate, for each of the plurality of paths, the path quality including at least one of: a packet loss distribution indicating a rate of the one or more packets dropped over a time period across the path; a latency indicating a delay rate in a transmission of the one or more packets across the path; and a jitter indicating a variance in the transmission of the one or more packets across the path.

16. The system of claim 10 , wherein the device is further configured to:

detect, while communicating the one or more packets, a disruption event interrupting communication of the one or more packets via the path between the client and the server; and

provide, responsive to detecting the disruption event in the path, the loss feedback indicator of the disruption event in a body of at least one of the subset of the one or more packets to cause at least one of the client or the server to perform the countermeasure.

17. The system of claim 10 , wherein the device is further configured to:

estimate, subsequent to communicating via the selected path, for each of the plurality of paths, a second path quality for the path indicating to the likelihood that the network disruption affects the one or more packets;

select, from the plurality of paths, a second path for communicating the one or more packets based on the sensitivity level of the application to the network disruption and the second path quality and to switch over from the selected path to the second path for communicating subsequently received packets between the client and the server.

18. The system of claim 10 , wherein the device is further configured to communicate the one or more packets via the path between the client and the server through the device and a second device, the second device deployed intermediary between the device and the at least one of the client and the server.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2018
From: SHELAR, SACHIN; DHANABALAN, PRAVEEN RAJA; PATEL, SURYA PRAKASH
To: CITRIX SYSTEMS, INC.
Reel/Frame 046282/0114 →
Continuity (1)
Related Publication 20200014619A1 · Jan 9, 2020