IP Library › Granted Patent US 9,413,814
Granted Patent B2
US 9,413,814 · App. 13/869,831 · Granted Aug 9, 2016

Systems and methods for providing quality of service via a flow controlled tunnel

Inventors: Steven J. Jackowski (Santa Cruz, CA); Seth Keith (Scotts Valley, CA); Kutluk Testicioglu (Mountain View, CA)
Assignee: CITRIX SYSTEMS, INC.
H04L67/10H04L47/19H04L47/24H04L65/80H04L47/6275H04L47/803H04L47/825
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 9,413,814
App. No.
13/869,831
Filed
Apr 24, 2013
Granted
Aug 9, 2016
Kind
B2
Examiner
DUONG, OANH
Art Unit
2441
USPC
709/223
Abstract

The present invention is directed towards systems and methods for providing Quality of Service (QoS) via a flow controlled tunnel. Traffic from a plurality of applications may be directed into a single connection or flow-controlled tunnel and QoS policies may be applied across the plurality of applications without configuration of individual link speeds, enabling QoS scheduling to dynamically adjust traffic transmission and reception rates to ensure priority management of applications regardless of a final endpoint of the application communications. Accordingly, traffic of different types, including VPN, HTTP, Voice-over-IP (VoIP), remote desktop protocol traffic, or other traffic may be easily balanced and prioritized. In many embodiments, the tunnel may be transparent to applications, such that without any application configuration, application traffic may still be prioritized by QoS requirements.

Claims (26)

1. A method for providing via a client agent a quality of service of a plurality of applications, the method comprising:

(a) receiving, by an agent executing on a client responsive to an indication that data is available to be read, data from each of a plurality of transport layer connections corresponding to each application of a plurality of applications executing on the client in an order according to a priority assigned to each application;

(b) providing, by the agent to a tunneling application executing on the client, in the order according to the assigned priority, a predetermined amount of data received from each of the plurality of transport layer connections; and

(c) transmitting by the tunneling application via a network, each of the predetermined of amount data in the order according to the assigned priority.

2. The method of claim 1 , wherein step (a) further comprising proxying, by the agent operating at a layer of a network stack of the client, each of the plurality of transport layer connections.

3. The method of claim 1 , wherein step (a) further comprises maintaining, by the agent, a plurality of buffers for holding data from each of the plurality of applications, each of the plurality of buffers corresponding to the priority assigned to each application.

4. The method of claim 1 , wherein step (b) further comprises providing, by the agent, the indication to the tunneling application.

5. The method of claim 1 , wherein step (c) further comprises accepting, by the tunneling application, the predetermined amount of data from each of the one or more transport layer connections in the order of the priority assigned to each application.

6. The method of claim 1 , further comprising transmitting, by the tunneling application via the network, the predetermined amount of data from each of the applications to a second tunneling application executing on a second device.

7. The method of claim 1 , wherein step (c) further comprises classifying, by the agent, each of the plurality of applications according to a classification scheme.

8. The method of claim 7 , wherein step (c) further comprises assigning, by the agent, the priority to each application based on classification.

9. The method of claim 1 , wherein step (c) further comprises transmitting, by the tunneling application, each of the predetermined data in the order according to the tunneling priority using a fair queue algorithm.

10. The method of claim 1 , wherein step (c) further comprises transmitting, by the tunneling application, each of the predetermined data in the order using a round robin algorithm.

11. A system for providing via a client agent a quality of service of a plurality of applications, the system comprising:

a client computing device configured for:

executing an agent on a client, the agent configured to receive, responsive to an indication that data is available to be read, data from each of a plurality of transport layer connections corresponding to each application of a plurality of applications executing on the client in an order according to a priority assigned to each application; and

executing a tunneling application on the client, the tunneling application configured to receive, from the agent, a predetermined amount of data received from each of the plurality of transport layer connections in the order according to the assigned priority, the tunneling application configured to transmit, via a network, each of the predetermined of amount data in the order according to the assigned priority.

12. The system of claim 11 , wherein the agent is configured to operate at a layer of a network stack of the client and proxy each of the plurality of transport layer connections.

13. The system of claim 11 , wherein the agent is configured to maintain a plurality of buffers for holding data from each of the plurality of applications, each of the plurality of buffers corresponding to the priority assigned to each application.

14. The system of claim 11 , wherein the agent is configured to provide the indication to the tunneling application.

15. The system of claim 11 , wherein the tunneling application is configured to accept the predetermined amount of data from each of the one or more transport layer connections in the order of the priority assigned to each application.

16. The system of claim 11 , wherein the tunneling application is configured to transmit via the network, the predetermined amount of data from each of the applications to a second tunneling application executing on a second device.

17. The system of claim 11 , wherein the agent is configured to classify each of the plurality of applications according to a classification scheme.

18. The system of claim 17 , wherein the agent is configured to assign the priority to each application based on classification.

19. The system of claim 11 , wherein the tunneling application is configured to transmit each of the predetermined data in the order according to the tunneling priority using a fair queue algorithm.

20. The system of claim 11 , wherein the tunneling application is configured to transmit each of the predetermined data in the order using a round robin algorithm.

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 Aug 20, 2013
From: JACKOWSKI, STEVE; KEITH, SETH; TESTICIOGLU, KUTLUK
To: CITRIX SYSTEMS, INC.
Reel/Frame 031042/0812 →
Continuity (2)
Continuation 12893025 · Sep 29, 2010
Related Publication 20130304796A1 · Nov 14, 2013