Patent Description:
For example, <CIT> discloses method and system for transmitting data over a network from plurality of edge devices to a plurality of destination devices, wherein the priority, security level, route and/or destination of the data to be transmitted are changed on a detected non-network based event or state change, before transferring it over the network. Further, <CIT> discloses method and system for transmitting data over a network from a subscriber to a service node, wherein the data transmission is rerouted to another service node when receiving a notification from a service layer of the service node in response to detecting that the performance level of the service differs from the expected performance level. Further, <CIT> discloses method and system for transmitting data from a plurality of redundant sources over a network to a receiver, wherein the data transmission is rerouted from another redundant source when detecting, by a network device, that the redundant source becomes inactive. Furthermore, <CIT> discloses method and system of routing IP telephony data packet communications, wherein the preamble of the appended independent claim <NUM> is based on this document.

This Summary is not intended to identify key features or essential features of the claimed subject matter.

The subject-matter of the invention is defined by the appended independent claim <NUM>, while some advantageous embodiments are defined in the appended dependent claims. The inventive method for directing a network traffic from a network device to a service entity via a network comprising multiple different network paths includes, at the network device, receiving the network traffic provided by one or more client computing devices. The network device directs the network traffic to the service entity over a first network path of the different network paths. A path quality indicator indicating whether the network traffic directed over the first network path satisfies one or more experience criteria is received at the network device, wherein the path quality indicator is provided by the service entity based on the network traffic coming down the first network path. Based at least on the received path quality indicator indicating that the network traffic directed over the first network path does not satisfy the one or more experience criteria, the network device redirects some or all of the network traffic to the service entity over an alternate second network path of the different network paths. Further, according to the invention, the method comprises storing the path quality indicator in a set of historical experience quality data, and analyzing the set of historical experience quality data to predict that performance of the second network path will decrease at a predicted time, and redirecting some or all of the network traffic away from the second network path at or before the predicted time.

As discussed above, data transmitted over a network may be directed over any number of different network paths. Such data may be encapsulated as network packets (e.g., UDP, TCP/IP packets). The amount of such data at any given time and/or the totality of such data over a particular period of time may be referred to as network traffic.

Network traffic may be routed between different sets of intermediate network devices when the data is transmitted over different network paths. For instance, a network device (e.g., router) may receive network traffic from one or more client devices and direct such traffic to a service entity - e.g., that provides a website, an office productivity suite, or other network-accessible service. Such traffic may be transmitted or relayed by a variety of different intermediate network devices - for example including network routers, relays, and switches controlled by one or more parties.

Depending on the specific circumstances under which the network traffic is transmitted, some potential network paths between two devices (e.g., a service entity and a network device) may provide a better client experience than others. For instance, depending on the type/quantity of data transmitted, the hardware capabilities of the intermediate network devices, current network load, etc., some network paths may provide slow, intermittent, or unstable connections, and this can negatively impact the client experience. While some network devices are configured to dynamically redirect network traffic to use a different path based on detecting that network performance is poor or unstable, such devices typically lack insight into the actual application experience of the client devices. Thus, situations may arise in which the client experience would be improved by sending some or all network traffic over a different network path, and yet the network device does not redirect the traffic due to insufficient information regarding the client experience. As will be described in more detail below, an application (e.g., implemented by the service entity) may evaluate how network conditions impact the client experience provided by the application, and via decision logic, output a signal indicating whether network traffic should be redirected to use a different network path, and how much of the traffic should be redirected.

In one example scenario, a plurality of client computing devices on a local network may send network traffic to a network device (e.g., branch router), which may then direct the network traffic to a service entity over the Internet. Due to unstable network conditions along the network path between the network device and service entity, the application experience of the client computing devices may be poor - e.g., due to latency or buffering. However, from the perspective of the network device relaying the network traffic to the service entity, network performance may appear to be adequate, as the requested content is reaching its intended destination. In other words, the relatively low-level network hardware has no insight into how current network conditions positively or negatively impact the current application experience. For instance, if the network device were to switch some or all of the network traffic over to a different network path, the overall client experience may potentially be improved - e.g., because the new network path is able to handle more bandwidth. In other words, the network device responsible for selecting network paths has limited information regarding the actual client experience, and this can lead to the network device not exploring alternative network paths that could potentially improve the client experience.

