IP Library Granted Patent US 11,489,779
Granted Patent B2
US 11,489,779 · App. 16/588,280 · Granted Nov 1, 2022

Systems and methods for managing streams of packets via intermediary devices

Inventors: Georgy Momchilov (Parkland, FL); Derek Thorslund (San Jose, CA); Daljit Singh (San Jose, CA); Vladimir Vysotsky (Fremont, CA)
Assignee: Citrix Systems, Inc.
H04L47/2441H04L47/2458H04L47/2475H04L47/31H04L47/746H04L47/76H04L47/781H04L47/805H04L47/822H04L69/22H04L63/166
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 11,489,779
App. No.
16/588,280
Granted
Nov 1, 2022
Kind
B2
Abstract

Virtual application and desktop delivery may be optimized by supplying application metadata and user intent to the device between a client and a server hosting resources for the delivery. The data packets used to deliver the virtual application or desktop may be also tagged with references to the application. By supplying the metadata and tagging packets with the metadata, an intermediary network device may provide streams of data packets at the target QoS. In addition, the device may apply network resource allocation rules (e.g., firewalls and QoS configuration) for redirected content retrieved by the client out of band relative to a virtual channel such as the Internet. The network resource allocation rules may differ for different types of resources accessed. The device may also control a delivery agent on the server to modify communication sessions established through the virtual channels based on network conditions.

Claims (48)

1. A method, comprising:

receiving, by a network device intermediary between a client device and a server, from a delivery agent via a virtual channel, metadata of an application hosted on the server and accessible by the client device, the metadata including data indicative of user interaction to access a feature in the application, the network device supporting a plurality of virtual channels of the application to communicate at least one stream of packets;

receiving, by the network device from the delivery agent via the plurality of virtual channels separate from the virtual channel, the at least one stream of packets, the at least one stream of packets including an identifier associated with a portion of the metadata;

identifying, by the network device, from a packet header in a packet from the at least one stream of packets, the identifier associated with the portion of the metadata;

identifying, by the network device, using the identifier, the portion of the metadata to use in determining network resources to allocate to the at least one stream of packets; and

determining, by the network device, the network resources to allocate to the at least one stream of packets received via the plurality of virtual channels for accessing the feature in the application, according to the portion of the metadata associated with the at least one stream of packets.

2. The method of claim 1 , wherein the metadata further comprises an identification of the application.

3. The method of claim 1 , wherein the data indicative of user interaction includes information on at least one of: an activated user interface element, an event notification, user input through an input device, or a uniform resource locator (URL) accessed by a user.

4. The method of claim 1 , comprising establishing, by the network device with the delivery agent, the virtual channel separate from the plurality of virtual channels to communicate the metadata separately from the at least one stream of packets.

5. The method of claim 4 , further comprising:

sending, by the network device to the client device, the metadata of the application; receiving, by the network device from the client device, second streams of packets, each of the second streams of packets including the identifier associated with a portion of the metadata; and

determining, by the network device, network resources to allocate to at least one of the second streams of packets, according to the portion of the metadata associated with the second streams of packets.

6. The method of claim 1 , further comprising:

receiving, by the network device, from the client device, second metadata about activity at the client device;

receiving, by the network device from the client device, second streams of packets, each of the second streams of packets including a second identifier associated with a portion of the second metadata; and

determining, by the network device, network resources to allocate to at least one of the second streams of packets, according to the portion of the second metadata associated with the second streams of packets.

7. The method of claim 1 , comprising receiving, by the network device from the delivery agent, the metadata of the application via a cloud service or another network device.

8. The method of claim 1 , wherein the packet header comprises a transport layer security (TLS) or datagram TLS (DTLS) header with a clear-text extension.

9. The method of claim 1 , comprising:

applying, by the network device, at least one policy on the portion of the metadata associated with the streams of packets; and

determining, by the network device based on application of the at least one policy, the network resources to allocate to the at least one of the streams of packets.

10. The method of claim 1 , further comprising providing a desired quality of service (QoS) to the at least one of the streams of packets, by allocating the determined network resources to the at least one of the streams of packets.

