IP Library Granted Patent US 11,706,143
Granted Patent B2
US 11,706,143 · App. 16/792,527 · Granted Jul 18, 2023

Increasing QoS throughput and efficiency through lazy byte batching

Inventors: Seth Kenneth Keith (Scotts Valley, CA); Mustafa Kutluk Testicioglu (Mountain View, CA); Lampros Dounis (Patras, GR)
Assignee: Citrix Systems, Inc.
H04L47/12H04L41/142H04L43/0888H04L43/16H04L47/2483H04L47/283H04L47/56H04L47/6215
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,706,143
App. No.
16/792,527
Granted
Jul 18, 2023
Kind
B2
Abstract

Described embodiments improve the performance of a computer network via selectively forwarding packets to bypass quality of service (QoS) processing, avoiding processing delays during critical periods of high demand, increasing throughput and efficiency may be increased by sacrificing a small amount of QoS accuracy. QoS processing may be applied to a subset of packets of a flow or connection, referred to herein as “lazy” processing or lazy byte batching. Packets that bypass QoS processing may be immediately forwarded with the same QoS settings as packets of the flow for which QoS processing is applied, resulting in tremendous overhead savings with only minimal decline in accuracy.

Claims (39)

1. A method comprising:

for each of a first one or more packets of a flow,

transmitting, by a device, the packet, and

incrementing, by the device, a counter value by a first size of the packet of the flow; and

for each of a second one or more packets of the flow, identifying, by the device, a second size of the packet;

determining, by the device, a virtual size equal to a sum of the counter value and the identified second size of each of the second one or more packets;

responsive to the virtual size exceeding a threshold, placing, by the device, the second one or more packets into one or more queues to schedule transmission of the second one or more packets according to the virtual size of the second one or more packets, and resetting, by the device, the counter value; and

transmitting, by the device from the one or more queues, the second one or more packets.

2. The method of claim 1 , further comprising incrementing the counter value based at least on the first size of each packet of the first one or more packets of the flow that has been transmitted.

3. The method of claim 1 , further comprising identifying the second size of the second one or more packets using information stored in the second one or more packets.

4. The method of claim 1 , further comprising selecting the one or more queues in which to place the second one or more packets according to a characteristic of the second one or more packets.

5. The method of claim 1 , further comprising determining, by the device responsive to the virtual size not exceeding the threshold, to bypass quality of service processing of a third one or more packets of the flow.

6. The method of claim 5 , further comprising placing the third one or more packets into an output transmission buffer, separate from the one or more queues, responsive to determining to bypass quality of service processing.

7. A device comprising:

one or more processors, coupled to memory and configured to:

for each of a first one or more packets of a flow,

transmit the packet, and

increment a counter value by a first size of the packet of the flow;

for each of a second one or more packets of the flow, identify a second size of the packet;

determine a virtual size equal to a sum of the counter value and the identified second size of each of the second one or more packets;

responsive to the virtual size exceeding a threshold, place the second one or more packets into one or more queues to schedule transmission of the second one or more packets according to the virtual size of the second one or more packets, and reset the counter value; and

transmit, from the one or more queues, the second one or more packets.

8. The device of claim 7 , wherein the one or more processors are further configured to increment the counter value based at least on the first size of each packet of the first one or more packets of the flow that has been transmitted.

9. The device of claim 7 , wherein the one or more processors are further configured to identify the second size of the second one or more packets using information stored in the second one or more packets.

10. The device of claim 7 , wherein the one or more processors are further configured to select the one or more queues in which to place the one or more packets according to a characteristic of the second one or more packets.

11. The device of claim 7 , wherein the one or more processors are further configured to determine to bypass quality of service processing of a third one or more packets of the flow responsive to the virtual size not exceeding the threshold.

12. The device of claim 11 , wherein the one or more processors are further configured to place the third one or more packets into an output transmission buffer, separate from the one or more queues, to bypass quality of service processing.

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

for each of a first one or more packets of a flow,

transmit the packet, and

increment a counter value by a first size of the packet of a flow of the flow;

for each of a second one or more packets of the flow, identify a size of the packet;

determine a virtual size equal to a sum of the counter value and the identified second size of each of the second one or more packets;

responsive to the virtual size exceeding a threshold, place the second one or more packets into one or more queues to schedule transmission of the second one or more packets according to the virtual size of the second one or more packets, and reset the counter value; and

transmit, from the one or more queues, the second one or more packets.

14. The non-transitory computer readable medium of claim 13 , wherein the program instructions further cause the one or more processors to increment the counter value based at least on the first size of each packet of the first one or more packets of the flow that has been transmitted.

15. The method of claim 3 , wherein identifying the second size of the second one or more packets further comprises extracting information from at least one of a header field or an option field of the second one or more packets.

16. The method of claim 1 , wherein placing the second one or more packets into the one or more queues further comprises applying quality of service processing to the second one or more packets using the virtual size for the second one or more packets.

17. The device of claim 7 , wherein, the one or more processors are further configured to apply quality of service processing to the second one or more packets using the virtual size for the second one or more 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: 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 →
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 →
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 17, 2020
From: KEITH, SETH KENNETH; TESTICIOGLU, MUSTAFA KUTLUK; DOUNIS, LAMPROS
To: CITRIX SYSTEMS, INC.
Reel/Frame 051832/0862 →
Continuity (2)
Continuation 15462524 · Mar 17, 2017
Related Publication 20200204497A1 · Jun 25, 2020