<FIG> schematically depicts a network environment in which network traffic is exchanged between a service entity and a plurality of client computing devices. Specifically, a plurality of client computing devices including devices 100A-100C each provide network traffic to a network device <NUM>, which transmits the network traffic to a service entity <NUM>. The network device may select a network path through the Internet over which the network traffic is directed to the service entity <NUM>. Notably, in any case in which a network device receives feedback and/or redirects network traffic, such actions may actually be performed by management plane software associated with the network device or a separate management server. A "service entity" refers to a collection of one or more devices working cooperatively to provide a network-accessible application or service, and each of the one or more devices may be jointly owned/operated by the same company or organization. Thus, "service entity" as shown in <FIG> and other drawings described herein will refer to at least one hardware device, and will often include a plurality of hardware devices, including front end and back end servers. As a nonlimiting example, service entity <NUM> may include a server computer configured to provide streaming video, streaming game content, cloud-hosted data, and/or video conferencing. Client computing devices 100A-C may be virtually any type of computing device, including smart phones, tablets, personal computers, other server computers, virtual/augmented reality devices, or Internet-of Things devices. In many cases, the client computing devices will be behind a firewall, or other mechanism that hides details of the client's internal network from the service entity. In the example of <FIG>, the network device <NUM> provides a firewall <NUM>.

Network device <NUM> may direct network traffic over either a first network path <NUM> or a second network path <NUM>. Paths <NUM> and <NUM> collectively represent a select portion of the larger Internet. Notably, network device <NUM> may take the form of a network router, and may in some cases be owned or operated by the same party (e.g., company or organization) that maintains the client computing devices, which will typically be separate from the party that maintains the service entity. Each of these two network paths is provided by a plurality of intermediate network devices, specifically devices 108A and 108B for first network path <NUM>, and devices 110A and 110B for second path <NUM>. Depending on current network conditions, either first network path <NUM> or second network path <NUM> may enable faster, more efficient, more reliable, and/or less expensive data exchange between the service entity and network device <NUM>, which may provide a correspondingly better application experience for client devices 100A-C. However, as discussed above, network device <NUM> may not always select an optimal network path to direct the network traffic over, due to a lack of information regarding the actual application performance experienced by the client computing devices.

Accordingly, the present disclosure is directed to techniques for redirecting network traffic. A network device - e.g., a network router such as device <NUM> - directs network traffic received from one or more client computing devices to a service entity over a first network path. While directing the network traffic over the first network path, the network device receives a path quality indicator that reflects whether a current client experience provided by the first network path satisfies one or more experience criteria. The path quality indicator is received from the service entity, accessed from a network repository, or obtained from another suitable source. For example, any or all of the service entity, client computing devices, and various network devices may contribute network telemetry <NUM> to a network repository <NUM>, and such telemetry can include, or be used to generate, path quality indicators. Network device <NUM> may therefore receive path quality indicators from the network repository, either in response to a request from the network device, and/or path quality indicators (and/or other diagnostic data) may be pushed to network device <NUM>. Regardless of the source of the path quality indicator, if the experience criteria are not satisfied, then the network device redirects some or all of the network traffic over a second network path, which may provide for a better client experience than the first network path. In some cases, the path quality indicators may recommend a specific action for the network device to take - e.g., "redirect X% of traffic to an alternate path" - to reduce decision-making by the network device. Additionally, or alternatively, the path quality indicator may include diagnostic or telemetry data that can be analyzed and acted upon by the network device.

Notably, depending on how much information is available regarding the second network path, the application and/or network device may not know how the client experience will be impacted by redirecting the network traffic. Even if some signal is available regarding the current performance of the second network path, there will typically be a risk that suddenly sending more traffic over the second network path will negatively impact the performance of the second network path, and therefore negatively impact the application experience of the client devices. Thus, as used herein, "redirecting network traffic" need not involve redirecting all network traffic currently flowing over the first network path. Rather, in some examples, only a relatively small amount of network traffic may be redirected to use the second network path, and the client experience associated with the redirected traffic may be monitored to evaluate the second path's performance. The amount of traffic redirected may be governed, in some examples, by policy settings on the network device. Similar policy settings may govern when and if traffic redirection should be discontinued (e.g., because the first network path improves), or if all network traffic should be redirected. Additionally, or alternatively, the rate at which traffic is redirected may be determined or influenced by a cloud application implemented by the service entity - for instance, based on path quality indicators or action recommendations generated by the application and provided to the network device or a management plane device governing the network device.

