# Patent

## Title
Device and method for maintaining a communication session during a network transition

## Abstract

Provided are a device and method for maintaining a communication session during a network transition. In one example, the method includes monitoring, by a client, a connection with a first network to determine whether a signal strength of the connection falls below a threshold value. The client establishes a connection with a second network if the signal strength of the connection with the first network falls below the threshold value. Establishing the connection with the second network includes obtaining an address and port assignment corresponding to the client from the second network. The client uses the obtained address and port assignment to maintain a communication session during the changeover from the first network to the second network.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 12/203,722, filed Sep. 3, 2008, entitled DEVICE AND METHOD FOR MAINTAINING A COMMUNICATION SESSION DURING A NETWORK TRANSITION which claims benefit of U.S. Provisional Application No. 60/969,688, filed Sep. 3, 2007, entitled SYSTEM AND METHOD FOR MAINTAINING A COMMUNICATION SESSION DURING A NETWORK TRANSITION, the specifications of which are incorporated herein in their entirety.
The present application is related to U.S. patent application Ser. No. 11/214,648, filed on Aug. 30, 2005, which is a continuation-in-part of U.S. patent application Ser. No. 11/081,068, filed on Mar. 15, 2005, which claims the benefit of U.S. Provisional Patent Ser. Nos. 60/583,536, filed Jun. 29, 2004, 60/628,183, filed Nov. 15, 2004, and 60/628,291, filed Nov. 17, 2004, all of which are hereby incorporated by reference


BACKGROUND
A modern communication device may need to switch networks due to mobility of the device and other reasons. As such, network switching may occur while the device is maintaining a data and/or voice connection. Forcing the user to reestablish the connection after the network switch occurs is inconvenient and improved methods and devices are needed for handling network switches.



BRIEF DESCRIPTION OF THE DRAWINGS
For a more complete understanding, reference is now made to the following description taken in conjunction with the accompanying Drawings in which:
FIG. 1A is an embodiment of a communications environment.
FIG. 1B is an embodiment of a device that may be used within the communications environment of FIG. 1A.
FIG. 2 is a flowchart illustrating one embodiment of a method for maintaining a communication session within the environment of FIG. 1A during a break and make network transition.
FIG. 3 illustrates one embodiment of a signal strength comparison that may be used by the method of FIG. 2.
FIG. 4 is a flowchart illustrating one embodiment of a method for maintaining a communication session within the environment of FIG. 1A during a make and break network transition.
FIG. 5 is a flowchart illustrating another embodiment of a method for maintaining a communication session within the environment of FIG. 1A during a break and make network transition.
FIG. 6 is a flowchart illustrating another embodiment of a method for maintaining a communication session within the environment of FIG. 1A during a make and break network transition.



