# Patent

## Title
Methods and systems for routing telecommunications

## Abstract

Methods and systems of routing calls over a network are described herein. A latency measurement is performed for at least a plurality of portions of a plurality of network paths and storing latency measurement information in computer readable memory. A dropped packet measurement is performed for at least portions of the plurality of network paths and storing dropped packet measurement information in computer readable memory. A call origination request is received. A network routing path is selected from the plurality of network paths, the network paths including a call manager, based at least in part on the latency measurement information and the dropped packet measurement information. A proxy system associated with a SIP provider is informed of the call. The call manager in the selected network path generates the call.

## Background
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention is related to telecommunications, and in particular, to methods and systems for routing communications over a telecommunication system.
2. Description of the Related Art
Internet protocol telephony (IPT) is becoming an increasingly important technology for electronic communications. IPT can include the transport of telephone calls wholly or partly over the Internet. Calls can be placed and received using traditional telephony devices, multimedia computers, or dedicated IPT terminals, by way of example. IPT can be used for voice calls, video/voice calls, and to exchange data. IPT can result in a significant reduction in call cost for users, and can offer enhanced services.
However, certain conventional implementations can suffer with significant drawbacks as compared to conventional POTs (plain old telephone) systems. For example, call quality can be significantly degraded as result of the dropped packets and latency between systems.
SUMMARY OF THE INVENTION
The present invention is related to telecommunications, and in particular, to methods and systems for routing communications over a telecommunication system. For example, certain embodiments can advantageously cause calls to be routed so as to enhance call quality. By way of illustration, systems and methods are described that select network. and/or component paths so as to reduce latencies and/or dropped communication packets. In addition, systems and methods are described for testing network paths and/or system performance. For example, techniques are described herein for detecting and measuring drop or lost packets and latencies. By selecting network communication paths that offer relatively better performance, users can experience enhanced call performance for voice, data, and/or other media communications.



BRIEF DESCRIPTION OF THE DRAWINGS
Embodiments of the present invention will now be described with reference to the drawings summarized below. These drawings and the associated description are provided to illustrate example embodiments of the invention, and not to limit the scope of the invention.
FIG. 1 illustrates an example SIP operating environment.
FIG. 2 illustrates an example processing of an inbound call.
FIG. 3 illustrates an example processing of an outbound call.



DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
The present invention is related to telecommunications, and in particular, to methods and systems for routing communications over a telecommunication system. For example, certain embodiments can advantageously cause calls to be routed so as to enhance call quality. By way of illustration, systems and methods are described that select network and/or component paths so as to reduce latencies and/or dropped packets. In addition, systems and methods are described for testing network paths and/or system performance. By selecting network communication paths that offer relatively better performance, users can experience enhanced call performance for voice, data (such as computer data), and/or other media communications.
While the following description relates to an embodiment utilizing the Internet and related protocols, other networks, such as networks of interactive televisions or of telephones, and other protocols may be used as well. Further, while certain protocols, such as IP, SIP, RTP, and so on, are referred to, the present invention is not limited to use with these protocols, or with any particular version of these protocols.
The functions described herein are optionally performed by executable code and instructions stored in computer readable memory and running on one or more general-purpose computers equipped with networking devices. However, the present invention can also be implemented using special purpose computers, state machines, signal processing chips, and/or hardwired electronic circuits. Further, with respect to the example processes described herein, not all the process states need to be reached, nor do the states have to be performed in the illustrated order. Further, certain process states that are illustrated as being serially performed can be performed in parallel.
Similarly, while the following examples may refer to a user's POTs or mobile telephone, other electronic systems can be used as well, such as, without limitation, a personal computer, an interactive television, a networked-enabled personal digital assistant (PDA), other IP (Internet Protocol) device, a networked navigation system, a networked game console, a networked MP3 device, a networked entertainment device, and so on.
As discussed above, certain conventional implementations of Internet Protocol Telephony can have significant drawbacks as compared to conventional POTs (plain old telephone) systems. For example call quality can be significantly degraded as result of the dropped packets and latency between systems. Certain systems and methods are described for reducing or overcoming such drawbacks.
Internet protocol telephony, such as VoIP (voice over Internet protocol), may use, in whole or in part, the Session Initiation Protocol (SIP) as the signaling protocol. SIP is a standardized signaling protocol which can be used for Internet conferencing, telephony, presence, events notification and instant messaging. The Session Initiation Protocol is currently an Internet Engineering Task Force (IETF) standard protocol. There may be several versions and implementations of SIP.
A call may be routed partially over the Internet, using SIP, and partially over a circuit-switched network, such as a PSTN (public switched telephone network). The PSTN may utilize a variety of signaling and other standards, such as the SS7 signaling protocol.
SIP is a request-response protocol. In one embodiment, SIP can be used for establishing, manipulating and tearing down user sessions, wherein several users can optionally participate in a session. A session can optionally involve multimedia elements including audio, video, instant messaging, and/or other real-time data communications. By way of further example, a session can be an Internet multimedia conference, an Internet telephone call and/or a multimedia distribution session. Optionally, session members can communicate using multicast and/or using a mesh of unicast relations.
SIP can optionally run over UDP (User Datagram Protocol), TCP, IP, ATM, X.25 and/or other protocols. In one embodiment, SIP can work in the Application layer of the Open Systems Interconnection (OSI) communications model.
In one embodiment, SIP invitations are used to create sessions. The invitation can carry session descriptions which enable participants to agree on a set of compatible media types. SIP enables user mobility by providing proxy services and redirecting requests to the user's current location. For example, users can register their current location so that calls can be directed to a telephone or other terminal corresponding to the location.
An example system that can be used to support SIP can include some or all of the following components:
1. An endpoint component, sometimes referred to as a user agent (UA), which can be a hardware and/or software device implementing or compatible with SIP, such as an Internet Protocol (IP) phone or other terminal. The endpoint components can include a client used to initiate calls and a server used to answer calls. By way of further example, a SIP Proxy, a call manager, and a SIP phone, which are discussed herein, can be SIP endpoints.
2. A SIP network server that handles signaling associated with one or more calls. By way of example, in an optional embodiment, the network server provides name resolution and user location. The SIP network server can include one or more additional servers. For example, the SIP server can include a Register server used to receive registration messages from endpoints regarding current user location. Using a mapping database, the Register server can map the SIP addresses with the physical location or locations in the domain where the endpoint is located. The SIP network server can also include a proxy system that transmits call setup and tear down information and optionally forwards SIP messages to multiple proxy servers, creating a search tree, in order for the SIP messages to reach their destination. In addition, a SIP proxy can discover endpoint characteristics of an endpoint by consulting a list of registration templates, including dynamic configuration parameters, for that endpoint. The network server can also include a SIP Redirect server that enables endpoints to locate a desired address by redirecting one or more of the endpoint to another server.
SIP addresses can be the form of uniform resource locators (URL). By way of example, SIP addresses can optionally be embedded in Web pages. In certain applications, a user can click on a SIP address embedded in a Web or other electronic document, and in response, a call can be placed from the user terminal to the SIP address, and the user can then talk to the person or system associated with the SIP address and/or send data files to the person or system associated with the SIP address.
When making a SIP call using a SIP terminal, the SIP terminal locates the appropriate server and then sends a SIP request, such as an invitation that initiates a session. The request may directly reach the intended call recipient, or the request may be redirected or may trigger a chain of new SIP requests by proxies. If a call is to be routed through a number of different proxy servers, a redirect server can be used. When a caller's user agent sends an INVITE request to the redirect server, the redirect server contacts the location server to determine the path to the called party, and then the redirect server sends that information back to the caller. The caller terminal then acknowledges receipt of the information. The caller terminal then sends a request to the device indicated in the redirection information (which could be the call recipient terminal or another server that will forward the request). Once the request reaches the call recipient terminal, the recipient terminal transmits a response and the caller acknowledges the response.
The Real Time Protocol (RTP), Real Time Control Protocol (RTCP), and/or other appropriate protocols can be used to send audio using packets over the Internet to allow the caller and call recipient to verbally communicate. By way of example, the packets can optionally be UDP packets.
Optionally, calls directed to one more selected numbers can be routed by a SIP provider to a call processing system optionally operated by a separate entity than the SIP provider. The call processing system can provide telephone services by integrating with one or more Internet Services Providers (ISP), SIP providers, networks, and/or other telephony providers.
The call processing system can include one or more call manager systems, which are computer-based platforms that host one or more call handling applications, such as call answering and message recording, call screening, call forwarding, call bridging, and/or call conferencing applications. The call manager can also optionally detect when a subscriber computer, such as a personal computer, is accessing the Internet or other network via a client application executing on the subscriber computer that transmits an “I'm alive” message over the Internet which is then received by the call manager. The call manager can then selectively transmit information regarding incoming calls, caller messages in the process of being recorded, and/or recorded caller messages when it is determined that a subscriber computer is connected to the Internet and so may be able to receive the information.
The call processing system optionally operates in both a circuit switched PSTN environment and a packet switched IP environment (such as a VoIP environment). In the latter case, inbound PSTN calls are converted at media gateways into packetized data streams. The media gateways are optionally located at or operated by a SIP provider. The packetized data streams are then transmitted over a network, such as one or more private data networks and/or the Internet, to the call processing system, which can include one or more call managers located at one or more locations. The call managers can optionally be distributed over large geographic areas. Optionally, if a call is placed using an IP phone or other terminal, the voice (and other) data is already packetized, and is transmitted over the Internet (or other appropriate network) to the SIP provider.
The call processing system can route calls over routing paths selected to improved call quality. For example, the call processing system can selectively route inbound calls received via the SIP provider to call managers so as to reduce latencies in communications with the SIP provider. By way of further example, the call processing system selectively routes outbound calls by selecting call managers and IP providers so as to reduce latencies and/or dropped packets. In one embodiment, the routing decisions are made by a proxy system, sometimes referred to herein as an intelligent SIP proxy. The routing decisions can be based on quality scoring.
For example, a score can be assigned to a given network path or system based on an associated communication latency and/or the number of dropped packets. Different weightings can optionally be assigned to a given latency measurement and a given dropped packet measurement. The latency and dropped packet weightings can be different for different types of media. For example, it may be more critical to avoid dropped packets than to incur some latency for data communications, and so the intelligent SIP proxy will optionally weigh the dropped package measurement as being more important than the latency measurement. For a voice communication, low latency may be more important in achieving a good quality communication path than an occasional dropped packet.
By way of example, the following formula can be used to calculate a network score, wherein a lower score indicates better performance.

