IP Library › Granted Patent US 12,267,245
Granted Patent B2
US 12,267,245 · App. 17/835,565 · Granted Apr 1, 2025

Increased packet scheduling throughput and efficiency using über batching

Inventors: Seth Kenneth Keith (Scotts Valley, CA); Mustafa Kutluk Testicioglu (Mountain View, CA)
H04L47/24H04L43/026H04L43/0888H04L43/16H04L43/20H04L47/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 12,267,245
App. No.
17/835,565
Filed
Jun 8, 2022
Granted
Apr 1, 2025
Kind
B2
Examiner
MAK, RODRICK
Art Unit
2416
USPC
370/235
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 (33)

1. A method comprising:

transmitting, by a device while a flow of a plurality of packets is not backlogged, one or more packets of the plurality of packets received by the device;

aggregating, by the device responsive to the flow becoming backlogged, a number of the plurality of packets into a virtual packet, the virtual packet having a size based on a sum of sizes of the number of plurality of packets;

determining, by the device, that a credit of throughput for the virtual packet exceeds a threshold based on the size; and

selecting, by the device responsive to the determination, a quality of service (QoS) queue from a plurality of QoS queues for transmission of the virtual packet.

2. The method of claim 1 , further comprising transmitting, by the device, the virtual packet as part of the flow via a connection to another device.

3. The method of claim 1 , further comprising determining, by the device, the flow has become backlogged.

4. The method of claim 1 , further comprising incrementing, by the device, the credit of throughput for each packet of the number of the plurality of packets aggregated into the virtual packet.

5. The method of claim 4 , further comprising incrementing the credit based on sizes of the number of the plurality of packets.

6. The method of claim 1 , further comprising resetting, by the device, the credit of throughput responsive to applying QoS to the virtual packet.

7. The method of claim 1 , further comprising selecting, by the device, the QoS queue based at least on the size of the virtual packet.

8. A device comprising:

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

transmit, while a flow of a plurality of packets is not backlogged, one or more packets of the plurality of packets received by the device;

aggregate, responsive to the flow becoming backlogged, a number of the plurality of packets into a virtual packet, the virtual packet having a size based on a sum of sizes of the number of plurality of packets;

determine, that a credit of throughput for the virtual packet exceeds a threshold based on the size; and

select, responsive to the determination, a quality of service (QOS) queue from a plurality of QoS queues for transmission of the virtual packet.

9. The device of claim 8 , wherein the one or more processors are further configured to transmit the virtual packet as part of the flow via a connection to another device.

10. The device of claim 8 , wherein the one or more processors are further configured to determine the flow has become backlogged.

11. The device of claim 8 , wherein the one or more processors are further configured to increment the credit of throughput for each packet of the number of the plurality of packets aggregated into the virtual packet.

12. The device of claim 11 , wherein the one or more processors are further configured to increment the credit based on sizes of the number of the plurality of packets.

13. The device of claim 8 , wherein the one or more processors are further configured to reset the credit of throughput responsive to applying QoS to the virtual packet.

14. The device of claim 8 , wherein the one or more processors are further configured to select the QoS queue based at least on the size of the virtual packet.

15. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to:

transmit, while a flow of a plurality of packets is not backlogged, one or more packets of the plurality of packets received by the device;

aggregate, responsive to the flow becoming backlogged, a number of the plurality of packets into a virtual packet, the virtual packet having a size based on a sum of sizes of the number of plurality of packets;

determine, that a credit of throughput for the virtual packet exceeds a threshold based on the size; and

select, responsive to the determination, a quality of service (QOS) queue from a plurality of QoS queues for transmission of the virtual packet.

16. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors are further configured to transmit the virtual packet as part of the flow via a connection to another device.

17. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors are further configured to increment the credit of throughput for each packet of the number of the plurality of packets aggregated into the virtual packet.

18. The non-transitory computer-readable medium of claim 17 , wherein the one or more processors are further configured to increment the credit based on sizes of the number of the plurality of packets.

19. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors are further configured to reset the credit of throughput responsive to applying QoS to the virtual packet.

20. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors are further configured to select the QoS queue based at least on the size of the virtual packet.

