Network path selection based on total indicator

By introducing a network path selector in the network device, dynamically selecting the network path and aggregating the performance indicators, the problem of static network path configuration in the prior art is solved, and dynamic optimization and performance improvement of the data communication path are achieved.

CN119865451APending Publication Date: 2025-04-22HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410461800.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-10-20
Filing Date
2024-04-17
Publication Date
2025-04-22

AI Technical Summary

Technical Problem

In the prior art, the network path configuration of data communication is static and cannot dynamically adapt to changes in network paths and computing environments, resulting in the impact of data communication performance.

Method used

By introducing a network path selector in a network device, the network path performance indicators are dynamically selected, and the network path performance indicators are aggregated using network path performance indicators and computing environment performance indicators to generate a total performance indicator to optimize the data communication path.

Benefits of technology

It realizes dynamic adjustment of data communication paths according to the performance of real-time network and computing environment, and improves the performance and reliability of data communication.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119865451A_ABST
    Figure CN119865451A_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to network path selection based on a total indicator, in some examples, a network device receives a first indicator of performance of a plurality of computing environments, and receives a second indicator of performance of a plurality of network paths from the network device to the computing environments. The network device aggregates the first indicator and the second indicator to generate a total indicator of performance of the network path. The network device selects a selected network path of the plurality of network paths based on the total indicator for data communication between the client and a computing environment of the plurality of computing environments through the network device.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] A computing environment (such as a data center, a cloud environment, or other types of computing environments) can provide services to clients. Clients can access the computing environment through a network. BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Some implementations of the present disclosure are described with reference to the following figures.

[0003] Figure 1 is a block diagram of an arrangement including a branch gateway that controls use of a network path from a client to a computing environment according to some examples;

[0004] Figure 2 is a flow chart of a process for a branch gateway according to some examples;

[0005] Figure 3 is a block diagram of a storage medium storing machine-readable instructions according to some examples;

[0006] Figure 4 is a block diagram of a system according to some examples; and

[0007] Figure 5 is a flow diagram of a process according to some examples.

[0008] Throughout the drawings, the same reference numerals denote similar, but not necessarily identical, elements. The drawings are not necessarily drawn to scale, and the dimensions of some parts may be exaggerated to more clearly illustrate the examples shown. In addition, the drawings provide examples and / or implementations consistent with the description; however, the description is not limited to the examples and / or implementations provided in the drawings. DETAILED DESCRIPTION

[0009] Clients can communicate data with various computing environments through network devices of the network. Examples of network devices include switches, wireless access points, gateways, concentrators, or other network devices. Software-defined wide area networks (SD-WANs) can be used to manage which network paths are used for data communication between clients and computing environments. In SD-WANs, software can run on network devices (such as branch gateways) to select network paths for any given client. A branch gateway is an edge router and can be coupled to a computing environment through multiple network paths. Clients can selectively connect to different computing environments through branch gateways to provide improved performance and reliability. In some cases, a branch gateway can prioritize data for higher priority clients by selecting a network path with higher performance to transmit data for higher priority clients. However, the distribution of data traffic loads across network paths can be statically configured and therefore cannot dynamically adapt to changing conditions of network paths and computing environments. Therefore, data communication performance may be affected.

[0010] According to some implementations of the present disclosure, when distributing data traffic to different computing environments across network paths, a network device such as a branch gateway may consider a performance indicator of a network path between the network device and the computing environment, as well as a performance indicator of the computing environment. The network path performance indicator and the computing environment performance indicator may be aggregated to produce an overall performance indicator, which is then used by the network device when selecting a network path to a selected computing environment to transmit data for a given client. In some examples, the performance indicator is derived based on a calculated baseline of the value of the indicator and a standard deviation calculated relative to the baseline.

[0011] Figure 1 1 is a block diagram of an example network arrangement including computing environments 102-A and 102-B with which various clients can communicate. In some examples, Figure 1 The network arrangement includes SD-WAN. In other examples, other types of network arrangements are used.

[0012] A "client" may refer to a program or a machine. For example, a program may include an application, an operating system (OS), a virtual machine, a container, or any other type of program. A machine may include a computer (e.g., a desktop computer, a server computer, a notebook computer, a tablet computer, etc.), a smartphone, a gaming device, an Internet of Things (IoT) device, a home appliance, a vehicle, or any other type of electronic device.

[0013] exist Figure 1 In the example of , client 104 is part of high priority group 106, and client 108 is part of low priority group 110. The terms "high priority group" and "low priority group" are used to indicate the relative priorities of different client groups. The priority of the high priority group is higher than the priority of another group of clients. The priority of the low priority group is lower than the priority of another group of clients. Although in Figure 1 Only two priority groups are shown in FIG, but in other examples, there may be more priority groups with different relative priorities from each other. A group of clients may include a single client or multiple clients. Clients may be assigned to a given priority group by a person (e.g., an administrator), a program, or a machine.

[0014] In accordance with Figure 1In the example of , client 104 is connected to branch gateway 114 through switch 112. A switch refers to a forwarding device that can forward packets based on a network address in a data packet, such as a layer 2 network address (e.g., a media access control (MAC) address) or a layer 3 network address (e.g., an Internet Protocol (IP) address). A switch that routes packets based on a layer 3 network address may also be referred to as a router. In other examples, a switch can forward packets based on other forwarding information (such as a label).

[0015] Client 108 is coupled via a wireless link to a wireless access point (AP) 116 that is connected to branch gateway 114. Wireless AP 116 may be, for example, part of a wireless local area network (WLAN).

[0016] More generally, the client is coupled to a network device to allow the client to communicate with a target entity, such as computing environments 102-A and 102-B. Computing environments 102-A and 102-B may include any one or some combination of the following: a cloud environment, a data center, or any other computing environment including resources (e.g., services, hardware resources, etc.) accessible to the client. Figure 1 Only two computing environments are depicted in FIG. 1 , but in other examples, there may be more than two computing environments.

[0017] The priority of a client can be based on the priority of the user of the client. Different users can be associated with different priorities. Clients used by high priority users will be assigned to a high priority group, while clients used by low priority users are assigned to a low priority group. For example, a user can have a priority rating in a range of priority ratings (e.g., a range of 1 to 10, or another range).

[0018] When a new client is associated with a network device, such as switch 112 or wireless AP 116, a priority level of the user of the new client is determined. Based on the determined priority level of the user, the new client is assigned to a given priority group (eg, 106 or 110).

[0019] Each of the clients 104, 108 is capable of transmitting data in an uplink direction from the client to the computing environment or in a downlink direction from the computing environment to the client. The branch gateway 114 can be implemented using a collection of computer systems, which can include a single computer system or multiple computer systems. The branch gateway 114 (or more generally, a network device) can selectively use different network paths to transmit data between the client and the computing environment based on an overall performance indicator, as discussed further below.

