IP Library Granted Patent US 8,432,800
Granted Patent B2
US 8,432,800 · App. 11/685,156 · Granted Apr 30, 2013

Systems and methods for stochastic-based quality of service

Inventors: Robert Plamondon (Blodgett, OR); Michael Ovsiannikov (San Mateo, CA); Allen Samuels (San Jose, 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,432,800
App. No.
11/685,156
Granted
Apr 30, 2013
Kind
B2
Abstract

Systems and methods for utilizing transaction boundary detection methods in queuing and retransmission decisions relating to network traffic are described. By detecting transaction boundaries and sizes, a client, server, or intermediary device may prioritize based on transaction sizes in queuing decisions, giving precedence to smaller transactions which may represent interactive and/or latency-sensitive traffic. Further, after detecting a transaction boundary, a device may retransmit one or more additional packets prompting acknowledgements, in order to ensure timely notification if the last packet of the transaction has been dropped. Systems and methods for potentially improving network latency, including retransmitting a dropped packet twice or more in order to avoid incurring additional delays due to a retransmitted packet being lost are also described.

Claims (91)

1. A method for prioritizing transmission of packets comprising:

receiving, by an intermediary, a first packet of a first transaction, the first packet stored in a buffer of the intermediary;

receiving, by the intermediary, a second packet of a second transaction;

determining, by the intermediary, that the first transaction is complete;

determining, by the intermediary, a first average transaction size of the first transaction associated with a first transport layer connection of the first packet, responsive to determining that the first transaction is complete;

assigning, by the intermediary, a first transmission priority to the first packet, the transmission priority determined responsive to the determined first transaction size, wherein the first packet has a higher priority than the second packet, responsive to a determination that the first average transaction size is smaller than a second average transaction size associated with the second transaction; and

transmitting from the buffer, by the intermediary and responsive to determining the first transaction is complete, the first packet and the second packet, wherein the transmission order is determined according to the first assigned transmission priority.

2. The method of claim 1 , wherein the intermediary comprises one of: a client, a server, a client agent, and a network appliance.

3. The method of claim 1 wherein receiving the first packet of the first transaction comprises receiving, by the intermediary, the first packet via the first transport layer connection.

4. The method of claim 1 , wherein receiving the first packet of the first transaction comprises receiving, by the intermediary, the first packet comprising encrypted data.

5. The method of claim 1 , wherein receiving the first packet of the first transaction comprises receiving, by the intermediary, the first packet comprising one of Internet Computing Architecture (ICA) protocol or Remote Desktop Protocol (RDP) protocol.

6. The method of claim 1 , wherein receiving the first packet of the first transaction comprises receiving, by an intermediary, for a plurality of Transport Control Protocol (TCP) connections, the first packet via a first TCP connection of the plurality of TCP connections.

7. The method of claim 1 , wherein receiving the second packet of the second transaction comprises receiving, by the intermediary, the second packet via a second transport layer connection.

8. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size of the first transaction by identifying that the first packet comprises a final packet of the transaction.

9. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size of a transaction by identifying at least one starting and ending point of the first transaction transmitted via the first transport layer connection and identifying the amount of data transmitted between the starting and ending points.

10. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size of a transaction by identifying that at least one received packet is smaller than a maximum packet size.

11. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size of the transaction by identifying at least one received packet is smaller than a maximum packet size and was immediately preceded by at least one packet of the maximum packet size.

12. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size of the transaction by identifying that a buffer corresponding to a connection has transitioned from non-empty to empty.

13. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size of the transaction by identifying a gap in packet arrival times.

14. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size of the transaction by identifying a marked PSH bit.

15. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size of the transaction by identifying that a buffer corresponding to the first transport layer connection has transitioned from empty to non-empty.

16. The method of claim 1 , wherein determining the first average transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size associated with the first transport layer connection by identifying a plurality of starting and ending points of transactions transmitted via the first transport layer connection and determining the average amount of data transmitted between the plurality of starting and ending points.

17. The method of claim 1 , wherein determining the first transaction size of the first transaction comprises determining, by the intermediary, the first average transaction size associated with the first transport layer connection by identifying a plurality of starting and ending points of transactions transmitted via the first transport layer connection over a predetermined time interval and determining the average amount of data transmitted between the plurality of starting and ending points.

18. The method of claim 1 , further comprising: determining, by the intermediary, the second average transaction size associated with the second packet.

19. The method of claim 18 , wherein assigning the first transmission priority to the first packet comprises assigning, by the intermediary, to the first packet and the second packet, a transmission priority, the transmission priority determined responsive to the determined first average transaction size and the determined second average transaction size.

20. The method of claim 18 , wherein assigning the first transmission priority to the first packet comprises assigning, by the intermediary to the first packet and the second packet, a transmission priority wherein the first packet has a higher priority than the second packet, responsive to a determination that the first average transaction size is smaller than the second average transaction size.

21. The method of claim 18 , wherein assigning the first transmission priority to the first packet comprises assigning, by the intermediary to the first packet and the second packet, a transmission priority wherein the first packet has a higher priority than the second packet, responsive to a determination that the first average transaction size is smaller than the second average transaction size and a determination that the first transport layer connection has not exceeded a given transmission bandwidth threshold.

22. The method of claim 18 , wherein assigning the first transmission priority to the first packet comprises assigning, by the intermediary to the first packet and the second packet, a transmission priority wherein the first packet has a lower priority than the second packet, responsive to a determination that the first average transaction size is larger than the second average transaction size.

23. The method of claim 1 , wherein transmitting the first packet and the second packet from the buffer comprises placing the first packet in a first transmission queue having a priority corresponding to the first assigned transmission priority.

24. The method of claim 1 , wherein transmitting the first packet and the second packet from the buffer comprises placing the first packet in a first transmission queue having a priority corresponding to the first assigned transmission priority and placing the second packet in a second transmission queue having a priority corresponding to a transmission priority assigned to the second packet.

25. The apparatus of claim 1 , wherein the flow controller assigns a first transmission priority to the first packet and a second transmission priority to the second packet, the first transmission priority determined responsive to the determined first average transaction size and the second transmission priority determined responsive to the second average transaction size.

26. The method of claim 1 , wherein determining the first transaction is complete comprises determining that the first average transaction size exceeds a predetermined threshold.

27. The method of claim 1 , wherein determining the first transaction is complete comprises determining that a predetermined time has passed since the first transaction was begun.

28. The method of claim 1 , wherein assigning the first transmission priority to the first packet comprises assigning a single transmission priority to the first transaction associated with the first packet.

29. The method of claim 1 , wherein the first transaction associated with the first packet comprises a plurality of packets.

30. A method for prioritizing transmission of packets comprising:

receiving, by an intermediary, a first packet of a first transaction, the first packet stored in a buffer of the intermediary;

receiving, by the intermediary, a second packet of a second transaction;

determining, by the intermediary, that the first transaction is complete;

determining, by the intermediary, a first average transaction size of a first transaction associated with a first transport layer connection of the first packet, responsive to determining that the first transaction is complete;

assigning, by the intermediary, a first transmission priority to the first packet, the transmission priority determined responsive to the determined first average transaction size, wherein the first packet has a higher priority than the second packet, responsive to a determination that the first average transaction size is smaller than a second average transaction size associated with the second transaction and a determination that the first transport layer connection has not exceeded a given transmission bandwidth threshold; and

transmitting from the buffer, by the intermediary and responsive to determining the first transaction is complete, the first packet and the second packet, wherein the transmission order is determined according to the first assigned transmission priority.

31. A method for prioritizing transmission of packets comprising:

receiving, by an intermediary, a first packet of a first transaction, the first packet stored in a buffer of the intermediary;

receiving, by the intermediary, a second packet of a second transaction;

determining, by the intermediary, that the first transaction is complete;

determining, by the intermediary, a first average transaction size of a transaction associated with a first transport layer connection of the first packet, responsive to determining that the first transaction is complete;

assigning, by the intermediary, a first transmission priority to the first packet, the transmission priority determined responsive to the determined first average transaction size, wherein the first packet has a lower priority than the second packet, responsive to a determination that the first average transaction size is larger than a second average transaction size associated with the second transaction; and

transmitting from the buffer, by the intermediary and responsive to determining the first transaction is complete, the first packet and the second packet, wherein the transmission order is determined according to the first assigned transmission priority.

32. An apparatus for prioritizing packets for transmission comprising:

a packet processor receiving a first packet of a first transaction and a second packet of a second transaction;

a buffer storing the received first packet; and

a flow controller

determining that the first transaction is complete;

determining a first average transaction size of the first transaction associated with a first transport layer connection of the first packet, responsive to determining the first transaction is complete;

assigning to the first packet a transmission priority responsive to the determined first average transaction size, wherein the first packet has a higher priority than the second packet, responsive to a determination that the first average transaction size is smaller than a second average transaction size associated with the second transaction; and

transmitting from the buffer, responsive to determining the first transaction is complete, the first packet and the second packet according to the assigned transmission priority.

33. The apparatus of claim 32 wherein the packet processor receives the first packet via the first transport layer connection.

34. The apparatus of claim 32 wherein the packet processor receives the second packet via a second transport layer connection.

35. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining that the first packet comprises a final packet of a transaction.

36. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining at least one starting and ending point of the first transaction transmitted via the first transport layer connection and computing the amount of data transmitted between the starting and ending points.

37. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining an ending point of the first transaction by identifying at least one packet received by the device via the first transport layer connection is smaller than a maximum packet size.

38. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining an ending point of the first transaction by identifying at least one packet received by the device via the first transport layer connection is smaller than a maximum packet size and was immediately preceded by at least one packet of the maximum packet size.

39. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining an ending point of the first transaction by identifying that a buffer corresponding to the first transport layer connection has transitioned from non-empty to empty.

40. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining an ending point of the first transaction by identifying a gap in packet arrival times.

41. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining an ending point of the first transaction by identifying a marked PSH bit.

42. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining a starting point of the first transaction by identifying that a buffer corresponding to the first transport layer connection has transitioned from empty to non-empty.

43. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining a plurality of starting and ending points of transactions transmitted via the first transport layer connection and determining the average amount of data transmitted between the plurality of starting and ending points.

44. The apparatus of claim 32 , wherein the flow controller determines the first average transaction size associated with the first packet by determining a plurality of starting and ending points of transactions transmitted via the first transport layer connection over a predetermined time interval and computing the average amount of data transmitted between the plurality of starting and ending points.

45. The apparatus of claim 32 , wherein the flow controller determines

the second average transaction size associated with the second transport layer connection.

46. The apparatus of claim 45 , wherein the flow controller assigns a first transmission priority to the first packet responsive to the determined first average transaction size and a second transmission priority to the second packet responsive to the determined second average transaction size.

47. The apparatus of claim 45 , wherein the flow controller assigns a first transmission priority to the first packet having a higher priority than the second transmission priority, responsive to a determination that the first average transaction size is smaller than the second average transaction size and a determination that the first transport layer connection has not exceeded a given transmission bandwidth threshold.

48. The apparatus of claim 45 , wherein the flow controller assigns a first transmission priority to the first packet having a lower priority than the second transmission priority, responsive to a determination that the first average transaction size is larger than the second average transaction size.

49. The apparatus of claim 32 , wherein the apparatus is one of: a client, a server, a client agent and a network appliance.

50. An apparatus for prioritizing packets for transmission comprising:

a packet processor receiving a first packet of a first transaction and a second packet of a second transaction;

a buffer storing the received first packet; and

a flow controller

determining that the first transaction is complete;

determining a first average transaction size associated with a first transport layer connection of the first packet, responsive to determining the first transaction is complete;

assigning to the first packet a transmission priority responsive to the determined first transaction size, wherein the first packet has a higher priority than the second packet, responsive to a determination that the first average transaction size is smaller than a second average transaction size and a determination that the first transport layer connection has not exceeded a given transmission bandwidth threshold; and

transmitting from the buffer, responsive to determining the first transaction is complete, the first packet and the second packet according to the assigned transmission priority.

51. An apparatus for prioritizing packets for transmission comprising:

a packet processor receiving a first packet of a first transaction and a second packet of a second transaction;

a buffer storing the received first packet; and

a flow controller

determining that the first average transaction is complete;

determining a first average transaction size associated with a first transport layer connection of the first packet, responsive to determining the first transaction is complete;

assigning to the first packet a transmission priority responsive to the determined first transaction size, wherein the first packet has a higher priority than the second packet, responsive to a determination that the first average transaction size is larger than a second average transaction size; and

transmitting from the buffer, responsive to determining the first transaction is complete, the first packet and the second packet according to the assigned transmission priority.

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 May 31, 2007
From: PLAMONDON, ROBERT; OVSIANNIKOV, MICHAEL; SAMUELS, ALLEN
To: CITRIX SYSTEMS, INC.
Reel/Frame 019362/0114 →
Continuity (4)
Continuation In Part 10901940 · Jul 28, 2004
Continuation In Part 10696507 · Oct 29, 2003
Provisional Application 60490694 · Jul 29, 2003
Related Publication 20070206615A1 · Sep 6, 2007