IP Library › Granted Patent US 8,433,783
Granted Patent B2
US 8,433,783 · App. 12/893,025 · Granted Apr 30, 2013

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

Inventors: Steve Jackowski (Santa Cruz, CA); Seth Keith (Scotts Valley, CA); Kutluk Testicioglu (Mountain View, CA)
Assignee: Citrix Systems, Inc.
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 8,433,783
App. No.
12/893,025
Granted
Apr 30, 2013
Kind
B2
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 (25)

1. A method for providing quality of service of a plurality of applications via a flow controlled tunnel, the method comprising:

(a) proxying, by an agent operating at a portion of a network stack of a client, a plurality of transport layer connections corresponding to each of a plurality of applications executing on the client;

(b) receiving, by the agent, an indication from one or more of the plurality of proxied transport layer connections that data is available to be read;

(c) receiving, by the agent, data from each of the plurality of proxied transport layer connections in an order according to an assigned priority from classification of each of the plurality of applications;

(d) propagating, by the agent, the indication that data is available to read to a first tunneling application;

(e) communicating, by the agent to the first 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 proxied transport layer connections, the first tunneling application having an established transport layer connection to a second tunneling application, wherein the first tunneling application accepts the predetermined amount of data from each of the one or more proxied transport layer connections in the order of the priority responsive to the indication that data is available to read.

2. The method of claim 1 , further comprising transmitting, by the first tunneling application on the client, the predetermined amount of data from each of the applications to the second tunneling application executing on a device intermediary to the client and a plurality of a servers.

3. The method of claim 1 , further comprising executing the agent in a kernel space of the client and executing the first tunneling application in a user space of the client.

4. The method of claim 1 , wherein step (a) further comprises proxying, by the agent, each of the plurality of transport layer connections back to the client.

5. The method of claim 1 , wherein step (a) further comprises proxying, by the agent, each of the plurality of transport layer connections transparently to each of the plurality of applications.

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

7. The method of claim 1 , wherein step (e) further comprises applying, by the agent, Quality of Service upon communicating the predetermined amount of data to the first tunneling application.

8. The method of claim 1 , wherein step (e) further comprises communicating, by the agent, each of the predetermined amount of data upon receipt to the first tunneling application.

9. A system for providing quality of service of a plurality of applications via a flow controlled tunnel, the system comprising:

a client computing device configured for:

executing an agent operating at a portion of a network stack of the client and proxying a plurality of transport layer connections corresponding to each of a plurality of applications executing on the client;

executing a first tunneling application having an established transport layer connection to a second tunneling application,

wherein the agent receives an indication from one or more of the plurality of proxied transport layer connections that data is available to be read, receives data from each of the plurality of proxied transport layer connections in an order according to an assigned priority from classification of each of the plurality of applications, propagates to the first tunneling application the indication that data is available to read, and communicates to the first tunneling application, in the order according to the assigned priority, a predetermined amount of data received from each of the plurality of proxied transport layer connections, the first tunneling application accepting the predetermined amount of data from each of the one or more proxied transport layer connections responsive to the indication that data is available to read.

10. The system of claim 9 , wherein the first tunneling application transmits the predetermined amount of data from each of the applications to the second tunneling application executing on a device intermediary to the client and a plurality of a servers.

11. The system of claim 9 , wherein the agent executes in a kernel space of the client and the first tunneling application executes in user space of the client.

12. The system of claim 9 , wherein the agent proxies each of the plurality of proxied transport layer connections back to the client.

13. The system of claim 9 , wherein the agent proxies each of the plurality of proxied transport layer connections transparently to each of the plurality of applications.

14. The system of claim 9 , wherein the agent classifies each of the plurality of applications according to a Quality of Service classification scheme.

15. The system of claim 9 , wherein the agent applies Quality of Service scheduling as the predetermined amount of data is communicated to the first tunneling application.

16. The system of claim 9 , wherein the agent communicates to the first tunneling application each of the predetermined amount of data upon receipt to the first tunneling application.

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 Oct 18, 2010
From: JACKOWSKI, STEVE; KEITH, SETH; TESTICIOGLU, KUTLUK
To: CITRIX SYSTEMS, INC.
Reel/Frame 025154/0262 →
Continuity (1)
Related Publication 20120078994A1 · Mar 29, 2012