[0020] In the present discussion according to some examples, reference is made to the branch gateway 114 selecting different uplinks U1A, U2A, U3A, U1B, U2B, U3B to the computing environments 102-A and 102-B. Selecting an uplink refers to selecting a network path for transmitting data from a client to a computing environment.

[0021] Note that techniques or mechanisms according to some implementations of the present disclosure may also be applied to select a downlink for transmitting data from a computing environment to a client. Uplinks and downlinks are network paths between a branch gateway 114 and computing environments 102-A and 102-B. More generally, a branch gateway 114 may select a network path between a branch gateway 114 and computing environments 102-A and 102-B based on an overall performance indicator of traffic (uplink traffic and / or downlink traffic) communications between a client and computing environments 102-A and 102-B.

[0022] exist Figure 1 In the example of FIG. 1 , there are three uplinks between the branch gateway 114 and each of the computing environments 102-A and 102-B. Specifically, uplinks U1A, U2A, and U3A are connected between the branch gateway 114 and the computing environment 102-A, and uplinks U1B, U2B, and U3B are connected between the branch gateway 114 and the computing system 102-B. In different examples, different numbers of uplinks (or more generally, network paths) can be connected between the branch gateway 114 and the computing environments.

[0023] Uplinks U1A, U2A, U3A connect to a virtual private network (VPN) concentrator 118-A of computing environment 102-A, and uplinks U1B, U2B, U3B connect to a VPN concentrator 118-B of computing environment 102-B. A VPN concentrator refers to a network device that manages multiple VPN connections from clients to computing environments.

[0024] Although reference is made to a VPN concentrator as an example of a network device to which the uplinks connect, in other examples, uplinks U1A, U2A, U3A, U1B, U2B, and U3B may connect to different network devices of computing environments 102-A and 102-B.

[0025] According to some examples of the present disclosure, the branch gateway 114 includes a network path selector 120 that dynamically controls how the client connects to the respective computing environments 102-A and 102-B. The network path selector 120 can collect performance indicators of uplinks (U1A, U2A, U3A, U1B, U2B, U3B) and performance indicators of the computing environments 102-A, 102-B. The network path selector 120 uses the collected performance indicators and information associated with the service associated with the client to select an uplink for transmitting data from the client to the selected computing environment. As discussed further below, the service-related information may include service level agreement (SLA) information associated with the client.

[0026] The performance indicators obtained by the network path selector 120 can be based on the probes sent by the probe engine 122 of the branch gateway 114. The probe engine 122 can send probe packets to the computing environments 102-A and 102-B via uplinks. A "packet" can refer to any unit of data that can be transmitted individually from a source to a destination.

[0027] Each of the network path selector 120 and the detection engine 122 may be implemented with one or more hardware processing circuits, which may include any one or some combination of a microprocessor, a core of a multi-core microprocessor, a microcontroller, a programmable integrated circuit, a programmable gate array, or another hardware processing circuit. Alternatively, each of the network path selector 120 and the detection engine 122 may be implemented with a combination of one or more hardware processing circuits and machine-readable instructions (software and / or firmware) executable on the one or more hardware processing circuits.

[0028] although Figure 1 The detection engine 122 is shown as part of the branch gateway 114 , but in other examples, the detection engine 122 may be separate from the branch gateway 114 .

[0029] The probe engine 122 may send probe packets to the computing environments 102-A and 102-B via uplinks U1A, U2A, U3A, U1B, U2B, and U3B. The probe packets may conform to a probe profile 130 stored in a memory 132 of the branch gateway 114. The memory 132 may be implemented using one or more memory devices, such as any one or some combination of a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, a flash memory device, or another type of memory device.

[0030] In some examples, the probe profile 130 may include any or some combination of the following: information specifying the type of probe packets to be used; a destination address to which the probe packets are to be sent; probe burst information specifying the number of probe packets to be sent simultaneously; probe retry information specifying how many times to retry the probe packets if no response is received; a probe interval specifying the time period between the transmission of bursts of probe packets; or any other information related to the characteristics of the probe packets and the manner in which the probe packets are transmitted.

[0031] In some examples, the type of probe packet specified by the probe profile 130 is a User Datagram Protocol (UDP) packet, such as an Internet Control Message Protocol (ICMP) packet used to perform network diagnostics. In other examples, other types of probe packets may be specified by the probe profile 130.

[0032] Based on the probe packets sent by the probe engine 122, monitoring agents (not shown) in the network including uplinks U1A, U2A, U3A, U1B, U2B, and U3B and monitoring agents (not shown) in the computing environments 102-A and 102-B can obtain measured performance indicators associated with the performance of uplinks U1A, U2A, U3A, U1B, U2B, and U3B and computing environments 102-A and 102-B. The monitoring agent can be in the form of a hardware or software sensor, a machine-readable instruction executed in an electronic device, or other types of monitoring agents.

[0033] The measured performance indicators may be provided by the monitoring agent to the detection engine 122 , which may store the uplink performance indicators 134 and the computing environment performance indicators 136 in the memory 132 .

[0034] Examples of uplink performance indicators 134 include any one or some combination of the following: bandwidth utilization, jitter, delay, packet loss, or any other indicator that provides an indication of how the uplink performs. Bandwidth utilization of a network path (e.g., uplink and / or downlink) may refer to what percentage of the total bandwidth of the network path is used for traffic communications. Jitter of a network path may refer to the variation in the delay of the network path. Delay of a network path may refer to the time delay of data transmitted through the network path. Packet loss may refer to the number of packets lost during transmission on the network path, which may be expressed as a percentage of lost packets, a number of packets lost per unit time, or any other indicator of packet loss.

[0035] Examples of computing environment performance indicators 136 include any one or some combination of the following: bandwidth factor, power usage efficiency, energy efficiency, reliability, throughput, or any other indicator that provides an indication of how the computing environment is performing. The bandwidth factor of the computing environment can refer to the amount of network bandwidth or capacity available for data transmission within the computing environment or between the computing environment and an external network. This bandwidth factor indicates how smoothly data communications can be performed in the computing environment.

[0036] The power usage effectiveness (PUE) of a computing environment evaluates the energy efficiency of the computing environment. PUE measures how effectively a computing environment uses energy. For example, PUE can be based on the relative energy usage of cooling and other support systems compared to the energy usage of information technology (IT) equipment such as servers, storage systems, network equipment, etc. For example, a lower PUE value indicates better energy efficiency.

[0037] The network energy efficiency of a computing environment measures how effectively the computing environment's network infrastructure and operations use energy to support data communications and transmission.

