IP Library › Granted Patent US 12,695,694
Granted Patent B2
US 12,695,694 · App. 18/210,561 · Granted Jul 28, 2026

Reliable out-of-order transport protocol with fast retransmission of packets

Inventors: Michael Konstantinos Papamichael (Redmond, WA); David Andreas Sidler (Seattle, WA); Fei Gao (Long Island City, NY)
Assignee: Microsoft Technology Licensing, LLC
H04L45/38H04L1/1642H04L5/0053
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,695,694
App. No.
18/210,561
Filed
Jun 15, 2023
Granted
Jul 28, 2026
Kind
B2
Art Unit
2409
USPC
370/392
Abstract

As part of managing delivery of a packet flow according to a reliable transport protocol that supports multi-path delivery, a sender splits data into multiple flow packets of a flow and sends at least some of the flow packets to a receiver on multiple paths of a network. The sender receives feedback metadata and updates an out-of-order (“OOO”) tracking window. The sender also determines a metric that quantifies degree of OOO delivery. In general, the metric measures the extent to which flow packets have been successfully delivered OOO after a “missing” flow packet. If a sufficient count or range of flow packets have been acknowledged as received OOO after the missing flow packet, the missing flow packet is likely to have been dropped—not merely delayed. Depending on the metric, the sender selectively resends to the receiver one or more unacknowledged flow packets.

Claims (57)

1 . In a computer system, a method of managing delivery of a packet flow according to a reliable transport protocol, the method comprising:

at a sender, splitting data into multiple transport-layer flow packets of a flow;

sending, from the sender to a receiver on multiple paths of a network, at least some of the multiple transport-layer flow packets;

receiving, at the sender from the receiver, feedback metadata;

at the sender, updating an out-of-order (“OOO”) tracking window based at least in part on the feedback metadata;

at the sender, determining a metric that quantifies degree of OOO delivery, wherein the metric measures a count or range of transport-layer flow packets in the OOO tracking window that have been acknowledged as received OOO after a missing transport-layer flow packet; and

based at least in part on the metric, selectively resending, from the sender to the receiver, one or more unacknowledged transport-layer flow packets, according to the updated OOO tracking window, among the sent transport-layer flow packets.

2 . The method of claim 1 , wherein the splitting the data into multiple transport-layer flow packets includes packetizing the data into multiple payloads, and wherein each of the multiple transport-layer flow packets includes a header, one of the multiple payloads, and a checksum.

3 . The method of claim 1 , wherein the multiple paths have identical length in terms of count of multiple hops, and wherein the sending the at least some of the multiple transport-layer flow packets uses all of the multiple paths.

4 . The method of claim 3 , further comprising, for each transport-layer flow packet among the at least some of the multiple transport-layer flow packets:

selecting one of the multiple paths according to a round-robin strategy or hashing function; and

adjusting one or more bits of the transport-layer flow packet to cause the transport-layer flow packet to be sent over the selected path.

5 . The method of claim 1 , wherein the feedback metadata is received as one or more acknowledgement packets.

6 . The method of claim 1 , wherein the multiple transport-layer flow packets are ordered by packet sequence number in a packet sequence, wherein the feedback metadata includes acknowledgement (“ACK”) metadata and selective ACK metadata, and wherein, for a given transport-layer flow packet among the at least some of the multiple transport-layer flow packets:

the ACK metadata indicates receipt, by the receiver, of the given transport-layer flow packet;

the ACK metadata indicates a start of the updated OOO tracking window; and

the selective ACK metadata indicates receipt, by the receiver, of any of the sent transport-layer flow packets that is after the given transport-layer flow packet in the packet sequence.

7 . The method of claim 1 , wherein the determining the metric that quantifies degree of OOO delivery uses information specifying one or more transport-layer flow packets, among the sent transport-layer flow packets, that have been acknowledged as received OOO by the receiver.

8 . The method of claim 7 , wherein the metric indicates a difference between a start of the updated OOO tracking window and a last OOO receipt event in the updated OOO tracking window.

9 . The method of claim 7 , wherein the metric indicates a count of OOO receipt events in the updated OOO tracking window.

10 . The method of claim 9 , wherein the determining the metric includes:

counting, in the updated OOO tracking window, any acknowledged transport-layer flow packets among the sent transport-layer flow packets.

11 . The method of claim 9 , wherein the determining the metric includes:

counting, in the updated OOO tracking window, consecutive acknowledged transport-layer flow packets, among the sent transport-layer flow packets, at the start of the updated 000 tracking window.

12 . The method of claim 1 , wherein the selectively resending includes:

comparing the metric to a threshold.

13 . The method of claim 12 , wherein the threshold depends on one or more of:

count of the multiple paths; and

past behavior of the network.

14 . The method of claim 12 , further comprising adjusting the threshold based on one or more of:

location of a last OOO receipt event in the updated OOO tracking window;

a current condition of the network; and

current workload of the sender.

15 . The method of claim 12 , wherein the selectively resending further includes:

