Multiple packet routing system (MPRS)
A method and system for Multiple Packet Routing is disclosed. A call signal is broken into a string of data packets and sent from a first endpoint device to a second endpoint device using at least two streams in parallel, each stream including the string of data packets. The streams are received at the second endpoint device, received data packets are identified from a first stream, and at least one of the data packets missing from the first stream is identified. A replacement data packet corresponding to the missing data packet from at least one second stream is identified. A complete string of data packets are reassembled from the received data packets from the first stream and the at least one replacement data packet from the at least one second stream. The complete string is converted back into the call signal.
This application claims priority from provisional applications U.S. Ser. No. 60/466,381 filed Apr. 29, 2003 and U.S. Ser. No. 60/518,599 filed on Nov. 7, 2003.
BACKGROUND OF THE INVENTIONVoice Over Internet Protocol (VoIP) is a method for transmitting voice communication between devices through the internet. It has gained significant ground in many areas of voice transmission as it is a more efficient way of transmitting voice signals. Varying levels of compression or CODECs are used, most of which are standards such as G.729, G.723, GSM, ADPCM and others specified by the International Telephony Union (ITU).
VoIP works by taking sound and breaking that sound into digital packets. Those digital packets are transmitted to a location (based on external information transmitted as part of a call), and a receiving side translates those digital packets back into sound. Thus, each packet includes routing and sequence information. A call, or call stream, happens by doing this in two directions (duplex) between two endpoint devices.
At present, there are many VoIP equipment manufacturers worldwide including Cisco, Vocal-Tec, Clarent, Quintum, Nuera and others, which develop different types and variations of devices to transmit VoIP. Some of the manufacturers use proprietary CODECs while others use standard CODECs. Some inter-operate with other companies gateways with the most common interoperability happening with Cisco equipment, which has the largest installed base of VoIP equipment worldwide.
All of the VoIP worldwide currently is transmitted as a single call stream from one endpoint to another. There are no services which send multiple call streams of the same call through different networks or the same network in order to have an inventory of duplicate packets, thus providing an added layer of quality control by routing the call through separate environments. The inventory created by sending the same packets through multiple call streams and multiple networks allows the receiving VoIP gateway to replace a lost packet, which may occur due to internet packet loss or packets received out of order, with a duplicate of the same packet out of its inventory. This also gives the VoIP Gateway redundancy if one network is affected by a transmission interruption issue. It is unlikely for two or more separate networks not affiliated with each other at any point to go down at the same time for the same reason. Thus, by sending the same packet over multiple networks the chance of a successful call flow is statistically much higher.
There are companies which have developed different degrees of lost packet replacement methods using algorithms to predict what the lost packet would sound like (or, for non-voice packets, what information that packet would contain) based on the bordering packets (the packets before and after the lost packet). What is different with multiple call streams through multiple networks is that the endpoint may replace the lost packet with a duplicate packet from a second, third, or as many call streams through as many networks as the packets were sent. This allows the VoIP gateways to supply the end users with the full and complete call without any missing portions. The number of call streams provided may be based on the amount of actual or predicted packet loss over the network and other factors, such as whether the lost packets for a data stream occur as a percentage of the total number of packets (i.e. 1 in 10), or whether the lost packets occur in strings in a portion of the stream. The number of networks may be based on the degree in which the network operator wishes to insure quality on the call. Furthermore, with multiple network paths, the call set-up may be on one or both sides of the network.
The multiple call streams through multiple networks may work by using some of the existing CODECs or proprietary CODECs used in VoIP transmission. The software may be set to send the same call multiple times through any number of networks and tag each packet so that the same packet on each call stream is identifiable. In the case of a packet not being delivered, the system is able to identify a duplicate of that packet in another call stream. The physical layer of aspects of the invention may route multiple packets through various diverse paths or the same path. The amount of bandwidth and processing power used may be increased on a per-call basis, as compared to single-stream systems, as the endpoints may send the call multiple times at the same time and may need to handle multiple network interfaces. With this method of sending multiple packets, if all networks are running with perfect quality, then a network monitor providing routing intelligence may turn off the multiple packets without affecting the call transmission quality as the gateways are able to accept any number of call streams including one and still complete the call.
SUMMARY OF THE INVENTIONA method and system for Multiple Packet Routing is disclosed. A call signal is broken into a string of data packets and sent from a first endpoint device to a second endpoint device using at least two streams in parallel, each stream including the string of data packets. The streams are received at the second endpoint device, received data packets are identified from a first stream, and at least one of the data packets missing from the first stream is identified. A replacement data packet corresponding to the missing data packet from at least one second stream is identified. A complete string of data packets are reassembled from the received data packets from the first stream and the at least one replacement data packet from the at least one second stream. The complete string is converted back into the call signal.
BRIEF DESCRIPTION OF THE DRAWINGS
Endpoint device 100-b inserts the redundant packet (Packet No. 1001b) from call stream 150-b into the appropriate position using packet sequence information within the packets received from call stream 150-a. (Packets Nos. 1000a, 1002a, 1003a) when converting the packets 141 from digital packets 140 back into sound signal 130 that may be understood by input/output device 120-b transmitting the sound over cable 121.
In one aspect, the system parameters (i.e., number of packets streams, number of networks, and delay time) may be determined on a per-call basis. A network monitor 202, located in one aspect within endpoint 100-a or 100-b, may monitor data from a source and based on that data decide how to use the system most efficiently. For example, based on measurements of network conditions (such as packet loss rate), a network monitor 202 may set up the call with a number of call streams, networks, and offset patterns to create the most ideal conditions for ensuring that at least one of each packet makes it all the way from transmitting endpoint to receiving endpoint. The network monitor 202 or transmitting endpoint 100-a (or 100-b) may begin, modify, delay, or stop sending over multiple streams and/or networks during a call in progress based on real-time network condition data.
The routing intelligence provided by network monitor 202 allows for the system disclosed to be used in the most efficient manner. In one aspect, the network monitor 202 may be implemented in software or hardware. A control or routing may be implemented which may do one or more of the following:
-
- 1. Based on the performance of any given network, the routing intelligence may choose how to set up the call. This may include the number of redundant call streams or packets to send and which networks to utilize. The system may also make such decisions during the call.
- 2. Based on the performance of any given network, the routing intelligence may choose the number of diverse paths over which the redundant packets will be routed.
- 3. Based on the performance of any given network, the routing intelligence may choose a delay time for the redundant packets to be sent. This may be based on the speed or frequency at which packets are lost, so that the routing intelligence may decide how to ensure that at least one of each packet is transmitted from point A to point B.
- 4. Based on the performance of any given network, the routing intelligence may choose the number of redundant packets to be sent or the number of call streams to send and which networks to send them over.
- 5. Based on the performance of any given network, the routing intelligence may choose to stop sending a redundant stream through one of the networks. This may be done because performance of one of the networks is at a level where redundant packets is unnecessary for quality. Or this can be done because a network is operating below any acceptable level and redundant packets sent through that network will not help the overall quality of the call.
The system of the present disclosure may not be limited to VoIP or devices transmitting over the internet. The multiple transmission of streams of information from one point to a final point and then using the excess inventory to create one final stream of information may be used in many different applications. The system may alleviate the need for an endpoint to request back to the start point for a lost piece of information. Various current protocols allow for the recovery of lost packets in that manner, but in real-time applications such as voice, requesting/resending processes require time and signal-processing resources which make them unusable for such applications. In wireless applications (such as cellular phone networks), which typically experience high packet loss, the system of the present disclosure may be used efficiently to increase call quality.
As noted above, in one aspect of the system of the present disclosure, each side of the call (i.e. endpoints) may be configured to use a different number of networks on each side. The following three scenarios are given as illustrative examples and do not describe prior or current existing systems.
Example 1 1 Network Connection to 2 Network ConnectionsXYZ Corp., located in South Africa, gets internet service in its office through an Internet Service Provider (ISP), which is in turn connected to several different internet backbones, such as MCI and AT&T. XYZ wants to use VoIP to have telephone connectivity with its branch office in Los Angeles, which gets internet service from two different networks, MCI and AT&T. In the Los Angeles office, XYZ connects its telephone service, for example PBX, to an endpoint using the system of the present disclosure, so that an IP address from each network, MCI and AT&T, is put into the endpoint and the endpoint is online to both networks. XYZ's endpoint in South Africa, also using the system of the present disclosure, is configured to send two duplicate call streams, one to each of the two IP addresses corresponding to the two networks connected in Los Angeles. By doing this, XYZ is able to improve communication quality as each packet is sent twice and terminates to two different networks, MCI and AT&T. Each network has different peering points and points of failure along the net, which is why when using two different networks, the chance of both networks experiencing trouble at the same time is unlikely. When a call stream is transmitted to South Africa from Los Angeles, duplicate copies may be transmitted, one over each of the two Los Angeles provider networks to the single South African destination IP address, again increasing the chance of proper packet delivery.
Example 2 From 2 Network Connections to 2 Network ConnectionsXYZ Corp., located in South Africa, gets internet service from both Sprint and Global Crossing. XYZ wants to use VoIP to have telephone connectivity with its branch office in Los Angeles, which gets internet service from both MCI and AT&T. The offices in Los Angeles and South Africa each connect to a endpoint using the system of the present disclosure, so that for each location an IP address from both internet service networks are put into the endpoint, and the endpoint is online to both networks. XYZ's endpoints in South Africa and Los Angeles are configured to send a duplicate call stream to each of the two networks in the opposite location. For example, XYZ in South Africa will send one call stream using Global Crossing to Los Angeles using either MCI or AT&T and will also send a duplicate call stream using Sprint to Los Angeles using the other of MCI and AT&T. By doing this, XYZ is able to improve communication quality as each packet is sent twice and terminates to two different networks. As noted above, each network has different peering points and points of failure along the net, which is why by using two different networks the chance of both networks experiencing trouble at the same time is unlikely.
Example 3 From 2 Network Connections to 2 Network Connections, Cross SendingXYZ Corp., located in South Africa, gets internet service from both Sprint and Global Crossing. XYZ wants to use VoIP to have telephone connectivity with its branch office in Los Angeles. In Los Angeles, the company gets internet service from both MCI and AT&T. In the offices in Los Angeles and South Africa XYZ hooks up a endpoint using the system of the present disclosure so that for each location an IP address from both networks is put into the endpoint and the endpoint is online to both networks. Both endpoints of XYZ in South Africa and Los Angeles are configured to send two call streams from each network to each of the two networks on the opposite side. For example, XYZ in South Africa will send two duplicate call streams using Global Crossing to Los Angeles using both MCI or AT&T and will also send two more duplicate call streams using Sprint to Los Angeles using both MCI and AT&T. Therefore, in this example, there are a total of four call streams. By doing this XYZ is able to improve communication quality as each packet is sent twice from each network to the opposite networks and terminates to two different networks. Each network has different peering points and points of failure along the net which is why by using four different network combinations the chance of all networks experiencing trouble at the same time is unlikely.
It will be understood that the above-described arrangements of apparatus and the methods of operating the same are merely illustrative of applications of the principles of the invention and many other embodiments and modifications may be made without departing from the spirit and scope of the invention.
Claims
1. A method of communication comprising:
- breaking down a call signal into a string of data packets;
- sending, from a first endpoint device to a second endpoint device, at least two streams in parallel, each said stream including said string of data packets;
- receiving said streams at said second endpoint device;
- identifying received data packets from a first stream;
- identifying at least one of said data packets missing from said first stream;
- identifying a replacement data packet corresponding to said missing data packet from at least one second stream;
- reassembling a complete string of data packets from said received data packets from said first stream and said at least one replacement data packet from said at least one second stream; and
- converting said complete string back into said call signal.
2. The method of claim 1, wherein said first endpoint device breaks down said call into said string of data packets.
3. The method of claim 1, wherein each said data packet includes information associating said packet with said packet's position in said string.
4. The method of claim 3, wherein said identification of said received data packets is based at least in part on said position information.
5. The method of claim 3, wherein said identification of said missing data packets is based at least in part on said position information.
6. The method of claim 1, wherein each said packet includes information associating said packet with said call signal.
7. The method of claim 1, wherein said second endpoint device stores said data packets from said parallel streams in a buffer memory.
8. The method of claim 1, wherein said second endpoints device identifies said at least one missing data packet.
9. The method of claim 1, wherein said second endpoint device reassembles said complete string of data packets.
10. The method of claim 1, wherein said second endpoint device converts said complete string into said call signal.
11. The method of claim 1, further comprising sending said call signal from a first input/output device to said first endpoint device.
12. The method of claim 1, further comprising sending said call signal from said second endpoint device to a second endpoint device.
13. The method of claim 1, wherein said first stream and said at least one second stream are routed through the same network.
14. The method of claim 1, wherein the sending of said at least one second stream is delayed with respect to said first stream.
15. The method of claim 1, wherein said first stream is routed through a first network and said at least one second stream is routed through at least one second network.
16. The method of claim 1, wherein said first stream is routed through a first network and said at least one second stream is routed through at least one second network.
17. The method of claim 1, further comprising monitoring the performance of at least one network to be used for sending said streams.
18. The method of claim 17, further comprising selecting at least one network to be used for sending said streams based at least in part on said performance.
19. The method of claim 17, further comprising selecting a delay for said at least one second stream based at least in part on said performance.
20. The method of claim 17, further comprising selecting a number of second streams based at least in part on said performance.
21. The method of claim 17, further comprising selecting a number of networks based at least in part on said performance.
22. The method of claim 17, further comprising terminating the sending of said at least one second stream based at least in part on said performance.
23. The method of claim 1, wherein each said data packet includes routing information.
24. A communication method, comprising:
- transforming a signal including voice information into a first packet;
- adding sequence data to the first packet; and
- transmitting the first packet and a duplicate packet to a receiver.
25. The communication method of claim 24, wherein the first packet is transmitted to a first address of the receiver and the duplicate packet is transmitted to a second address of the receiver.
26. The communication method of claim 24, further comprising:
- receiving one of the first packet and the duplicate packet at the receiver; and
- transforming the received packet into the signal including voice information.
27. A communication method, comprising:
- transforming a first signal including voice information into a string of packets;
- transmitting the string of packets in a first stream and a second stream of packets to a receiver;
- receiving a first received stream of packets and a second received stream of packets at the receiver;
- creating a combined string of packets using the first received stream of packets and the second received stream of packets; and
- transforming the combined string of packets into a second signal including voice information.
28. The communication method of claim 27, wherein the first stream of packets are transmitted to a first address of the receiver and the second stream of packets are transmitted to a second address of the receiver.
29. The communication method of claim 27, wherein the first stream of packets are transmitted to the receiver over a first network and the second stream of packets are transmitted to the receiver over a second network.
30. The communication method of claim 27, further comprising:
- adding sequence data to the string of packets.
31. The communication method of claim 30, wherein the step of creating a combined string of packets includes using the sequence data to identify a packet missing from the first received stream of packets and using the sequence data to insert a duplicate packet from the second received stream of packets.
32. The communication method of claim 30, wherein the step of creating a combined string of packets includes selecting available packets from the first and second received streams of packets and using sequence data from the first and second received stream of packets.
33. The communication method of claim 27, wherein the second signal is an approximation of the first signal.
34. The communication method of claim 27, wherein there is a predetermined delay time between transmitting the first stream of packets and transmitting the second stream of packets to the receiver.
35. The communication method of claim 34, wherein the predetermined delay time is based on a characteristic of a communication network.
36. A communication system, comprising:
- a first endpoint connected to a sound input/output device and a network, the first endpoint capable of breaking a call signal sent from the input/output device into a stream of packets and sending two or more duplicate streams over the network;
- a monitor connected to the network and the transmitter, the monitor capable of monitoring a network characteristic and controling a number of duplicate streams sent by the first endpoint based on the network characteristic; and
- a second endpoint connected to the network, the second endpoint capable of receiving at least a portion of each of the two or more duplicate streams and recreating the call signal using the received portions of each of the two or more duplicate streams.
37. The communication system of claim 36, wherein the network monitor is capable of controlling a delay between duplicate streams sent by the transmitter based on the network condition.
38. The communication system of claim 36, wherein each stream is sent over a different network path.
39. The communication system of claim 36, wherein each stream is sent to a different IP address associated with the second endpoint.
40. The communication system of claim 36, wherein the monitor is connected to the second endpoint and the monitor is capable of controlling the number of duplicate streams sent by the first endpoint based on the portions of the two or more duplicate streams received at the second endpoint.
41. A network monitoring method, comprising:
- monitoring a characteristic of a network; and
- controlling a number of redundant call streams sent from a first endpoint to a second endpoint based on the characteristic.
42. The network monitoring method of claim 41, wherein the step of controlling is performed during a call.
43. The network monitoring method of claim 41, wherein the step of controlling includes changing the number of redundant call streams sent based on a number of lost call packets determined at the second endpoint.
44. The network monitoring method of claim 41, further comprising:
- selecting a delay time for transmission of one of the number of redundant call streams from the first endpoint based on a number of lost call packets determined at the second endpoint.
45. A network monitoring method, comprising:
- monitoring a characteristic of a network; and
- controlling a network path of two or more redundant call streams sent from a first endpoint to a second endpoint based on the characteristic.
46. The network monitoring method of claim 45, wherein the step of controlling is performed during a call.
47. The network monitoring method of claim 45, wherein the step of controlling includes changing the network path of redundant call streams sent based on a number of lost call packets determined at the second endpoint.
48. The network monitoring method of claim 45, further comprising:
- selecting a delay time for transmission of one of the number of redundant call streams from the first endpoint based on a number of lost call packets determined at the second endpoint.
Type: Application
Filed: Apr 29, 2004
Publication Date: May 12, 2005
Inventor: James Siminoff (Chester, NJ)
Application Number: 10/835,842