[0038] The reliability of a computing environment provides an indication of the reliability of the computing environment's services, data, and resources. Higher reliability may indicate an increased likelihood that the computing environment's services, data, and resources will continue to be available (i.e., will not be unavailable for an extended period of time). The reliability of a computing environment may indicate the computing environment's ability to perform its tasks without interruption or failure.

[0039] The throughput of a computing environment may refer to any or some combination of data throughput associated with data communications in the computing environment, throughput of machine-readable instructions or hardware resources in performing tasks, or other indicators of the speed at which the computing environment performs tasks.

[0040] Other examples of computing environment performance metrics include: heating, ventilation, and air conditioning (HVAC) efficiency (indicating the efficiency of the HVAC system in the computing environment); greenness metrics (indicating the carbon footprint of the computing environment); security metrics (indicating the security level in the computing environment); financial impact metrics (indicating the financial impact associated with an outage of the computing environment and other costs associated with the computing environment); and so on.

[0041] The memory 132 may also store SLA information 138 associated with the data flow. The data flow may be identified by a combination of the following information elements: source Internet Protocol (IP) address, destination IP address, protocol (used by the data in the data flow), source port, and destination port. The SLA information 138 may also include category information indicating the category of the data flow. Examples of categories of data flows may include any one or some combination of the following: IP voice communication, sensitive data communication, web browsing, social media access, etc.

[0042] The SLA information 138 may also include a threshold profile that includes thresholds for various performance indicators (including performance indicators for network paths such as uplinks). The network path selector 120 may consider whether the measured performance indicators meet the thresholds in the threshold profile as part of selecting a network path for traffic communications for a client. Different data flows may be associated with different SLA information 138 having different threshold profiles.

[0043] For delivering traffic from a given set of clients (single client or multiple clients), Figure 1 In the example of FIG. 1 , there are six possible uplinks, including three uplinks U1A, U2A, and U3A to computing environment 102-A, and three uplinks U1B, U2B, and U3B to computing environment 102-B. Rather than selecting an uplink for a given set of clients based solely on performance metrics associated with uplinks U1A, U2A, U3A, U1B, U2B, and U3B, the network path selector 120 according to some examples of the present disclosure also considers performance metrics associated with computing environments 102-A and 102-B when selecting one of uplinks U1A, U2A, U3A, U1B, U2B, and U3B for transmitting traffic from a given set of clients.

[0044] The performance indicators associated with the uplinks and the performance indicators associated with the computing environment are aggregated to produce an overall performance indicator, and the network path selector 120 uses the overall performance indicator to select which uplink is used to transmit the client's traffic. Selecting a network path to use based on the overall performance indicator is called overall performance-based network path selection.

[0045] In some examples, the network path selector 120 applies overall performance-based network path selection to high priority clients, such as clients 104 of the high priority group 106. However, the network path selector 120 does not apply overall performance-based network path selection to low priority clients, such as clients 108 of the low priority group 110. More generally, the network path selector 120 applies overall performance-based network path selection to clients of a group associated with a priority level that exceeds a specified threshold priority, and does not apply overall performance-based network path selection to clients of a group associated with a priority level that does not exceed a specified threshold priority. For client groups (e.g., the low priority group 110) to which the network path selector 120 does not apply overall performance-based network path selection, best effort network path selection may be applied, in which network paths with available bandwidth are allocated to such clients.

[0046] In some cases, the network path selector 120 may select multiple uplinks for a given set of clients based on the application of the overall performance-based network path selection. These multiple uplinks are referred to as "selected uplinks," and traffic from a given set of clients may be distributed across the selected uplinks to achieve load balancing and / or redundancy.

[0047] When calculating the overall performance metric, the network path selector 120 according to some examples of the present disclosure may perform the following: (1) calculating a deviation-based uplink metric based on one or more performance metrics of the uplink, (2) calculating a computing environment metric based on one or more performance metrics of a computing environment connected to the uplink, and (3) aggregating the deviation-based uplink metric and the computing environment metric (discussed further below).

[0048] Calculating the deviation-based uplink indicator based on the performance indicator involves calculating a baseline for the value of the performance indicator and calculating a standard deviation of the value of the performance indicator from the baseline. The baseline for the value of the performance indicator is derived by applying a baseline algorithm, which is explained further below.

[0049] Once the baseline is calculated, the standard deviation of the value of the performance indicator from the baseline can be calculated, such as according to Equation 1 below:

[0050]

[0051] where σ represents the standard deviation, μ represents the baseline, N represents the total number of observed performance indicator values, and X i Indicates the performance indicator value.

[0052] The following table shows examples of performance indicator values ​​associated with uplinks and computing environments, and how to use the performance indicator values ​​to derive performance scores for the uplinks and computing environments. Although the table includes specific values, note that these values ​​are provided only for example, as different scenarios will result in different values.

[0053] The following is an example with four uplinks (U1, U2, U3, U4) and two data centers (DC1, DC2). Uplinks U1 and U2 are connected to data center DC1, and uplinks U3 and U4 are connected to data center DC2.

[0054] For a given client set, the network path selector 120 identifies an uplink having a performance metric that satisfies a threshold profile for a data flow for the given client set, wherein the threshold profile is included in the SLA information 138 for the data flow. Any uplink whose performance metric does not satisfy the threshold profile is ignored by the network path selector 120. In the example discussed here, it is assumed that each of the uplinks U1, U2, U3, and U4 has a performance metric (e.g., any one or some combination of bandwidth utilization, jitter, delay, and packet loss) that satisfies a corresponding threshold (e.g., bandwidth utilization threshold, jitter threshold, delay threshold, and packet loss threshold) in the threshold profile of the data flow. For example, if the bandwidth utilization of a particular uplink does not satisfy the bandwidth utilization threshold, the jitter of a particular uplink does not satisfy the jitter threshold, the delay of a particular uplink does not satisfy the delay threshold, and / or the packet loss of a particular uplink does not satisfy the packet loss threshold, then the particular uplink is ignored.

[0055] Table 1 below includes four columns representing bandwidth utilization, jitter, delay, and packet loss of uplink U1. Although four specific performance indicators are depicted, it is noted that different performance indicators may be employed in different examples.

[0056] For each of the performance indicators in the four columns of Table 1, the performance indicator values ​​observed at times t1, t2, t3, t4, t5, ..., tz are listed. Note that there may be more observed performance indicator values ​​at additional time points.

[0057] Table 1 (uplink U1)

[0058]

[0059] The "Baseline" row of Table 1 includes baseline values ​​for each of the four performance indicators of uplink U1 based on the indicator values ​​observed at different points in time. Thus, for example, the baseline for the bandwidth utilization indicator is derived from the bandwidth utilization indicator values ​​observed at t1, t2, t3, t4, t5, ..., tz; the baseline for the jitter indicator is derived from the jitter indicator values ​​observed at t1, t2, t3, t4, t5, ..., tz; the baseline for the delay indicator is derived from the delay indicator values ​​observed at t1, t2, t3, t4, t5, ..., tz; and the baseline for the packet loss indicator is derived from the packet loss indicator values ​​observed at t1, t2, t3, t4, t5, ..., tz.