It will be understood that the network devices and architecture shown in <FIG> are schematic and non-limiting. The physical devices associated with the service entity, network devices (e.g., devices <NUM>, 108A/B, 110A/B), client computing devices, and any devices implementing the network repository may have any suitable hardware configuration and form factor. Any or all of the devices associated with the service entity, network devices, client computing devices, and network repository may in some cases be implemented as computing system <NUM> described below with respect to <FIG>.

Typically, the service entity will provide some type of network-accessible application or other service. The client computing devices may be user computing devices (e.g., laptops, desktops, smartphones, tablets, augmented/mixed reality devices) and/or client routers, while the service entity may include one or more web servers, or any other network-accessible devices. The present disclosure primarily focuses on a scenario in which a network device is receiving network traffic from a plurality of client devices and sending such traffic to a service entity, although any number of client computing devices may be present, including only one. When multiple client computing devices are present, traffic sent to the network device by some of the client computing devices may be directed over a different network path than traffic from others of the client computing devices.

The network devices may be any suitable devices that enable, facilitate, or otherwise participate in the exchange of network traffic between the service entity and client computing devices. For instance, the network devices may be network routers, switches, modems, relays, or servers. It will be understood, however, that the network traffic redirection techniques described herein may be applied to any scenario in which two devices exchange data traffic over a network, and this disclosure is not limited to environments that include a service entity and a client device.

For simplicity, only two different network paths are shown, each network path including two intermediate network devices. However, in typical networks, any number of potential network paths may exist, each including any number of intermediate network devices. Furthermore, some network paths may have one or more intermediate network devices in common.

The client computing device, service entity, and network devices may communicate in any suitable way and over any suitable computer network, including local network(s) and/or wide area network(s) (e.g., the Internet). Any or all of the devices may communicate over wired connections and/or wireless connections. The network traffic between the client devices and service entity may take any suitable form, including any type and quantity of computer data, and may persist for any length of time. The network traffic may be bidirectional or unidirectional. As examples, the network traffic may include streaming digital media (e.g., audio and/or video), streaming game data, peer-to-peer data exchange, voice/video over IP (VoIP) calls, and/or any other type of network traffic. Such data may be sent using any suitable protocol (e.g., UDP, TCP/IP packets).

<FIG> illustrates an example method <NUM> for redirecting network traffic. For example, as network traffic passes between a service entity and one or more client computing devices, learnings derived from the corresponding client experience can be used to generate a path quality indicator, which can serve as a signal to the network device for whether to redirect some or all of the network traffic to use a different path. Method <NUM> may be implemented by any device suitable for transmitting or relaying digital information over a computer network including, for example, network device <NUM> shown in <FIG>. In some cases, method <NUM> may be implemented by computing system <NUM> described below with respect to <FIG>.

At <NUM>, method <NUM> includes receiving network traffic provided by one or more client computing devices. This is schematically illustrated in <FIG>, which shows an example network device <NUM> that receives network traffic <NUM> from a client computing device <NUM>. As with the devices described above with respect to <FIG>, all devices described with reference to <FIG> are schematic in nature and are provided as non-limiting examples. Any or all of the devices described with respect to <FIG> may be implemented as computing system <NUM> described below with respect to <FIG>. Furthermore, any number of intermediate devices may be present between the network device and client device, and between the network device and service entity.

Furthermore, as discussed above, the network traffic received by the network device may include any type and quantity of data and may be received over any length of time. In one example scenario, the network device may be a router, while the client computing device is a user computing device, such as a desktop or laptop, and the service entity includes a web server configured to implement a network service or application. For instance, the network traffic may take the form of web traffic received by network device <NUM> from a plurality of client computing devices, each attempting to send traffic to the same service entity, and/or the network traffic may include any other computer data. As used herein, "receiving" network traffic may include traffic that is "pushed" to the network device, as well as traffic that is requested or "pulled" by the network device.

Returning briefly to <FIG>, at <NUM>, method <NUM> includes directing the network traffic to a service entity over a first network path. This is also schematically shown in <FIG>, in which network device <NUM> directs the network traffic <NUM> to a service entity <NUM> via a first network path 308A, illustrated as a solid line. A second potential network path 308B is illustrated as a dashed line to indicate that network traffic is not currently directed over the second network path. As discussed above, a service entity, such as service entity <NUM>, refers to a collection of one or more devices working cooperatively to provide a network-accessible application or service, and each of the one or more devices may be jointly owned/operated by the same company or organization. In <FIG>, each of the two potential network paths lead to different devices associated with the service entity, which may include, for example, front end servers.

