IP Library Granted Patent US 12706834
Granted Patent B2
US 12706834 · App. 18/433,726 · Granted Aug 11, 2026

Adaptive endpoint-to-endpoint data path selection for data centers

Inventors: Kfir Menachem Toledo (Haifa, IL); Liran Schour (Yodfat, IL); Mohamed Mahameed (Umm al Fahm, IL); Eran Gampel (Tel aviv, IL); Etai Lev Ran (Nofit, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
H04L45/123H04L12/1432H04L43/50H04L45/566
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 12706834
App. No.
18/433,726
Granted
Aug 11, 2026
Kind
B2
Abstract

An embodiment selects, using performance data of a plurality of paths, a first path, each path comprising a data communication path from a first network endpoint through a subset of a plurality of network elements in a data communication network to a second network endpoint. An embodiment adjusts a packet header of a data packet, wherein a parameter setting in the adjusted data packet header causes a first network element in the data communication network to forward the adjusted data packet to a next network element in the data communication network along the first path. An embodiment sends the adjusted data packet, wherein the adjusted data packet causes a first subset of the plurality of network elements in the data communication network to forward the adjusted data packet to the second network endpoint along the first path.

Claims (49)

1 . A computer-implemented method comprising:

selecting, at a first network endpoint, using performance data of a plurality of paths, a first path in the plurality of paths, each of the plurality of paths comprising a data communication path from the first network endpoint through a subset of a plurality of network elements in a data communication network to a second network endpoint;

adjusting, at the first network endpoint, a packet header of a data packet of a first data flow, the adjusting resulting in an adjusted data packet header of an adjusted data packet, wherein a parameter setting, that is an output of an Equal Cost Multi-Path (ECMP) hash function identifying the first path, in the adjusted data packet header causes a first network element in the data communication network to forward the adjusted data packet to a next network element in the data communication network along the first path;

sending, from the first network endpoint, the adjusted data packet of the first data flow, wherein the adjusted data packet causes a first subset of the plurality of network elements in the data communication network to forward the adjusted data packet to the second network endpoint along the first path; and

determining a size comparison between a size of the first data flow with a size of a second data flow, adjusting a second data flow data packet header of a data packet of the second data flow, the adjusting resulting in an adjusted second data flow data packet header of an adjusted second data flow data packet causing the first network element in the data communication network to forward the adjusted second data flow data packet to the next network element in the data communication network along the first path as one taken by the first data flow based on the size comparison wherein an ECMP output adjusts a next network element in the adjusted second data flow data packet header, wherein the next network element is different from at least one network element used by a data flow data packet of a currently executing data flow.

2 . The computer-implemented method of claim 1 , further comprising:

measuring, at the first network endpoint, the performance data of the plurality of paths comprising measuring the performance data of a network element of the first subset of the plurality of network elements used by an executing data flow data packet of a currently executing data flow of the first path, responsive to the measuring replacing a parameter setting in the adjusted second data flow data packet header and forwarding the adjusted second data flow data packet along the first path based on the size comparison below a similarity threshold wherein the forwarding avoids the network element used by the executing data flow data packet.

3 . The computer-implemented method of claim 2 , wherein measuring the performance data of the plurality of paths further comprises:

selecting, at the first network endpoint, a test path in the plurality of paths;

adjusting, at the first network endpoint, a packet header of a test data packet, the adjusting resulting in an adjusted test data packet header, wherein a parameter setting in the adjusted test data packet header causes the first network element in the data communication network to forward the adjusted test data packet to the next network element in the data communication network along the test path;

sending, from the first network endpoint, the adjusted test data packet; and

measuring, at the first network endpoint, performance data of the sending of the test data packet along the test path.

4 . The computer-implemented method of claim 1 , wherein the performance data of the plurality of paths comprises a measurement of a round trip time of a packet along a path in the plurality of paths.

5 . The computer-implemented method of claim 1 , wherein the parameter setting in the adjusted data packet header is an input to an Equal Cost Multi-Path (ECMP) hash function, wherein a modulo operation on the input results in an output of the ECMP hash function identifying the first path.

6 . The computer-implemented method of claim 1 , wherein the parameter setting in the adjusted data packet header is a packet path label in Multi-Protocol Label Switching (MPLS) routing.

7 . A computer program product comprising one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions executable by a processor to cause the processor to perform operations comprising:

selecting, at a first network endpoint, using performance data of a plurality of paths, a first path in the plurality of paths, each of the plurality of paths comprising a data communication path from the first network endpoint through a subset of a plurality of network elements in a data communication network to a second network endpoint;

adjusting, at the first network endpoint, a packet header of a data packet of a first data flow, the adjusting resulting in an adjusted data packet header of an adjusted data packet, wherein a parameter setting, that is an output of an Equal Cost Multi-Path (ECMP) hash function identifying the first path, in the adjusted data packet header causes a first network element in the data communication network to forward the adjusted data packet to a next network element in the data communication network along the first path;

sending, from the first network endpoint, the adjusted data packet of the first data flow, wherein the adjusted data packet causes a first subset of the plurality of network elements in the data communication network to forward the adjusted data packet to the second network endpoint along the first path; and

determining a size comparison between a size of the first data flow with a size of a second data flow, adjusting a second data flow data packet header of a data packet of the second data flow, the adjusting resulting in an adjusted second data flow data packet header of an adjusted second data flow data packet causing the first network element in the data communication network to forward the adjusted second data flow data packet to the next network element in the data communication network along the first path as one taken by the first data flow based on the size comparison wherein an ECMP output adjusts a next network element in the adjusted second data flow data packet header, wherein the next network element is different from at least one network element used by a data flow data packet of a currently executing data flow.

8 . The computer program product of claim 7 , wherein the stored program instructions are stored in a computer readable storage device in a data processing system, and wherein the stored program instructions are transferred over a network from a remote data processing system.

9 . The computer program product of claim 7 , wherein the stored program instructions are stored in a computer readable storage device in a server data processing system, and wherein the stored program instructions are downloaded in response to a request over a network to a remote data processing system for use in a computer readable storage device associated with the remote data processing system, further comprising:

program instructions to meter use of the program instructions associated with the request; and

program instructions to generate an invoice based on the metered use.

10 . The computer program product of claim 7 , further comprising:

measuring, at the first network endpoint, the performance data of the plurality of paths comprising measuring the performance data of a network element of the first subset of the plurality of network elements used by an executing data flow data packet of a currently executing data flow of the first path, responsive to the measuring replacing a parameter setting in the adjusted second data flow data packet header and forwarding the adjusted second data flow data packet along the first path based on the size comparison below a similarity threshold wherein the forwarding avoids the network element used by the executing data flow data packet.

11 . The computer program product of claim 10 , wherein measuring the performance data of the plurality of paths further comprises:

selecting, at the first network endpoint, a test path in the plurality of paths;

adjusting, at the first network endpoint, a packet header of a test data packet, the adjusting resulting in an adjusted test data packet header, wherein a parameter setting in the adjusted test data packet header causes the first network element in the data communication network to forward the adjusted test data packet to the next network element in the data communication network along the test path;

sending, from the first network endpoint, the adjusted test data packet; and

measuring, at the first network endpoint, performance data of the sending of the test data packet along the test path.

12 . The computer program product of claim 7 , wherein the performance data of the plurality of paths comprises a measurement of a round trip time of a packet along a path in the plurality of paths.

13 . The computer program product of claim 7 , wherein the parameter setting in the adjusted data packet header is an input to an Equal Cost Multi-Path (ECMP) hash function, wherein a modulo operation on the input results in an output of the ECMP hash function identifying the first path.

14 . The computer program product of claim 7 , wherein the parameter setting in the adjusted data packet header is a packet path label in Multi-Protocol Label Switching (MPLS) routing.

15 . A computer system comprising a processor and one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions executable by the processor to cause the processor to perform operations comprising:

selecting, at a first network endpoint, using performance data of a plurality of paths, a first path in the plurality of paths, each of the plurality of paths comprising a data communication path from the first network endpoint through a subset of a plurality of network elements in a data communication network to a second network endpoint;

adjusting, at the first network endpoint, a packet header of a data packet of a first data flow, the adjusting resulting in an adjusted data packet header of an adjusted data packet, wherein a parameter setting, that is an output of an Equal Cost Multi-Path (ECMP) hash function identifying the first path, in the adjusted data packet header causes a first network element in the data communication network to forward the adjusted data packet to a next network element in the data communication network along the first path;

sending, from the first network endpoint, the adjusted data packet of the first data flow, wherein the adjusted data packet causes a first subset of the plurality of network elements in the data communication network to forward the adjusted data packet to the second network endpoint along the first path; and

determining a size comparison between a size of the first data flow with a size of a second data flow, adjusting a second data flow data packet header of a data packet of the second data flow, the adjusting resulting in an adjusted second data flow data packet header of an adjusted second data flow data packet causing the first network element in the data communication network to forward the adjusted second data flow data packet to the next network element in the data communication network along the first path as one taken by the first data flow based on the size comparison wherein an ECMP output adjusts a next network element in the adjusted second data flow data packet header, wherein the next network element is different from at least one network element used by a data flow data packet of a currently executing data flow.

16 . The computer system of claim 15 , further comprising:

measuring, at the first network endpoint, the performance data of the plurality of paths comprising measuring the performance data of a network element of the first subset of the plurality of network elements used by an executing data flow data packet of a currently executing data flow of the first path, responsive to the measuring replacing a parameter setting in the adjusted second data flow data packet header and forwarding the adjusted second data flow data packet along the first path based on the size comparison below a similarity threshold wherein the forwarding avoids the network element used by the executing data flow data packet.

17 . The computer system of claim 16 , wherein measuring the performance data of the plurality of paths further comprises:

selecting, at the first network endpoint, a test path in the plurality of paths;

adjusting, at the first network endpoint, a packet header of a test data packet, the adjusting resulting in an adjusted test data packet header, wherein a parameter setting in the adjusted test data packet header causes the first network element in the data communication network to forward the adjusted test data packet to the next network element in the data communication network along the test path;

sending, from the first network endpoint, the adjusted test data packet; and

measuring, at the first network endpoint, performance data of the sending of the test data packet along the test path.

18 . The computer system of claim 15 , wherein the performance data of the plurality of paths comprises a measurement of a round trip time of a packet along a path in the plurality of paths.

19 . The computer system of claim 15 , wherein the parameter setting in the adjusted data packet header is an input to an Equal Cost Multi-Path (ECMP) hash function, wherein a modulo operation on the input results in an output of the ECMP hash function identifying the first path.

20 . The computer system of claim 15 , wherein the parameter setting in the adjusted data packet header is a packet path label in Multi-Protocol Label Switching (MPLS) routing.