Quality Score=WeightingLatency(normalized (latency measurement))+WeightingDroppedPackets(normalized (number of dropped packets in a measurement window))

In addition, or alternatively, network paths can be ranked using Boolean and numerical equations. For example, the ranking may rank all relevant network paths having no dropped packets higher than those relevant network paths having dropped packets, regardless of the latency measurements of the network paths. Then, those network paths having no dropped packets will be ranked according to their measured or predicted latencies, wherein the network path with the lowest measured or predicted latency will be ranked at the highest quality network path.
FIG. 1 illustrates an example SIP operating environment. For clarity, not all components involved in a communication are illustrated.
A SIP provider system 102 provides SIP telephony services over the public and/or private IP networks. The SIP provider 102 can provide services to a plurality of users and communication terminals, such as IP telephone 134 and a standard POTs telephone 130. The POTs telephone 130 is coupled to the SIP provider 102 via the PSTN 132. The SIP provider system 102 includes or operates a SIP proxy 104 that provides registration, call routing, and/or failure handling, and transmits call setup and tear down information.
The provider system 102 also includes or operates a media gateway, such as media gateways 106, 108, or 110, that converts standard telephony traffic, such as that transmitted over switched circuits, into SIP media streams on an IP network. By way of example and not limitation, the media gateway 106 optionally packetizes voice data from broadband links, such as T1 links, to Real Time Protocol (RTP), and vice versa. The media gateways 106, 108, 110 are optionally connected to diverse IP networks.
A call processing system 112 provides telephony features and services by integrating with one or more telephony service providers and with one or more Internet Service Providers (ISPs). Advantageously, by interfacing to a plurality of ISPs, increased reliability and quality can be provided by selecting the ISP for a given call or group of calls that is likely to provide enhanced reliability and quality for the call or calls.
The call processing system includes one or more call managers, such as call managers 116, 118, 120, which are platforms for hosting a call handling application. For example, a call manager can provide one or more of call auto-transfer, call forwarding call connect, call screening or fax receipt. A given call manager can interface with one or more Internet Service Providers. A call manager can optionally be implemented as an operating system service, such as a WIN2000 or other service, and can include or operate with an RTP packet handling system.
The example call processing system 112 also includes an intelligent SIP proxy 114 that intelligently routes calls to or from the call managers 116, 118, 120 and acts as a gateway to the SIP provider system. For example, in the case of inbound calls, the call processing system selects the best or preferred call manager to handle the call based on one or more of: the media gateway that is processing originating the call, network performance, and/or call manager availability.
The operation of the intelligent SIP proxy 114 will now be discussed in greater detail. In order to provide its services, the intelligent SIP Proxy 114 discovers the IP addresses of the media gateways within the SIP provider's network as calls are originated from or presented to the intelligent SIP Proxy 114. In addition, the intelligent SIP Proxy stores the respective calling number together with the media gateways IP addresses. As will be discussed later, this allows the Call Processing System 112 to make an intelligent prediction or best guess at to which media gateway the SIP provider will use on an outbound call.
The intelligent SIP proxy 114, or other appropriate system, measures the media network performance. The network performance measurement can optionally be accomplished, at least in part, by measuring the performance between a media gateway and a call manager. For example, the attributes of the network being tested can include latency and/or dropped or lost packets. The latency and/or dropped packet measurement can be performed periodically or upon the occurrence of some other condition or trigger, so that the measurements do not become too stale. This ensures that the measurements reflect the current network performance fairly accurately.
For example, an ICMP (Internet Control Message Protocol) Echo Request packet, also known as a ping, is transmitted directly from a call manager to a media gateway to be tested. The target media gateway, upon receipt of the ICMP Echo Request, builds a corresponding ICMP Echo Reply packet and transmits it back to the call manager that sent the Echo Request. The time between the transmittal of the Echo Request and the receipt of the Echo Reply will provide the intelligent proxy with a good indication of the communication latency. If the gateway does not respond to ICMP requests, the traceroute (tracert) routine can provide an approximation of the latency.
Latency can be measured using other tools. For example, a Test TCP (TTCP) utility can be used to measure TCP or UDP throughput through the IP path between a selected call manager and media gateway. The call manager sends a specified number of TCP (or UDP) packets to the media gateway. At the end of the test, the two sides display the number of bytes transmitted and the time elapsed for the packets to pass from one end to the other. These figures can be used to calculate the actual or estimated throughput on the link between the call manager and media gateway. Other tools, such as pchar, can also be used to measure latency and throughput.
By way of further example, test calls can be placed from a Call Manager directly connected to the PSTN to a phone number hosted by the media gateway to be tested. The inbound call routes through the IP network 122 and terminates on a Call Manager that is being tested. When the call is connected, DTMF tones can be exchanged. The timing of this exchange, that is the time between a sent DTMF and receipt gives an estimated measure of the latency. Optionally, after the exchange, a tone, such as a DTMF tone, can be played. If there are any discontinuities or gaps in the received tone, the discontinuities or gaps will be considered to be indications of dropped packets.
Jitter is the variation in the time between packets arriving, caused by network congestion, timing drift, and/or route changes. Measurement of the jitter in a network path between a Call Manager and media gateway can also be used as a network performance metric, and used in selecting which Call Manager is to handle a call.
As previously discussed, during a SIP call, voice traffic is carried using the RTP/RTCP protocol. RTP packets contain timestamps. In one embodiment, the time stamp field is of length 32 bits. The time stamp reflects the sampling instant of the first octet in the RTP data packet. During a voice call, discontinuities in the timestamps from the RTP stream are considered dropped packets. In addition, if breaks are discontinuities are detected in the RTP sequence numbers of the received RTP packets, a determination is made that the missing sequence numbers correspond to dropped packets. By way of example, the RTP timestamp and sequence number can be located in corresponding RTP packet header fields.
In addition, during a call, an adaptive echo canceller with a long training window can optionally be used. If the call has echo, the echo is likely originating from the far end of the connection. After the echo canceller is trained, the window the canceller is using can provide a measure of the round trip latency for the call. In yet another embodiment, during fax calls, measuring the timing of the handshaking in the T30 protocol provides an estimate approximation of the latency for the call.
By way of further example, one or more of the following criteria are optionally used by the intelligent SIP proxy 114 or other selection device to select which call manager is to handle the call:

    
    
        Network quality between a given call manger and the SIP media gateway, wherein the network quality is optionally measured as described above.
        The type of media expected to be presented on the call (for example, data, voice, video, etc.).
        The availability of and the age of performance and/or quality test data for a network path. For example, the decision to place call over a network path may be made in order to generate test data for that network.
        The relative importance or priority of the call based on the called number.
        Which call managers are available and/or their level of availability.
        The available network bandwidth between a given call manager and the media gateway.
    
    