For the sake of simplicity, only one client computing device is shown in <FIG>. However, as with <FIG>, network traffic from any number of client computing devices may be directed to a service entity by a network device. Furthermore, only two network paths are shown, although any number of potential network paths may be available between the network device and service entity, each of which may be implemented by any number of intermediate network devices.

Returning again to <FIG>, at <NUM>, method <NUM> includes receiving a path quality indicator indicating whether the network traffic directed over the first network path satisfies one or more experience criteria. This is illustrated in <FIG>, in which network device <NUM> receives a path quality indicator <NUM>. Notably, the path quality indicator may be "received" in any suitable way, and "receiving" a path quality indicator may include accessing information that has been published by another device, such as a network repository <NUM>. In other words, the network device, or a management plane associated with the device, may read a path quality indicator from the network repository and implement a policy change for the network device.

The path quality indicator may take any suitable form. In some cases, the path quality indicator may be a binary value - e.g., <NUM> or <NUM> - expressing whether the current performance of the first network path does or does not satisfy the one or more experience criteria. Alternatively, the path quality indicator may take a non-binary form, such as a score out of <NUM>, or a value between <NUM> and <NUM>. The path indicator may be expressed as a request or include a recommended action, such as a recommendation to redirect some or all network traffic to use a different path. For example, the network device may redirect network traffic based on a path redirection request received from the service entity, the path redirection request generated based at least on a path quality indicator and one or more historical path quality indicators. The path redirection request may optionally specify a percent of total traffic intended for the service entity that should be redirected - e.g., <NUM>%. In some cases, the path quality indicator may include diagnostic data provided by one or more devices facilitating or participating in the exchange of network traffic, and the network device may be configured to analyze or interpret the diagnostic data to determine whether to redirect the network traffic over a different network path. In some implementations, the path quality indicator may adhere to a predetermined schema and/or may aggregate information from multiple sources and/or across multiple times.

The path quality indicator may be received from any suitable source. In one example, the path quality indicator may be received from the service entity. In general, the service entity will determine, based on traffic coming down a particular network path, that a network problem is negatively impacting the client experience and send a path quality indicator indicating that traffic should be redirected.

In the example of <FIG>, the path quality indicator is accessed by the network device from a network repository <NUM>, which may be configured to receive and maintain network telemetry data from any or all of the devices involved in a particular network communication. As discussed above, in any case in which a "device" is said to perform some function, the function may actually be performed by a management plane associated with the device, which may in some cases be implemented on a separate management server. In one example scenario, the path quality indicator may be generated by the service entity and transmitted to the network repository, as is shown in <FIG>, from which it may be accessed by the network device (or a management plane associated with the network device). At that point, a policy governing the network device may be changed, such that the network device directs some or all of the network traffic over a different network path. Alternatively, the service entity, network devices, and/or client computing device may provide diagnostic data to the network repository, which may derive the path quality indicator from the provided diagnostic data. As another example, the network device may retrieve the diagnostic data provided by the other devices from the network repository, and the network device may derive the path quality indicator based on this diagnostic data.

As discussed above, the path quality indicator indicates whether the network traffic directed over the first network path satisfies one or more experience criteria. Any number of such criteria may be used. As examples, the one or more experience criteria may include one or more of a detected network latency, reduced throughput for a file download, a detected network jitter, and a detected number of packet drops. These metrics may be measured at any suitable source - e.g., the service entity, intermediate network devices, and/or client computing device(s). The path quality indicator could reflect a recurring condition based on history that is addressed by proactive logic to shift traffic. In some cases, the experience criteria may be specific to a type of data included in the network traffic. For example, when the network traffic includes digital video, the one or more experience criteria may include one or both of a resolution and a framerate of the digital video. When the experience criteria are tracked by the service entity, the performance metrics may include requests transmitted by the plurality of client computing devices. For instance, when a majority of client computing devices are requesting low-resolution video, even when the service entity has the bandwidth to support high-resolution video, the service entity may determine that the performance of the current network path is insufficient. In general, any criteria may be used to evaluate the current performance of a network path. Such criteria may be tracked by any suitable device, and any suitable threshold may be used for determining that current client experience does not satisfy the experience criteria.

