Field of the Disclosure
The present disclosure relates generally to computer networks and more particular to communication management with a computer network.
Description of the Related Art
Communication networks are employed to transfer a wide variety of information between electronic devices. However, as the amount of information transferred over a communication network increases, the communication backbone that governs the network can become stressed, causing undesirable delays in information transfer. This can result in a poor user experience. For example the user can experience network lag, where packets are held at a network node while awaiting transfer to another network node, for an amount of time such that the user is able to perceive the delay in the information transfer. Further, network lag and other network transfer problems can impact a wide variety of applications, such as gaming applications, voice communication applications, and the like.
The present disclosure may be better understood, and its numerous features and advantages made apparent to those skilled in the art by referencing the accompanying drawings. The use of the same reference symbols in different drawings indicates similar or identical items.
To illustrate via an example, some types of computer applications, such as voiceover Internet protocol (VOIP) applications, communicate more efficiently via links with low jitter, while other types of applications, such as a game patching application, communicate more efficiently over high-bandwidth links. Using the techniques described herein, the computer device can select the best link for each type of application, thus selecting the lowest-jitter link for the VOIP application and the highest-bandwidth link for the game patching application. The computer device thereby improves communication efficiency for both types of applications, and thus improves the overall user experience with the computer device.
The computer device 102 can be any computer device that is capable of communicating with a network, such as a desktop computer, laptop computer, server, tablet, smartphone, game console, and the like. The computer device 102 includes a processor (not shown) that executes instructions organized in the form of computer programs, referred to generally herein as applications. In the illustrated example of
The computer device 102 includes circuitry, such as a network interface card, network communication chip, and the like, to establish links with the network 110. In particular, the computer device 102 can concurrently maintain multiple links with the network 110. In the illustrated example of
The computer device 102 is configured to communicate (send and receive) packets via both of the links 120 and 121. The computer device 102 can employ both of the links 120 and 121 concurrently. That is, the computer device 102 can send and receive packets via the links 120 and 121 concurrently. Further, the computer device 102 can use the links 120 and 121 for different applications. For example, the computer device 102 can send and receive packets for the application 104 via link 120 and send and receive packets for the application 106 via the link 121. The links 120 and 121 are selectable, such that the computer device 102 can select any link for any application, and can change the link selected for an application over time.
In at least one embodiment, the computer device 102 can select the link for an application based on both the type of application and characteristics of the link. In particular, the computer device 102 can analyze each link to identify link characteristics, also referred as link metrics, for each of the links 120 and 121. Examples of link metrics include jitter, bandwidth, latency, reliability, congestion, environmental noise and the like. The link metrics can be identified based on any of a number of factors, including packet acknowledgement response time, packet payload information, signal-to-noise ratio (SNR), retransmission rate, collision rate, number of transmission backoffs, link speed, channel width, and the like, or a combination thereof. In at least one embodiment, the computer device 102 identifies the link metrics by analyzing packets sent and received over the link. The computer device 102 may also, in conjunction with the packet analysis, sense electrical characteristics, such as SNR, of the link using detection circuitry. The computer device 102 can also determine a type of each application based on a list of application types and application identifiers, based on information provided by the application itself, based on packet analysis (e.g., destination address of packets generated by the application), and the like.
Based on the type of application, the computer device 102 selects a link to communicate (send and receive) traffic for that application. In particular, based on a predefined or programmable list (not shown) of application types and link metrics, the computer device 102 selects for an application the link indicated by the list. For example, if the list indicates that a particular type of application should be assigned to a low-jitter link, the computer device 102 selects for the application the lowest-jitter link as indicated by the link metrics.
To illustrate via an example, in at least one embodiment the computer device 102 identifies the link 121 as a link having relatively low jitter and low bandwidth and the link 122 as having relatively high bandwidth and high jitter. In addition, the computer device 102 identifies that the application 104 is of a type that benefits more from a low-jitter link and the application 106 is of a type that benefits from a high-bandwidth link. Accordingly, the computer device 102 selects the link 121 for the application 104 and the link 122 for the application 106, and communicates the packets for each application via the selected link.
The link analyzer 232 is a set of one or more hardware or software modules, or a combination thereof that identifies link metrics for each of the links 121 and 122. Accordingly, the link analyzer 232 can analyze packets stored at the network stack 230 to identify link metrics, such as bandwidth and latency. In addition, the link analyzer 232 can include circuits to identify electrical characteristics of the links 121 and 122, such as signal to noise ratio.
The traffic manager 234 is a set of one or more hardware or software modules, or a combination thereof, that identifies the type of each application that is being executed at the computer device 102 and the characteristics of each link available to the network stack 230. The traffic manager 234 is further configured to identify a link to be used to communicate packets for each of the applications being executed. The traffic manager 234 can identify the link by modifying header information in a. packet, by providing control signaling to the network stack 230, and the like.
To illustrate, in the example of
Based on the link metrics and application type, the traffic manager 234 selects one of the links 120 and 121 for the application. In response to receiving a packet from an application, the traffic manager identifies the link selected fur that application, and instructs the network stack 230 to communicate the packet via the selected link.
In at least one embodiment, an application may generate communication traffic of different types, and the traffic manager 234 can individually select links for each type of traffic generated by an application. For example, a game application may generate real-time game packets and may also generate packets related to downloading a game patch. The traffic manager 234 can select different links for each type of packet, such as selecting a high-bandwidth link for the packets related to downloading the game patch and a low-latency link for the packets related to real-time gaming.
In at least one embodiment, each of the links 120 and 121 may be associated with a different access point to the network 110. An example is illustrated at
A computer readable storage medium may include any non-transitory storage medium, or combination of non-transitory storage media, accessible by a computer system during use to provide instructions and/or data to the computer system. Such storage media can include, but is not limited to, optical media (e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc), magnetic media (e.g., floppy disc, magnetic tape, or magnetic hard drive), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or Flash memory), or microelectromechanical systems (MEMS)-based storage media. The computer readable storage medium may be embedded in the computing system (e.g., system RAM or ROM), fixedly attached to the computing system (e.g., a magnetic hard drive), removably attached to the computing system (e.g., an optical disc or Universal Serial Bus (USB)-based Flash memory), or coupled to the computer system via a wired or wireless network. (e.g., network accessible storage (NAS)).
In some embodiments, certain aspects of the techniques described above may implemented by one or more processors of a processing system executing software. The software comprises one or more sets of executable instructions stored or otherwise tangibly embodied on a non-transitory computer readable storage medium. The software can include the instructions and certain data that, when executed by the one or more processors, manipulate the one or more processors to perform one or more aspects of the techniques described above. The non-transitory computer readable storage medium can include, for example, a magnetic or optical disk storage device, solid state storage devices such as Flash memory, a cache, random access memory (RAM) or other non-volatile memory device or devices, and the like. The executable instructions stored on the non-transitory computer readable storage medium may be in source code, assembly language code, object code, or other instruction format that is interpreted or otherwise executable by one or more processors.
Note that not all of the activities or elements described above in the general description are required, that a portion of a specific activity or device may not be required, and that one or more further activities may be performed, or elements included, in addition to those described. Still further, the order in which activities are listed are not necessarily the order in which they are performed. Also, the concepts have been described with reference to specific embodiments. However, one of ordinary skill in the art appreciates that various modifications and changes can be made without departing from the scope of the present disclosure as set forth in the claims below. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of the present disclosure.
Benefits, other advantages, and solutions to problems have been described above with regard to specific embodiments. However, the benefits, advantages, solutions to problems, and any feature(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, required, or essential feature of any or all the claims. Moreover, the particular embodiments disclosed above are illustrative only, as the disclosed subject matter may be modified and practiced in different but equivalent manners apparent to those skilled in the art having the benefit of the teachings herein. No limitations are intended to the details of construction or design herein shown, other than as described in the claims below. It is therefore evident that the particular embodiments disclosed above may be altered or modified and all such variations are considered within the scope of the disclosed subject matter. Accordingly, the protection sought herein is as set forth in the claims below.