Examples of call processing will now be described. FIG. 2 illustrates an example of processing an inbound call. The inbound call is received at state 201 at the SIP media gateway 106 associated with the SIP provider 102. By way of example, the inbound call may have been received from a POTs communication device or a SIP communication device, such as POTs telephone 130 or IP telephone 134 illustrated in FIG. 1. The call may have been placed by dialing a number hosted by or associated with the call processing system 112. The media gateway 106 converts standard telephony traffic into SIP media streams and, at state 202, informs the SIP proxy 104 of the call. At state 203, the SIP proxy 104 transmits call information over the IP network 122 to the intelligent SIP proxy 114 to inform the SIP proxy 114 of the call. The intelligent SIP proxy 114 then selects which of the call managers 116, 118, 120 to service the call. The selection can be based on one or more of the selection criteria discussed above. In this example, the call is routed to a call manager over the network path that provides the lowest latency with no dropped packets, however other selection criteria can be used (e.g. no worse than average latency and no more than one dropped packet every one thousand packets; no dropped packets irrespective of the latency, etc.). In this example, call manager 116 is selected.
At state 204, the call is presented to the selected call manager in the form of an Invite request. The Invite request contains the IP address for the RTP stream from the media gateway. If the Call Manager chooses to accept the call, the Call Manger will answer the Invite request with a response that contains the IP address of its RTP stream. This response travels back through the intelligent SIP proxy 114, to the SIP proxy 104, and back to the media gateway 106. At state 205, the media gateway 106 then sends the media (e.g. voice or data) to selected call manager 116 over the selected network path. In this example, the media is sent by the media gateway 106 over the IP network 122 to call manager 116 via IP service provider A 124.!
FIG. 3 illustrates an example of processing an outbound call. At state 301 a request to originate an outbound call to a specific number is sent to the intelligent SIP proxy 114. The call, by way of example, could have originated from a user selecting an out call option from a client application running on an Internet connected PC 130. This action by the user causes an outbound call request from the client application over the IP network 122 to the call processing system 112. At state 302, the intelligent SIP proxy 114 selects which call manager is to handle the call. In this case, the call is routed over the network path with the lowest latency and no dropped packets, although other selection criteria can be used (e.g. no worse than {specified latency period} and no more than one dropped packet every one thousand packets; no dropped packets irrespective of the latency, etc.). In this example, the intelligent SIP proxy 114 predicts or guesses which media gateway that will likely be chosen based on the called number. Phone number ranges such as NPA, NPA-NXX, and NPA-NXX-Y may be associated with media gateways and stored in the Call Processing System 112 based on previously made or previously received inbound calls. The call manager with the network connection predicted to be most likely to meet the selection criteria (e.g. lowest latency and no dropped packets) to the predicted receiving media gateway is selected to generate the call. In this example, call manager 116 has been selected.
At state 303 the intelligent SIP proxy 114 informs the selected call manager that it has been selected to generate the call and call manager 116 generates the call. At state 304, the intelligent SIP proxy 114 informs the SIP provider SIP Proxy 104 of the call using an Invite message containing the IP address of the Call Manager. At state 305, the SIP provider proxy 114 informs the media gateway 106 of the outbound call. At state 306, the Call Manager 116 with RTP media stream is connected to the media gateway 106.
Thus, as described herein, certain embodiments can advantageously cause calls to be routed so as to enhance call quality, such as by selecting paths that reduce latency and/or reduce dropped packets. Thus, users can experience enhanced call performance for voice, data, and/or other media communications. In addition, optional methods are provided to test network paths and/or system performance, such as, for example, with respect to latencies and dropped packet.
It should be understood that certain variations and modifications of this invention would suggest themselves to one of ordinary skill in the art. The scope of the present invention is not to be limited by the illustrations or the foregoing descriptions thereof.

