This invention relates generally to wireless connectivity, and more specifically to the management of wireless connectivity-related issues.
Some conventional handheld devices provide access to one or more networks (e.g., the Internet, a local area network, another type of network, or any combination thereof) via a wireless (e.g., radio frequency, or RF) connection. For example, many handheld devices employ an RF connection to provide users with access to email, web browsing, and high-quality video, among other services. A handheld device may, for example, run an operating system which manages connectivity to a mobile operator's network through which the Internet is accessed, and provides a standardized interface and platform upon which applications execute on the device.
Connectivity problems commonly plague handheld devices which employ RF connections to connect to one or more networks. Connectivity problems may arise due to, for example, the characteristics of the environment in which a device is used, a problem with one or more components in a mobile operator's network, issues with a server or service to which the user attempts a connection, and/or problems with the device itself. Connectivity problems may result in the termination of, and/or impact the quality of a connection.
Many conventional handheld devices include components that attempt to minimize connectivity-related problems. For example, if a problem arises with a connection, these components may take action to attempt to maintain the connection, or if the connection has already been lost, attempt to re-establish it. However, there are numerous variables that can affect the quality of a connection, and numerous components required to maintain it. As a result, it is difficult to foresee all of the types of error conditions and scenarios that may arise, and account for all of these conditions and scenarios in programmed logic on a device.
As an example, a frequent cause of connectivity problems on handheld devices is a mismatch in states between components. States may become mismatched or out of sync after a connection has been established due to any of numerous events. For example, some mobile network operators have in place policies to manage network resources, which policies provide that a connection which remains idle for longer than a specified period (e.g., thirty minutes) is automatically and silently disconnected. After the connection is severed, the network components that formerly facilitated the connection may be re-deployed to service other traffic, even though components on the handheld device “believe” the connection is still intact. The complexities associated with maintaining a connection, such as preventing or resolving state mismatches, make managing connectivity-related problems on handheld devices difficult.
Some embodiments of the invention provide a framework for diagnosing and resolving connectivity-related problems quickly, so as to minimize their impact. For example, some embodiments of the invention provide a “health monitor” which monitors and logs connectivity-related events occurring on the device, the network, and the one or more resources to which the device is connected. The health monitor analyzes these events and/or other information to determine when a connectivity problem may have arisen, and if a problem is determined to be imminent or to have occurred, initiates recovery procedures. In some embodiments, the monitoring of events, analysis to determine whether a connectivity problem has arisen, and the recovery from the problem all occur transparently to the user.
The foregoing is a non-limiting summary of the invention, which is defined by the attached claims.
The accompanying drawings are not intended to be drawn to scale. In the drawings, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component may be labeled in every drawing. In the drawings:
Some embodiments of the invention provide a framework for diagnosing and resolving connectivity-related problems. For example, some embodiments of the invention provide a “health monitor” which monitors and logs connectivity-related events occurring on a handheld device, the network, and/or one or more network-accessible resources to which the device is connected. The health monitor may analyze these events and/or other information, so as to identify a connectivity-related problem, and if a problem is identified or determined to be imminent, may initiate recovery procedures. The monitoring and analysis of events to identify present or imminent connectivity-related problems may, in some embodiments, occur transparently to the user of the handheld device.
In some embodiments of the invention, the health monitor is implemented via components of an operating system executing on a handheld device. For example, the health monitor may include a set of components each designed to “mirror” one of the seven layers of the Open Systems Interconnection (OSI) stack that is commonly employed to perform network communications. As those skilled in the art will appreciate, the OSI stack is a conceptual framework for protocols and services used in performing network communications. The seven layers of the OSI stack include the application, presentation, session, transport, network, data link, and physical layers. A protocol is typically employed for a given communication at each layer of the stack, which layer includes a collection of conceptually similar functions that provide services to the layer immediately above, and receives services from the layer immediately below. Some embodiments of the invention provide components that interact with the functions at individual layers of the OSI stack, as well as components that interact with functions in multiple layers of the stack. For example, some embodiments of the invention include components that each interact with functions of one of the lower four layers of the stack (i.e., the transport, network, data link and physical layers), as well as components that span more than one layer. The components may log events occurring at each layer, implement rulesets in the form of programmed logic designed to determine whether an event (or group of events) indicates a connectivity problem, and provide controls for recovery and recovery verification.
In some embodiments, the health monitor may implement self-throttling functionality, so that the execution of health monitor components has minimal effect on the device's power, processing performance and storage capacity. Some embodiments may also, or alternatively, provide an application programming interface (API) that enables applications executing on the device to provide information to, and receive date from, the health monitor. For example, an application may employ an API to identify suspected connectivity-related issues to the health monitor, so that components of the health monitor may investigate and take action if necessary.
Depicted in
Component 120 interacts with functions on data link layer 156 and physical layer 158. Specifically, in the example shown, component 120 interacts with functions employing a cellular protocol. Component 120 includes fault detection component 122, diagnostic handler component 124, and fault recovery component 126, each of which interacts with functions employing the cellular protocol at data link layer 156 and physical layer 158. Similar to component 120 which interacts with functions employing a cellular protocol, component 125 interacts with functions employing the IEEE 802.11x protocol, and component 130 interacts with functions employing the Bluetooth protocol.
Logging component 135 records events observed within the transport layer 152, network layer 154, data link layer 156 and physical layer 158. In this regard, logging component 135 “spans” these layers of OSI stack 150. Of course, the invention is not limited to employing a single component which spans multiple layers of the OSI stack, as the invention may be implemented in any of numerous ways, including with several components which each log events occurring within a particular layer of the stack.
The components of health monitor core 100 which correspond to layers of OSI stack 150 may interact with functions at layers of the stack in any of numerous ways. For example, the components may monitor events occurring at each layer of the stack, and when an event occurs, implement one or more rule sets defining a manner of handling, diagnosing, and/or repairing a condition at the layer which gives rise to the event. As a result, the components of health monitor core 100 provide a capability to resolve issues in a manner that is specific to one or more individual layers. Of course, as logging component 135 shown in
It should be appreciated that although the example implementation of health monitor core 100 shown in
In some embodiments, health monitor core 100 is implemented as a state machine comprising the states and transitions depicted in
Observed events may be associated with any or all of the layers of the OSI stack, and may relate to communications using any of numerous protocols. Observed events may, for example, be logged, and log entries may drive subsequent analysis of connectivity-related issues. In addition, the actions taken by the health monitor itself may be logged. Logging may be performed, for example, in a manner that minimizes the impact of the health monitor's execution on the handheld device's power supply, processing and storage capacity. For example, some embodiments of the invention allow the extent to which events and/or actions are logged to be configured, either locally on the device and/or remotely. For example, a mobile network operator which determines a sharp increase in a certain type of error may remotely initiate an increase in the granularity at which events or actions are logged, so as to diagnose the problem. Once the problem has been resolved, the mobile operator may resume normal logging, minimizing the health monitor's power, processing and storage needs. Some embodiments of the invention may employ the Event Tracing Window (ETW) mechanism offered by Microsoft Corporation of Redmond, Wash., to perform logging, and may transfer logged information in a manner which maintains the privacy of each handheld device and its user. The invention is not limited to such an implementation, as logging and data transfer may be performed in any suitable manner, using any suitable tool(s) and/or technique(s).
Health monitor core 100 may transition from event handling state 210 to either diagnosing state 215, if it is determined that the observed event(s) may constitute an error that should be diagnosed, or back to idle state 205 if it is determined that the observed event(s) do not indicate an error having occurred. For example, in some embodiments, health monitor 100 may determine the state of the connection and signal strength to determine whether the observed event(s) indicate a possible error having occurred, as opposed to a mere temporary delay or packet retransmission, and transition 213 to diagnosing state 215 only if the signal strength is greater than zero and a connection exists. The presence or absence of a connection when the signal strength is zero, and the absence of a connection when signal strength is greater than zero, may, for example, be deemed normal occurrences that do not indicate an error. As such, in the example shown, these events are logged and health monitor 100 may transition 212 to idle state 205. Of course, a determination whether one or more observed events indicate an error having occurred may be made in any of numerous ways, and embodiments of the invention are not limited to doing so using signal strength or connection state, or using any particular technique.
Health monitor core 100 may transition from diagnosing state 215 to either repairing state 220, if it is determined that an error has occurred, or idle state 205, if it is determined that no error has occurred. For example, health monitor 100 may ping a predetermined address (e.g., an address supplied by an application that notifies health monitor 100 of an event that may indicate an error, or another address) to determine whether a connection to the address can be established. If the ping is acknowledged, health monitor 100 may determine that no error has occurred, and transition 217 to idle state 205. Conversely, if the ping is not acknowledged, health monitor 100 may transition 219 to repairing state 220 to repair the error. Of course, a determination whether an error has occurred may be made in any of numerous ways, and embodiments of the invention are not limited to doing so by pinging an address, or using any particular technique.
Health monitor core 100 may transition from repairing state 220 to verifying state 225, if an attempted repair was completed, or to suspend state 230, if an attempted repair was not completed. For example, health monitor 100 may, for example, attempt to repair an error by resetting a Packet Data Protocol (PDP) context and/or detaching and re-attaching a connection. If either or both of these attempted repairs could not be completed, then health monitor 100 may transition 222 to suspend state 230, and if the attempted repair(s) were completed, then health monitor 100 may transition 224 to verifying state 225. Of course, embodiments of the invention are not limited to attempting to repair an error by resetting a Packet Data Protocol (PDP) context and/or detaching and re-attaching a connection, as this may be performed in any of numerous ways.
Health monitor 100 may transition from verifying state 225 back to repairing state 220, if a completed repair could not be verified as successful, or to suspend state 230, if a completed repair was verified as successful. For example, health monitor 100 may attempt to ping a predetermined address (e.g., the back-end server or service to which connection was originally attempted, or another server or service), and if the ping is acknowledged, then health monitor 100 may transition 229 to suspend state 230, and if not, health monitor 100 may transition 227 back to repairing state to attempt the repair again. Of course, repair may be verified in any of numerous ways, and pinging an address is but one example. For example, health monitor 100 could alternatively query an application on the device to determine whether its connectivity has resumed.
Health monitor 100 transitions 232 from suspend state 230 to idle state 205. In some embodiments, transition 232 occurs after a suspension timer elapses, so that health monitor 100 resumes idle state 205.
It should be appreciated that the states and transitions described above with reference to
It should be appreciated that the occurrence of a TCP timeout on the transport layer 152 (
At the start of the sequence shown in
Health monitor 100 then attempts to ping a predetermined address at 352, and receives no response 354 within timeout period 356, indicating an error exists and causing health monitor 100 to transition to repairing state 320.
Applicants have recognized that detaching and reattaching a connection to a gateway on the network may “flush out” errors (e.g., state mismatches) in lower levels of the OSI stack. As a result, in the example of
Using this technique, if an error has occurred on a lower level of the stack, a connection can be re-set and connectivity restored as quickly as possible. As a result, if a state mismatch occurs, or if an error occurs due to a weak signal because the user is driving through a tunnel or reaches a location where a switch of cell towers is needed, at a time when others also transferring data attempt to also switch to the same tower, connectivity may be restored quickly.
Health monitor 100 then pings an address (e.g., the same address pinged at 352) at 386. A response is received at 388 prior to cancel timer 390 elapsing, causing health monitor 100 to transition to suspended state 330. Health monitor 100 then starts a suspension timer at 392, which elapses at 394, causing health monitor to transition to idle state 305. The sequence diagram of
The one or more analysis facilities 560 may aggregate and analyze information received from various handheld devices, such as to determine error patterns and/or trends among data received from the devices. For example, information from devices 510-550 may be segmented based on mobile operator, device, time of day, and/or any other criteria, to determine (as examples) that certain events occurs on a particular device or device type during a specific time of day. This type of data may, for example, be useable by a mobile operator to indicate the infrastructure improvements that may benefit the user community. For example, a significant increase in dropped connections at a particular time of day at a certain location (e.g., at 9:00 am outside a subway station) may indicate that the user community may benefit from an additional cell tower nearby. Any of numerous conclusions may be drawn from information received from handheld devices, and the invention is not limited in this respect.
The system of
In some embodiments, rule sets define not only how events are qualified, what actions are taken and how recovery is verified, but also the overall behavior of the health monitor, so as to minimize the impact on the device's power supply and/or performance. For example, if the strength of a cellular signal is low, the health monitor may “self-throttle,” so that components do not continually kick off and attempt to determine whether an error condition exists, thereby consuming power and process recycles. Similarly, the health monitor may self-throttle if it determines that an error exists over which the device has little control. For example, if the user drives through a tunnel or enters a subway, so that the device receives little or no signal, the health monitor may self-throttle so that its components do not consume power and/or the process recycles until signal strength is restored (e.g., when the user exits the subway), so as to minimize over-all system impact.
It should be appreciated that although some of the description above references mobile handheld devices which employ RF connections to connect to the Internet, embodiments of the invention are not so limited. For example, embodiments of the invention need not be employed to manage connectivity to the Internet, and may be employed to manage connectivity to any one or more types of networks, including local and/or wide area networks, other type(s) of network, or any combination thereof. In addition, embodiments of the invention need not be used to connect to a network at all, and may be used, as an example, to manage connectivity between a handheld device and one or more other devices, such as a remote data store, wireless access point, other type(s) of device(s), or any combination thereof. When employed to manage network connectivity, any suitable network infrastructure and/or communication protocol(s) may be employed. For example, any suitable one or more cellular network types (e.g., GSM, CDMA, LTE, other type(s), or any combination thereof) may be used. It should also be appreciated that embodiments of the invention are not limited to devices which use RF to establish connectivity, and may be used with any suitable type(s) of electromagnetic radiation or other medium to accomplish communication. Embodiments of the invention are not limited to any particular implementation.
It should further be appreciated that the term “handheld device” as used herein encompasses within its scope any suitable device(s), including a laptop computer, desktop computer, control/monitoring system, application-specific integrated circuit (ASIC), music and/or video player, gaming console, other type(s) of device(s), or any combination thereof. Any suitable one or more devices may be employed, as embodiments of the invention are not limited to any particular implementation.
Various aspects of the systems and methods for practicing features of the invention may be implemented on one or more computer systems, such as the exemplary computer system 600 shown in
The processor 603 typically executes a computer program called an operating system (e.g., a Microsoft Windows-family operating system, or any other suitable operating system) which controls the execution of other computer programs, and provides scheduling, input/output and other device control, accounting, compilation, storage assignment, data management, memory management, communication and dataflow control. Collectively, the processor and operating system define the computer platform for which application programs and other computer program languages are written.
Processor 603 may also execute one or more computer programs to implement various functions. These computer programs may be written in any type of computer program language, including a procedural programming language, object-oriented programming language, macro language, or combination thereof. These computer programs may be stored in storage system 606. Storage system 606 may hold information on a volatile or non-volatile medium, and may be fixed or removable. Storage system 606 is shown in greater detail in
Storage system 606 may include a tangible computer-readable and -writable non-volatile recording medium 701, on which signals are stored that define a computer program or information to be used by the program. The recording medium may, for example, be disk memory, flash memory, and/or any other article(s) of manufacture usable to record and store information. Typically, in operation, the processor 603 causes data to be read from the nonvolatile recording medium 701 into a volatile memory 702 (e.g., a random access memory, or RAM) that allows for faster access to the information by the processor 603 than does the medium 701. The memory 702 may be located in the storage system 606 or in memory system 604, shown in
Having thus described several aspects of at least one embodiment of this invention, it is to be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description and drawings are by way of example only.
The above-described embodiments of the present invention can be implemented in any of numerous ways. For example, the embodiments may be implemented using hardware, software or a combination thereof When implemented in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single computer or distributed among multiple computers.
Further, it should be appreciated that a computer may be embodied in any of a number of forms, such as a rack-mounted computer, a desktop computer, a laptop computer, or a tablet computer. Additionally, a computer may be embedded in a device not generally regarded as a computer but with suitable processing capabilities, including a Personal Digital Assistant (PDA), a smart phone or any other suitable portable or fixed electronic device.
Computers may be interconnected by one or more networks in any suitable form, including as a local area network or a wide area network, such as an enterprise network or the Internet. Such networks may be based on any suitable technology and may operate according to any suitable protocol and may include wireless networks, wired networks or fiber optic networks.
Also, the various methods or processes outlined herein may be coded as software that is executable on one or more processors that employ any one of a variety of operating systems or platforms. Additionally, such software may be written using any of a number of suitable programming languages and/or programming or scripting tools, and also may be compiled as executable machine language code or intermediate code that is executed on a framework or virtual machine.
In this respect, the invention may be embodied as a computer readable medium (or multiple computer readable media) (e.g., a computer memory, one or more floppy discs, compact discs (CD), optical discs, digital video disks (DVD), magnetic tapes, flash memories, circuit configurations in Field Programmable Gate Arrays or other semiconductor devices, or other non-transitory, tangible computer storage medium) encoded with one or more programs that, when executed on one or more computers or other processors, perform methods that implement the various embodiments of the invention discussed above. The computer readable medium or media can be transportable, such that the program or programs stored thereon can be loaded onto one or more different computers or other processors to implement various aspects of the present invention as discussed above.
The terms “program” or “software” are used herein in a generic sense to refer to any type of computer code or set of computer-executable instructions that can be employed to program a computer or other processor to implement various aspects of the present invention as discussed above. Additionally, it should be appreciated that according to one aspect of this embodiment, one or more computer programs that when executed perform methods of the present invention need not reside on a single computer or processor, but may be distributed in a modular fashion amongst a number of different computers or processors to implement various aspects of the present invention.
Computer-executable instructions may be in many forms, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically the functionality of the program modules may be combined or distributed as desired in various embodiments.
Also, data structures may be stored in computer-readable media in any suitable form. For simplicity of illustration, data structures may be shown to have fields that are related through location in the data structure. Such relationships may likewise be achieved by assigning storage for the fields with locations in a computer-readable medium that conveys relationship between the fields. However, any suitable mechanism may be used to establish a relationship between information in fields of a data structure, including through the use of pointers, tags or other mechanisms that establish relationship between data elements.
Various aspects of the present invention may be used alone, in combination, or in a variety of arrangements not specifically discussed in the embodiments described in the foregoing and is therefore not limited in its application to the details and arrangement of components set forth in the foregoing description or illustrated in the drawings. For example, aspects described in one embodiment may be combined in any manner with aspects described in other embodiments.
Also, the invention may be embodied as a method, of which an example has been provided. The acts performed as part of the method may be ordered in any suitable way. Accordingly, embodiments may be constructed in which acts are performed in an order different than illustrated, which may include performing some acts simultaneously, even though shown as sequential acts in illustrative embodiments.
Use of ordinal terms such as “first,” “second,” “third,” etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed, but are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term) to distinguish the claim elements.
Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising,” or “having,” “containing,” “involving,” and variations thereof herein, is meant to encompass the items listed thereafter and equivalents thereof as well as additional items.
This application claims priority under 35 U.S.C.§119(e) to U.S. Provisional Application Ser. No. 61/313,480, entitled “Resilient Connectivity Health Management Framework,” filed on Mar. 12, 2010, which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61313480 | Mar 2010 | US |