Furthermore, in some examples, the one or more experience criteria may include a comparison between a current network path and other potential network paths. Thus, a current network path may satisfy the one or more experience criteria even if the current client experience is relatively poor, for instance if the network device predicts (e.g., based on historical data) that switching to a different network path would provide even worse performance, or cause too significant of a disruption to current traffic. Additionally, or alternatively, the one or more experience criteria may include a predicted cost of switching away from the current network path. For instance, the network device may predict that switching from a first network path to a second network path would provide an overall better client experience but could also cause significant short-term disruptions to the client experience. Thus, any or all of a management plane of the network device, the network device itself, and the path quality indicator may, based on any or all known information about the first and second network paths, suggest when or if network traffic should be redirected. For instance, in some examples, the network device may determine that the current network path satisfies the one or more experience criteria, and opt not to redirect the network traffic at that time.

Further, once a path quality indicator is received at <NUM>, the path quality indicator is stored as part of a set of historical experience quality data. This is schematically illustrated in <FIG>, which shows an example set of historical experience quality data <NUM>, including multiple path quality indicators 402A-402C. These path quality indicators may be received at different times, from different sources, and/or correspond to different network paths. As will be described in more detail below, such historical data may in some cases be considered when determining when or if to redirect network traffic over a different network path.

Before redirecting network traffic to a service entity over an alternate network path, the network device may in some cases assess a current status or quality of the alternate path. Returning to <FIG>, at <NUM>, method <NUM> optionally includes assessing an alternate network path over which some or all network traffic may potentially be directed to a service entity. This may be done in any suitable way - e.g., via synthetic monitoring of the alternate path, or evaluation of any live traffic currently flowing between the network device and service entity over the alternate network path.

At <NUM>, method <NUM> optionally includes determining whether the alternate path is suitable for sending network traffic to the service entity. If no, method <NUM> returns to <NUM>, in which a different alternate network path is evaluated. This may repeat as many times as is necessary until a suitable alternate network path is identified, all potential network paths are exhausted, or conditions along the first network path improve such that traffic redirection is no longer desirable.

If yes, then at <NUM>, method <NUM> includes, based at least on the path quality indicator indicating that the network traffic does not satisfy the one or more experience criteria, redirecting some or all of the network traffic to the client computing device over the second, alternate network path assessed at <NUM>. This is illustrated in <FIG>, in which network device <NUM> has redirected some or all network traffic <NUM> from first network path 308A to second network path 308B. In other words, at least some of the network traffic that otherwise would have been transmitted using first network path 308A is transmitted or relayed by a different set of intermediate network devices using second network path 308B between network device <NUM> and service entity <NUM>. It will be understood that the network device need not redirect all network traffic to the second network path. Rather, in cases where the network traffic is directed to a plurality of client computing devices, at least some of the network traffic may still be directed over the first network path.

Depending on current network conditions, redirecting some or all of the network traffic over the second network path may at least temporarily provide a better client experience than the first network path. However, depending on how network conditions change, and the type and quantity of network traffic received from the client computing devices, the improved performance provided by the second network path may not last indefinitely, or the second network path may provide a worse client experience than the first network path. Accordingly, over time, the network device may receive additional path quality indicators, which may be used as the basis for redirecting the network traffic away from the second network path. For example, while some or all of the network traffic is directed over the second network path, the network device may receive a second path quality indicator indicating that the second network path does not satisfy the one or more experience criteria.

For example, returning briefly to <FIG>, at <NUM> method <NUM> optionally includes evaluating whether the client experience has improved as a result of redirecting some or all of the network traffic over the second network path. This may be done on the basis of a second path quality indicator provided by the service entity, as will be described in more detail below. If the client experience has not improved, the network device may again assess one or more other potential network paths at <NUM>, and/or the network device may discontinue using the second network path and instead send the traffic over the first network path. If the client experience has improved, method <NUM> proceeds to <NUM>, at which the network device continues to direct some or all of the network traffic over the second network path. In some cases, the network device may increase the portion of network traffic directed over the second network path over time. In general, at any time, the network device may reevaluate the network path(s) currently being used to send network traffic to the service entity, and redirect some or all network traffic over one or more alternate paths if available and desirable.

In some cases, the network device may receive path quality indicators on a periodic basis. For example, after receiving a first path quality indicator, the network device may receive a second path quality indicator after an indicator refresh interval. The indicator refresh indicator may be, as one example, <NUM> minutes, although other suitable intervals may be used.

