IP Library › Granted Patent US 12,652,256
Granted Patent B2
US 12,652,256 · App. 18/213,215 · Granted Jun 9, 2026

Scheduling mechanisms for approximating fine-grained, per-flow rate adjustments and cycle-granularity inter-packet spacing in network applications

Inventors: Mohammad Saifee Dohadwala (Redmond, WA); Michael K. Papamichael (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L47/562H04L47/28
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,652,256
App. No.
18/213,215
Granted
Jun 9, 2026
Kind
B2
Abstract

Innovations in packet scheduling, which allow a scheduling mechanism to approximate fine-grained rate adjustments and cycle-granularity inter-packet spacing for packets of a flow, are described herein. For example, in an iteration of a scheduler loop, a sender determines whether a proximity condition is satisfied for the next packet of a flow. The proximity condition depends at least in part on how long a target next send time is after a current time. The next packet is scheduled for transmission if the next packet is due or if the proximity condition is satisfied for the next packet. When the next packet is scheduled for transmission, the sender sends the next packet and updates the target next send time based at least in part on a target transmission rate.

Claims (51)

1 . In a computer system, a method of packet scheduling, the method comprising, in an iteration of a scheduler loop:

determining whether a proximity condition is satisfied for a next packet of a given packet flow, the proximity condition depending at least in part on how long a target next send time is after a current time;

determining whether to schedule the next packet of the given packet flow for transmission, wherein the next packet of the given packet flow is scheduled for transmission if the next packet of the given packet flow is due or if the proximity condition is satisfied for the next packet of the given packet flow; and

when the next packet of the given packet flow is scheduled for transmission, sending the next packet of the given packet flow and updating the target next send time based at least in part on a target transmission rate.

2 . The method of claim 1 , wherein the target transmission rate is a per-flow target inter-packet gap value associated with the given packet flow.

3 . The method of claim 1 , further comprising:

receiving network feedback;

based at least in part on the network feedback, setting the target transmission rate.

4 . The method of claim 3 , wherein the network feedback is from a network router, a network switch, and/or a receiver, and wherein the network feedback provides information about network congestion, packet losses, packet delays, and/or packet latencies.

5 . The method of claim 1 , further comprising, in the iteration of the scheduler loop:

determining whether the next packet of the given packet flow is due, wherein the next packet of the given packet flow is due if the target next send time is earlier than the current time.

6 . The method of claim 5 , further comprising, in the iteration of the scheduler loop:

comparing the current time and the target next send time; or

determining a difference between the target next send time and the current time, wherein the determining whether the next packet of the given packet flow is due considers the difference.

7 . The method of claim 1 , further comprising, in the iteration of the scheduler loop:

determining whether any packets of the given packet flow have been sent, wherein the next packet of the given packet flow is due if no packets of the given packet flow have been sent yet; or

determining whether the given packet flow was newly added, wherein the next packet of the given packet flow is due if the given packet flow was newly added.

8 . The method of claim 1 , further comprising, in the iteration of the scheduler loop:

determining a difference between the target next send time and the current time;

determining a threshold value that depends on an estimate of iteration duration for the scheduler loop; and

comparing the difference to the threshold value, wherein satisfaction of the proximity condition depends on a result of the comparison of the difference to the threshold value.

9 . The method of claim 8 , wherein the estimate of iteration duration is an estimate of minimum cycles, median cycles, or average cycles per iteration of the scheduler loop.

10 . The method of claim 8 , wherein the iteration duration varies between at least some iterations of the scheduler loop.

11 . The method of claim 8 , wherein the determining the threshold value includes:

determining a random number between 0 and the estimate of iteration duration for the scheduler loop; and

setting the threshold value to the random number.

12 . The method of claim 11 , wherein the target transmission rate is a target inter-packet gap value, wherein the updating the target next send time includes:

determining a transmission time; and

adding the target inter-packet gap value to the transmission time.

13 . The method of claim 8 , wherein the determining the threshold value includes:

setting the threshold value as the estimate of iteration duration for the scheduler loop.

14 . The method of claim 13 , wherein the target transmission rate is a target inter-packet gap value, and wherein the updating the target next send time includes:

determining a transmission time;

determining if the difference is greater than zero;

if the difference is greater than zero, combining the transmission time, the target inter-packet gap value, and the difference; and

otherwise, combining the transmission time and the target inter-packet gap value.

15 . The method of claim 1 , wherein the scheduler loop is part of a transport-layer scheduling mechanism, wherein the iteration of the scheduler loop has multiple stages, the multiple stages including (a) a first stage for accepting new data, if any; (b) a second stage for receiving acknowledgement feedback, if any, and checking a condition of a retransmission mechanism; (c) a third stage for bookkeeping tasks, if any; (d) a fourth stage for scheduling and sending of packets, if any; and (e) a fifth stage for updating state information, if appropriate, and wherein iteration duration of the scheduler loop is variable due to conditional paths in at least one of the multiple stages.

16 . The method of claim 1 , wherein a data structure tracks properties of the given packet flow, the properties including one or more of the target next send time, an indicator of whether the given packet flow was newly added, and the target transmission rate.

17 . The method of claim 1 , further comprising:

in the scheduler loop, processing multiple packet flows, the multiple packet flows including the given packet flow, including performing operations in the iteration of the scheduler loop for the multiple packet flows.

18 . The method of claim 1 , wherein the target transmission rate is a target inter-packet gap value, and wherein:

the target inter-packet gap value is between 120 and 300 cycles, and wherein an average iteration of the scheduler loop is between 50 and 60 cycles; or

the target inter-packet gap value is between 2 times and 6 times longer than an average iteration of the scheduler loop.

19 . One or more non-transitory computer-readable media having stored thereon computer-executable instructions for causing one or more processing units, when programmed thereby, to perform operations for packet scheduling, the operations comprising:

determining whether a proximity condition is satisfied for a next packet of a given packet flow, the proximity condition depending at least in part on how long a target next send time is after a current time;

determining whether to schedule the next packet of the given packet flow for transmission, wherein the next packet of the given packet flow is scheduled for transmission if the next packet of the given packet flow is due or if the proximity condition is satisfied for the next packet of the given packet flow; and

when the next packet of the given packet flow is scheduled for transmission, sending the next packet of the given packet flow and updating the target next send time based at least in part on a target transmission rate.

20 . A computer system comprising one or more processing units, memory, and a network interface device, the network interface device being configured to perform operations for packet scheduling, the operations comprising:

determining whether a proximity condition is satisfied for a next packet of a given packet flow, the proximity condition depending at least in part on how long a target next send time is after a current time;

determining whether to schedule the next packet of the given packet flow for transmission, wherein the next packet of the given packet flow is scheduled for transmission if the next packet of the given packet flow is due or if the proximity condition is satisfied for the next packet of the given packet flow; and

when the next packet of the given packet flow is scheduled for transmission, sending the next packet of the given packet flow and updating the target next send time based at least in part on a target transmission rate.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2023
From: DOHADWALA, MOHAMMAD SAIFEE; PAPAMICHAEL, MICHAEL K.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064087/0825 →
Continuity (1)
Related Publication 20240430212A1 · Dec 26, 2024
References Cited (34)
US 9621468B1 · Sorenson, III · 2017 [cited by examiner]
US 11343198B2 · Shalev et al. · 2022 [cited by applicant]
US 20070005787A1 · Igarashi et al. · 2007 [cited by applicant]
US 20070064705A1 · Tateno et al. · 2007 [cited by applicant]
US 20100241919A1 · Jeon · 2010 [cited by applicant]
US 20120226802A1 · Wu et al. · 2012 [cited by applicant]
US 20140153574A1 · Louzoun et al. · 2014 [cited by applicant]
US 20140254351A1 · Newman et al. · 2014 [cited by applicant]
US 20140301223A1 · Wong et al. · 2014 [cited by applicant]
US 20150281026A1 · Thapliya et al. · 2015 [cited by applicant]
US 20160173394A1 · Harvell · 2016 [cited by examiner]
US 20160285767A1 · Brandeburg · 2016 [cited by examiner]
US 20210203606A1 · Burroughs · 2021 [cited by examiner]
US 20210399990A1 · Wang · 2021 [cited by examiner]
US 20220046667A1 · Sun et al. · 2022 [cited by applicant]
US 20220086100A1 · Biederman · 2022 [cited by examiner]
US 20230061794A1 · Livne · 2023 [cited by examiner]
EP 1105988 · 2012 [cited by applicant]
EP 3487133 · 2019 [cited by applicant]
EP 4099649 · 2022 [cited by applicant]
WO WO2023011712 · 2023 [cited by applicant]
International Search Report and Written Opinion dated Sep. 17, 2024, from International Patent Application No. PCT/US2024/033483, 15 pp. [cited by applicant]
International Search Report and Written Opinion dated Sep. 5, 2024, for International Patent Application No. PCT/US2024/033474, 17 pp. [cited by applicant]
International Search Report and Written Opinion dated Sep. 19, 2024, from International Patent Application No. PCT/US2024/032184, 12 pp. [cited by applicant]
Kaspar, “Multipath Aggregation of Heterogeneous Access Networks,” Ph.D. Dissertation, University of Oslo, 138 pp. (Dec. 2011). [cited by applicant]
Office Action dated Jul. 9, 2025, from U.S. Appl. No. 18/210,561, 17 pp. [cited by applicant]
Communication pursuant to Rules 161(1) and 162 EPC dated Jan. 22, 2026, for European Patent Application No. 24739882.9, 3 pp. [cited by applicant]
Communication pursuant to Rules 161(1) and 162 EPC dated Jan. 22, 2026, for European Patent Application No. 24737564.5, 3 pp. [cited by applicant]
Communication pursuant to Rules 161(1) and 162 EPC dated Jan. 29, 2026, for European Patent Application No. 24736930.9, 3 pp. [cited by applicant]
International Preliminary Report on Patentability dated Dec. 26, 2025, from International Patent Application No. PCT/US2024/033474, 11 pp. [cited by applicant]
International Preliminary Report on Patentability dated Dec. 26, 2025, from International Patent Application No. PCT/US2024/032184, 6 pp. [cited by applicant]
International Preliminary Report on Patentability dated Jan. 2, 2026, from International Patent Application No. PCT/US2024/033483, 9 pp. [cited by applicant]
Notice of Allowance dated Mar. 10, 2026, from U.S. Appl. No. 18/210,561, 5 pp. [cited by applicant]
Office Action dated Feb. 13, 2026, from U.S. Appl. No. 18/210,573, 28 pp. [cited by applicant]