Assignments (3)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2022
From: KEITH, SETH KENNETH; TESTICIOGLU, MUSTAFA KUTLUK
To: CITRIX SYSTEMS, INC.
Reel/Frame 060140/0815 →
Continuity (3)
Continuation 16007560 · Jun 13, 2018
Continuation In Part 15462524 · Mar 17, 2017
Related Publication 20220303221A1 · Sep 22, 2022
References Cited (59)
US 7304959B1 · Swaroop et al. · 2007 [cited by applicant]
US 7324554B1 · Ginjpalli et al. · 2008 [cited by applicant]
US 7433370B1 · Tymes · 2008 [cited by applicant]
US 7539143B2 · Moores et al. · 2009 [cited by applicant]
US 7782885B1 · Sabato et al. · 2010 [cited by applicant]
US 8644176B1 · Shah et al. · 2014 [cited by applicant]
US 8943236B1 · Usmani · 2015 [cited by applicant]
US 9432299B2 · Martin et al. · 2016 [cited by applicant]
US 10033613B1 · Whiteside et al. · 2018 [cited by applicant]
US 20030112817A1 · Woo et al. · 2003 [cited by applicant]
US 20030214954A1 · Yossi et al. · 2003 [cited by applicant]
US 20030231657A1 · Poon et al. · 2003 [cited by applicant]
US 20050076113A1 · Klotz et al. · 2005 [cited by applicant]
US 20050089042A1 · Ruutu et al. · 2005 [cited by applicant]
US 20050144306A1 · Hart et al. · 2005 [cited by applicant]
US 20050152375A1 · An et al. · 2005 [cited by applicant]
US 20050220114A1 · Romano et al. · 2005 [cited by applicant]
US 20060067325A1 · Kounavis et al. · 2006 [cited by applicant]
US 20070016666A1 · Duffield et al. · 2007 [cited by applicant]
US 20070070896A1 · Alapuranen et al. · 2007 [cited by applicant]
US 20070081498A1 · Niwano · 2007 [cited by applicant]
US 20070268860A1 · Taneja · 2007 [cited by applicant]
US 20080123679A1 · Scott et al. · 2008 [cited by applicant]
US 20090003216A1 · Radunovic et al. · 2009 [cited by applicant]
US 20090207850A1 · Osano et al. · 2009 [cited by applicant]
US 20090327533A1 · Kallam et al. · 2009 [cited by applicant]
US 20100095021A1 · Samuels et al. · 2010 [cited by applicant]
US 20100103923A1 · Nosley et al. · 2010 [cited by applicant]
US 20100121972A1 · Samuels · 2010 [cited by applicant]
US 20100248643A1 · Aaron et al. · 2010 [cited by applicant]
US 20120216282A1 · Pappu et al. · 2012 [cited by applicant]
US 20120246262A1 · Ikeda · 2012 [cited by applicant]
US 20130010813A1 · Ruffini et al. · 2013 [cited by applicant]
US 20130051377A1 · Seferoglu et al. · 2013 [cited by applicant]
US 20140195630A1 · Malik et al. · 2014 [cited by applicant]
US 20150229544A1 · Alcala et al. · 2015 [cited by applicant]
US 20160021599A1 · Fitzek et al. · 2016 [cited by applicant]
US 20160182380A1 · Mehra et al. · 2016 [cited by applicant]
US 20160345239A1 · Hoffner et al. · 2016 [cited by applicant]
US 20170131936A1 · Parra · 2017 [cited by applicant]
US 20180091406A1 · Ammirata · 2018 [cited by applicant]
US 20180270156A1 · Keith · 2018 [cited by examiner]
US 20180270697A1 · Turtinen et al. · 2018 [cited by applicant]
US 20180302328A1 · Keith et al. · 2018 [cited by applicant]
US 20190116126A1 · Shen et al. · 2019 [cited by applicant]
US 20220070717A1 · Lutz et al. · 2022 [cited by applicant]
Final Office Action for U.S. Appl. No. 15/462,524, dated May 14, 2019. [cited by applicant]
Final Office Action on U.S. Appl. No. 16/007,560 dated Oct. 15, 2021. [cited by applicant]
Final Office Action on U.S. Appl. No. 16/007,560, dated Oct. 6, 2020. [cited by applicant]
Final Office Action on U.S. Appl. No. 16/792,527 dated Mar. 3, 2022. [cited by applicant]
Jurga, Ryszard Erazm, “Packet Sampling for Network Monitoring”, Dec. 10, 2007, Cern, HP Procurve openlab project, pp. 1-18 (Year: 2007). [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 15/462,524, dated Nov. 1, 2019. [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 16/007,560, dated Apr. 6, 2020. [cited by applicant]
Non-Final Office Action on U.S. Appl. No. 16/007,560 dated Apr. 26, 2021. [cited by applicant]
Non-Final Office Action on U.S. Appl. No. 16/792,527 dated Aug. 17, 2021. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 15/462,524, dated Oct. 9, 2019. [cited by applicant]
Notice of Allowance on U.S. Appl. No. 16/007,560 dated Mar. 9, 2022. [cited by applicant]
Non-Final Office Action on U.S. Appl. No. 16/792,527 dated Aug. 22, 2022. [cited by applicant]
Notice of Allowance on U.S. Appl. No. 16/792,527 DTD Mar. 3, 2023. [cited by applicant]