[0060] The "Standard Deviation" row of Table 1 includes standard deviation values ​​for each of the four performance metrics based on the metric values ​​observed at different time points and the corresponding baselines. The standard deviation for each of the four performance metrics (bandwidth utilization, jitter, delay, and packet loss) is calculated according to Equation 1 above.

[0061] The "Normalized Standard Deviation" row of Table 1 includes the normalized standard deviation values ​​for each of the four performance indicators. The values ​​of the normalized standard deviation of the performance indicators can range from [-1 to 1]. A negative normalized standard deviation refers to the standard deviation on the first side of the baseline, while a positive normalized standard deviation refers to the standard deviation on the second side of the baseline.

[0062] Note that as the probe engine 122 sends the probe packets, the network path selector 120 continuously receives the performance indicator values. Therefore, the baseline and standard deviation are also continuously updated. Therefore, over time, multiple standard deviations can be calculated for each performance indicator, including the current standard deviation σ of the indicator m(x) current (m(x)), where x∈{bandwidth utilization, jitter, delay, packet loss}. The previous standard deviation is also calculated for the indicator m(x). Standard deviation σ current (m(x)) is calculated according to Equation 1.

[0063] For the current standard deviation σ current (m(x)), normalized standard deviation σ current (m(x)) Normalized The calculation is as follows:

[0064]

[0065] where σ avg (m(x)) is the average of the last N (N>1) standard deviations that have been calculated for the uplink, σ max (m(x)) is the maximum value among the last N standard deviations of the uplink, σ min (m(x)) is the minimum of the last N standard deviations for the uplink.

[0066] Given the four normalized standard deviation values ​​of uplink U1, σ(bandwidth utilization) Normalized ,σ(jitter) Normalized ,σ(latency) Normalized and σ(packet loss) Normalized , according to equations 3 and 4, the normalized total uplink path score Path_Score(U1) of the uplink U1 is obtained Normalized .

[0067] Path_Score(U1) Aggregate

[0068] =σ(bandwidth utilization) Normalized +σ(jitter) Normalized

[0069] +σ(latebcy) Normalized +σ(packet loss) Normalized , (Equation 3)

[0070] Where Equation 3 yields the total uplink path score Path_Score(U1) for uplink U1 Aggregate , which is the sum of the normalized standard deviation values ​​of bandwidth utilization, jitter, delay, and packet loss metrics.

[0071] Similar calculations for uplinks U2, U3, and U4 produce the corresponding total uplink path score Path_Score(U2) Aggregate 、Path_Score(U3) Aggregate and Path_Score(U4) Aggregate Given the total uplink path scores of uplinks U1, U2, U3 and U4, the normalized total uplink path score of uplink U1 is Path_Score(U1) Normalized The calculation is as follows:

[0072]

[0073] Where Path_Aggr_Path_Score is Path_Score(U1) Aggregate 、Path_Score(U2) Aggregate 、Path_Score(U3) Aggregate and Path_Score(U4) Aggregate The average value of Path_Aggr_Path_Socre is Path_Score(U1) Aggregate 、Path_Score(U2) Aggregate 、Path_Score(U3) Aggregate and Path_Score(U4) Aggregate And Path_Aggr_Path_Score is Path_Score(U1) Aggregate 、Path_Score(U2) Aggregate 、Path_Score(U3) Aggregate and Path_Score(U4) Aggregate The minimum value in .

[0074] According to Equation 4 and Table 1, the normalized total uplink path score of uplink U1 is -0.016938832.

[0075] The following Table 2 includes four columns representing bandwidth, jitter, delay and packet loss of the uplink U2.

[0076] Table 2 (uplink U2)

[0077]

[0078] Normalized total uplink path score Path_Score(U2) of uplink U2 Normalized The calculation is as follows:

[0079]

[0080] According to Equation 5 and Table 2, the normalized total uplink path score of uplink U2 is 0.163564198.

[0081] Table 3 (Uplink U3)

[0082]

[0083] Normalized total uplink path score Path_Score(U3) of uplink U3 Normalized The calculation is as follows:

[0084]

[0085] According to Equation 6 and Table 3, the normalized total uplink path score of uplink U3 is -0.573312683.

[0086] Table 4 (Uplink U4)

[0087]

[0088] Normalized total uplink path score Path_Score(U4) of uplink U4 Normalized The calculation is as follows:

[0089]

[0090] According to Equation 7 and Table 4, the normalized total uplink path score of uplink U4 is 0.426687317.

[0091] Table 5 lists example normalized performance indicator values ​​for data centers DC1 and DC2, including normalized bandwidth factor, normalized power usage efficiency, normalized energy efficiency, normalized reliability, and normalized throughput. Although five specific performance indicators are depicted in Table 5, it is noted that different performance indicators may be used in different examples.

[0092] The last column of Table 5 is the normalized total data center score obtained by calculating the sum of the normalized bandwidth factor, normalized power usage efficiency, normalized energy efficiency, normalized reliability, and normalized throughput (according to Equation 11 or 12 below).

[0093] Table 5

[0094]

[0095] Each normalized performance index value in Table 5 is obtained using the following equation:

[0096]

[0097] Where MetricValue represents the value of the performance indicator (e.g., bandwidth factor), Average_Metric represents the average value of the values ​​of the performance indicator across the two data centers DC1 and DC2 (e.g., the average value of the values ​​of the bandwidth factor in DC1 and DC2), Max_Metric represents the maximum value of the values ​​of the performance indicator across the two data centers DC1 and DC2 (e.g., the maximum value of the values ​​of the bandwidth factor in DC1 and DC2), and Min_Metric represents the minimum value of the values ​​of the performance indicator across the two data centers DC1 and DC2 (e.g., the minimum value of the values ​​of the bandwidth factor in DC1 and DC2). Using Equation 8, the following normalized DC performance indicator of DC1 can be obtained: Bandwidth_Factor(DC1) Normalized ,Power_Usage_Effectiveness(DC1) Normalized 、Energy_Efficiency(DC1) Normalized 、Reliability(DC1) Normalized and Throughput(DC1) Normalized . Obtain the following normalized DC performance index for DC2: Bandwidth_Factor(DC2) Normalized ,Power_Usage_Effectiveness(DC2) Normalized 、Energy_Efficiency(DC2) Normalized 、Reliability(DC2) Normalized and Throughput(DC2) Normalized .

[0098] The total DC score for DC1 is calculated as follows:

[0099] DC_Score(DC1) Aggregate

[0100] =Bandwidth_Factor(DC1) Normalized

[0101] +Power_Usage_Effectiveness(DC1) Normalized

[0102] +Energy_Efficiency(DC1) Normalized +Reliability(DC1) Normalized

[0103] +Throughput(DC1) Normalized . (Equation 9)

[0104] The total DC score for DC2 is calculated as follows:

[0105] DC_Score(DC2) Aggregate

[0106] =Bandwidth_Factor(DC2) Normalized

[0107] +Power_Usage_Effectiveness(DC2) Normalized

[0108] +Energy_Efficiency(DC1) Normalized +Reliability(DC2) Normalized

[0109] +Throughput(DC2) Normalized . (Equation 10)

[0110] The normalized total DC score of DC1 was calculated as follows:

[0111]

[0112] Where Avg_Aggr_DC_Score is DC_Score(DC1) Aggregate and DC_Score(DC2) Aggregate The average value of, Max_Aggr_DC_Score is DC_Score(DC1) Aggregate and DC_Score(DC2) Aggregate The maximum value of, Min_Aggr_DC_Score is DC_Score(DC1) Aggregate and DC_Score(DC2) Aggregate The minimum value in .

[0113] The normalized total DC score for DC2 is calculated as follows:

[0114]

[0115] Table 6 shows an example of a normalized final total score calculated for each of the uplinks U1 to U4. The "Normalized Final Total Score" column of Table 6 includes the normalized final total score for each uplink calculated by calculating the product of the normalized total uplink path score (derived from equations 4-7) and the corresponding normalized total DC score (derived from equations 11 and 12).

[0116] The normalized final total scores for uplinks U1, U2, U3 and U4 are calculated according to equations 17-20 below.

[0117] Final score of uplink U1 Final_Score(U1) Aggregate The calculation is as follows:

[0118] Final_Score(U1) Aggregate =Path_Score(U1) Normalized +DC_Score(DC1) Aggregate . (Equation 13)

[0119] Final score of uplink U2 Final_Score(U2) Aggregate The calculation is as follows:

[0120] Final_Score(U2) Aggregate =Path_Score(U2) Normalized +DC_Score(DC1) Aggregate (Equation 14) The final total score of uplink U3 Final_Score(U3) Aggregate The calculation is as follows:

[0121] Final_Score(U3) Aggregate =Path_Score(U3) Normalized +DC_Score(DC2) Aggregate . (Equation 15)

[0122] Final score of uplink U4 Final_Score(U4) Aggregate The calculation is as follows:

[0123] Final_Score(U4) Aggregate =Path_Score(U4) Normalized +DC_Score(DC2) Aggregate . (Equation 16)

[0124] Based on the above, the normalized final score of the uplink U1 is Final_Score(U1) Normalized The calculation is as follows:

[0125]

[0126] Where Avg_Aggr_Final_Score is Final_Score(U1) Aggregate 、Final_Score(U2) Aggregate 、Final_Score(U3) Aggregate and Final-Score(U4) Aggregate The average value of, Max_Aggr_Final_Score is Final_Score(U1) Aggregate 、Final_Score(U2) Aggregate 、Final_Score(U3) Aggregate and Final-Score(U4) Aggregate and Min_Aggr_Final_Score is the maximum value of Final_Score(U1) Aggregate 、Final_Score(U2) Aggregate 、Final_Score(U3) Aggregate and Final-Score(U4) Aggregate The minimum value in .

[0127] Similarly, the normalized final score of uplink U2 is Final_Score(U2) Normalized The calculation is as follows:

[0128]

[0129] Similarly, the normalized final score of uplink U3 is Final_Score(U3) Normalized The calculation is as follows:

[0130]

[0131] Similarly, the normalized final score of uplink U4 is Final_Score(U4) Normalized The calculation is as follows:

[0132]

[0133] Therefore, the normalized final total score of uplink U1 is based on the sum of the normalized total uplink path score of uplink U1 and the normalized total DC score of the data center to which uplink U1 is connected (in this case, DC1). Similarly, the normalized final total score of uplink U2 is based on the sum of the normalized total uplink path score of uplink U2 and the normalized total DC score of the data center to which uplink U2 is connected (in this case, DC1); the normalized final total score of uplink U3 is based on the sum of the normalized total uplink path score of uplink U3 and the normalized total DC score of the data center to which uplink U3 is connected (in this case, DC2); and the normalized final total score of uplink U4 is based on the sum of the normalized total uplink path score of uplink U4 and the normalized total DC score of the data center to which uplink U4 is connected (in this case, DC2).

[0134] Table 6

[0135]

[0136] More generally, the final total score for a given uplink is based on a mathematical aggregation of the uplink path score for the given uplink and the computing environment score for the computing environment to which the given uplink is connected. The uplink path score for a given uplink can itself be the sum of multiple performance indicators for a given uplink. The uplink path score for a given uplink can be normalized to be within a given value range, such as within the range [-1, 1] or any other value range. Similarly, the computing environment score for a computing environment can be normalized to be within a given value range.

[0137] Based on the normalized final total scores of uplinks U1 to U4 in Table 6, uplink U2 has the highest normalized final total score. The network path selector 120 can select uplink U2 for transmitting the client's business. In other examples, the network path selector 120 can select multiple uplinks for transmitting the client's business. In such a latter example, according to Table 6, uplinks U1 and U2 have higher normalized final total scores than uplinks U3 and U4, and therefore the network path selector 120 can select uplinks U1 and U2 for transmitting the client's business.

[0138] More generally, M (M ≥ 1) uplinks may be selected for transmitting traffic for a given set of clients. If M > 1, the traffic for a given set of clients may be distributed across the M uplinks according to the relative values ​​of the normalized final total scores of the M uplinks. For example, if uplink U(q) has a normalized final total score S(q), and uplink U(r) has a normalized final total score S(r), then the distribution of traffic for a given set of clients across uplinks U(q) and U(r) may be as follows: A first percentage of traffic for a given client The second percentage of the traffic of a given client is transmitted via the uplink U(q) and More generally, given M>1 selected uplinks, the percentage of a given client's traffic transmitted via uplink U(i) (where i=1 to M) is calculated as

[0139]

[0140] Effectively, the network path selector 120 distributes traffic from the set of clients to the computing environment(s) across the first selected uplink and the second selected uplink according to a ratio based on the normalized final total scores of the first selected uplink and the second selected uplink.