## Claims

1. A method of routing SIP calls, the method comprising:
originating a first DTMF tone from a first call manager over a first network path, wherein the first call manager is not associated with a SIP network service provider that provides a first SIP network;
originating a second DTMF tone from a second call manager over a second network path, wherein the second call manager is not associated with the SIP network service provider;
performing a latency measurement for at least a portion of the first network path by comparing a time delay from the origination of the first DTMF tone to receipt of the first DTMF tone by the first call manager and storing corresponding first network path latency measurement information in computer readable memory;
performing a dropped packet measurement for at least the portion of the first network path based on discontinuities or gaps in the first DTMF tone when received back by the first call manager and storing corresponding first network path dropped packet measurement information in computer readable memory;
performing a latency measurement for at least a portion of the second network path, by comparing a time delay from the origination of the second DTMF tone to receipt of the second DTMF tone by the second call manager and storing corresponding second network path latency measurement information in computer readable memory;
performing a dropped packet measurement for at least the portion of the second network path, the path based on discontinuities or gaps in the second DTMF tone when received back by the second call manager and storing corresponding second network path dropped packet measurement information in computer readable memory;
receiving an inbound call at the first SIP network, wherein the inbound call is directed to a phone number assigned to an operator not associated with the SIP network provider;
calculating a network quality score for each of the first and second call managers using a formula including:
a first weighting related to latency;
the first network path latency measurement information for the first network path,
wherein the first network path latency information is adjusted using the first weighting when calculating the network quality score for the first call manager;

