IP Library Granted Patent US 12,432,148
Granted Patent B2
US 12,432,148 · App. 18/332,695 · Granted Sep 30, 2025

Transport layer network recovery for packet-switched computer networks

Inventors: Prashant Ranjan (San Jose, CA); Abdulkader Kabbani (Menlo Park, CA)
Assignee: Microsoft Technology Licensing, LLC
H04L47/125H04L47/26H04L47/62
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,432,148
App. No.
18/332,695
Granted
Sep 30, 2025
Kind
B2
Abstract

A computing system for transport layer network recovery on a packet-switched computer network includes a source computing device with a processor that executes a network traffic communication module, a load balancing module, and a congestion control module. The network traffic communication module provisions a plurality of source ports to transmit outbound packets to a destination computing device, each source port being associated with a respective network path. The load balancing module assigns each outbound packet to one of the source ports using a port scheduling algorithm to uniformly distribute the packets among the source ports and associated network paths. The congestion control module detects a congestion control condition for a packet transmitted via a source port associated with a congested network path. The load balancing module assigns a next source port for a next outbound packet from a remainder of the source ports not associated with the congested network path.

Claims (67)

1. A computing system for transport layer network recovery on a packet-switched computer network, the computing system comprising:

a source computing device comprising a processor that executes instructions using portions of associated memory to implement:

a network traffic communication module configured to:

establish a transport layer connection with a destination computing device,

identify a set of network paths to the destination computing device, and

provision a plurality of source ports to transmit outbound packets over the transport layer connection to the destination computing device, each source port of the plurality of source ports being associated with a respective network path of the set of network paths;

a load balancing module that assigns each outbound packet on a per-packet basis to one of the plurality of source ports using a port scheduling algorithm that varies a value of a respective field in a respective header of each outbound packet to uniformly distribute the packets among the plurality of source ports and associated network paths; and

a congestion control module that detects a congestion control condition for a sent packet transmitted via a source port associated with a congested network path, wherein

the plurality of source ports are stored in a cyclic buffer,

the congestion control condition is indicated by congestion information in an acknowledgement message for the sent packet,

when the congestion control module detects the congestion control condition, the source port associated with the congested network path is not added to the cyclic buffer, such that each source port of the plurality of source ports stored in the cyclic buffer is associated with a respective known good network path at the time of its respective addition to the cyclic buffer, and

the load balancing module assigns a next source port for a next outbound packet from among a remainder of the plurality of source ports stored in the cyclic buffer and not associated with the congested network path.

2. The computing system of claim 1 , wherein

the next source port is assigned according to a random assignment.

3. The computing system of claim 1 , wherein

the next source port is assigned according to a next round robin assignment.

4. The computing system of claim 1 , wherein

the next source port is assigned based on a probe query sent to a downstream networking device.

5. The computing system of claim 1 , wherein

the next source port is assigned by changing the value of the respective field of the respective header of the next outbound packet.

6. The computing system of claim 1 , wherein

the congestion control condition is an explicit congestion notification received from a downstream networking device.

7. The computing system of claim 1 , wherein

the congestion control condition is a value indicating a dropped packet or round trip time for the packet that exceeds a threshold tolerance value for the round trip time.

8. The computing system of claim 1 , wherein

the next source port is a first next source port, and

the load balancing module is prevented from assigning a second next source port for a predetermined period of time after assigning the first next source port.

9. The computing system of claim 1 , wherein

when congestion control information of two or more outbound packets sent from two or more ports of the plurality of ports via two or more respective associated network paths meets the congestion control condition, a network path of the two or more respective associated network paths having a highest congestion value is determined to be the congested network path.

10. A method for transport layer network recovery on a packet-switched computer network, the method comprising, at a source computing device:

establishing a transport layer connection with a destination computing device;

identifying a set of network paths to the destination computing device;

provisioning a plurality of source ports to transmit outbound packets over the transport layer connection to the destination computing device, each source port of the plurality of source ports being associated with a respective network path of the set of network paths;

storing the plurality of source ports in a cyclic buffer;

assigning each outbound packet on a per-packet basis to one of the plurality of source ports using a port scheduling algorithm that varies a value of a respective field in a respective header of each outbound packet to uniformly distribute the packets among the plurality of source ports and associated network paths;

detecting a congestion control condition for a sent packet transmitted via a source port associated with a congested network path, the congestion control condition being indicated by congestion information in an acknowledgement message for the sent packet;

refraining from adding the source port associated with the congested network to the cyclic buffer, such that each source port of the plurality of source ports stored in the cyclic buffer is associated with a respective known good network path at the time of its respective addition to the cyclic buffer; and

assigning a next source port for a next outbound packet from among a remainder of the plurality of source ports stored in the cyclic buffer and not associated with the congested network path.