DETAILED DESCRIPTION
The present disclosure is directed to a system and method for networked communications. It is understood that the following disclosure provides many different embodiments or examples. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting. In addition, the present disclosure may repeat reference numerals and/or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments and/or configurations discussed.
Referring to FIG. 1A, in one embodiment, a communications environment 100 includes a client 104 is coupled to a network 102. For purposes of example, the client 104 is coupled to the network 102 via a wireless connection, but it is understood that the present disclosure may be applied to a wired connection. A second network 106 (also a wireless network in the present example) is also present in the environment 100. Partial or total overlap may occur between the networks 102 and 106.
The network 102 and network 106 may be the same type of network or may be different types of networks. Exemplary network types include wideband digital communication systems such as wireless local area networks (LANs) (e.g., IEEE 802.11a and 802.11g wi-fi networks), digital audio broadcasting systems (e.g., HD Radio, T-DMB and ISDB-TSB), terrestrial digital television systems (e.g., DVB-T, DVB-H, T-DMB and ISDB-T), WiMax wireless metropolitan area networks (MANs) (e.g., IEEE 802.16 networks), Mobile Broadband Wireless Access (MBWA) networks (e.g., IEEE 802.20 networks), Ultra Mobile Broadband (UMB) systems, Flash-OFDM cellular systems, and Ultra wideband (UWB) systems. Furthermore, the present disclosure may be used with Global System for Mobile communications (GSM) and/or code division multiple access (CDMA) communications systems. In some embodiments, one or both of the networks 102 and 106 may be a hybrid peer-to-peer network as described in previously incorporated U.S. patent application Ser. No. 11/081,068.
The client 104 may be any device capable of receiving and sending information via a wired or wireless network, and may include processing capabilities to handle such information. Such devices include both stationary and mobile computers, cell phones, personal digital assistants (PDAs), and pagers. In some embodiments, the client 104 may be an endpoint as described in previously incorporated U.S. patent application Ser. No. 11/081,068. In the present example, the client 104 uses a connectionless protocol such as the User Datagram Protocol (UDP), but may use other protocols (e.g., a connection based protocol such as TCP/IP) in other embodiments.
In the present example, the client 104 may switch from the network 102 to the network 106 for a number of reasons. Such reasons may include a network disconnect (e.g., loss of connectivity to the network 102), loss of signal quality with respect to the network 102 (e.g., the signal strength of the network 106 may be increasing from the client's perspective while the signal strength of the network 102 may be decreasing from the client's perspective), movement of the client from an area serviced by the network 102 to an area serviced by the network 106, changing medium types (e.g., moving from a wired connection with the network 102 to a wireless connection with the network 106), etc.
When switching from one network to another, the client 104 may wish to maintain a communication session, such as a telephone call. In the present example, such a session may need to be maintained regardless of whether the network transition is a break and make process (i.e., the connection with the network 102 is broken before the connection with the network 106 is established) or a make and break process (i.e., the connection with the network 106 is established before the connection with the network 102 is broken).
Referring to FIG. 1B, one embodiment of a device that may be used as the client 104 of FIG. 1A within the communications environment 100 is illustrated. The client 104 may include components such as a central processing unit (“CPU”) 108, a memory unit 110, an input/output (“I/O”) device 112, and a network interface 114. The network interface 114 may be, for example, one or more network interface cards (NICs) that are each associated with a media access control (MAC) address. The network interface 114 may support wired and/or wireless communications that enable the client 104 to connect to the networks 102 and 106. The components 108, 110, 112, and 114 are interconnected by one or more communications links 116 (e.g., a bus).
It is understood that the client 104 may be configured in many different ways. For example, the client 104 may be a mobile device, such as a cell phone, personal digital assistant (PDA), or laptop computer. In other embodiments, the client 104 may be a relatively stationary device, such as a personal computer or workstation. The client 104 may be relatively self-contained (e.g., as a PDA) or may include distributed components. For example, the client 104 may be differently configured from that shown in FIG. 1B and each of the listed components may actually represent several different components that may be distributed. For example, the CPU 108 may actually represent a multi-processor or a distributed processing system; the memory unit 110 may include different levels of cache memory, main memory, hard disks, and remote storage locations; and the I/O device 112 may include monitors, keyboards, and the like.
Referring to FIG. 2, a method 200 illustrates one embodiment of a break and make process that may be executed by the client 104 within the environment 100 of FIG. 1A. It is understood that the method 200 is performed by the client 104 and not by the networks 102 and 106. Accordingly, the method 200 may be executed with minimal usage of network resources.
In step 202, the client 104 monitors an established connection with the network 102. In the present example, the networks 102 and 106 are both wi-fi networks, and so the client 104 is in wireless communication with the network 102. For purposes of illustration, the monitoring is focused on the signal strength of the network 102 at the client 104, although it is understood that the monitoring may encompass many different aspects of the connection and the present disclosure is not limited to monitoring the signal strength of the connection.
With additional reference to FIG. 3, the signal strength 302 of the network 102 may be compared with the signal strength 304 of the network 106, which may also be monitored by the client 104. A threshold value 306, which may be configurable within the client 104, may be used by the client to determine whether to switch to the network 106. For example, if the signal strength 302 is declining (as indicated by the corresponding arrow in FIG. 3) and the signal strength 304 is increasing (as indicated by the corresponding arrow in FIG. 3), the signal strength 302 may be below the threshold 306 and the signal strength 304 may be above the threshold. In this case, the client 104 may be configured to switch to the network 106. In other embodiments, a delta value based at least partly on rate of change in signal strength may be used. For example, if the signal strength is rapidly declining, the client 104 may be configured to switch networks even though signal strength 302 is not yet below the threshold 306. While the switch is automatic in the present example, it is understood that such a switch may involve prompting a user for permission to switch networks in some embodiments. If no other network is available (e.g., the network 106 is not present), the client 104 may remain with the network 102 as long as a connection can be maintained, even if the signal strength 302 falls below the threshold 306. In other embodiments where multiple networks are available, the client 104 may be configured to switch to the network having the highest signal strength regardless of the threshold value.
Accordingly, in step 204, if the signal strength 302 is above the threshold 306, the method 200 returns to step 202 and continues monitoring the signal strength. If the signal strength 302 falls below the threshold 306, the method moves to step 206, where the client 104 attempts to establish a connection with the network 106. Step 206 may include obtaining network information from the network 106, such as IP address and port information.
If the attempt to establish the connection with the network 106 is successful as determined in step 208, the client 104 may continue with a communication session established via the network 102 in step 210. For example, if the client 104 was engaged in a telephone call with another client (not shown) via the network 102, the client 104 may automatically re-establish the call via the network 106 with the other client so that the call continues regardless of the network switch that has occurred. Other sessions, such as messaging sessions, may also be re-established. It is understood that the state of the client 104 with respect to active communication sessions prior to the switch is saved by the client and used to re-establish the sessions after the switch is performed. Accordingly, a user of the client 104 may not be aware of the switch and need take no action to continue the communication sessions. Furthermore, the networks 102 and 106 need not communicate regarding the switch, as the client 104 handles the switch itself.
If the attempt to establish the connection with the network 106 is not successful as determined in step 208, the client 104 may stay with the network 102, drop the connection, log out, or performed other actions in step 212.
Referring to FIG. 4, a method 400 illustrates one embodiment of a make and break process that may be executed by the client 104 within the environment 100 of FIG. 1A. It is understood that the method 400 is performed by the client 104 and not by the networks 102 and 106. Accordingly, the method 400 may be executed with minimal usage of network resources.
In step 402, the client 104 attempts to establish a connection with the network 106 while still connected to the network 102. Although not described in the present example, it is understood that the method 400 may include a monitoring process such as that described with respect to steps 202 and 204 of FIG. 2. In the present example, the network 102 is a wi-fi network and the network 106 is a WiMax network, and so the client 104 is in wireless communication with the network 102. Step 402 may include obtaining network information from the network 106, such as IP address and port information.
If the attempt to establish the connection with the network 106 is successful as determined in step 404, the client 104 may shut down the network interface with the network 102 in step 406. In step 408, the client 104 may use the information obtained in step 402 (e.g., IP address and port) to continue with a communication session originally established via the network 102 in step 408. For example, if the client 104 was engaged in a telephone call with another client (not shown) via the network 102, the client 104 may automatically re-establish the call with the other client via the network 106 so that the call continues regardless of the network switch that has occurred. Other sessions, such as messaging sessions, may also be re-established.
If the attempt to establish the connection with the network 106 is not successful as determined in step 404, the client 104 may attempt a break and make connection in step 410 as described with respect to FIG. 2. Alternatively, the client 104 may remain with the network 102, drop the connection, or log out in step 410.
Referring to FIG. 5, a method 500 illustrates another embodiment of a break and make process that may be executed by the client 104 within the environment 100 of FIG. 1A. In the present example, the client 104 is an endpoint as described in previously incorporated U.S. patent application Ser. No. 11/081,068 and is coupled to an access server and a STUN server via the network 102.
In step 502, the client 104 monitors an established connection with the network 102. In the present example, the networks 102 and 106 are both wi-fi networks, and so the client 104 is in wireless communication with the network 102. Steps 502 and 504 may include signal strength monitoring or other monitoring as previously described with respect to FIG. 2.
In step 506, the client 104 attempts to establish a connection with the network 106. In the present example, the client 104 is configured to attempt to connect to the network 106 for a predefined window of time (e.g., ten or twenty seconds). If the client 104 cannot connect in that window, the method 500 logs the client 104 out in step 510 after determining that the window has expired in step 508.
As described in previously incorporated U.S. patent application Ser. No. 11/081,068, the client 104 may be in direct communication with other endpoints (not shown), the access server, and the STUN server. The endpoints may be configured to send “keep alive” messages to an endpoint from which they have not heard for a certain period of time. For example, if the client 104 loses its connection with the network 102, another endpoint may begin sending “keep alive” messages to the client 104 using the address and port information corresponding to the client 104 in the network 102. In the present example, the endpoint sending the “keep alive” messages may extend the period of time during which the “keep alive” are sent by adding the time window used in step 506 in order to give the client 104 additional time to re-establish the connection.
If the client 104 is able to connect to the network 106 during the time window as determined in step 508, the method 500 moves to step 512 and establishes the connection by obtaining such information as IP address and port information. It is understood that failure of certain processes (e.g., obtaining the IP address and port information) may indicate that the attempt to connect to the network 106 has failed. In step 514, the client 104 may send a STUN request to the STUN server to determine whether any network address translation (NAT) information has changed due to its switch from the network 102 to the network 106. In step 516, the client 104 notifies other endpoints (that are logged in) of its new IP address and port information and its updated STUN information (if applicable). In step 518, the client 104 notifies the access server of its new IP address and port information and its updated STUN information (if applicable). As steps 514, 516, and 518 are described in previously incorporated U.S. patent application Ser. No. 11/081,068, they are not described in detail herein.
In step 520, the client 104 may continue with a communication session established via the network 102 as previously described. In addition, after a period of time (e.g., ten seconds) elapses, the client 104 may flush its current state information and reload a fresh snapshot from the access server in step 522. This enables the client 104 to update its status with any information (e.g., a buddy request) it might have missed during the network switch.
Referring to FIG. 6, a method 600 illustrates another embodiment of a make and break process that may be executed by the client 104 within the environment 100 of FIG. 1A. In the present example, the client 104 is an endpoint as described in previously incorporated U.S. patent application Ser. No. 11/081,068 and is coupled to an access server and a STUN server via the network 102.
In step 602, the client 104 attempts to establish a connection with the network 106 while still connected to the network 102. Although not described in the present example, it is understood that the method 600 may include a monitoring process such as that described with respect to steps 202 and 204 of FIG. 2. In the present example, the network 102 is a wi-fi network and the network 106 is a WiMax network, and so the client 104 is in wireless communication with the network 102.
In the present example, the client 104 is configured to attempt to connect to the network 106 for a predefined window of time (e.g., ten or twenty seconds) as described with respect to FIG. 5. If the client 104 cannot connect in that window, the method 600 may attempt the break and make process of FIG. 5 in step 606 after determining that the window has expired in step 604.
If the client 104 is able to connect to the network 106 during the time window as determined in step 604, the method 600 moves to step 608 and establishes the connection by obtaining such information as IP address and port information. In step 610, the client 104 may send a STUN request to the STUN server to determine whether any NAT information has changed due to its switch from the network 102 to the network 106. In step 612, the client 104 notifies other endpoints (that are logged in) of its new IP address and port information and its updated STUN information (if applicable). In step 614, the client 104 may shut down the network interface with the network 102. In step 616, the client 104 notifies the access server of its new IP address and port information and its updated STUN information (if applicable). As steps 610, 612, and 616 are described in previously incorporated U.S. patent application Ser. No. 11/081,068, they are not described in detail herein.
In step 618, the client 104 may continue with a communication session established via the network 102 as previously described. In addition, after a period of time (e.g., ten seconds) elapses, the client 104 may flush its current state information and reload a fresh snapshot from the access server in step 620. This enables the client 104 to update its status with any information (e.g., buddy request) it might have missed during the network switch.
While the preceding description shows and describes one or more embodiments, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the present disclosure. For example, various steps illustrated within a particular sequence diagram may be combined or further divided, and some steps may be performed in a different order than that shown. In addition, steps described in one diagram may be incorporated into another diagram. Furthermore, the described functionality may be provided by hardware and/or software, and may be distributed or combined into a single platform. Additionally, functionality described in a particular example may be achieved in a manner different than that illustrated, but is still encompassed within the present disclosure. Therefore, the claims should be interpreted in a broad manner, consistent with the present disclosure.

