IP Library Granted Patent US 10,567,285
Granted Patent B2
US 10,567,285 · App. 15/462,524 · Granted Feb 18, 2020

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/12H04L43/0888H04L43/16H04L47/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 10,567,285
App. No.
15/462,524
Granted
Feb 18, 2020
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 for improving network efficiency via throughput credits, comprising:

receiving, by a device, a plurality of packets of a flow;

determining, by the device, that a throughput credit for the flow does not exceed a predetermined threshold;

transmitting a first subset of the plurality of packets to bypass quality of service (QoS) processing, by the device, responsive to the determination that the throughput credit for the flow does not exceed the predetermined threshold, the throughput credit incremented for each transmitted packet of the first subset;

determining, by the device, that the throughput credit for the flow exceeds the predetermined threshold, responsive to incrementing the throughput credit for each transmitted packet of the first subset; and

applying QoS processing to a second subset of the plurality of packets, by the device, responsive to the determination that the throughput credit for the flow exceeds the predetermined threshold, the throughput credit reset upon applying QoS processing to the second subset, by:

placing the second subset of the plurality of packets in one or more QoS queues according to a virtual size of each packet of the second subset of the plurality of packets, each virtual size comprising a sum of the size of the corresponding packet and the throughput credit for the flow incremented for each transmitted packet of the first subset.

2. The method of claim 1 , wherein the second subset comprises a single packet.

3. The method of claim 1 , wherein the QoS processing is based on a virtual packet size equal to a sum of the sizes of the plurality of packets.

4. The method of claim 1 , further comprising, for each transmitted packet of the first subset, incrementing the throughput credit by a size of said packet.

5. The method of claim 1 , wherein transmitting the first subset of the plurality of packets further comprises placing each of the first subset of the plurality of packets in an output transmission buffer of the device, the output transmission buffer separate from one or more QoS queues.

6. The method of claim 1 , wherein selecting the QoS queue further comprises scheduling transmission of packets of the flow and packets of at least one additional flow of a plurality of flows according to the virtual size of the flow and a virtual size of each at least one additional flow.

7. The method of claim 1 , wherein transmitting the first subset of the plurality of packets to bypass QoS processing is performed responsive to determining, by the device, that a throughput for the flow exceeds a second threshold.

8. A system for improving network efficiency via throughput credits, comprising:

a device, comprising a network interface, a quality of service (QoS) processor, and a memory storing a throughput credit for a flow;

wherein the network interface is configured to receive a plurality of packets of the flow; and

wherein the QoS processor is configured to determine that the throughput credit for the flow does not exceed a predetermined threshold; and

wherein the network interface is further configured to transmit a first subset of the plurality of packets to bypass the QoS processor, responsive to the determination that the throughput credit for the flow does not exceed the predetermined threshold, the throughput credit incremented for each transmitted packet of the first subset; and

wherein the QoS processor is further configured to:

determine that the throughput credit for the flow exceeds the predetermined threshold, responsive to incrementing the throughput credit for each transmitted packet of the first subset

apply QoS processing to a second subset of the plurality of packets, responsive to the determination that the throughput credit for the flow exceeds the predetermined threshold, the throughput credit reset upon applying QoS processing to the second subset, by:

placing the second subset of the plurality of packets in one or more QoS queues according to a virtual size of each packet of the second subset of the plurality of packets, each virtual size comprising a sum of the size of the corresponding packet and the throughput credit for the flow incremented for each transmitted packet of the first subset.

9. The system of claim 8 , wherein the second subset comprises a single packet.

10. The system of claim 8 , wherein the QoS processing is based on a virtual packet size equal to a sum of the sizes of the plurality of packets.

11. The system of claim 8 , wherein the device is configured to, for each transmitted packet of the first subset, increment the throughput credit by a size of said packet.

12. The system of claim 8 , wherein the device is configured to place each of the first subset of the plurality of packets in an output transmission buffer of the network interface, the output transmission buffer separate from one or more QoS queues.

13. The system of claim 8 , wherein the QoS processor is further configured to schedule transmission of packets of the flow and packets of at least one additional flow of a plurality of flows according to the virtual size of the flow and a virtual size of each at least one additional flow.

14. The system of claim 8 , wherein the device is configured to determine that a throughput for the flow exceeds a second threshold; and wherein transmitting the first subset of the plurality of packets to bypass QoS processing is performed responsive to the determination.

15. A non-transitory computer readable medium comprising instructions that, when executed by a processor of a computing device, cause the device to:

receive a plurality of packets of a flow;

determine that a throughput credit for the flow does not exceed a predetermined threshold;

transmit a first subset of the plurality of packets to bypass a QoS processor of the computing device, responsive to the determination that the throughput credit for the flow does not exceed the predetermined threshold, the throughput credit incremented for each transmitted packet of the first subset;

determine that the throughput credit for the flow exceeds the predetermined threshold, responsive to incrementing the throughput credit for each transmitted packet of the first subset; and

apply QoS processing to a second subset of the plurality of packets, responsive to the determination that the throughput credit for the flow exceeds the predetermined threshold, the throughput credit reset upon applying QoS processing to the second subset, by:

placing the second subset of the plurality of packets in one or more QoS queues according to a virtual size of each packet of the second subset of the plurality of packets, each virtual size comprising a sum of the size of the corresponding packet and the throughput credit for the flow incremented for each transmitted packet of the first subset.

16. The computer-readable medium of claim 15 , further comprising instructions that cause the device to place each of the first subset of the plurality of packets in an output transmission buffer of the device, the output transmission buffer separate from one or more QoS queues.

17. The computer-readable medium of claim 15 , further comprising instructions that cause the device to apply QoS processing based on a virtual packet size equal to a sum of the sizes of the plurality of packets.

18. The computer-readable medium of claim 15 , further comprising instructions that cause the device to schedule transmission of packets of the flow and packets of at least one additional flow of a plurality of flows according to the virtual size of the flow and a virtual size of each at least one additional flow.

19. The computer-readable medium of claim 15 , further comprising instructions that cause the device to determine that a throughput for the flow exceeds a second threshold; and transmit the first subset of the plurality of packets to bypass QoS processing, responsive to the determination.

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 Mar 22, 2017
From: KEITH, SETH KENNETH; TESTICIOGLU, MUSTAFA KUTLUK; DOUNIS, LAMPROS
To: CITRIX SYSTEMS, INC.
Reel/Frame 041687/0518 →
Continuity (1)
Related Publication 20180270156A1 · Sep 20, 2018