This invention relates to methods for caching IP addresses of devices for point-to-point communication over a public computer network.
Voice over Internet Protocol (VoIP) is the routing of voice conversations over the Internet or through any other IP-based network. Companies providing VoIP service are commonly referred to as providers, and protocols which are used to carry voice signals over the IP network are commonly referred to as VoIP protocols. Some cost savings are due to utilizing a single network to carry voice and data, especially where users have existing underutilized network capacity that can carry VoIP at no additional cost. VoIP to VoIP phone calls are sometimes free, while VoIP to public switched telephone networks (PSTN) may have a cost that's borne by the VoIP user.
Use of the same reference numbers in different figures indicates similar or identical elements.
In one embodiment of the invention, each device keeps an IP cache list storing IP addresses of devices it has communicated with in the past over an IP network. When the IP address of a device changes, it provides its new IP address to the devices in its IP cache list. As a result, any two devices that have communicated in the past are able to locate each other as long as their IP addresses do not change about the same time.
In another embodiment of the invention, a first device provides its IP cache list to a second device so that the second device is able to locate the first device even if their IP addresses change about the same time. This is possible because the second device can query devices in the first device's IP cache list for the updated IP address of the first device.
Similarly, VoIP device 104 includes a DTMF or FSK receiver 212 coupled to PSTN lines from a POTS telephone 214 to PSTN 108. A processor 216 is coupled to DTMF receiver 212 to receive the dialed telephone numbers. Processor 216 is also coupled to a memory 218 for storing a pairing list 105 (
Assume that the user at VoIP device 102 wishes to call the user at VoIP device 104. If the dialed number is in pairing list 103, VoIP device 102 then uses the IP address paired with the dialed number to establish an IP connection with VoIP device 104 over IP network 106 for a telephone call between the users. If the dialed number is not in its pairing list 103, VoIP device 102 can use a peer-to-peer lookup protocol with other VoIP devices to search for the IP address of VoIP device 104. If the dialed number is not found through the peer-to-peer lookup, VoIP device 102 can establish a telephone connection with VoIP device 104 over PSTN 108 to request the IP address of VoIP device 104.
The above described steps for discovering the IP address is somewhat complicated and slow, especially if the IP addresses of the VoIP devices change for any reason. Thus, what is needed is an improved method for VoIP devices to track IP addresses of their peers.
Note that device A can initially obtain the IP address of devices B, C, and D in many ways. For example, device A can obtain the IP address of device B from a central server that registers the IP devices, a secondary channel (e.g., the PSTN) for exchanging IP addresses with device B, or a peer-to-peer lookup protocol to search for the IP address of device B as described in the related applications incorporated by reference.
The IP address of a device can change for a variety of reasons. For example, the user can reset a static IP address, the user can obtain a new dynamic address, the user can power down a digital describer line (DSL) modem to break a DSL link, and a DSL provider may break a DSL link after a certain period of time. In system 300, each device provides its new IP address to the devices in its IP cache list. For example, when the IP address of device A changes, it provides its new IP address to devices B, C, and D in its IP cache list. Similarly, when the IP address of one of devices B, C, and D changes, the device provides its new IP address to device A in its IP cache list. Thus, unless the IP addresses of two devices change about the same time, they are able to locate each other as their IP addresses are synchronized. The above description also applies to device C that has previously connected to devices E, F, and G over the IP network. The IP address synchronization of system 300 is implemented with the methods shown in
In step 402, device A establishes an IP connection to a new device (e.g., device B) over an IP network. As device B is new to device A, device A first obtains the IP address of device B before establishing the IP connection. Step 402 is followed by step 404.
In step 404, device A adds the IP address of device B into its IP cache list for future lookup.
In step 502, device A determines if its IP address has changed. If so, then step 502 is followed by step 504. Otherwise step 502 is followed by step 506.
In step 504, device A sends over the IP network its new IP address to the peer devices in its IP cache list (e.g., devices B, C, and D) so they can update their IP cache lists with device A's new IP address. Step 504 is followed by step 506.
In step 506, device A determines if it has received over the IP network a new IP address from a peer device (e.g., device C) in its IP cache list. If so, then step 506 is followed by step 508. Otherwise step 506 is followed by step 502 and method 500 repeats as described above.
In step 508, device A updates its IP cache list with the new IP address of device C. Step 508 is followed by step 502 and method 500 repeats as described above.
In regards to method 500 (
In system 700, devices A and B implement a more robust IP address synchronization so they are able to locate each other even when both devices change IP addresses about the same time. Specifically, device A provides its IP cache list to device B and updates any changes to its IP cache list with device M. Device B can also provide its IP cache list to device A and updates any changes to its IP cache list with device A. When the IP addresses of devices A and B change about the same time, they are not able to update the changes to each other. However, device B is able to query the devices in device A's IP cache list for device A's new IP address, and vice versa. This is possible as long as the devices in device A's IP cache list does not change their IP addresses about the same time as device A. Thus, the more devices are in the IP cache list of device A, the more likely devices A and B are able to relocate each other even if their IP addresses change about the same time. The robust IP address synchronization of system 700 is implemented with the methods shown in
In step 402, device B establishes an IP connection to a new device (e.g., device A) over an IP network. Step 402 is followed by step 404.
In step 404, device B adds the IP address of device A into its IP cache list for future lookup. Step 402 is followed by step 406.
In step 406, device B sends its IP cache list to device A over the IP network, which device A stores in its memory. Likewise, device A can also send its IP cache list to device B over the IP network. Alternatively, devices A and B can exchange their IP cache list over a secondary channel (e.g., the PSTN).
In step 502, device B determines if its IP address has changed. If so, then step 502 is followed by step 504. Otherwise step 502 is followed by step 506.
In step 504, device B sends over the IP network its new IP address to the peer devices in its IP cache list (e.g., devices A, C, D, and E) so they can update their IP cache lists with the new IP address. Step 504 is followed by step 506.
In step 506, device B determines if it has received over the IP network a new IP address from a peer device (e.g., device C) in its IP cache list. If so, then step 506 is followed by step 508. Otherwise step 506 is followed by step 502 and method 500A repeats as described above.
In step 508A, device B updates its IP cache list with the new IP address of device C. Device B also updates the copy of its IP cache list stored at device A. Device B does this by transmitting the change to its IP cache list to device A over the IP network. Step 508A is followed by step 502 and method 500A repeats as described above.
Method 400A is similarly applied to device A. For example, device A receives an update to the IP address of a device F in its IP cache list. In response, device A updates the copy of its IP cache list stored at device B with the new IP address of device F.
In step 1002, device A attempts to connect to device B over the IP network. Step 1002 is followed by step 1004.
In step 1004, device A realizes that it is unable to connect to device B over the IP network because the IP address of device B has changed. Step 1004 is followed by step 1006.
In step 1006, device A queries one or more devices (e.g., devices C, D, and E) in the IP cache list of device B, over the computer network, for the IP address of device B. Step 1006 is followed by step 1008.
In step 1008, device A uses the IP address returned from the one or more devices in the IP cache list of device B to connect to device B over the IP network.
Various other adaptations and combinations of features of the embodiments disclosed are within the scope of the invention. Numerous embodiments are encompassed by the following claims.
This application is related to (1) U.S. patent application Ser. No. 11/280,688, entitled “Using PSTN to Communicate IP Addresses for Point-To-Point Text, Voice, Video, or Data Communication,” Attorney Docket No. ARC-152, (2) U.S. patent application Ser. No. 11/618,741, entitled “Using Secondary Channels to Communicate IP Addresses for Point-To-Point Communication,” Attorney Docket No. ARC-165, and (3) U.S. application Ser. No. 11/618,739, entitled “Determining Pairings of Telephone Numbers and IP Addresses from Caching and Peer-to-Peer Lookup,” Attorney Docket No. ARC-P163, which are commonly assigned and incorporated herein by reference.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/CN2007/003681 | 12/19/2007 | WO | 00 | 9/9/2010 |