## Claims

1. A method comprising:
monitoring, by a first communication device, a first connection with a first network to determine whether a signal strength of the first connection falls below a threshold value, wherein the first connection is used by the first communication device for a peer-to-peer communication session with a second communication device;
establishing, by the first communication device, a second connection with a second network if the signal strength of the first connection falls below the threshold value, wherein establishing the second connection includes obtaining an address and port assignment corresponding to the first communication device from the second network; and
maintaining, by the first communication device, the peer-to-peer communication session during the changeover from the first connection to the second connection using the obtained address and port assignment, wherein the maintaining includes:
saving, by the first communication device, a current state of the first communication device prior to terminating the first connection, wherein the saved current state includes information about the peer-to-peer communication session;
using, by the first communication device, the saved current state to re-establish the peer-to-peer communication session after the changeover to the second connection; and
refreshing, by the first communication device, the saved current state with a new current state obtained from a server after the changeover to the second connection, wherein the refreshing updates the first communication device with information not received by the first communication device during the changeover.

2. The method of claim 1 wherein the communication session is a telephone call.

3. The method of claim 1 wherein the communication session is a messaging session.

4. The method of claim 1 further comprising selecting, by the first communication device, the second network from a plurality of available networks prior to establishing the second connection.

5. The method of claim 1 further comprising:
determining, by the first communication device, that there is updated network address translation (NAT) information corresponding to the first communication device after switching from the first network to the second network; and
sending, by the first communication device, the updated NAT information to the second communication device.