the second network path latency measurement information,
wherein the second network path latency measurement information for the second network path is adjusted using the first weighting when calculating the network quality score for the second call manager;

a second weighting related to dropped packets, where the first weighting is different than the second weighting;
the first network path dropped packet measurement information,
wherein the first network path dropped packet measurement information is adjusted using the second weighting when calculating the network quality score for the first call manager;

the second network path dropped packet measurement information,
wherein the second network path dropped packet measurement information is adjusted using the second weighting when calculating the network quality score for the second call manager;


selecting, using a computing device, the first call manager or the second call manager to process the inbound call based at least in part on the network quality score for the first call manager and the network quality score for the second call manager;
terminating the inbound call at the selected call manager,
wherein the selected call manager is configured to perform one or more of call answering, call screening, call forwarding, call bridging, or call conferencing applications; and

receiving at the selected call manager packetized voice media associated with the inbound call from a media gateway associated with the SIP network service provider.

2. The method as defined in claim 1, wherein the selected call manager is selected based in part on a media content type.

3. The method as defined in claim 1, wherein the selected call manager is selected based in part on a priority of a caller or a called party associated with the inbound call.

4. The method as defined in claim 1, wherein the selected call manager is selected based in part on available network bandwidth from the selected call manager to the media gateway.

5. The method as defined in claim 1, wherein a first SIP proxy performs the call manager selection.

6. The method as defined in claim 1, wherein the inbound call is directed to a phone number associated with an operator of the selected call manager.

7. The method as defined in claim 1, the method further comprising selecting the first call manager or the second call manager to process the inbound call based in part on measured jitter in a network path between the first call manager and the media gateway.

8. The method as defined in claim 1, wherein the selected call manager is selected based in part on whether media presented by the inbound call is voice media or video media.

9. The method as defined in claim 1, wherein the selected call manager is selected based in part on a relative priority of the inbound call as determined by the phone number to which the inbound call is directed to.