11. The method of claim 1 , further comprising allocating the determined network resources to the at least one of the streams of packets by allocating a bandwidth, setting a bandwidth limit, or throttling a data transmission rate for the at least one of the streams of packets.

12. A network device comprising:

at least one processor configured to:

receive, from a delivery agent via a virtual channel, metadata of an application hosted on a server and accessible by a client device, the metadata including data indicative of user interaction to access a feature in the application, the network device supporting a plurality of virtual channels of the application to communicate at least one stream of packets;

receive, from the delivery agent via the plurality of virtual channels separate from the virtual channel, the at least one stream of packets, the at least one stream of packets including an identifier associated with a portion of the metadata;

identify, from a packet header in a packet from the at least one stream of packets, the identifier associated with the portion of the metadata;

identify, using the identifier, the portion of the metadata to use in determining network resources to allocate to the at least one stream of packets; and

determine the network resources to allocate to the at least one stream of packets received via the plurality of virtual channels for accessing the feature in the application, according to the portion of the metadata associated with the at least one stream of packets.

13. The network device of claim 12 , wherein the at least one processor is configured to establish, with the delivery agent, the virtual channel separate from the plurality of virtual channels to communicate the metadata of the application separately from the at least one stream of packets.

14. The network device of claim 13 , wherein the at least one processor is further configured to: send the metadata of the application to the client device;

receive, from the client device, second streams of packets, each of the second streams of packets including the identifier associated with a portion of the metadata; and

determine network resources to allocate to at least one of the second streams of packets, according to the portion of the metadata associated with the second streams of packets.

15. The network device of claim 12 , wherein the at least one processor is further configured to:

receive, from the client device, second metadata about activity at the client device; receive, from the client device, second streams of packets, each of the second streams of packets including a second identifier associated with a portion of the second metadata; and determine network resources to allocate to at least one of the second streams of packets,

according to the portion of the second metadata associated with the second streams of packets.

16. The network device of claim 12 , wherein the at least one processor is configured to receive, from the delivery agent, the metadata of the application via a cloud service or another network device.

17. The network device of claim 12 , wherein the at least one processor is further configured to:

provide a desired quality of service (QoS) to the at least one of the streams of packets, by allocating the determined network resources to the at least one of the streams of packets; and

allocate the determined network resources to the at least one of the streams of packets by allocating a bandwidth, setting a bandwidth limit, or throttling a data transmission rate for the at least one of the streams of packets.

18. The network device of claim 12 , wherein the at least one processor is further configured to access, from the packet header, the identifier associated with the portion of the metadata, the packet header comprising a transport layer security (TLS) or datagram TLS (DTLS) header with a clear-text extension.

19. A non-transitory computer readable medium storing program instructions for causing one or more processors to:

receive, from a delivery agent via a virtual channel, metadata of an application hosted on a server and accessible by a client device, the metadata including data indicative of user interaction to access a feature in the application, the network device supporting a plurality of virtual channels of the application to communicate at least one stream of packets;

receive, from the delivery agent via the plurality of virtual channels separate from the virtual channel, the at least one stream of packets, the at least one stream of packets including an identifier associated with a portion of the metadata;

identify, from a packet header in a packet from the at least one stream of packets, the identifier associated with the portion of the metadata;

identify, using the identifier, the portion of the metadata to use in determining network resources to allocate to the at least one stream of packets; and

determine the network resources to allocate to the at least one stream of packets received via the plurality of virtual channels for accessing the feature in the application, according to the portion of the metadata associated with the at least one stream of packets.

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 →
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 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 →
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 →
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 →
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 2, 2019
From: MOMCHILOV, GEORGY; THORSLUND, DEREK; SINGH, DALJIT; VYSOTSKY, VLADIMIR
To: CITRIX SYSTEMS, INC.
Reel/Frame 050601/0518 →
Continuity (2)
Provisional Application 62850348 · May 20, 2019
Related Publication 20200374233A1 · Nov 26, 2020