6. The method of claim 1 further comprising sending, by the first communication device, the network address to the second communication device.

7. A method comprising:
establishing, by a first communication device, a second connection with a second network after determining that a signal strength of a first connection with a first network has passed a defined criterion, wherein establishing the second connection includes obtaining a network address corresponding to the first communication device from the second network;
saving, by the first communication device, a current state of the first communication device prior to terminating the first connection, wherein the current state includes information needed to maintain an active communication session occurring between the first communication device and a second communication device;
using, by the first communication device, the saved current state and the network address to re-establish the active communication session via the second connection; and
refreshing, by the first communication device, the saved current state with a new current state obtained by the first communication device after the changeover to the second connection, wherein the refreshing updates the first communication device with information not received by the first communication device during the changeover.

8. The method of claim 7 wherein the defined criterion is a threshold value.

9. The method of claim 7 wherein the defined criterion is a delta value.

10. The method of claim 7 wherein determining that the signal strength has passed the defined criterion is based on a rate of change in the signal strength.

11. The method of claim 7 further comprising obtaining, by the first communication device, the new current state from an access server in a peer-to-peer network.

12. The method of claim 7 further comprising:
obtaining, by the first communication device, updated network address translation (NAT) information corresponding to the first communication device after switching from the first network to the second network; and
sending, by the first communication device, the updated NAT information to the second communication device.

