Patent Publication Number: US-8990411-B2

Title: Dynamic connection management on mobile peer devices

Description:
BACKGROUND 
     Computing devices establish peer-to-peer connections for messaging, gaming, file exchange, and other applications. Existing wired networking systems enable the connectivity between endpoints via relaying and connectivity establishment techniques. In some of the existing systems, because of differences in network address translation and port availability, various connection paths are probed when establishing a peer-to-peer connection to identify the best connection. The identified connection is used for the duration of the peer-to-peer communication as connection quality in the wired networking systems is typically static. 
     In wireless networking systems, however, connection quality varies over time. For example, topology changes may occur such as when one or both of the devices changes locations. The existing systems fail to accommodate such topology changes, are expensive, and not scalable. 
     SUMMARY 
     Embodiments of the disclosure maintain alternative connections for dynamic transition during communication between a first computing device and a second computing device. A first computing device defines a connection between the first computing device and a second computing device as an active connection. As the first computing device changes location, one or more candidate connections between the first computing device and the second computing device are evaluated as alternatives to the active connection. The first computing device transitions the active connection from the defined connection to one of the candidate connections based on the evaluation. The evaluation occurs during data transmission over the defined connection between the first computing device and the second computing device. 
     This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is an exemplary block diagram illustrating two computing devices communicating with each other via a network. 
         FIG. 2  is an exemplary block diagram illustrating a mobile computing device storing data identifying connections. 
         FIG. 3  is an exemplary flow chart illustrating the evaluation of alternative connections and the transition from one connection to another. 
         FIG. 4  is an exemplary flow chart illustrating the testing and ranking of connections. 
     
    
    
     Corresponding reference characters indicate corresponding parts throughout the drawings. 
     DETAILED DESCRIPTION 
     Referring to the figures, embodiments of the disclosure maintain alternative connections for dynamic transition during communication between a first computing device  102  and a second computing device  104 . In some embodiments, aspects of the disclosure provide optimized, reliable mobile-to-mobile connectivity for networks where connection characteristics and capabilities may change dynamically. Embodiments of the disclosure are tolerant of and resilient to changes in network topology. 
     Referring again to  FIG. 1 , an exemplary block diagram illustrates two computing devices communicating with each other via a network  106 . In the example of  FIG. 1 , the first computing device  102  communicates with the second computing device  104  via the network  106 . In some embodiments, the first computing device  102  and the second computing device  104  are peer devices and the connection between the first computing device  102  and the second computing device  104  is a peer-to-peer connection. For example, the first computing device  102  and the second computing device  104  are mobile devices communicating via a wireless network. In other embodiments, one of the first computing device  102  and the second computing device  104  is a mobile device and the other device provides content, such as a client communicating with a server. 
     As an example, the first computing device  102  and the second computing device  104  include portable computing devices such as laptops, netbooks, gaming devices, and/or portable media players. However, the first computing device  102  and the second computing device  104  may include any device executing instructions (e.g., application programs). Further, each of the first computing device  102  and the second computing device  104  may represent a group of processing units or other computing devices. 
     The first computing device  102  and the second computing device  104  communicate via the network  106 . Exemplary networks  106  include wired and/or wireless networks, and may represent local area networks or global networks such as the Internet. In embodiments in which the network  106  includes wireless networks, the first computing device  102  and the second computing device  104  may be enabled with technology such as BLUETOOTH brand wireless communication services (secured or unsecured), radio frequency identification (RFID), Wi-Fi such as peer-to-peer Wi-Fi, ZIGBEE brand wireless communication services, near field communication (NFC), and other technologies that enable short-range or long-range wireless communication. In some embodiments, the network  106  includes a wireless cellular network providing Internet access. 
     Referring next to  FIG. 2 , an exemplary block diagram illustrates a mobile computing device  202  storing data identifying connections. The mobile computing device  202  maintains alternative connections for dynamic transition during communication with another computing device. With reference to  FIG. 1 , the mobile computing device  202  represents the first computing device  102 , the second computing device  104 , or both (separately). For example, the components and data illustrated in  FIG. 2  may be executed and stored by the first computing device  102  and/or the second computing device  104 . 
     While illustrated as a single mobile computing device  202  in  FIG. 2 , aspects of the disclosure contemplate other hardware configurations to provide the functionality associated with the mobile computing device  202 . For example, the functionality may be provided by a cloud service, a network of peer-to-peer devices, or other hardware or software configuration. 
     The mobile computing device  202  has at least one processor  204  and one or more computer-readable media such as a memory area  206 . The processor  204  includes any quantity of processing units, and is programmed to execute computer-executable instructions for implementing aspects of the disclosure. The instructions may be performed by the processor  204  or by multiple processors executing within the computing device  202 , or performed by a processor external to the computing device  202  (e.g., by a cloud service). In some embodiments, the processor  204  is programmed to execute instructions such as those illustrated in the figures (e.g.,  FIG. 3  and  FIG. 4 ). 
     The memory area  206  includes any quantity of media associated with or accessible to the computing device  202 . The memory area  206  may be internal to the computing device  202  (as shown in  FIG. 2 ), external to the computing device  202  (not shown), or both (not shown). 
     In some embodiments, the memory area  206  stores data defining an active connection  208 , a set of candidate connections  214 , and a set of non-candidate connections  216 . The active connection  208  represents the connection currently in-use for data transmission. The set of candidate connections  214  represents connections which are available, but not currently in use. The set of non-candidate connections  216  represents connections which are currently unavailable due to, for example, connectivity or performance issues. 
     In some embodiments, the connections may include one or more of the following: local wireless fidelity (Wi-Fi) network with local Internet protocol, public Internet using public Internet protocol assigned by a Wi-Fi router, a BLUETOOTH brand network with a BLUETOOTH brand network address, a 3G network using local Internet protocol, and a 3G network using public Internet protocol assigned by carrier network address translation. The example connections are exchanged, in some embodiments, via a separate presence or control channel. In some embodiments, the first computing device  102  and the second computing device  104  register with a shared service (e.g., a central server or router). 
     Each of the connections stored by the memory area  206  has a protocol  210  and address  212 . Exemplary protocol  210  and address  212  pairs are shown in Table 1 below. 
     
       
         
           
               
             
               
                 TABLE 1 
               
             
            
               
                   
               
               
                 Exemplary Connections Stored by the First Computing Device. 
               
            
           
           
               
               
               
               
            
               
                 Active 
                 Candidate 
                 Candidate 
                 Non-Candidate 
               
               
                 Connection 
                 Connection 
                 Connection 
                 Connection 
               
               
                   
               
               
                 Wi-Fi 
                 Wi-Fi 
                 3G 
                 BLUETOOTH 
               
               
                 192.168.1.56:12000 
                 156.78.133.2:23000 
                 10.230.3.6:15000 
                 X:Y 
               
               
                   
               
            
           
         
       
     
     The memory area  206  further stores one or more computer-executable components for implementing aspects of the disclosure. The components may be used to perform the operations illustrated in  FIG. 3  and  FIG. 4 . Exemplary components include a communication component  218 , an analysis component  220 , and a memory component  222 . Execution of these components is next described. 
     The communication component  218 , when executed by the processor  204  causes the processor  204  to define, by the first computing device  102 , a connection between the first computing device  102  and the second computing device  104  as the active connection  208 . For example, the first computing device  102  identifies available connections (e.g., the candidate connections  214 ) and selects one of the available connections to establish communication. The analysis component  220 , when executed by the processor  204 , causes the processor  204  to evaluate one or more of the candidate connections  214  as alternatives to the active connection  208 . For example, the analysis component  220  evaluates the candidate connections  214  responsive to an event that may correlate to a change in topology of the active connection  208 . For example, the analysis component  220  evaluates the candidate connections  214  at regular intervals as the first computing device  102  changes location. In another example, the analysis component  220  evaluates the candidate connections  214  in response to detection of an event that may alter the topology of the existing connection. The event may include, for example, a change in location of the first computing device  102 , arrival of the first computing device  102  at a particular location (e.g., detected via a positioning system such as a global positioning system), or departure of the first computing device  102  from a particular location. Other events include entering or exiting known “dead zones” where signal strength is known to be weak or nonexistent. Other locations may have a high communication cost which the user may have indicated a preference for avoiding to reduce overall communication costs. Aspects of the disclosure, however, are operable with any event or other trigger prompting evaluation by the analysis component  220 . The evaluation by the analysis component  220  includes, for example, determining bandwidth, latency, error rate, and other signal or connection characteristics. The evaluation by the analysis component  220  produces, in some embodiments, a ranking or score for the candidate connections  214 . For example, the ranking or score may be based at least in part on the determined performance or connection characteristics. Further, the evaluation occurs while the first computing device  102  is actively transmitting and/or receiving data over the active connection  208 . 
     Based on the evaluation by the analysis component  220 , the communication component  218  further executes to transition the active connection  208  from the defined connection to one of the candidate connections  214 . For example, the analysis component  220  or the communication component  218  selects the candidate connection  214  ranked highest, or meeting other criteria (e.g., specified by the first computing device  102 , user, or other entity). The communication component  218  then transitions the selected candidate connection  214  to be the active connection  208 . The communication between the first computing device  102  and the second computing device  104  continues over the selected candidate connection  214  (as the new active connection  208 ). 
     In some embodiments, the transition by the communication component  218  may occur based on one or more of the following: a failure of a network component supporting the active connection  208 , identification of the selected candidate connections  214  having a higher ranking than the active connection  208 , and other determinations or input. For example, the first computing device  102  or the second computing device  104  may explicitly request the transition. 
     The memory component  222 , when executed by the processor  204  causes the processor  204  to store the previous active connection  208  (e.g., the defined connection) with the candidate connections  214 . In this manner, the previous active connection  208  becomes a possible candidate connection  214  should the performance or connection characteristics of this connection exceed those of the new active connection  208 . 
     At least a portion of the functionality of the various elements in  FIG. 2  may be performed by other elements in  FIG. 2 , or an entity (e.g., processor, web service, server, application program, computing device, etc.) not shown in  FIG. 2 . 
     Referring next to  FIG. 3 , an exemplary flow chart illustrates the evaluation of alternative connections and the transition from one connection to another. The active connection  208  between the first computing device  102  and the second computing device  104  is defined at  302 . For example, one of the candidate connections  214  may be selected to be the active connection  208 . Communication between the first computing device  102  and the second computing device  104  is established using the active connection  208 . The communication may established using the protocol  210  and address  212  of the active connection  208 , although other means for establishing the communication are contemplated. 
     At  304 , during communication or data transmission between the first computing device  102  and the second computing device  104  via the active connection  208 , one or more of the candidate connections  214  are evaluated. For example, each of the candidate connections  214  may be evaluated, or a portion of the set of the candidate connections  214  are evaluated (e.g., only the top ten candidates). The evaluation includes, in some embodiments, determining one or more of the following: bandwidth or throughput, latency, and error rate or packet loss for each of the candidate connections  214 . In some embodiments, the active connection  208  is evaluated in parallel (e.g., simultaneously or contemporaneously) with a search for a better connection (e.g., evaluation of the candidate connections  214 ). 
     The operation  304  may also be performed at connection initialization time to select the active connection  208  (e.g., operation  302 ). 
     Based on the evaluation, aspects of the disclosure produce a ranking of the candidate connections  214 . Alternative or in addition, a score is generated for each of the candidate connections  214 . Further, a score or other metric is generated for the active connection  208 , and is based at least in part on performance of the active connection  208 . The ranking or scores are used to determine whether to replace the active connection  208  at  306 . For example, each score value is compared to the score value for the active connection  208  to identify one of the candidate connections  214  (e.g., having a higher or greater score than the current active connection  208 ). The ranking and score may be calculated in some embodiments by assigning weights to various criteria used to measure the performance of the connection. 
     At  308 , the first computing device  102  transitions the identified one of the candidate connections  214  to be the active connection  208 . The user of the first computing device  102  is unaware of the transition in some embodiments, such that the transition occurs seamlessly, instantly, and with little perceived transition time to enhance the user experience. 
     The transition may occur at various times. For example, the transition may occur after the candidate connections  214  are evaluated, at a regular interval (e.g., on the hour, at midnight, etc.). In some embodiments, the transition occurs responsive to detection of a failure of the active connection  208 , responsive to reduced performance less than a predefined threshold, or responsive to a topology change associated with the active connection  208 . 
     At  310 , the previous active connection  208  is considered to now be one of the candidate connections  214 . As such, the previous active connection  208  is “moved” to the set of candidate connections  214  as a fallback connection. During subsequent evaluation of the candidate connections  214 , the previous active connection  208  may (or may not be) selected to replace the new active connection  208 . 
     One or more of the operations illustrated in  FIG. 3  may be implemented as software instructions encoded on a computer-readable medium, in hardware programmed or designed to perform the operations, or both. 
     In some embodiments, the operations illustrated in  FIG. 3  are performed by the first computing device  102 . In other embodiments, one or more of the operations illustrated in  FIG. 3  are performed by another computing device (e.g., as a web service) or peer-to-peer devices. 
     Referring next to  FIG. 4 , an exemplary flow chart illustrates the testing and ranking of connections. The testing and ranking of the connections may occur at various intervals (e.g., hourly or daily) or in response to various conditions or events. For example, the operations may execute upon expiration of a countdown timer. Additionally, some of the operations may be performed in parallel rather than in sequence as illustrated. At  402 , the non-candidate connections  216  are tested for connectivity (e.g., determine whether a connection can be established with the non-candidate connections  216 ) and/or performance (e.g., whether the performance of the non-candidate connections  216  are above a minimum threshold level). The testing includes, for example, attempting to establish a connection and exchange data (e.g., a test packet). The testing is used to determine whether to include any of the non-candidate connections  216  with the set of candidate connections  214 . If the connectivity and/or communication performance between the first computing device  102  and another device (e.g., the second computing device  104 ) exists or is sufficient for a particular one of the non-candidate connections  216  at  404 , the particular non-candidate connection  216  is moved to the set of candidate connections  214  at  406 . 
     At  408 , the set of candidate connections  214  are evaluated for connectivity and/or performance. The evaluation includes, for example, attempting to establish a connection and exchange data (e.g., a test packet). If the connectivity and/or performance test fails for any of the candidate connections  214 , those failing candidate connections  214  are moved to the set of non-candidate connections  216  at  412 . If the connectivity/performance test is successful at  410 , the candidate connections  214  are ranked at  414 . 
     The operations illustrated in  FIG. 4  are performed periodically to maintain the set of candidate connections  214  and the set of non-candidate connections  216 . 
     One or more of the operations illustrated in  FIG. 4  may be implemented as software instructions encoded on a computer-readable medium, in hardware programmed or designed to perform the operations, or both. 
     In some embodiments, the operations illustrated in  FIG. 4  are performed by the first computing device  102 . In other embodiments, one or more of the operations illustrated in  FIG. 4  are performed by another computing device (e.g., as a web service) or peer-to-peer devices. 
     Additional Examples 
     While embodiments have been described with reference to data collected from users, aspects of the disclosure provide notice to the users of the collection of the data (e.g., via a dialog box or preference setting) and the opportunity to give or deny consent. The consent may take the form of opt-in consent or opt-out consent. 
     Exemplary Operating Environment 
     Exemplary computer readable media include flash memory drives, digital versatile discs (DVDs), compact discs (CDs), floppy disks, and tape cassettes. By way of example and not limitation, computer readable media comprise computer storage media and communication media. Computer storage media store information such as computer readable instructions, data structures, program modules or other data. Communication media typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. Combinations of any of the above are also included within the scope of computer readable media. 
     Although described in connection with an exemplary computing system environment, embodiments of the invention are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with aspects of the invention include, but are not limited to, mobile computing devices, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, gaming consoles, microprocessor-based systems, set top boxes, programmable consumer electronics, mobile telephones, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. 
     Embodiments of the invention may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. The computer-executable instructions may be organized into one or more computer-executable components or modules. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types. Aspects of the invention may be implemented with any number and organization of such components or modules. For example, aspects of the invention are not limited to the specific computer-executable instructions or the specific components or modules illustrated in the figures and described herein. Other embodiments of the invention may include different computer-executable instructions or components having more or less functionality than illustrated and described herein. 
     Aspects of the invention transform a general-purpose computer into a special-purpose computing device when configured to execute the instructions described herein. 
     The embodiments illustrated and described herein as well as embodiments not specifically described herein but within the scope of aspects of the invention constitute exemplary means for maintaining and selecting alternative connections for dynamic transition during communication between the first computing device  102  and the second computing device  104 , and exemplary means for continuously evaluating the active connection  208  and searching for candidate connections  214  contemporaneously. 
     The order of execution or performance of the operations in embodiments of the invention illustrated and described herein is not essential, unless otherwise specified. That is, the operations may be performed in any order, unless otherwise specified, and embodiments of the invention may include additional or fewer operations than those disclosed herein. For example, it is contemplated that executing or performing a particular operation before, contemporaneously with, or after another operation is within the scope of aspects of the invention. 
     When introducing elements of aspects of the invention or the embodiments thereof, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements. 
     Having described aspects of the invention in detail, it will be apparent that modifications and variations are possible without departing from the scope of aspects of the invention as defined in the appended claims. As various changes could be made in the above constructions, products, and methods without departing from the scope of aspects of the invention, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not in a limiting sense.