[0141] Various examples of how to calculate a baseline, such as the baseline values ​​in Tables 1 to 4 above, are described below. A baseline algorithm may be used to calculate a baseline value for a performance indicator (e.g., bandwidth utilization, jitter, delay, or packet loss). In one example, the baseline algorithm may generate a baseline based on any or some combination of the following: a mean of the performance indicator values, a median of the performance indicator values, a most frequent value in the performance indicator values, a maximum value in the performance indicator values, a moving average of the performance indicator values, a Z-score (also referred to as a standard score) of the performance indicator values, a value generated by a seasonal trend decomposition, a baseline value generated by a neural network, or a baseline generated by a machine learning model. Given a set of historical performance indicator values ​​collected over a given time interval, the network path selector 120 (or another entity) may calculate a baseline based on the set of performance indicator values.

[0142] The most frequent value among the performance indicator values ​​is determined by identifying which of the performance indicator values ​​occurs most frequently among the set of performance indicator values.An example of a neural network that can be used to generate a baseline based on a set of performance indicator values ​​is a long short-term memory (LSTM) recurrent neural network.

[0143] The baseline value may be updated by a baseline algorithm, such as at regular intervals or in response to other events. Regular intervals may include intervals of a given number of hours, a day, a given number of days, a week, or any other time interval.

[0144] In an example where a machine learning model is used to generate a baseline value, a set of performance indicator values ​​can be provided as an input to the machine learning model, and the machine learning model generates an output (baseline value) based on the input. In some examples, the machine learning model can be a support vector machine (SVM), such as a class of SVMs.

[0145] A training data set of performance indicator values ​​can be used to train a machine learning model (e.g., SVM). The training data set can indicate which baseline values ​​correspond to which performance indicator value sets.

[0146] An example of a class of SVMs is the nu-SVM, as reported on October 12, 2023, downloaded from https: / / scikit- learn.org / stable / modules / generated / sklearn.svm.NuSVC.html#sklearn.svm.NuSVC The nu-SVM is described in the reference entitled "sklearn.SVM.NuSVC". The nu-SVM includes various tunable hyperparameters, such as gamma and nu. Gamma controls the number of decision thresholds. A smaller gamma value (e.g., 0.1) may return fewer decision thresholds (baseline), while a larger gamma value (e.g., >1) may return a larger number of decision thresholds. The nu hyperparameter controls the percentage of data that is considered an outlier. nu is a hyperparameter of the nu-SVM that is tuned based on the distribution of the data.

[0147] In some examples, a large set of performance indicator values ​​can be split into smaller data chunks without changing the data distribution. Data splitting is performed so that the distribution of each data chunk after the split remains unchanged, which can be achieved when the variance of the original set of performance indicator values ​​is almost the same as the variance of each data chunk after the split, for example, the variance of each data chunk is [90-110]% of the variance of the original set of performance indicator values. The nu hyperparameter can be tuned over multiple training cycles. This helps ensure that the machine learning algorithm produces results in a more timely manner. Baselining has an exponential time complexity, so determining a baseline value based on an input set of performance indicator values ​​can be expensive in terms of processing resources consumed. A large set of performance indicator values ​​can be split into smaller chunks, which can allow the nu-SVM to determine the baseline value more efficiently.

[0148] Figure 2 Based on some examples Figure 1 Flowchart of process 200 performed by network path selector 120 of FIG. Process 200 is initiated in response to a request received at branch gateway 114 to send traffic upstream to one or more computing environments for a given set of clients. Network path selector 120 receives (at 202) an uplink performance indicator (e.g., from Figure 1 134) and computing environment performance indicators (e.g., from memory 132) Figure 2 136) retrieved from memory 132).