11. The method of claim 10 , the method further comprising:

assigning the next source port according to a random assignment.

12. The method of claim 10 , the method further comprising:

assigning the next source port according to a next round robin assignment.

13. The method of claim 10 , the method further comprising:

assigning the next source port based on a probe query sent to a downstream networking device.

14. The method of claim 10 , the method further comprising:

assigning the next source port by changing the value of the respective field of the respective header of the next outbound packet.

15. The method of claim 10 , wherein

the congestion control condition is an explicit congestion notification received from a downstream networking device.

16. The method of claim 10 , wherein

the congestion control condition is a value indicating a dropped packet or round trip time for the packet that exceeds a threshold tolerance value for the round trip time.

17. The method of claim 10 , wherein

the next source port is a first next source port, and

the method further comprises preventing assignment of a second next source port for a predetermined period of time after assigning the first next source port.

18. The method of claim 10 , wherein

congestion control information of two or more outbound packets sent from two or more ports of the plurality of ports meets the congestion control condition, and

the method further comprises determining a port of the two or more ports having a highest congestion value to be the congested port.

19. A computing system for use with packet-switched artificial intelligence training computer network, the computing system comprising:

a source computing device comprising a processor that executes instructions using portions of associated memory to implement:

a network traffic communication module configured to:

establish an artificial intelligence transport layer connection via an artificial intelligence transport layer protocol with a destination computing device,

identify a set of network paths to the destination computing device, each network path of the set of the network paths including at least one switch, and

provision a plurality of source ports to transmit outbound packets over the artificial intelligence transport layer connection to the destination computing device, the plurality of source ports being stored in a cyclic buffer, each source port of the plurality of source ports being associated with a respective network path of the set of network paths; and

a load balancing module that assigns each outbound packet on a per-packet basis to one of the plurality of source ports using a port scheduling algorithm that uniformly distributes the packets among the plurality of source ports, a field in a respective header of each outbound packing including a respective source port identifier, wherein

the at least one switch executes a hashing algorithm that uses the source port identifier of an incoming packet transmitted from the source computing device to generate a hash-based forwarding port number for the incoming packet,

upon receipt of the incoming packet, the destination computing device generates an acknowledgment notification including congestion information for the network path along which the incoming packet was transmitted and the source port identifier for the source port associated with the network path, and sends the acknowledgment notification to the source computing device,

when the congestion information indicates the associated-network path along which the incoming packet was transmitted is congested, the source port associated with the congested network path is not added to the cyclic buffer, such that each source port of the plurality of source ports stored in the cyclic buffer is associated with a respective known good network path at the time of its addition to the cyclic buffer, and

the load balancing module assigns a next source port from a remainder of the plurality of source ports stored in the cyclic buffer and not associated with the congested network path to ensure that outbound packets requiring retransmission are transmitted via an uncongested network path.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 27, 2023
From: RANJAN, PRASHANT; KABBANI, ABDULKADER
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 065377/0623 →
Continuity (1)
Related Publication 20240414087A1 · Dec 12, 2024
References Cited (23)
US 9331929B1 · Thomas · 2016 [cited by examiner]
US 11057307B1 · Matthews · 2021 [cited by examiner]
US 11128561B1 · Matthews · 2021 [cited by examiner]
US 12149437B1 · Matthews · 2024 [cited by examiner]
US 20060221974A1 · Hilla · 2006 [cited by examiner]
US 20090219818A1 · Tsuchiya · 2009 [cited by examiner]
US 20110116443A1 · Yu · 2011 [cited by examiner]
US 20150281102A1 · Lee · 2015 [cited by examiner]
US 20160154756A1 · Dodson · 2016 [cited by examiner]
US 20170279701A1 · Ahmadzadeh · 2017 [cited by examiner]
US 20170295100A1 · Hira · 2017 [cited by examiner]
US 20190245915A1 · Kommula · 2019 [cited by examiner]
US 20200028786A1 · Chachmon · 2020 [cited by examiner]
US 20210250245A1 · Li · 2021 [cited by examiner]
US 20220141715A1 · Mayor · 2022 [cited by examiner]
US 20220321478A1 · Vasudevan · 2022 [cited by examiner]
US 20230125310A1 · Zhang · 2023 [cited by examiner]
US 20230188561A1 · Finkelshtien · 2023 [cited by examiner]
US 20230198914A1 · Ranjan · 2023 [cited by examiner]
US 20230231785A1 · Kumar · 2023 [cited by examiner]
US 20230403233A1 · Rahman · 2023 [cited by examiner]
US 20240243992A1 · Lokhandwala · 2024 [cited by examiner]
US 20240323124A1 · Kabbani · 2024 [cited by examiner]