1. Technical Field
The claimed subject matter relates generally to mobile computing devices and, more specifically, to a method for increasing the speed at which data is delivered to mobile computing devices.
2. Description of the Related Art
Over the last couple of decades, computing devices have become both more powerful and more mobile. The increase in power enables devices such as cellular telephones and palm computers to process and deliver increasingly large amounts of data, or content. Such content may include such things as internet-provided materials and radio television signals. Of course, the delivery of more content often creates issues associated with the mobility of the device; i.e. more content typically demands more communication bandwidth.
Mobile communication systems such as cellular telephone and WiFi systems rely upon connections among backend content servers, communication nodes and a transmitting and receiving device, or end node. Providing additional capacity among communication nodes and various backend data servers can be straightforward but the link between a particular node and an end user's device, or the “end node.” is more problematic. Although the capacity of end nodes has increased and continues to increase, this rate of increase has not necessarily kept pace with either the increase data capacity among communication nodes and servers or an increase in demand by mobile computing devices.
Some mobile devices address the end node data bottleneck by data buffering. In other words, content is not presented to the end user until a certain amount of data, or a buffer, has already been transmitted. Although buffering techniques address issues related to the initial delay associated with the transmission of data and periods of low throughput on an end link, even with data buffering, a mobile computing device may experience period in which content delivery must be paused to enable the transmission of content to catch up with the presentation of the content. Typically, the mobile computing device pauses the presentation to enable additional content buffering to occur. In addition, data buffering issues frequently arise when a mobile computing device is executing a transition between two different communication nodes, such as but not limited to cellular towers, wireless internet service providers (ISPs) and WiFi “hot spots.”
In the example of cellular telephone systems and other wireless systems, a particular communication device may exchange service messages with multiple communication nodes, particularly during call setup and while making a determination of the end node's geographical position. In addition, a particular communication may be relayed from communication node to communication node before arrival at a switching node, i.e. via intermediate relay nodes. However, actual communication between an end user and a connected party or server at any specific time is relayed to the end node via one communication node. For the sake of clarity, the node that is the final link for actual communication between parties at any specific point in time is referred to as the “end relay communication node” to distinguish it from the end node and other communication nodes, including any intermediate relay nodes.
Currently, data buffering with respect to the delivery of content is primarily performed on the end user's mobile computing device, or end node, rather than at the communication nodes or the content server.
Provided is a method for providing data buffering at a communication node, such as, but not limited to, a cellular telephone tower, a WIFI hot spot or a wireless ISP, which supports wireless devices. Communication nodes maintain data buffering capabilities so that a data cache related to a particular mobile computing device, or end node, is forwarded among communication nodes in anticipation the movement of the mobile computing device. A decision to forward a specific data cache associated with a particular mobile computing device to a particular end relay communication node is based upon the type, history or other knowledge of the content buffered, knowledge of communication node configuration and/or knowledge of the particular mobile computing device. Knowledge of the computing device may include, but is not limited to, information related to geographical location and likely travel, or “roaming,” patterns. Intelligent predictions of advantageous buffer forwarding are employed to transmit data caches over high-speed connections between communication nodes to mitigate data buffering issues relating to the transmission of large amounts of data over slower end links between communication nodes and end user devices.
In an alternative embodiment, data caches are transmitted to either all or selected end relay communication nodes that border the end relay communication node in use by a particular mobile computing device. When a mobile computing device roams from the service of one end relay communication node to the service of another, signaling among nodes enables selected sites to delete any caches that are unlikely to be used. Buffers may also include expiration times so that a cache that has not been accessed after a specified period of time is deleted.
This summary is not intended as a comprehensive description of the claimed subject matter but, rather, is intended to provide a brief overview of some of the functionality associated therewith. Other systems, methods, functionality, features and advantages of the claimed subject matter will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description.
A better understanding of the claimed subject matter can be obtained when the following detailed description of the disclosed embodiments is considered in conjunction with the following figures, in which:
Although described with particular reference to a cellular telephone system, the claimed subject matter can be implemented in any information technology (IT) system in which wireless roaming is implemented. Those with skill in the computing arts will recognize that the disclosed embodiments have relevance to a wide variety of computing environments in addition to those described below. In addition, the methods of the disclosed technology can be implemented in software, hardware, or a combination of software and hardware. The hardware portion can be implemented using specialized logic; the software portion can be stored in a memory and executed by a suitable instruction execution system such as a microprocessor, personal computer (PC) or mainframe.
In the context of this document, a “memory” or “recording medium” can be any means that contains, stores, communicates, propagates, or transports the program and/or data for use by or in conjunction with an instruction execution system, apparatus or device. Memory and recording medium can be, but are not limited to, an electronic, magnetic, optical, electromagnetic or semiconductor system, apparatus or device. Memory and recording medium also includes, but is not limited to, for example the following: a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), and a portable compact disk read-only memory or another suitable medium upon which a program and/or data may be stored.
One embodiment, in accordance with the claimed subject, is directed to a programmed method for caching data at multiple wireless communication nodes. The term “programmed method”, as used herein, is defined to mean one or more process steps that are presently performed; or, alternatively, one or more process steps that are enabled to be performed at a future point in time. The term “programmed method” anticipates three alternative forms. First, a programmed method comprises presently performed process steps. Second, a programmed method comprises a computer-readable medium embodying computer instructions, which when executed by a computer performs one or more process steps. Finally, a programmed method comprises a computer system that has been programmed by software, hardware, firmware, or any combination thereof, to perform one or more process steps. It is to be understood that the term “programmed method” is not to be construed as simultaneously having more than one alternative form, but rather is to be construed in the truest sense of an alternative form wherein, at any given point in time, only one of the plurality of alternative forms is present.
Turning now to the figures,
Architecture 100 includes a computing system, or “content server.” 102. Content server 102 includes a central processing unit (CPU) 104, coupled to a monitor 106, a keyboard 108 and a mouse 110, which together facilitate human interaction with server 102. Also included in computer 102 and attached to CPU 104 is a data storage component 112, which may either be incorporated into CPU 104 i.e. an internal device, or attached externally to CPU 104 by means of various, commonly available connection devices such as but not limited to, a universal serial bus (USB) port (not shown).
Server 102 is communicatively coupled to a local area network (LAN) 120. LAN 120 is coupled to the Internet 122. Also connected to Internet 122 is a plain old telephone switch (POTS) 126. A cellular system 128 and a WiFi connection 130 are coupled to POTS 126 and, via POTS 126, to Internet 122. In this example, two mobile communication/computing devices, i.e. a cellular telephone 132 and a handheld computer 138, are both able to communicate with cellular system 128 and WiFi connection 130. Cellular system 128 is described in more detail below in conjunction with
Wireless link 134 represents a communication link, or “end link.” between cellular telephone 132 and cellular system 128. Wireless link 136 represents a communication link between cellular telephone 132 and WiFi connection 130. Typically, only one of links 134 and 136 is active for actual user communication, although, as explained above in the Background, multiple links may be actively carrying service message communication. Cellular telephone 132 “roams” between links 134 and 136, as well as other possible communication links, which for the sake of simplicity are not shown. Cellular telephone 132 selects which of links 134 or 136 to utilize for user communication based upon preconfigured parameters. For example, telephone 132 may select the link 134 or 136 based either upon the strength of the connection or the relative costs of the connections 134 and 136.
Wireless link 140 represents a communication link between handheld computer 138 and cellular system 128. Wireless link 142 represents a communication link between handheld computer 138 and cellular system 130. Typically, only one of links 140 and 142 is active for actual user communication. Like telephone 132, handheld computer 138 “roams” between links 140 and 142, as well as other possible communication links, which for the sake of simplicity are not shown, and selects which of links 140 or 142 to utilize for user communication at any particular time based upon various parameters.
Although the disclosed technology is applicable to any mobile computing device and any type of communication system, the following description employs cellular telephone 132, cellular system 128 and content server 102 for the purposes of illustration. Those with skill in the computing and communication arts should appreciate that the claimed subject matter may be applied to a large variety and configurations of communication systems in addition to those illustrated and described.
Cellular switch 152 includes a predictive switching logic (PSL) server module 154, which includes a predictive switching buffer, i.e. PSB_0155. Cellular towers 161-164 each include a PSL client module, i.e. a PSL client_1171, a PSL client_2172, a PSL client_3173 and a PSL client_4174, respectively. PSL clients 171-174 each include a predictive switching buffer, i.e. a PSB_1181, a PSB_2182, a PSB_3183 and a PSB_4184, respectively. PSL server 154 and PSB_0155 are described in more detail below in conjunction with
PSL server logic module 192 controls the implementation of the claimed subject matter and transmits instructions and data to PSL clients 171-174 (
PSL configuration data module 194 stores information, or parameters, associated with a particular implementation of the claimed subject matter. One example of a parameter stored in conjunction with data 194 is a timeout parameter. The timeout parameter specifies an interval of time that is required to pass before a PSB timeout logic module 198 deletes a particular data cache. The timeout parameter may be applicable to data caches either only on cellular switch 152 or throughout cellular system 128 (
Network configuration data module 198 stores information related to the configuration of cellular system 128. Information includes, but is not limited to, data about cellular tower locations and the handoff characteristics of the system 128. For example, module 198 may store information that indicated cellular tower_1161 (
User configuration data module 200 stores information related to specific users of cellular system 128. User information includes, but is not limited to, data on particular user's roaming patterns so that PSL logic module 192 can make intelligent predictions to efficiently implement the claimed subject matter. In addition, the disclosed technology may be offered to users as an option and module 200 stores information about whether or not a particular user is enrolled for the option.
PSB_0155, first introduced above in conjunction with
PSL client logic module 202 controls the function of PSL client 171. Module 202 receives data and instructions from PSL server module 154 (
PSL client configuration data module 204 stores information, or parameters, associated with a particular implementation of the claimed subject matter. One example of a parameter stored in conjunction with data 204 is a timeout parameter, corresponding to the timeout parameter introduced above in conjunction with PSL configuration data module 194 of
PSB_1181 receives data caches employed to implement the claimed subject matter. As explained above in conjunction with PSB_0155 (
Process 250 starts in a “Begin Monitor Connection” block 252 and proceeds immediately to a “Detect Connection” block 254. During block 254, process 250 detects a particular connection between a cellular telephone and a cellular system. During a “Connection Terminated?” block 256, process 250 determines whether or not the connection detected as previously described (see process block 254) has been terminated. Of course, the first time through block 256, the connection has probably not been terminated because it only just recently commenced. If the connection has not been terminated, process 250 proceeds to an “Update Cache” block 258 during which any requested data associated with the connection is stored in PSB_0155 (
During a “Handoff Predicted?” block 262, process 250 determines whether or not the analysis executed as previously described (see process bock 260) predicts that the connection is likely to select a different communication node as the end relay communication node. In this example, the connection is handled by cellular tower_1161, i.e. the current end relay communication node, and has the potential to be passed, or handed off, to cellular tower_2162 (
If during block 262, process 250 determines that a handoff is either likely or possible, control proceeds to a “Transmit Cache” block 264. During block 264, the data cache stored in PSB_0155 as previously described (see process block 258) is transmitted to PSB_2182 (
Once the data cache has been transmitted (see process block 264) or, if during block 262, process 250 determines that a handoff is not likely, process 250 returns to Connection Terminated? Block 256 and processing continues as described above. If, during block 256, process 250 determines that the connection detected during block 254 has been terminated, process 250 proceeds to a “Delete Cache” block 266. During block 266, process 250 either deletes or causes to be deleted data caches that are no longer necessary from PBS_0155, PSB_1181, PSB_2182, PSB_3183 and PSB_4184. An example of a cache deletion process is described below in conjunction with
Process 280 starts in a “Begin Analyze Mobile” block 282 and proceeds immediately to a “Retrieve Data” block 284. During block 184, data associated with the particular mobile device, e.g. telephone 132, is retrieved from various sources. Examples of data retrieved include, but are not limited to, PSL configuration data 194 (
During a “Calculate Location” block 286, process 280 employs GPS or other location-related data to determine a geographical location for telephone 132. During a “Compare Location” block 288, process 280 compares the location determined as previously described (see process block 286) with location data retrieved (see process block 284). During a “Handoff Likely?” block 290, process 280 determines whether or not telephone is moving and, if so, whether or not a handoff from the current end relay communication node, i.e. cellular tower_1161, to an alternative end relay communication node, i.e. cellular towers 162-164, is likely to occur.
If process 280 determines that a handoff is likely to occur, process 280 proceeds to a “Determine Path” block 292. During block 292, process 280 employs the data retrieved as previously described (see process block 284) and collected (see process block 286) to calculate a potential path for telephone 132 so that process 250 is able to transmit a data cache to the appropriate node or nodes. As described above, the calculation may determine a single most likely handoff location or several locations and the likelihood of a handoff associated with each location, with data caches transmitted to selected likely locations. In the alternative, process 280 may merely calculate all possible end realy communicaiton nodes to enable process 250 to transmit data caches to each.
Once a potential path has been calculated as previously described (see process block 292), or, if during block 290, process 280 has determined that a handoff is not likely, the information processed as previously described (see process blocks 286, 288, 290 and 292) is stored in user configuration data 200 during a “Store Data” block 294. Finally, process 280 proceeds to an “End Analyze Mobile” block 299 in which process 280 is complete.
Process 300 starts in a “Begin Cleanup Buffer” block 302 and proceeds immediately to a “Timer” block 304. During block 304, a timer (not shown) is configured to periodically initiate the execution of the remaining blocks. The specific amount of time between execution of the remaining blocks corresponds to a configurable parameter stored in either a PSL configuration data module, such as module 194 (
Once the time associated with block 304 expires, process 300 proceeds to a “Get Data Cache” block 306. During block 306, process 300 scans PSB_0155 for the presence of data caches, which in this example would be DC_1201 and DC_2203. In this example, the first cache processed is DC_1201,which becomes the “target” cache. During a “Connection Terminated?” block 308, process 300 examines DC_1201 for an indication of whether or not the connection associated with DC_1201 has been terminated, i.e. the associated communication node is no longer designated as the end relay communication node. If the connection has not been terminated, process 300 proceeds to a “Stale Data Cache?” block 310. During block 310, process 300 determines whether or not DC_1201 has become “stale,” i.e. a time stamp associated with DC_1201 indicates that DC_1201 is old enough that the associated connection no longer needs the data stored in DC_1201. The length of time necessary to define a data cache as stale is stored in a configurable parameter in conjunction with PSL configuration data 194 (
If the target data cache is determined to be stale (see process block 310) or, if determined to be associated with a terminated connection as previously described (see process block 308), process 300 proceeds to a “Delete Data Cache” block 312. During block 312, process 300 deletes the target data cache 201 from the data buffer. During a “More Caches?” block 314, process 300 determines whether or not there are any more data caches to be processed. In this example, DC_2203 has not yet been processed, so control returns to block 306, DC_2203 becomes the target data cache and processing continues as described above. If process 300 determines during block 314 that all data caches have been scanned, control proceed to a “Reset Timer” block 316, where the timer is reset, returns to block 304 and processing continues as described above.
It should be noted that process 300 is designed to operate continuously as long as PSL server module 154 is executing. In the event that module 154 is terminated, an asynchronous interrupt 318 is generated. Interrupt 318 causes control to proceed to an “End Cleanup Buffer” block 319 in which process 300 is complete.
While the claimed subject matter has been shown and described with reference to particular embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the claimed subject matter, including but not limited to additional, less or modified elements and/or additional, less or modified blocks performed in the same or a different order.