[0149] The network path selector 120 identifies (at 204) from the set of available uplinks to the computing environment which uplinks in the set of available uplinks have a threshold profile that satisfies the data flow for a given set of clients (e.g., included in the Figure 1 The uplink subset may include less than all uplinks in the available uplink set, or may include all uplinks in the available uplink set. For example, if the available uplink set includes Figure 1 If the uplinks are U1A, U2A, U3A, U1B, U2B and U3B, the uplink subset may include a portion of U1A, U2A, U3A, U1B, U2B and U3B.

[0150] For each respective uplink in the uplink subset, the network path selector 120 calculates (at 206, 208, 210, and 212) the following values. The network path selector 120 calculates (at 206) a baseline value of an uplink performance indicator (e.g., bandwidth utilization, jitter, delay, and packet loss) for the respective uplink, such as shown in Tables 1 to 4 above. The network path selector 120 calculates (at 208) a standard deviation of the uplink performance indicator for the respective uplink from the baseline. The network path selector 120 calculates (at 210) a normalized standard deviation of the uplink performance indicator for the respective uplink. The network path selector 120 calculates (at 212) a normalized total uplink score based on the normalized standard deviation of the performance indicator for the respective uplink.

[0151] For each respective computing environment in the plurality of computing environments to which the uplink subset is connected, the network path selector 120 calculates (at 214 and 216) the following values. The network path selector 120 calculates (at 214) a normalized performance indicator value for the respective computing environment (such as data center DC1 or DC2 in Table 5 above). The normalized performance indicator value may include a normalized bandwidth factor, a normalized power usage effectiveness, a normalized energy efficiency, a normalized reliability, and / or a normalized throughput, as shown in Table 5. The network path selector 120 calculates (at 216) a normalized total computing environment score, such as the normalized total data center score in the last column of Table 5 above.

[0152] For each corresponding uplink in the subset of uplinks, the network path selector 120 calculates (at 218) a normalized final score for the corresponding uplink based on aggregating the normalized total uplink score for the corresponding uplink and the normalized total computing environment score for the computing environment to which the corresponding uplink is connected.

[0153] The network path selector 120 selects (at 220) an uplink for transmitting traffic for a given set of clients from a distributed set of uplinks (including M ≥ 1). If M>1, the network path selector 120 may distribute (at 222) the traffic for a given set of clients proportionally, such as according to Equation 21 above.

[0154] In some examples, traffic for a given session of a client is sent on the same uplink (i.e., traffic for a given session of a client is not distributed across multiple uplinks). A "session" may refer to any individually identifiable data communication established using a session establishment procedure. For example, a session may be identified by a session identifier.

[0155] The network path selector 120 can use the response by Figure 1 The available uplinks are monitored by measuring performance indicators of the probe packets sent by the probe engine 122 of the client. Based on the monitoring, the network path selector 120 can identify uplinks that meet the threshold profile of the client and select (multiple) uplinks for the client's business based on a total performance score (such as the normalized final score discussed above). The total performance score is based on performance indicators of both the uplink and the computing environment. The performance indicator of the uplink can be based on a standard deviation calculated from a baseline of the performance indicator of the uplink.

[0156] In examples where multiple uplinks are selected for a client, traffic for a given communication session of the client may be forwarded to one or more computing environments.

[0157] The network path selector 120 can dynamically adapt the selection of the network path to accommodate the load and performance of the uplink and computing environment, as well as the needs of the client. Changing conditions will cause the network path selector 120 to change the uplink selection. If a different uplink is to be used for an existing session, a new uplink is selected for use according to a make-before-break technique, and the existing uplink is deselected, which ensures that the new uplink is available for use before the existing uplink is deselected. In this way, the client can obtain a seamless connection.

[0158] Figure 3 is a block diagram of a non-transitory machine-readable or computer-readable storage medium 300 storing machine-readable instructions that, when executed, cause a network device to perform various tasks. The network device may be, for example, Figure 1Branch gateway 114.

[0159] The machine-readable instructions include instructions for receiving a plurality of computing environments (e.g., Figure 1 The first indicator of the performance of the computing environment (102-A and 102-B) of the first indicator receiving instruction 302. The first indicator may include a normalized computing environment score (eg, a normalized total DC score calculated according to equations 11 and 12 discussed above).

[0160] The machine-readable instructions include instructions for receiving a plurality of network paths (e.g., Figure 1 The second indicator may include a network path score (e.g., a normalized total uplink score (e.g., a normalized total uplink path score according to equations 4-7 discussed above) and a second performance indicator of a second indicator of performance of U1A, U2A, U3A, U1B, U2B, and U3B). The second indicator may include a network path score (e.g., a normalized total uplink path score (e.g., a normalized total uplink path score according to equations 4-7 discussed above).

[0161] The machine readable instructions include first second indicator aggregation instructions 306 for aggregating the first indicator and the second indicator to produce an overall indicator of performance of the network path. The overall indicator may include, for example, a normalized final overall score according to equations 17-20 discussed above in conjunction with Table 6.

[0162] The machine-readable instructions include network path selection instructions 308 for selecting, at the network device, a selected network path of the plurality of network paths based on the overall indicator for use in communicating data between the client and a computing environment of the plurality of computing environments through the network device.

[0163] In some examples, for each respective network path in the plurality of network paths, the machine-readable instructions calculate a baseline based on a measurement of an indicator representing the performance of the respective network path, and calculate a second indicator of the performance of the respective network path based on the baseline. In some examples, the baseline is calculated by a machine learning model (e.g., SVM).

[0164] In some examples, for each respective network path in the plurality of network paths, the machine-readable instructions calculate a standard deviation of the measured value of the metric relative to a baseline. The second indicator of performance of the respective network path is based on the standard deviation.

[0165] In some examples, the metric is a first metric and the baseline is a first baseline. The machine-readable instructions also calculate a second baseline based on a measured value of a second metric representing performance of the corresponding network path. The second indicator of performance of the corresponding network path is also based on the second baseline.

[0166] In some examples, the machine-readable instructions cause the network device to send a probe packet along a plurality of network paths, obtain measurements of a metric representing performance of the plurality of network paths based on the probe packet, and derive the second indicator based on the measurements of the metric.

[0167] In some examples, the machine-readable instructions identify priorities associated with a plurality of clients. The network path is selected for a client associated with a higher priority than another client in the plurality of clients.

[0168] In some examples, the selected network path is a first selected network path for data communication for the set of clients, and the overall indicator determines, at the network device, selection of a second selected network path from among a plurality of network paths for data communication between the set of clients and a computing environment through the network device based on the overall indicator.

[0169] In some examples, the second indicator of performance of the first selected network path has a first value, and the second indicator of performance of the second selected network path has a second value. The network device distributes data from the set of clients across the first selected network path and the second selected network path to the computing environment according to a ratio based on the first value and the second value (and possibly other values).

[0170] In accordance with Figure 3 In some examples, various computations are performed at network devices, such as at Figure 1 At the branch gateway 114. In other examples, such as Figure 4 As shown, computations may be performed by system 400 separate from a network device such as branch gateway 114 .

[0171] System 400 includes a hardware processor 402 (or multiple hardware processors) and a storage medium storing machine-readable instructions 404. The hardware processor may include a microprocessor, a core of a multi-core microprocessor, a microcontroller, a programmable integrated circuit, a programmable gate array, or another hardware processing circuit.

[0172] The machine readable instructions are executable on the hardware processor 402 to perform various tasks. The machine readable instructions executable on the hardware processor may refer to instructions executable on a single hardware processor or instructions executable on multiple hardware processors.

[0173] The machine-readable instructions in the storage medium 404 include first performance indicator receiving instructions 406 for receiving a first indicator of performance of a plurality of computing environments.

[0174] The machine-readable instructions in the storage medium 404 include second performance indicator receiving instructions 408 for receiving a second indicator of performance of a plurality of network paths from the network device to the computing environment.

[0175] The machine-readable instructions in the storage medium 404 include first second indicator aggregation instructions 410 for aggregating the first indicator and the second indicator to produce an overall indicator of the performance of the network path.

[0176] The machine-readable instructions in storage medium 404 include overall indicator sending instructions 412 for sending an overall indicator from system 400 to a network device. The overall indicator can be used at the network device to select a selected network path of a plurality of network paths based on the overall indicator for data communication between a client and a computing environment of the plurality of computing environments through the network device.

[0177] Figure 5 5 is a flow diagram of a process 500 that may be performed, for example, by a network device. The process 500 includes receiving (at 502) at the network device a first indicator of performance of a plurality of computing environments. The process 500 includes receiving (at 504) at the network device an indicator representing performance of a plurality of network paths from the network device to the computing environments. The indicator may include bandwidth utilization of the network paths, jitter of the network paths, latency of the network paths, or packet loss of the network paths.

[0178] For each respective network path in the plurality of network paths, the network device calculates (at 506) a baseline based on an indicator representing the performance of the respective network path, calculates (at 508) a standard deviation of the indicator relative to the baseline, and calculates (at 510) a second indicator of the performance of the respective network path based on the standard deviation. The baseline is calculated using a baseline algorithm. For example, the standard deviation is calculated according to Equation 1. The calculations at 506, 508, and 510 produce a plurality of second indicators for the plurality of network paths.

[0179] Process 500 includes aggregating (at 512) the first indicator and the second indicator to produce an overall indicator of the performance of the network path. The overall indicator may include, for example, a normalized final overall score according to Equations 17-20.

[0180] Process 500 includes selecting (at 514) a selected network path of the plurality of network paths for communicating data between the client and a computing environment of the plurality of computing environments through the network device based on the overall indicator.

[0181] Storage media (e.g. Figure 3 300 or Figure 4404) may include any one or some combination of the following: a semiconductor memory device, such as DRAM or SRAM, an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and flash memory; a disk, such as a fixed disk, a floppy disk, and a removable disk; another magnetic medium, including a tape; an optical medium, such as a compact disk (CD) or a digital video disk (DVD); or another type of storage device. Note that the instructions discussed above may be set on one computer-readable or machine-readable storage medium, or alternatively, may be set on multiple computer-readable or machine-readable storage media distributed in a large system that may have multiple nodes. Such one or more computer-readable or machine-readable storage media are considered to be part of an article (or product). An article or product may refer to any manufactured single component or multiple components. One or more storage media may be located in a machine that runs machine-readable instructions, or at a remote site from which machine-readable instructions can be downloaded over a network for execution.

[0182] In the present disclosure, unless the context clearly indicates otherwise, the use of the terms "a", "an" or "the" shall also include plural forms. In addition, when used in the present disclosure, the terms "includes", "including", "comprises", "comprising", "have" or "aving" specify the presence of the elements described, but do not exclude the presence or addition of other elements.

[0183] In the above description, many details are presented to provide an understanding of the subject matter disclosed herein. However, implementations may be practiced without these details. Other implementations may include modifications and variations to the above details. The appended claims are intended to cover such modifications and variations.

Claims

1. A non-transitory machine-readable storage medium comprising instructions that, when executed, cause a network device to: receiving a first indicator of performance of a plurality of computing environments; receiving a second indicator of performance of a plurality of network paths from the network device to the computing environment; aggregating the first indicator and the second indicator to produce an overall indicator of performance of the network path; as well as A selected network path of the plurality of network paths is selected at the network device based on the overall indicator for communication of data between a client and a computing environment of the plurality of computing environments through the network device.

2. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions, when executed, cause the network device to: For each respective network path in the plurality of network paths: calculating a baseline based on a measured value of a metric representative of the performance of the corresponding network path, and The second indicator of the performance of the corresponding network path is calculated based on the baseline.

3. The non-transitory machine-readable storage medium of claim 2, wherein the instructions, when executed, cause the network device to: calculating the standard deviation of the measured value of the indicator relative to the baseline, Wherein the second indicator of the performance of the respective network path is based on the standard deviation.

4. The non-transitory machine-readable storage medium of claim 2, wherein the metric is selected from bandwidth utilization of the corresponding network path, jitter of the corresponding network path, latency of the corresponding network path, or packet loss of the corresponding network path.

5. The non-transitory machine-readable storage medium of claim 2, wherein the metric is a first metric and the baseline is a first baseline, and wherein the instructions, when executed, cause the network device to: calculating a second baseline based on a measured value of a second indicator representing the performance of the corresponding network path, Wherein the second indicator of the performance of the corresponding network path is also based on the second baseline.

6. The non-transitory machine-readable storage medium of claim 2, wherein the instructions, when executed, cause the network device to: The baseline is calculated using a machine learning model that receives as input the measured values ​​of the indicator.

7. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions, when executed, cause the network device to: causing the network device to send a probe packet along the plurality of network paths; obtaining, based on the probe packets, measurements of indicators representing the performance of the plurality of network paths; as well as The second indicator is derived based on the measured value of the metric.

8. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions, when executed, cause the network device to: The first indicator of the performance of a first computing environment among the plurality of computing environments is calculated based on a metric related to one or more of power usage or energy efficiency of the first computing environment.

9. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions, when executed, cause the network device to: The first indicator of the performance of the first computing environment is calculated based on a metric related to one or more of a bandwidth factor, reliability, throughput, heat, ventilation and air conditioning (HVAC) efficiency, a greenness metric, a security metric, or a financial impact metric of the first computing environment among the multiple computing environments.

10. The non-transitory machine-readable storage medium of claim 1, wherein the instructions, when executed, cause the network device to: Identifies the priorities associated with multiple clients, Wherein the selected network path is for a client of the plurality of clients having a higher associated priority than another client.

11. The non-transitory machine-readable storage medium of claim 1 , wherein the selected network path is a first selected network path for data communication for a set of clients, and wherein the overall indicator determines, at the network device, selection of a second selected network path among the plurality of network paths based on the overall indicator for data communication between the set of clients and the computing environment via the network device.

12. The non-transitory machine-readable storage medium of claim 11, wherein the second indicator of the performance of the first selected network path has a first value and the second indicator of the performance of the second selected network path has a second value, and wherein the network device is to distribute data from the set of clients across the first selected network path and the second selected network path to the computing environment according to a ratio based on the first value and the second value.

13. The non-transitory machine-readable storage medium of claim 12, wherein the first value is based on a first standard deviation of the indicator of the performance of the first selected network path, and the second value is based on a second standard deviation of the indicator of the performance of the second selected network path.

14. The non-transitory machine-readable storage medium of claim 1, wherein the selected network path is associated with a metric that satisfies a threshold profile for a data flow for the client.

15. The non-transitory machine-readable storage medium of claim 1, wherein the first indicator is based on a plurality of performance indicators associated with each of the plurality of computing environments, and the second indicator is based on a plurality of performance indicators associated with each of the plurality of network paths.

16. A system comprising: Hardware processor; as well as A non-transitory storage medium comprising instructions executable on the hardware processor to: receiving a first indicator of performance of a plurality of computing environments; receiving a second indicator of performance of a plurality of network paths from a network device to the computing environment; aggregating the first indicator and the second indicator to produce an overall indicator of performance of the network path; as well as The overall indicator is sent from the system to the network device, and the overall indicator is usable at the network device to select a selected network path of the plurality of network paths based on the overall indicator for data communication between a client and a computing environment of the plurality of computing environments through the network device.

17. The system of claim 16, wherein the instructions are executable on the hardware processor to: For each respective network path in the plurality of network paths: calculating a baseline based on a measured value of a metric representative of the performance of the corresponding network path, and The second indicator of the performance of the corresponding network path is calculated based on the baseline.

18. The system of claim 17, wherein the instructions are executable on the hardware processor to: calculating the standard deviation of the measured value of the indicator relative to the baseline, Wherein the second indicator of the performance of the respective network path is based on the standard deviation.

19. A method comprising: receiving, at a network device, a first indicator of performance of a plurality of computing environments; receiving, at the network device, metrics representing performance of a plurality of network paths from the network device to the computing environment; For each respective network path in the plurality of network paths: calculating, at the network device, a baseline based on the metric representative of the performance of the corresponding network path, calculating, at the network device, a standard deviation of the metric relative to the baseline, and calculating a second indicator of the performance of the corresponding network path based on the standard deviation, wherein a plurality of second indicators are calculated for the plurality of network paths; aggregating, by the network device, the first indicator and the second indicator to produce an overall indicator of performance of the network path; as well as A selected network path of the plurality of network paths is selected at the network device based on the overall indicator for communication of data between a client and a computing environment of the plurality of computing environments through the network device.

20. The method of claim 19, wherein the calculation of the baseline uses a machine learning model that receives as input the metric representing the performance of the corresponding network path.