Adaptive endpoint-to-endpoint data path selection for data centers
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.
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.