If the second path quality indicator indicates that the network traffic directed over the second network path does not satisfy the one or more experience criteria, the network device may once again redirect the network traffic. As shown, feedback data from service entity <NUM> may be sent to network repository <NUM>. Either before or after the feedback data is sent, it may be pushed through a pipeline for analysis and conversion into a second path quality indicator <NUM>, which is stored by the network repository and reflects the quality of the client experience provided by second network path 308B. As discussed above with respect to <FIG>, the path quality indicator may in some cases be accessed directly by the network device. Alternatively, as is shown in <FIG>, the path quality indicator may be read by a separate management plane device, which may then change a policy of the network device based on contents of the path quality indicator.

Based on the second path quality indicator, some or all of the network traffic to the service entity may again be redirected - e.g., back over the first network path. This is schematically illustrated in <FIG>. In <FIG>, network device <NUM> receives a second path quality indicator <NUM> - e.g., either directly or via management plane device <NUM>. In <FIG>, based on the second path quality indicator, the network device redirects some or all of the network traffic back over first network path 308A. This may be done, for instance, because the second path quality indicator indicates that the experience provided by the second network path does not satisfy the one or more experience criteria. In an alternative scenario, however, traffic may be redirected back to the first network path based on the path quality indicators no longer explicitly requesting that the network traffic be moved away from the first network path.

In other examples, however, network traffic may be redirected to use the first network path for reasons unrelated to the second path quality indicator. For instance, the network device may be configured to use the first network path by default, and the first path quality indicator may include a request to redirect the network traffic to use the second path. If the network device stops receiving requests to redirect the network traffic away from the first path, the network device may revert to its default and resume using the first network path.

In some cases, to reduce disruptions to the client experience, the network device may avoid redirecting network traffic over different network paths at greater than a threshold frequency, or unless there is a reasonable expectation that such redirection will improve the client experience. Accordingly, after redirecting the network traffic over the second network path, the network device may avoid again redirecting the network traffic until a threshold length of time has passed, or unless the network traffic directed over the second network path has a lower quality than when directed over the first network path. This may be determined, for instance, based on the second path quality indicator - e.g., when the second path quality indicator includes raw diagnostic data or a numerical evaluation of the current client experience. In cases where the path quality indicators are binary values, the network device may infer that performance of the second network path is worse than the first network path when a quantity of negative quality indicators received for the second network path exceeds the number of negative quality indicators received when the network traffic was directed over the first network path, or in another suitable manner.

In the example of <FIG>, the network traffic is redirected from the second network path back over the first network path. However, as discussed above, any number of potential network paths may be available between the service entity and client computing device. For instance, in <FIG>, network device <NUM> has redirected network traffic <NUM> from second network path 308B to a third network path <NUM>, instead of first network path 308A. As with the first and second network paths, third network path <NUM> may include any number of intermediate network devices configured to transmit or relay the network traffic between network device <NUM> and service entity <NUM>. Similarly, the network device may receive additional path quality indicators indicating whether the performance of the third network path satisfies the one or more experience criteria.

Thus far, the present disclosure has primarily focused on redirecting network traffic based on determining that a current client experience does not meet experience criteria. However, in other examples, historical experience quality data may also be considered when determining whether to redirect network traffic. For example, as discussed above with respect to <FIG>, path quality indicators received from one or more sources are stored in a set of historical experience quality data. Accordingly, when determining whether to redirect network traffic from one network path to another (e.g., from a first network path to a second network path), the network device may consider such historical experience quality data in addition to a most recently received path quality indicator.

For example, the path quality indicator may indicate that the current client experience provided by the first network path does not satisfy the one or more experience criteria. However, the set of historical experience quality data may indicate that, in previous instances, redirecting some or all of the network traffic to a second network path does not improve the client experience, and/or that performance of the first network path often improves as time passes. Thus, the network device may refrain from redirecting the network traffic away from the first network path.

Furthermore, historical experience quality data may be used as the basis for redirecting some or all of the network traffic preemptively, even when a most recently received path quality indicator indicates that the current client experience still satisfies the one or more experience criteria. According to the invention, the set of historical experience quality data is analyzed to predict that performance of a particular network path will decrease at a predicted time. The network device therefore redirects the network traffic to use a different network path at or before the predicted time. Such analysis may be done in any suitable way and may in some cases rely on suitable machine learning (ML) or artificial intelligence (AI) techniques. Examples of suitable techniques will be given below with respect to <FIG>.

