Abstract:
A technique for providing a prediction as to whether a resource will be accessible to a user is described. The technique can involve comparing asserted membership in a wireless realm with membership records. Advantageously, a user can be made aware of the likelihood of access to a resource before attempting to reach the resource.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims priority to U.S. Provisional Application 61/083,876, filed Jul. 25, 2008, entitled ROAMING CONSORTIUM, which is hereby incorporated by reference in its entirety. 
     
    
     BACKGROUND 
       [0002]    In 802.11 network communications, a user of a wireless station may desire to access a network resource. Often a plurality of different access points will be available to a user. At times, some of these networks may provide access to the network resource, whereas others may not. For example, consider wireless network access points in an airport where networks compete for users by offering competitive network pricing. 
         [0003]    Networks may or may not offer service to a network resource without cost. Often, network access is provided with a cost. However, there are times when a network provider may offer selective network access without cost such as where economic benefits will inure to the network provider for doing so. 
         [0004]    For example, consider a partnership or agreement between network owners or operators that defines permission for users to use networks. The network owners can enlarge their networks by sharing access to their networks. At times the access can be provided without additional cost to the user over the user&#39;s payment to access one of many such networks. 
         [0005]    For example, multiple networks in different countries or regions could agree to allow common use of each network in each country or region. The use could be without additional cost to that paid for the use in a user&#39;s home country or region. 
         [0006]    Alternatively, a first commercial establishment may allow access to specific network resources offered by other commercial establishments. The commercial establishments can benefit by sharing patrons. 
         [0007]    For example, a hotel might offer free network access to airport/airline websites from within the hotel and the airport/airlines might similarly offer reciprocal access from within an airport. This would allow for mutually beneficial use of the networks leading to repeat business and other economic benefits to the hotel and airport/airline. 
         [0008]    When many commercial establishments or networks present a user with access points the user may not know that the networks will allow access without cost. Often the user can have permission to use a partner network to reach a network resource, but will have to try different networks before finding one that she has permission to use. The user can be left wondering which networks are available to her. Such a user could waste time trying to determine which networks will allow access to the network resource. 
         [0009]    The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent upon a reading of the specification and a study of the drawings. 
       SUMMARY 
       [0010]    The following examples and aspects thereof are described and illustrated in conjunction with systems, tools, and methods that are meant to be exemplary and illustrative, not limiting in scope. In various examples, one or more of the above-described problems have been reduced or eliminated, while other examples are directed to other improvements. 
         [0011]    A technique for providing a prediction as to whether a resource will be accessible to a user is described. The technique can involve comparing asserted membership in a wireless realm with membership records. Advantageously, a user can be made aware of the likelihood of access to a resource before attempting to reach the resource. 
         [0012]    Typically, one or more access points (APs) in range of a station associated with the user can be identified as providing direct or indirect access to a network resource. The APs providing such access, with or without cost depending upon the implementation and/or configuration, can be presented to the user for selection. If the user can attach to the AP and has appropriate membership rights, then the user can access the network resource. 
         [0013]    A potential authentication indication (PAI) engine can determine whether it is possible for a station to authenticate to a network. A user of the station can assert membership in a wireless realm, and send the asserted membership to the PAI engine. The PAI engine can compare the asserted membership to membership records, and indicate whether a user having the asserted membership can potentially authenticate with a target network. 
         [0014]    Advantageously, the PAI can inform a user of the possibility that the user can authenticate to a target network before trying to authenticate. The PAI can provide a list of networks and the user can select one from the list. By identifying possible networks, the user can save time by avoiding networks that will not allow authentication. Also, the station associated with the user may save power by avoiding unnecessary attempts. 
         [0015]    A system designed in accordance with the technique can include a query front-end processing (QFP) engine, a membership comparison engine coupled to the QFP engine, a network resource name (NRN) table coupled to the membership comparison engine, and a network resource access prediction engine coupled to the membership comparison engine and the QFP engine. The QFP engine, membership comparison engine, and NRN table can work together to indicate to a user of a station whether it is possible for the station to authenticate to a target network. 
         [0016]    In a method designed with the technique, a station can transmit a query transport protocol (QTP) query to an AP. The query can include an asserted membership of a user in a network, such as a wireless realm, home network, or other applicable network. A response to the QTP query can include an indication as to whether authentication to a target network is possible. Thus, the QTP query is useful in eliciting a response from an AP that indicates whether it is possible to authenticate to a target network. The target network need not be the network in which membership is asserted. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0017]      FIG. 1  depicts an example of a system for determining whether it is possible for a station with a user having an asserted membership to authenticate to a target network. 
           [0018]      FIG. 2  depicts a flowchart of an example of a process for predicting access to a network resource for a station, and attaching if the prediction is favorable. 
           [0019]      FIG. 3  depicts an example of a potential authentication indication (PAI) engine. 
           [0020]      FIG. 4  depicts a flowchart of an example of a method for predicting access to a network resource. 
           [0021]      FIG. 5  depicts an example of an infrastructure network including potential locations for a PAI engine. 
           [0022]      FIG. 6  depicts an example of a system in which a station in the context of an infrastructure network queries for a prediction as to whether it is possible to access a resource. 
           [0023]      FIG. 7  depicts an example of a system in which a station, in the context of multiple networks, queries whether a network resource is predicted to be accessible to a user of the station. 
           [0024]      FIG. 8  depicts an example of a computing system that is representative of the computing systems discussed herein. 
       
    
    
     DETAILED DESCRIPTION 
       [0025]    In the following description, several specific details are presented to provide a thorough understanding. One skilled in the relevant art will recognize, however, that the concepts and techniques disclosed herein can be practiced without one or more of the specific details, or in combination with other components, etc. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of various examples disclosed herein. 
         [0026]      FIG. 1  depicts an example of a system  100  for determining whether it is possible for a station with a user having an asserted membership to authenticate to a target network. The system  100  includes a station  102 , an access point (AP)  104 , and a potential authentication indication (PAI) engine  106 . The station  102  is coupled to the AP  104  and the AP  104  is coupled to the PAI engine  106 . 
         [0027]    In the example of  FIG. 1 , the station  102  can include a laptop, a wireless telephone, portable digital assistant (PDA), desktop computer, or any other applicable computing device capable of communication on a wireless network. A “station,” as used herein, may or may not be referred to as a device with a media access control (MAC) address and a physical layer (PHY) interface to the wireless medium that comply with the Institute of Electrical and Electronic Engineers (IEEE) 802.11 standard. In general, a station can comply with any wireless standard or none at all, and may have any known or convenient interface to a wireless or other medium. 
         [0028]    The station  102  can include a radio capable of generating signals compatible with communication on one or more networks. The station  102  can transmit and receive data as radio frequency (RF) signals. The radio can operate on any band in which a wireless standard, e.g., 802.11, is standardized. The station  102  can also include multiple radios. For example, the station  102  could include a 2.4 and a 5 GHz radio. 
         [0029]    The station  102  can be associated with membership in a network. The network can be, for example, a wireless realm. A “wireless realm” can be a network operated by a particular entity, such as a wireless access provider. A user of the station  102  can purchase or otherwise be given a membership allowing use of the wireless realm such as by various “hot spots” or locations where the entity provides wireless access. At times the entity responsible for the network partners with other wireless access providers to provide access to shared networks. The station  102  can be used to access a resource of a network through the network or a shared network. Of course, the station  102  can also be used to access the resource through some other network, such as a free or subscription network. 
         [0030]    In the example of  FIG. 1 , the AP  104  is in radio communication with the station  102 . The AP  104  can retransmit received wireless signals over, for example, an Ethernet connection. The AP can be implemented as a station, but is generally referred to as an AP in this paper so as to distinguish the AP  104  from the station  102 . Depending upon the context and/or implementation, the station  102  and AP  104  could be referred to as stations, or the station  102  could be referred to as a non-AP station. 
         [0031]    In the example of  FIG. 1 , the PAI engine  106  can include special purpose hardware, firmware, software, system, or arrangement operable to predict access to a network resource. Modules of an example PAI engine are discussed later with reference to  FIG. 2 . 
         [0032]    In the example of  FIG. 1 , in operation, the station  102  transmits a generic query transport protocol (QTP) query to the AP  104 . The QTP query can include a domain name container defining membership in a wireless realm and can include one or more units of information defining the membership of a station to the wireless realm. The QTP query can be structured to include multiple domain name containers and/or can define membership to multiple wireless realms. 
         [0033]    The QTP query is structured to enable the station  102  to query the AP  104 . The purpose of the QTP query in this case is to answer the question, “will a user be allowed access to a network resource upon a yet un-attempted access request for the network resource?” The QTP query may or may not be used to answer other questions at the same or other times. 
         [0034]    A generic advertising service (GAS) query is an example of a basic structure of an 802.11-compatible QTP. The GAS is a protocol that allows a station to ask questions of an AP and get answers. In the 802.11 standard GAS query, a domain name container includes data sufficient to identify an asserted membership. More generally, an asserted membership is a wireless realm, or data sufficient to identify a wireless realm, in any format. 
         [0035]    In the example of  FIG. 1 , in operation, the AP  104  receives the QTP query and provides the QTP query to the PAI engine  106 . The PAI engine  106  can receive the QTP query including the domain name container that includes the one or more units of information defining a membership in the wireless realm. 
         [0036]    The PAI engine  106  compares the membership in the wireless realm(s) to membership access for the network resource. The PAI engine  106  determines whether the station  102  has access to the wireless realm(s) necessary to access the network resource. 
         [0037]    The PAI engine  106  provides a response to the AP  104 , which transmits a response defining membership access to the network resource to the station  102 . The response predicts whether the station will be allowed access to the network resource upon an attempt to access the network resource. 
         [0038]    The station  102  receives the response from the AP  104  including an indication of a relationship between the network resource and the membership in the wireless realm. The indication can predict that the station  102  will be allowed access by the AP  104  to the network resource. The response can be displayed to a user of the station  102 , or can be automatically acted on by another processor in the station  102 . 
         [0039]      FIG. 2  depicts a flowchart  200  of an example of a process for predicting access to a network resource for a station, and attaching if the prediction is favorable. The process is organized as a sequence of modules in the flowchart  200 . However, it should be understood that these and modules associated with other processes and methods described herein may be reordered for parallel execution or into different sequences of modules. 
         [0040]    In the example of  FIG. 2 , the flowchart  200  starts at module  202  with transmitting, to a first AP, a QTP query including an asserted membership. The QTP query can include, for example, a domain name container defining membership in a wireless realm. The query can seek to determine whether a station associated with the QTP query will be allowed access to a network resource if the asserted membership is true. 
         [0041]    In the example of  FIG. 2 , the flowchart  200  continues to module  204  with receiving, from a second AP, an indication of a relationship between the network resource and membership in a wireless realm. The membership in the wireless realm can be indirectly determined using the membership in the domain container, or the membership in the domain name container could itself be the membership in the wireless realm. It should be noted that, depending upon the implementation, configuration, and/or environmental factors (e.g., roaming) the first AP and the second AP can be the same AP or different APs. Depending upon the implementation, the fact that the indication of a relationship is received can indicate the relationship is likely to enable attachment to an AP, while a failure to receive the indication of a relationship can indicate that the relationship is unlikely to enable attachment to the AP. (Of course, a lack of a response can also be for other reasons, such as a message failure.) 
         [0042]    In the example of  FIG. 2 , the flowchart  200  continues to module  206  with attaching to a third AP. It should be noted that, depending upon the implementation, configuration, and/or environmental factors, the first AP and the third AP can be the same or different APs. Also, the second AP and the third AP can be the same or different APs. As used in this paper, “attaching” refers to actions taken at a station to associate, authenticate, and/or otherwise wirelessly connect to an AP. A station having attached to the third AP after receiving a favorable prediction, the flowchart  200  ends. 
         [0043]      FIG. 3  depicts an example of a PAI engine  300 , such as the PAI engine described with reference to  FIG. 1 . The PAI engine  300  includes a query front-end processing (QFP) engine  302 , a network resource name (NRN) table  304 , a membership comparison engine  306 , and a network resource access prediction engine  308 . 
         [0044]    In the example of  FIG. 3 , the QFP engine  302 , can include hardware, firmware, or software implemented in hardware or firmware and executed by a processor, such as a microprocessor. The QFP engine  302  can include routines, circuitry, procedures or other sub modules for receiving requests and transmitting responses, such as by inter-process communications with systems operating on an AP. 
         [0045]    In the example of  FIG. 3 , the NRN table  304  can include a database, file, data store, list of records, table, or other data management device for storing information describing membership of users and/or groups in wireless realms. The NRN table  304  can include a cache of such information compiled by an entity managing a wireless realm. The location of or distributed nature of the NRN table  304  is not critical so long as an NRN table interface is available to access the data. 
         [0046]    In the example of  FIG. 3 , the membership comparison engine  306  can include hardware, firmware, or software implemented in hardware or firmware for execution by a processor. The membership comparison engine  306  can compare an asserted membership received in, for example, a QTP query, with a configured membership stored in the NRN table  304 . 
         [0047]    In the example of  FIG. 3 , the network resource access prediction engine  308  can include hardware, firmware, or software implemented in hardware or firmware for execution by a processor. The network resource access prediction engine  308  can provide an access prediction based on the result of a comparison from the membership comparison engine  306 . The QFP engine  302  can provide the access prediction as a response to an asserted membership, if applicable. 
         [0048]    In the example of  FIG. 3 , in operation, the NRN table typically receives membership configurations for users and/or groups, as is depicted by the Membership Configurations arrow pointing toward the NRN table  304  in the example of  FIG. 3 . The membership configurations can be provided to the NRN table in an automated or manual fashion. 
         [0049]    In the example of  FIG. 3 , in operation, the QFP engine  302  receives an asserted membership. The asserted membership can be received in, for example, a QTP query. The asserted membership can be received or otherwise originate at a station. 
         [0050]    In the example of  FIG. 3 , in operation, the QFP engine  302  provides the asserted membership to the membership comparison engine  306 . The membership comparison engine  306  compares the asserted membership with configured memberships from the NRN table  304 . If there is a match, then the user associated with the asserted membership appears to have access to the network resource in question, assuming the asserted membership is true. 
         [0051]    In the example of  FIG. 3 , in operation, the membership comparison engine  306  provides the result of the comparison to the network resource access prediction engine  308 , which, in turn, provides an access prediction to the QFP engine  302  in accordance with the result of the comparison. In a specific implementation, the QFP engine  302  provides a response to the asserted membership if the access prediction is favorable, and does not respond if the access prediction is not favorable. 
         [0052]      FIG. 4  depicts a flowchart  400  of an example of a method for predicting access to a network resource. The method is organized as a sequence of modules in the flowchart  400 . However, it should be understood that these and modules associated with other processes and methods described herein may be reordered for parallel execution or into different sequences of modules. 
         [0053]    In the example of  FIG. 4 , the flowchart  400  starts at module with  402  with receiving a QTP query including an asserted membership. The asserted membership can be provided in a container that includes information sufficient to define a membership of a user (or group in which the user is a member) in a wireless realm. The QTP query can query whether a station associated with the user will be able to attach to an AP, and through the AP to a network resource in an as-of-yet un-attempted access request for the network resource. 
         [0054]    In the example of  FIG. 4 , the flowchart  400  continues to module  404  with comparing the asserted membership to membership records. Wireless realms can allow access to stations because of membership in a wireless realm that a user of the station already has. Such membership can be based on a partnership agreement between operators of various wireless realms. 
         [0055]    In the example of  FIG. 4 , the flowchart  400  continues to module  406  with transmitting a QTP query response, indicating an attachment possibility. The response itself can be indicative of an attachment possibility, or the response can include a prediction regarding whether access to the network resource for the as-of-yet un-attempted request will be allowed. Having indicated an attachment possibility, the flowchart  400  ends. A station, having received an indication of an attachment possibility, may attempt to attach (not shown), and the success of the attempt will depend upon whether the asserted membership can be shown by the station to be true. 
         [0056]      FIG. 5  depicts an example of an infrastructure network including potential locations for a PAI engine.  FIG. 5  includes controller  502 , network  503 , PAI engine  504 , wireless switch  506 - 1  through wireless switch  506 - n  (collectively wireless switches  506 ), AP  512 - 1  through AP  512 - n  (collectively APs  512 ). 
         [0057]    In the example of  FIG. 5 , the controller  502  can be practically any type of device that is capable of communicating with a communications network, for example, a mainframe or a workstation, server class computing device, or other computing device. The controller  502  can be connected to a wired backbone network (not shown), either directly or indirectly through a wireless network. The controller  502  can include, by way of example but not limitation, a Lightweight Directory Access Protocol (LDAP) server, a policy server, a combination of these servers, or another known or convenient server. 
         [0058]    In the example of  FIG. 5 , the network  503  can be practically any type of communications network, such as, by way of example but not limitation, the Internet or an infrastructure network. The term “Internet” as used herein refers to a network of networks which uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web). 
         [0059]    In the example of  FIG. 5 , the PAI engine  504  can be located in a variety of locations as depicted, for example, as a module or component of the controller  502 , as a module or component of the wireless switches  506 , or as a module or component of the APs  512 . The PAI engine  504  could be located in or as an intermediate entity within or coupled to the APs  512 , the controller  502 , the wireless switches  506 , or the network  503 . 
         [0060]    In the example of  FIG. 5 , the wireless switches  506  are devices, such as specific purpose computing devices coupled together by a wired backbone. The wireless switches  506  can swap data and client information including authentication and authorization attributes and information. The wireless switches  506  can provide forwarding, queuing, tunneling, and/or some security services for the information the wireless switches  506  receive from APs  512 . The wireless switches  506  can coordinate, provide power to, and/or manage the configuration of the APs  512 . In a non-limiting example, the wireless switches are Trapeze Networks Mobility Exchange® Switches, available from Trapeze Networks, Inc., of Pleasanton, Calif. 
         [0061]    In the example of  FIG. 5 , the APs  512  are stations that transmit and receive data (and may therefore be referred to as transceivers) using one or more radios. For example, an AP may have a radio that is configured for any band in which, for example, 802.11 is standardized. As another example, an AP may have multiple radios, such as a 2.4 GHz and a 5 GHz radio. In a non-limiting example, an access point transmits and receives information as radio frequency (RF) signals to and from a wireless client over an Ethernet connection. The access points  512  transmit and receive information to and from their associated wireless exchange switches  506 . Connection to a second wireless exchange switch can provide redundancy. 
         [0062]    In the example of  FIG. 5 , in operation, supposing the PAI engine  504  is located within the AP  512 - 1 , the station  514  transmits a request for a prediction of the ability of the station  514  to attach to one of the APs  512 , and through the AP to a network resource. The request is processed within the PAI engine  504  and a response, if appropriate, can be transmitted by the AP  512 - 1 . 
         [0063]    Alternatively, in the example of  FIG. 5 , supposing the PAI engine  504  is located within the wireless switch  506 - 1 , the station  514  transmits a request for a prediction of the ability of the station  514  to attach to one of the APs  512 , and through the AP to a network resource. The request is retransmitted to the wireless switch  506 - 1  where the PAI engine  504  is located. The PAI engine  504  processes the request and provides a response to the wireless switch  506 - 1  which transmits the response back to AP  512 - 1  which in turn transmits the response to the station  514 , if appropriate. 
         [0064]    Alternatively, in the example of  FIG. 5 , supposing the PAI engine  504  is located within the controller  502 , the station  514  transmits a request for a prediction of the ability of the station  514  to attach to one of the APs  512 , and through the AP to a network resource. The request is transmitted to the wireless switch  506 - 1  which sends the request to the controller  502  via the network  503 . The controller  502  provides the request to the PAI engine  504  which processes the request and provides a response. The controller  502  sends a response to wireless switch  506 - 1  via the network  503 , and the wireless switch  506 - 1  provides the response to the AP  512 - 1 . The AP  512 - 1  then transmits the response to the station  514 , if appropriate. 
         [0065]      FIG. 6  depicts an example of a system  600  in which a station in the context of an infrastructure network queries for a prediction as to whether it is possible to access a resource. In the example of  FIG. 6 , the infrastructure network is an infrastructure network as discussed in reference to  FIG. 5 . In the example of  FIG. 6 , a resource  616  can be a network, part of a network, computing system, cluster, website, or other desirable system or unit of information. 
         [0066]    In a non-limiting example, a user of the station  612  can attempt to access an airlines reservation website from within an airport. Assume the providers of wireless access have a partnership with the airport allowing access to the reservation site. The user can communicate a request to the AP  610  which can provide the request to the PAI engine  604 , and the PAI engine  604  can consider membership required to access the resource  616  to determine whether the user might potentially have appropriate membership rights. A prediction can be provided to the AP  610 . As can be noted, the closer the PAI engine  604  is to the AP  610 , the shorter the distance (and, presumably, the fewer network resources consumed). 
         [0067]    Depending upon the implementation, embodiment, and/or user preferences, a user of the station  612  may decide to attach to the AP  610  only after receiving a favorable prediction. 
         [0068]      FIG. 7  depicts an example of a system  700  in which a station, in the context of multiple networks, queries whether a network resource is predicted to be accessible to a user of the station.  FIG. 7  includes station  702 , AP  704 - 1  through AP  704 - n  (collectively APs  704 ), PAI engine  705 - 1  through PAI engine  705 - n  (collectively PAI engines  705 ), partner network  706 - 1  through  706 - 2  (collectively partner networks  706 ), non-partner networks  708 - 1  through  708 - 2 , resource  710 . 
         [0069]    In the example of  FIG. 7 , the station  702  can be a station as defined in reference to, for example,  FIG. 1 . The APs  704  can be APs as defined in reference to, for example,  FIG. 1  or  FIG. 5 . The PAI engines  705  can be as defined in the figures described above, and the resource  710  can be as defined in reference to, for example,  FIG. 6 . 
         [0070]    In the example of  FIG. 7 , the partner networks  706  can be networks having agreements to allow access to the resource  710  for members of another network, in which the user associated with the station  702  is a member. Contrarily, the non-partner networks  706  can be networks lacking agreements to allow access to the resource  710 . 
         [0071]    In the example of  FIG. 7 , in operation, the station  702  can transmit a query to all APs in range of the station  702  to gather predictions from the APs  704  indicating whether any of the APs  704  will allow access to the resource  710 . The APs  704 - 1  and  704 - 3 , which are connected to partner networks  706  can determine that access to the resource  710  is predicted to be allowed. However, the APs  704 - 1  and  704 - n  are connected to non-partner networks  708 . As such, for illustrative purposes, no access is predicted to be allowed. The APs  704  transmit responses to the station  702  indicating that access is predicted to be allowed, or the APs  704  either do not transmit responses or transmit negative responses if access is not predicted to be allowed. The station  702  can then display a list of the APs, or data associated with the APs, predicted to allow access. Also the station  102  could take action to automatically access the resource  710 . 
         [0072]      FIG. 8  depicts an example of a computing system that is representative of the computing systems discussed herein. The system  800  may be a conventional computer system that can be used as a client computer system, such as a wireless client or a workstation, or a server computer system. The system  800  includes a device  802 , I/O devices  804 , and a display device  806 . The device  802  includes a processor  808 , a communications interface  810 , memory  812 , display controller  814 , non-volatile storage  816 , I/O controller  818 , clock  822 , and radio  824 . The device  802  may be coupled to or include the I/O devices  804  and the display device  806 . 
         [0073]    The device  802  interfaces to external systems through the communications interface  810 , which may include a modem or network interface. It will be appreciated that the communications interface  810  can be considered to be part of the system  800  or a part of the device  802 . The communications interface  810  can be an analog modem, ISDN modem or terminal adapter, cable modem, token ring IEEE 802.5 interface, Ethernet/IEEE 802.3 interface, wireless 802.11 interface, satellite transmission interface (e.g. “direct PC”), WiMAX/IEEE 802.16 interface, Bluetooth interface, cellular/mobile phone interface, third generation (3G) mobile phone interface, code division multiple access (CDMA) interface, Evolution-Data Optimized (EVDO) interface, general packet radio service (GPRS) interface, Enhanced GPRS (EDGE/EGPRS), High-Speed Downlink Packet Access (HSPDA) interface, or other interfaces for coupling a computer system to other computer systems. 
         [0074]    The processor  808  may be, for example, a conventional microprocessor such as an Intel Pentium microprocessor or Motorola power PC microprocessor. The memory  812  is coupled to the processor  808  by a bus  820 . The memory  812  can be Dynamic Random Access Memory (DRAM) and can also include Static RAM (SRAM). The bus  820  couples the processor  808  to the memory  812 , also to the non-volatile storage  816 , to the display controller  814 , and to the I/O controller  818 . 
         [0075]    The I/O devices  804  can include a keyboard, disk drives, printers, a scanner, and other input and output devices, including a mouse or other pointing device. The display controller  814  may control in the conventional manner a display on the display device  806 , which can be, for example, a cathode ray tube (CRT) or liquid crystal display (LCD). The display controller  814  and the I/O controller  818  can be implemented with conventional well known technology. 
         [0076]    The non-volatile storage  816  is often a magnetic hard disk, flash memory, an optical disk, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory  812  during execution of software in the device  802 . One of skill in the art will immediately recognize that the terms “machine-readable medium” or “computer-readable medium” includes any type of storage device that is accessible by the processor  808 . 
         [0077]    Clock  822  can be any kind of oscillating circuit creating an electrical signal with a precise frequency. In a non-limiting example, clock  822  could be a crystal oscillator using the mechanical resonance of vibrating crystal to generate the electrical signal. 
         [0078]    The radio  824  can include any combination of electronic components, for example, transistors, resistors and capacitors. The radio is operable to transmit and/or receive signals. 
         [0079]    The system  800  is one example of many possible computer systems which have different architectures. For example, personal computers based on an Intel microprocessor often have multiple buses, one of which can be an I/O bus for the peripherals and one that directly connects the processor  808  and the memory  812  (often referred to as a memory bus). The buses are connected together through bridge components that perform any necessary translation due to differing bus protocols. 
         [0080]    Network computers are another type of computer system that can be used in conjunction with the teachings provided herein. Network computers do not usually include a hard disk or other mass storage, and the executable programs are loaded from a network connection into the memory  812  for execution by the processor  808 . A Web TV system, which is known in the art, is also considered to be a computer system, but it may lack some of the features shown in  FIG. 8 , such as certain input or output devices. A typical computer system will usually include at least a processor, memory, and a bus coupling the memory to the processor. 
         [0081]    In addition, the system  800  is controlled by operating system software which includes a file management system, such as a disk operating system, which is part of the operating system software. One example of operating system software with its associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Wash., and their associated file management systems. Another example of operating system software with its associated file management system software is the Linux operating system and its associated file management system. The file management system is typically stored in the non-volatile storage  816  and causes the processor  808  to execute the various acts required by the operating system to input and output data and to store data in memory, including storing files on the non-volatile storage  816 . 
         [0082]    Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. 
         [0083]    It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is Appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
         [0084]    The present example also relates to apparatus for performing the operations herein. This Apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, flash memory, magnetic or optical cards, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. 
         [0085]    The algorithms and displays presented herein are not inherently related to any particular computer or other Apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized Apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present example is not described with reference to any particular programming language, and various examples may thus be implemented using a variety of programming languages.