determining that the metric satisfies the threshold and, responsive to the determining that the metric satisfies the threshold, resending the one or more unacknowledged transport-layer flow packets from the sender to the receiver; or

determining that the metric does not satisfy the threshold and, responsive to the determining that the metric does not satisfy the threshold, skipping the resending the one or more unacknowledged transport-layer flow packets from the sender to the receiver.

16 . The method of claim 1 , wherein the selectively resending is also based at least in part on a measure of latency for an oldest unacknowledged transport-layer flow packet among the sent multiple transport-layer flow packets.

17 . The method of claim 1 , wherein the selectively resending includes identifying the one or more unacknowledged transport-layer flow packets by:

identifying, among the sent multiple transport-layer flow packets, an oldest unacknowledged transport-layer flow packet; or

identifying, among the sent transport-layer flow packets, the oldest unacknowledged transport-layer flow packet and any consecutive unacknowledged transport-layer flow packets in the updated OOO tracking window after the oldest unacknowledged transport-layer flow packet.

18 . The method of claim 1 , wherein the selectively resending includes identifying the one or more unacknowledged transport-layer flow packets by:

identifying, among the sent transport-layer flow packets, every unacknowledged transport-layer flow packet in the updated OOO tracking window before a last acknowledged transport-layer flow packet in the updated OOO tracking window; or

identifying, among the sent transport-layer flow packets, every unacknowledged transport-layer flow packet before a last acknowledged transport-layer flow packet in the updated OOO tracking window, up to a cutoff in the updated OOO tracking window.

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 to manage delivery of a packet flow according to a reliable transport protocol, the operations comprising:

at a sender, splitting data into multiple transport-layer flow packets of a flow;

sending, from the sender to a receiver on multiple paths of a network, at least some of the multiple transport-layer flow packets;

receiving, at the sender from the receiver, feedback metadata;

at the sender, updating an out-of-order (“OOO”) tracking window based at least in part on the feedback metadata;

at the sender, determining a metric that quantifies degree of OOO delivery, wherein the metric measures a count or range of transport-layer flow packets in the OOO tracking window that have been acknowledged as received OOO after a missing transport-layer flow packet; and

based at least in part on the metric, selectively resending, from the sender to the receiver, one or more unacknowledged transport-layer flow packets, according to the updated OOO tracking window, among the at least some of the multiple transport-layer flow packets.

20 . A network interface device configured to perform operations to manage delivery of a packet flow according to a reliable transport protocol, the operations comprising:

at a sender, splitting data into multiple transport-layer flow packets of a flow;

sending, from the sender to a receiver on multiple paths of a network, at least some of the multiple transport-layer flow packets;

receiving, at the sender from the receiver, feedback metadata;

at the sender, updating an out-of-order (“OOO”) tracking window based at least in part on the feedback metadata;

at the sender, determining a metric that quantifies degree of OOO delivery, wherein the metric measures a count or range of transport-layer flow packets in the OOO tracking window that have been acknowledged as received OOO after a missing transport-layer flow packet; and

based at least in part on the metric, selectively resending, from the sender to the receiver, one or more unacknowledged transport-layer flow packets, according to the updated OOO tracking window, among the at least some of the multiple transport-layer flow packets.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2023
From: PAPAMICHAEL, MICHAEL KONSTANTINOS; SIDLER, DAVID ANDREAS; GAO, FEI
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064203/0009 →
Continuity (1)
Related Publication 20240422094A1 · Dec 19, 2024
References Cited (36)
US 9621468B1 · Sorenson, III · 2017 [cited by applicant]
US 11343198B2 · Shalev et al. · 2022 [cited by applicant]
US 20070005787A1 · Igarashi et al. · 2007 [cited by applicant]
US 20070064705A1 · Tateno · 2007 [cited by examiner]
US 20070206615A1 · Plamondon 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 · 2014 [cited by examiner]
US 20140301223A1 · Wong · 2014 [cited by examiner]
US 20150281026A1 · Thapliya · 2015 [cited by examiner]
US 20160173394A1 · Harvell · 2016 [cited by applicant]
US 20160285767A1 · Brandeburg et al. · 2016 [cited by applicant]
US 20180167168A1 · Shoens et al. · 2018 [cited by applicant]
US 20210203606A1 · Burroughs et al. · 2021 [cited by applicant]
US 20210399990A1 · Wang et al. · 2021 [cited by applicant]
US 20220046667A1 · Sun · 2022 [cited by examiner]
US 20220086100A1 · Biederman et al. · 2022 [cited by applicant]
US 20230061794A1 · Livne et al. · 2023 [cited by applicant]
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. 5, 2024, for International Patent Application No. PCT/US2024/033474, 17 pp. [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. 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 Sep. 10, 2025, from U.S. Appl. No. 18/213,215, 6 pp. [cited by applicant]
Notice of Allowance dated Feb. 13, 2026, from U.S. Appl. No. 18/213,215, 10 pp. [cited by applicant]
Office Action dated Feb. 13, 2026, from U.S. Appl. No. 18/210,573, 28 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]