The methods and processes described herein may be tied to a computing system of one or more computing devices. In particular, such methods and processes may be implemented as an executable computer-application program, a network-accessible computing service, an application-programming interface (API), a library, or a combination of the above and/or other compute resources.

<FIG> schematically shows a simplified representation of a computing system <NUM> configured to provide any to all of the compute functionality described herein. Computing system <NUM> may take the form of one or more personal computers, network-accessible server computers, tablet computers, home-entertainment computers, gaming devices, mobile computing devices, mobile communication devices (e.g., smart phone), virtual/augmented/mixed reality computing devices, wearable computing devices, Internet of Things (IoT) devices, embedded computing devices, and/or other computing devices.

Computing system <NUM> includes a logic subsystem <NUM> and a storage subsystem <NUM>. Computing system <NUM> may optionally include a display subsystem <NUM>, input subsystem <NUM>, communication subsystem <NUM>, and/or other subsystems not shown in <FIG>.

Logic subsystem <NUM> includes one or more physical devices configured to execute instructions. For example, the logic subsystem may be configured to execute instructions that are part of one or more applications, services, or other logical constructs. The logic subsystem may include one or more hardware processors configured to execute software instructions. Additionally, or alternatively, the logic subsystem may include one or more hardware or firmware devices configured to execute hardware or firmware instructions. Processors of the logic subsystem may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and/or distributed processing. Individual components of the logic subsystem optionally may be distributed among two or more separate devices, which may be remotely located and/or configured for coordinated processing. Aspects of the logic subsystem may be virtualized and executed by remotely-accessible, networked computing devices configured in a cloud-computing configuration.

Storage subsystem <NUM> includes one or more physical devices configured to temporarily and/or permanently hold computer information such as data and instructions executable by the logic subsystem. When the storage subsystem includes two or more devices, the devices may be collocated and/or remotely located. Storage subsystem <NUM> may include volatile, nonvolatile, dynamic, static, read/write, read-only, random-access, sequential-access, location-addressable, file-addressable, and/or content-addressable devices. Storage subsystem <NUM> may include removable and/or built-in devices. When the logic subsystem executes instructions, the state of storage subsystem <NUM> may be transformed - e.g., to hold different data.

The logic subsystem and the storage subsystem may cooperate to instantiate one or more logic machines. As used herein, the term "machine" is used to collectively refer to the combination of hardware, firmware, software, instructions, and/or any other components cooperating to provide computer functionality. In other words, "machines" are never abstract ideas and always have a tangible form. A machine may be instantiated by a single computing device, or a machine may include two or more sub-components instantiated by two or more different computing devices. In some implementations a machine includes a local component (e.g., software application executed by a computer processor) cooperating with a remote component (e.g., cloud computing service provided by a network of server computers). The software and/or other instructions that give a particular machine its functionality may optionally be saved as one or more unexecuted modules on one or more suitable storage devices.

Machines may be implemented using any suitable combination of state-of-the-art and/or future machine learning (ML), artificial intelligence (AI), and/or natural language processing (NLP) techniques. Non-limiting examples of techniques that may be incorporated in an implementation of one or more machines include support vector machines, multi-layer neural networks, convolutional neural networks (e.g., including spatial convolutional networks for processing images and/or videos, temporal convolutional neural networks for processing audio signals and/or natural language sentences, and/or any other suitable convolutional neural networks configured to convolve and pool features across one or more temporal and/or spatial dimensions), recurrent neural networks (e.g., long short-term memory networks), associative memories (e.g., lookup tables, hash tables, Bloom Filters, Neural Turing Machine and/or Neural Random Access Memory), word embedding models (e.g., GloVe or Word2Vec), unsupervised spatial and/or clustering methods (e.g., nearest neighbor algorithms, topological data analysis, and/or k-means clustering), graphical models (e.g., (hidden) Markov models, Markov random fields, (hidden) conditional random fields, and/or AI knowledge bases), and/or natural language processing techniques (e.g., tokenization, stemming, constituency and/or dependency parsing, and/or intent recognition, segmental models, and/or super-segmental models (e.g., hidden dynamic models)).

