IP Library › Granted Patent US 9,219,579
Granted Patent B2
US 9,219,579 · App. 11/187,508 · Granted Dec 22, 2015

Systems and methods for client-side application-aware prioritization of network communications

Inventors: Goutham P. Rao (San Jose, CA); Robert A. Rodriguez (San Jose, CA); Eric R. Brueggemann (Cupertino, CA)
Assignee: CITRIX SYSTEMS, INC.
H04L1/1854H04L12/4633H04L12/4641H04L41/0806H04L43/0817H04L45/30H04L47/10H04L47/2416H04L47/2433H04L47/2475H04L47/36H04L63/029H04L63/0236H04L63/0272H04L63/0428H04L63/061H04L63/062H04L63/126H04L67/14H04L67/141H04L41/0893H04L63/164H04L63/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 9,219,579
App. No.
11/187,508
Filed
Jul 22, 2005
Granted
Dec 22, 2015
Kind
B2
Art Unit
2468
USPC
370/412
Abstract

The present invention is generally directed towards a remote access architecture for providing peer-to-peer communications and remote access connectivity. In one embodiment, the remote access architecture of the present provides a method for establishing a direct connection between peer computing devices via a third computing device, such as a gateway. Additionally, the present invention provides the following techniques to optimize peer-to-peer communications: 1) false acknowledgement of receipt of network packets allowing communications via a lossless protocol of packets constructed for transmission via a lossy protocol, 2) payload shifting of network packets allowing communications via a lossless protocol of packets constructed for transmission via a lossy protocol, 3) reduction of packet fragmentation by adjusting the maximum transmission unit (MTU) parameter, accounting for overhead due to encryption, 4) application-aware prioritization of client-side network communications, and 5) network disruption shielding for reliable and persistent network connectivity and access.

Claims (35)

1. A method for a client to prioritize network communications of the client associated with an application of the client, the method comprising the steps of:

intercepting, by the client, a plurality of network packets associated with a first application and second application of the client;

storing, by the client, the plurality of network packets to a queue, with at least one packet associated with the second application placed ahead of at least one packet associated with the first application in the queue;

determining, by the client, that the first application is running in the foreground on the client;

setting, by the client, a priority for the at least one packet associated with the first application to a value higher than a priority for the at least one packet associated with the second application, responsive to the determination that the first application is running in the foreground on the client;

placing, by the client, the at least one network packet associated with the first application ahead of the at least one network packet associated with the second application in the queue, responsive to the set priorities for the at least one packet associated with the first application

providing the at least one network packet associated with the first application of the client for communications via a network stack of the client before providing the at least one network packet associated with the second application of the client for communications via the network stack, responsive to the placement of the network packets in the queue; and

holding, by the client, in the queue the at least one network packet associated with the second application, and releasing the held at least one network packet upon communication of the at least one network packet associated with the first application prioritized ahead of the held at least one network packet.

2. The method of claim 1 , wherein the step of determining, by the client, further comprises determining the queued one or more networks packets of the first application comprises real-time data.

3. The method of claim 2 , wherein the real-time data comprises one of the following: a real-time protocol, a user datagram protocol, and a representation of one of voice or audio.

4. The method of claim 1 , comprising preventing, by the client, at least one network packet of the second application from being communicated via the network stack ahead of the one or more network packets of the first application.

5. The method of claim 1 , comprising intercepting, by the client, the one or more network packets transparently to the one or more applications on the client.

6. The method of claim 1 , comprising specifying, by a user, the priority of one of the first application or the second application.

7. The method of claim 1 , comprising receiving, by the client, the one or more network packets from a computing device.

8. The method of claim 1 , comprising providing, by the one or more applications, the one or more network packets for communicating from the client to a computing device.

9. A client for prioritizing network communications of the client associated with an application of the client, the client comprising:

a processor, a network interface, and a memory, the processor configured to execute a plurality of applications, a network driver, a packet capture mechanism, and an agent;

wherein the packet capture mechanism is configured to intercept a plurality of network packets associated with a first application and second application of the client;

wherein the network driver is configured to store the plurality of network packets to a queue stored in the memory, with at least one packet associated with the second application placed ahead of at least one packet associated with the first application in the queue, and communicating the plurality of network packets via a network stack of the client;

wherein the agent is configured to determine that the first application running in the foreground on the client, set a priority for the at least one packet associated with the first application to a value higher than a priority for the at least one packet associated with the second application, responsive to the determination that the first application is running in the foreground on the client, and place the at least one packet associated with the first application ahead of the at least one network packet associated with the second application in the queue, based on the set priority; and

wherein the network driver is further configured to:

hold in the queue the at least one network packet associated with the second application,

communicate, from the queue, the at least one network packet associated with the first application of the client before the at least one network packet associated with the second application of the client, based on the placement of the network packets in the queue, and

release the held at least one network packet upon communication of the at least one network packet associated with the first application prioritized ahead of the held at least one network packet.

10. The client of claim 9 , wherein the agent is further configured to determine the one or more networks packets of the first application comprises real-time data.

11. The client of claim 9 , wherein the real-time data comprises one of the following: a real-time protocol, a user datagram protocol, and a representation of one of voice or audio.

12. The client of claim 9 , wherein one of the agent or the network driver are configured to prevent at least one network packet of the second application from being communicated via the network stack ahead of the one or more network packets of the first application.

13. The client of claim 9 , wherein the mechanism intercepts the one or more network packets transparently to the one or more applications on the client.

14. The client of claim 9 , wherein the processor is further configured to execute a configuration mechanism configured to allow a user to specify the priority of the one or more network packets.

15. The client of claim 9 , wherein the client receives the one or more network packets from a computing device.

16. The client of claim 9 , wherein the one or more applications provides the one or more network packets for communicating from the client to a computing device.

17. The client of claim 9 , wherein the network driver comprises a Network Driver Interface Specification (NDIS) driver.

18. The client of claim 9 , wherein the network driver operates in kernel-mode of an operating system of the client.

19. The client of claim 9 , wherein the agent operates in user-mode of an operating system of the client.

20. The client of claim 9 , wherein one of the agent or the network driver comprises the mechanism for intercepting one or more network packets of the client.

Assignments (10)
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 Feb 5, 2008
From: RAO, GOUTHAM P.; RODRIGUEZ, ROBERT A.; BRUEGGEMANN, ERIC R.
To: CITRIX SYSTEMS, INC.
Reel/Frame 020467/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2005
From: RAO, GOUTHAM P.; RODRIGUEZ, ROBERT A.; BRUEGGEMANN, ERIC R.
To: CITRIX SYSTEMS, INC.
Reel/Frame 016972/0634 →
Continuity (5)
Provisional Application 60590837 · Jul 23, 2004
Provisional Application 60601431 · Aug 13, 2004
Provisional Application 60607420 · Sep 3, 2004
Provisional Application 60608814 · Sep 10, 2004
Related Publication 20060039354A1 · Feb 23, 2006