13. The method of claim 7 further comprising receiving, by the first communication device from a user of the first communication device, permission to switch from the first network to the second network prior to establishing the second connection.

14. A device comprising:
a network interface;
a processor coupled to the network interface;
a memory coupled to the processor; and
a plurality of instructions stored in the memory for execution by the processor, the instructions including instructions for:
establishing a second connection with a second network after determining that a signal strength of a first connection with a first network has passed a defined criterion, wherein establishing the second connection includes obtaining a network address corresponding to the first communication device from the second network;
saving a current state of the device prior to terminating the first connection, wherein the current state includes information needed to maintain an active communication session between the device and another device;
using the saved current state and the network address to re-establish the active communication session via the second connection; and
refreshing the saved current state with a new current state obtained by the device after the changeover to the second connection, wherein the refreshing updates the device with information not received by the device during the changeover.

15. The device of claim 14 wherein the defined criterion is a threshold value.

16. The device of claim 14 wherein the defined criterion is a delta value.

17. The device of claim 14 wherein determining that the signal strength has passed the defined criterion is based on a rate of change in the signal strength.

18. The device of claim 14 further comprising instructions for obtaining the new current state from an access server in a peer-to-peer network.

19. The device of claim 14 further comprising instructions for:
obtaining updated network address translation (NAT) information corresponding to the device after switching from the first network to the second network; and
sending the updated NAT information to the other device participating in the active communication session.

20. The device of claim 14 further comprising instructions for receiving permission from a user of the device prior to establishing the second connection.