In some examples, the methods and processes described herein may be implemented using one or more differentiable functions, wherein a gradient of the differentiable functions may be calculated and/or estimated with regard to inputs and/or outputs of the differentiable functions (e.g., with regard to training data, and/or with regard to an objective function). Such methods and processes may be at least partially determined by a set of trainable parameters. Accordingly, the trainable parameters for a particular method or process may be adjusted through any suitable training procedure, in order to continually improve functioning of the method or process.

Non-limiting examples of training procedures for adjusting trainable parameters include supervised training (e.g., using gradient descent or any other suitable optimization method), zero-shot, few-shot, unsupervised learning methods (e.g., classification based on classes derived from unsupervised clustering methods), reinforcement learning (e.g., deep Q learning based on feedback) and/or generative adversarial neural network training methods, belief propagation, RANSAC (random sample consensus), contextual bandit methods, maximum likelihood methods, and/or expectation maximization. In some examples, a plurality of methods, processes, and/or components of systems described herein may be trained simultaneously with regard to an objective function measuring performance of collective functioning of the plurality of components (e.g., with regard to reinforcement feedback and/or with regard to labelled training data). Simultaneously training the plurality of methods, processes, and/or components may improve such collective functioning. In some examples, one or more methods, processes, and/or components may be trained independently of other components (e.g., offline training on historical data).

When included, display subsystem <NUM> may be used to present a visual representation of data held by storage subsystem <NUM>. In some implementations, display subsystem may include one or more virtual-, augmented-, or mixed reality displays.

When included, input subsystem <NUM> may comprise or interface with one or more input devices. An input device may include a sensor device or a user input device. Examples of user input devices include a keyboard, mouse, touch screen, or game controller. Example NUI componentry may include a microphone for speech and/or voice recognition; an infrared, color, stereoscopic, and/or depth camera for machine vision and/or gesture recognition; a head tracker, eye tracker, accelerometer, and/or gyroscope for motion detection and/or intent recognition.

The communication subsystem may be configured for communication via personal-, local- and/or wide-area networks.

This disclosure is presented by way of example and with reference to the associated drawing figures. Components, process steps, and other elements that may be substantially the same in one or more of the figures are identified coordinately and are described with minimal repetition. It will be noted, however, that elements identified coordinately may also differ to some degree. It will be further noted that some figures may be schematic and not drawn to scale. The various drawing scales, aspect ratios, and numbers of components shown in the figures may be purposely distorted to make certain features or relationships easier to see.

Claim 1:
A method (<NUM>) for directing a network traffic,
wherein the network traffic (<NUM>) including any type and quantity of data is transmittable from a network device (<NUM>; <NUM>) to a service entity (<NUM>; <NUM>) via a network comprising multiple different network paths,
the method (<NUM>) comprising:
at the network device (<NUM>; <NUM>), receiving (<NUM>) the network traffic (<NUM>) provided by one or more client computing devices (100A-C; <NUM>);
directing (<NUM>), by the network device (<NUM>; <NUM>), the network traffic (<NUM>) to the service entity (<NUM>; <NUM>) over a first network path (<NUM>; 308A) of the different network paths;
receiving (<NUM>) a path quality indicator (<NUM>) indicating whether the network traffic (<NUM>) directed over the first network path (<NUM>; <NUM>) satisfies one or more experience criteria, wherein the path quality indicator (<NUM>) is provided by the service entity (<NUM>; <NUM>) based on the network traffic (<NUM>) coming down the first network path (<NUM>; <NUM>); and
based at least on the received path quality indicator (<NUM>) indicating that the network traffic (<NUM>) directed over the first network path (<NUM>; 308A) does not satisfy the one or more experience criteria, redirecting (<NUM>), by the network device (<NUM>; <NUM>), some or all of the network traffic (<NUM>) to the service entity (<NUM>; <NUM>) over an alternate second network path (<NUM>; 308B) of the different network paths,
wherein the path quality indicator (<NUM>) indicating whether the network traffic (<NUM>) directed over the first network path (<NUM>; <NUM>) satisfies one or more experience criteria is received at the network device (<NUM>; <NUM>); and
wherein the method (<NUM>) further comprises:
storing the path quality indicator (<NUM>) in a set of historical experience quality data (<NUM>); and
analyzing the set of historical experience quality data (<NUM>) to predict that performance of the second network path (<NUM>; 308B) will decrease at a predicted time, and redirecting some or all of the network traffic (<NUM>) away from the second network path (<NUM>; 308B) at or before the predicted time.