IP Library Granted Patent US 11,381,509
Granted Patent B2
US 11,381,509 · App. 16/007,560 · Granted Jul 5, 2022

Increased packet scheduling throughput and efficiency using úber batching

Inventors: Seth Kenneth Keith (Scotts Valley, CA); Mustafa Kutluk Testicioglu (Mountain View, CA)
Assignee: Citrix Systems, Inc.
H04L47/24H04L43/026H04L43/0888H04L43/16H04L47/12H04L47/36H04L43/0894
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,381,509
App. No.
16/007,560
Granted
Jul 5, 2022
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. In case of backlog, packets may be collected together into an aggregated or ‘uber’ packet, with QoS processing applied based on a virtual size of the aggregated packet.

Claims (59)

1. A method for improving network efficiency, comprising:

receiving, by a device, a plurality of packets of a flow to be transmitted via a connection;

determining, by the device, that the flow is not backlogged;

transmitting, by the device, a first subset of the received plurality of packets of the flow, responsive to the determination that the flow is not backlogged;

subsequently determining, by the device, that the flow is backlogged;

aggregating, by the device, a second subset of the plurality of packets in a virtual aggregate packet having a virtual packet size equal to a sum of sizes of the second subset of the plurality of packets, responsive to the determination that the flow is backlogged;

determining, by the device, that a throughput credit for the virtual aggregate packet exceeds a threshold, the throughput credit based upon the virtual packet size;

applying quality of service (QoS) processing to the virtual aggregate packet, by the device, responsive to the throughput credit for the virtual aggregate packet exceeding the threshold; and

transmitting, by the device, the virtual aggregate packet.

2. The method of claim 1 , wherein the throughput credit is incremented for each packet of the second subset of the plurality of packets aggregated in the virtual aggregate packet; and wherein the throughput credit is reset upon applying QoS processing to the virtual aggregate packet.

3. The method of claim 1 , further comprising, for each packet of the second subset of the plurality of packets aggregated in the virtual aggregate packet, incrementing the throughput credit by a size of the packet.

4. The method of claim 1 , wherein aggregating the second subset of the plurality of packets in the virtual aggregate packet further comprises:

for each packet of the second subset of the plurality of packets:

determining that the throughput credit for the virtual aggregate packet does not exceed the threshold,

adding the packet to the virtual aggregate packet, responsive to the determination that the throughput credit is less than the threshold, and

incrementing the throughput credit based on the packet.

5. The method of claim 1 , wherein aggregating the second subset of the plurality of packets in the virtual aggregate packet further comprises:

determining that a first packet of the second subset of the plurality of packets is an initial packet of the virtual aggregate packet; and

responsive to the determination that the first packet is the initial packet, setting the virtual packet size of the virtual aggregate packet equal to a size of the first packet.

6. The method of claim 5 , wherein aggregating the second subset of the plurality of packets in the virtual aggregate packet further comprises:

determining that a second packet of the second subset of the plurality of packets is not the initial packet of the virtual aggregate packet; and

responsive to the determination that the second packet is not the initial packet, adding a size of the second packet to the virtual packet size of the virtual aggregate packet.

7. The method of claim 1 , further comprising concatenating each packet of the second subset of the plurality of packets in an aggregate packet.

8. The method of claim 1 , wherein the virtual aggregate packet comprises parameters of each packet of the second subset of the plurality of packets.

9. The method of claim 1 , further comprising:

subsequently receiving, by the device, an additional packet of the flow;

determining, by the device, that the flow is no longer backlogged;

determining, by the device, that a sum of the throughput credit and a size of the additional packet does not exceed the threshold; and

transmitting the additional packet via the connection while bypassing QoS processing of the device.

10. A system for improving network efficiency, comprising:

a device, comprising a network interface, a 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 processor is configured to:

determine that the flow is not backlogged,

transmit a first subset of the received plurality of packets of the flow, responsive to the determination that the flow is not backlogged;

subsequently determine that the flow is backlogged,

aggregate a second subset of the plurality of packets in a virtual aggregate packet having a virtual packet size equal to a sum of sizes of the second subset of the plurality of packets, responsive to the determination that the flow is backlogged,

determine that a throughput credit for the virtual aggregate packet exceeds a threshold, the throughput credit based upon a number of packets added to the virtual aggregate packet,

apply quality of service (QoS) processing to the virtual aggregate packet, responsive to the throughput credit for the virtual aggregate packet exceeding the threshold, and

transmit the virtual aggregate packet.

11. The system of claim 10 , wherein the throughput credit is incremented for each packet of the second subset of the plurality of packets; and wherein the throughput credit is reset upon applying QoS processing to the virtual aggregate packet.

12. The system of claim 10 , wherein the processor is further configured to increment the throughput credit, for each packet of the second subset of the plurality of packets added to the virtual aggregate packet, by a size of the packet.

13. The system of claim 10 , wherein the processor is further configured to:

for each packet of the second subset of the plurality of packets:

determine that the throughput credit for the virtual aggregate packet does not exceed the threshold,

add the packet to the virtual aggregate packet, responsive to the determination that the throughput credit does not exceed the threshold, and

increment the throughput credit based on said packet.

14. The system of claim 10 , wherein the processor is further configured to:

determine that a first packet of the second subset of the plurality of packets is an initial packet of the virtual aggregate packet; and

responsive to the determination that the first packet is the initial packet, set the virtual packet size of the virtual aggregate packet equal to a size of the first packet.

15. The system of claim 14 , wherein the processor is further configured to:

determine that a second packet of the second subset of the plurality of packets is not the initial packet of the virtual aggregate packet; and

responsive to the determination that the second packet is not the initial packet, add a size of the second packet to the virtual packet size of the virtual aggregate packet.

16. The system of claim 10 , wherein the processor is further configured to concatenate each of the second subset of the plurality of packets to generate an aggregate packet.

17. The system of claim 10 , wherein the virtual aggregate packet comprises parameters of each packet of the second subset of the plurality of packets.

18. The system of claim 10 , wherein the network interface is further configured to subsequently receive an additional packet of the flow; and wherein the processor is further configured to:

identify that the flow is no longer backlogged;

determine, that a sum of the throughput credit and a size of the additional packet does not exceed the threshold, responsive to the identification; and

transmit the additional packet via the connection while bypassing QoS processing of the device, responsive to the determination that the sum of the throughput credit and the size of the additional packet does not exceed the threshold.

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 Jun 14, 2018
From: KEITH, SETH KENNETH; TESTICIOGLU, MUSTAFA KUTLUK
To: CITRIX SYSTEMS, INC.
Reel/Frame 046364/0275 →
Continuity (2)
Continuation In Part 15462524 · Mar 17, 2017
Related Publication 20180302328A1 · Oct 18, 2018