Methods, systems, and computer program products for associating independent legs of a call in a telecommunications network

Abstract
Methods, systems, and computer program products for making call association across elements of a converged network are disclosed. A method is disclosed herein for associating independent legs of a call at a network node. According to one method, a first signaling message for setting up a first call leg is sent from a network node, the first signaling message including an identifier associated with the first call leg; a second signaling message for setting up a second call leg is received by the network node, the second signaling message including an identifier associated with the second call leg; the identifiers associated with the first and second call legs are compared, and if the values are found to have a predetermined relationship to each other, the first and second call legs are associated with each other.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

Preferred embodiments of the subject matter described herein will now be explained with reference to the accompanying drawings of which:



FIG. 1A is a block diagram illustrating an exemplary converged network in which a caller is communicating with a SIP application server;



FIG. 1B is a block diagram illustrating an exemplary converged network in which a SIP application server has redirected a caller to a callee;



FIG. 1C is a block diagram illustrating an exemplary converged network in which a SIP application server has dismantled call legs between itself and a media gateway controller, creating a hairpin condition at the media gateway controller;



FIG. 2A is a block diagram illustrating the network shown in FIG. 1A, showing the data paths through a media gateway controller in detail;



FIG. 2B is a block diagram illustrating the network shown in FIG. 1B, showing the data paths through a media gateway controller in detail;



FIG. 2C is a block diagram illustrating the network shown in FIG. 1C, showing the data paths through a media gateway controller in detail;



FIG. 3A is a block diagram illustrating an exemplary packet network including a node that may be used to implement the subject matter herein;



FIG. 3B is a flow chart illustrating an exemplary process for making a call association across elements of a converged network according to an embodiment of the subject matter described herein;



FIG. 4 is a block diagram illustrating the exchange of messages between call instances as part of the call association process in accordance with an embodiment of the subject matter described herein; and



FIG. 5 is a block diagram illustrating an exemplary system implementing call association within a call association initiating network element in accordance with an embodiment of the subject matter described herein.





DETAILED DESCRIPTION

In accordance with the subject matter described herein, methods, systems, and computer program products are provided for making call association across elements of a converged network. Call association may be effectuated by encoding a call association (CA) data element in a signaling message, such as a SIP request message. The CA data element may function by uniquely identifying the call itself, by identifying the originating and terminating network nodes of the call, or both. The originating and terminating network nodes of a call may be, for example, the media gateway associated with the caller and the media gateway associated with the cal lee, respectively. Alternatively, they may, for example, refer to the media gateway associated with the caller and a SIP application server, respectively.



FIG. 3A is a block diagram of network node N 300 connected to packet network 106. In FIG. 3A, network node N 300 includes both a signaling function for processing signaling data and a bearer function for processing bearer data in the same node, as in the case of a softswitch. However, it should be noted that the signaling and bearer functions may reside in separate but associated network nodes, such as in a MGC and MGW, respectively, or in a media application server (MAS) and a SIP application server (SAS), respectively. In FIG. 3A, two independent call legs L1 and L2 are established within network node N 300 by means of signaling messages M1 and M2 sent and received by N 300. A signaling message includes an identifier associated with the call leg established in response to the signaling message. In one exemplary implementation, the identifier may include a value created for the purpose of call association and contained in a loose routing header field of a SIP INVITE message. The loose routing headerfield provides the flexibility to encode custom information without affecting standard network behavior. Other fields of SIP request messages are also possible candidates for encoding the CA data. The SIP loose routing header field, as specified in IETF FRC 3261, the disclosure of which is herein incorporated by reference in its entirety, is used to indicate that a SIP proxy follows more flexible procedures for processing of the route header field. These procedures separate the destination of the request (present in the Request-URI) from the set of proxies that need to be visited along the way (present in the route header field). The encoded call association data preserve the originally intended loose routing behavior. In another exemplary implementation, the identifier may include information contained in the signaling message, such as the origination and termination network addresses of the bearer path created in response to the signaling message, where the network addresses of the bearer path may be derived for example from information contained in SIP or session description protocol (SDP) message components. A call association module 302 compares the values of the identifiers associated with the call legs to determine whether the call legs should be associated with each other. In FIG. 3A, call association module 302 is a component of network node N 300. It will be understood that call association module 302 may reside in a location other than within network node N 300 without departing from the scope of the invention, and that the foregoing description is for the purpose of illustration only and not for the purpose of limitation.



FIG. 3B is a flow chart illustrating an exemplary process for making a call association across elements of a converged network in accordance with an embodiment of the subject matter described herein. Referring to FIG. 3B, in step 304, network node N 300 may send a signaling message M1 for setting up call leg L1. Message M1 may include an identifier ID1 associated with call leg L1. Call association module 302 may associate the value of identifier ID1 with call leg L1.


In a node hairpin situation, signaling message M1 may be sent to a second signaling node located in packet network 106; the second signaling node copies identifier ID1 into a signaling message M2 for setting up call leg L2, which is sent to network node N 300.


In a network hairpin situation, signaling message M1 may enter packet network 106, be routed through the network, and eventually emerge as message M2—still containing identifier ID1.


In step 306, network node N 300 receives signaling message M2 for setting up call leg L2. Call association module 302 may associate the value of identifier ID1 with call leg L2. At this point in this example there are two call legs, each representing an ingress or egress portion of a call, and possibly representing the ingress and egress portion of the same call.


In step 308, call association module 302 compares the identifiers associated with call legs L1 and L2. The comparison may be triggered by receipt of message M2 by N 300. The comparison may analyze the identifiers associated with the call legs by looking for a predetermined relationship with respect to each other. For example, if the identifier is a call-association value associated with a call leg, the comparison may involve looking for an exact match between identifiers; if the identifier is a combination of the origination and termination addresses of the bearer nodes associated with a call leg, the comparison may involve comparing the origination address of one call leg with the termination address of another, and vice versa. Other predetermined relationships may be used.


In step 310, if the identifiers are found to have a predetermined relationship with respect to each other, then the flow moves to step 312, in which call legs L1 and L2 are associated with each other. The association may be in the form of an entry in a table or database, or in the form of a storage location in memory or other storage device. If the identifiers are not found to have a predetermined relationship with respect to each other, no association is made. In FIG. 3B, the predetermined relationship checked for is equivalence; if the identifiers are equal, the call legs will be associated with each other.


The details of associating two call legs together may depend upon the specific architecture of the call association module 302. For example, a call manager may keep track of all live calls, perform a search using each identifier associated with a call leg, and make an association between call legs whose identifier matches or otherwise has a predetermined relationship. Alternatively, each call leg may be associated with call instances, which communicate with each other to make associations between call legs.


Turning now to a detailed description of the format of messages used, an exemplary SIP loose routing header including call association data suitable for use with embodiments of the subject matter described herein is shown below:





Route:<sip: {CAID}{LC}{GID}-CA@{SIPaddr};lr>


where {CAID} is an 8-digit hexadecimal call association identifier, {LC} is a 2-digit decimal loop counter, {GID} is a 2-digit decimal preferred media gateway identifier, and {SIPaddr} is the IP address of the SIP signaling interface of the MGC in dotted format (x.x.x.x). The string “-CA” is an example of a marker used to identify this header as one containing call association information. For illustrative purposes, we consider a message sent from MGC 108 to SAS 104 in FIG. 1A.


Call Association Identifier CAID uniquely identifies a call being generated or processed by a node, and is saved in the dialog for that call leg. This identifier allows MGC 108 to determine which call instance sent out this call to SAS 104.


Loop Counter LC is used to indicate the number of times that the call has entered into the terminating node, which in this example is SAS 104. It is first set to “1”, and is incremented by 1 each time the call is routed back to SAS 104, to prevent MGC 108 from routing the call an unlimited number of times to SAS 104.


Finally, the Preferred Media Gateway number GID is used to indicate which media gateway, of the potentially many media gateways that are controlled by MGC 108, will be used to processes the real time protocol (RTP) stream for this call.


It will be appreciated that both the individual components of the call association data, as well as the call association data taken as a whole, may take many possible formats, and that the exemplary format described here is for illustrative purposes only and is not intended to limit the scope of the invention. For example, CAID need not be limited 8 digits, nor to hexadecimal digits only, but could be a combination of letters, numbers, punctuation, and so on. The formats of LC, GID, and the marker used to identify the header as one containing call association information are similarly unconstrained. The format of SIPaddr could be numeric (e.g., “192.168.1.17”) or other (e.g., “mgc3.area15.pop10”), for example.


To allow the possibility of elimination of a hairpin condition, it is desirable to have both legs of a call go through the same media gateway, such as is shown in FIG. 1 C, where call legs L1 and L2 both go through MGW 110. If call leg L2 had been established through a media gateway other than MGW 110, there is no hairpin condition through a single media gateway.



FIG. 4 is a block diagram illustrating an exemplary process for exchanging messages between call instances as part of the call association process in accordance with an embodiment of the subject matter described herein. In this embodiment, a call processing instance is created for each leg. Referring to FIG. 4, MGC 108 receives a SETUP message 1 from the PSTN (not shown), and creates call instance #1400, which sends to SAS 104 a SIP INVITE message 2. The SIP message 2 includes a loose routing header, which contains call association data (CAID, LC, GID, and the IP address of the SIP interface of MGC 108.) SAS 104 sends to MGC 108 a SIP INVITE message 3 with a loose routing header containing the call association data which was copied from SIP message 2, and MGC 108 creates call instance #2402. Call instance #2402 uses the call association data from the loose routing header to identify call instance #1400, and makes an association with call instance #1400 by sending to call instance #1400 an internal communication message, ATTACH message 4, which includes the IP and port address of its RTP stream with SAS 104. Call instance #1400 sends back to call instance #2402 an internal communication message, RESPONSE message 5, which includes the IP and port address of its RTP stream with SAS 104. Call instance #2402 then sends SETUP message 6 to the PSTN.


For a distributed architecture, the two call instances may exist on different media gateway controller nodes. In this scenario the two call instances may communicate with each other using an internal call manager message protocol (CCMP). This call association mechanism allows the media gateway controller to associate multiple call instances of a single call when this call is routed out to an external application server and looped back to the media gateway controller again.


It may be unnecessary, or prohibitively expensive, to attempt to initiate call association for every call. A system may use a variety of mechanisms to limit call association to a selected subset of calls. According to one embodiment, call association is performed based on trunk group, which is provisioned when call association is activated. Referring to the network in FIG. 1 A, call association may for example be performed only for calls that are routed to an external application server such as SAS 104, which is connected to MGC 108 using the SIP-DAL trunk. The trunk may be marked with ‘Call Association’ feature enabled. Other mechanisms include marking a particular call type, service type, or combination as “CA-enabled” to trigger a call association mechanism.


A call association initiating (CAI) network element may be for example a media gateway controller, a media gateway, or combination of the two. It may also be an application server or some other network element that has basic call association capability. The call association capability may be combined or separated into different physical or logical system modules. An example of one such implementation is shown in FIG. 5 and described below.



FIG. 5 is a block diagram illustrating an exemplary system implementing call association within a call association initiating network element in accordance with an embodiment of the subject matter described herein. Referring to FIG. 5, call association initiating network element CAI 500 includes a call manager 502, a signaling module 504, and a call association module 506.


The responsibilities of call manager 502 may include initiating call association, managing call instances, and initiating a search for a call leg based on the value of an identifier extracted from an incoming call setup message. In one implementation, a call processing instance may be created for each leg of a call, and multiple call instances may be created for multiple legs of a call. Call manager 502 may be responsible for monitoring the event or condition that will trigger the call association capability and associated operations.


The responsibilities of signaling module 504 may include creating an outgoing call setup message for setting up a call leg, encoding into the outgoing message an identifier associated with the call leg, and sending the outgoing message; and receiving an incoming call setup message for setting up a call leg and extracting from the incoming message an identifier associated with the call leg.


The responsibilities of call association module 506 may include creating the identifier associated with a call leg that is to be encoded in an outgoing call setup message, interpreting the identifier associated with a call leg element extracted from an incoming call setup message, and performing a search for a call leg based on the value of the identifier extracted from the incoming call setup message.


It will be understood that various details of the invention may be changed without departing from the scope of the invention. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation.

Claims
  • 1. A method for associating independent legs of a call, the method comprising: (a) sending a first signaling message from a network node for setting up a first call leg, the first signaling message including an identifier associated with the first call leg;(b) receiving a second signaling message at the network node for setting up a second call leg, the second signaling message including an identifier associated with the second call leg; and(c) determining whether the identifiers associated with the first and second call legs have a predetermined relationship with respect to each other, and in response to determining that the identifiers have a predetermined relationship with respect to each other, associating the first and second call legs with each other.
  • 2. The method of claim 1 wherein the identifiers associated with the first and second call legs each include a call identifier value.
  • 3. The method of claim 1 wherein the identifiers associated with the first and second call legs each include a loop counter.
  • 4. The method of claim 1 wherein the identifiers associated with the first and second call legs each include a value identifying a bearer node associated with the respective call leg.
  • 5. The method of claim 4 wherein the value identifying the bearer node includes an address of the bearer node.
  • 6. The method of claim 5 wherein the address of the bearer node includes an Internet protocol (IP) address of the bearer node.
  • 7. The method of claim 4 wherein at least one of the bearer nodes associated with the respective call legs comprises a media gateway.
  • 8. The method of claim 1 wherein the identifier associated with the first call leg includes a value identifying the network node that sent the first signaling message, and the identifier associated with the second call leg includes a value identifying a network node that sent the second signaling message.
  • 9. The method of claim 8 wherein the value identifying the network node that sent the respective signaling message includes an address of the network node that sent the respective signaling message.
  • 10. The method of claim 9 wherein the address of the network node includes an Internet protocol (IP) address of the network node.
  • 11. The method of claim 8 wherein at least one of the network nodes that sent the signaling messages comprises a media gateway controller.
  • 12. The method of claim 1 wherein the identifiers comprise values stored in call association fields of the first and second signaling messages.
  • 13. The method of claim 12 wherein the call association field of the first signaling message comprises a component of a session initiation protocol (SIP) loose routing header portion of the first signaling message.
  • 14. The method of claim 12 wherein the call association field of the second signaling message comprises a component of a session initiation protocol (SIP) loose routing header portion of the second signaling message.
  • 15. The method of claim 12 comprising copying, by a second network node, the identifier in the call association field of the first signaling message into the call association field of the second signaling message prior to sending the second signaling message to the network node.
  • 16. The method of claim 15 wherein the second network node comprises an application server.
  • 17. The method of claim 1 wherein the identifiers comprise bearer path origination and termination address information associated with the first and second call legs.
  • 18. The method of claim 17 wherein the bearer path origination and termination address information is included in a session initiation protocol component of the first and second signaling messages.
  • 19. The method of claim 17 wherein the bearer path origination and termination address information is included in a session description protocol component of the first and second signaling messages.
  • 20. The method of claim 1 wherein step (c) comprises using one of the network node and a second network node to determine whether the identifiers associated with the first and second call legs have a predetermined relationship with respect to each other.
  • 21. The method of claim 1 wherein step (c) comprises using one of the network node and a second network node to associate the first and second call legs with each other.
  • 22. The method of claim 1 wherein the network node comprises one of a media gateway and a media gateway controller.
  • 23. The method of claim 1 wherein step (c) comprises using a call manager to determine whether the identifiers associated with the first and second call legs have a predetermined relationship with respect to each other.
  • 24. The method of claim 1 wherein step (c) comprises using call instances to determine whether the identifiers associated with the first and second call legs have a predetermined relationship with respect to each other.
  • 25. The method of claim 1 wherein associating the first and second call legs together comprises using one of a database, a table, a storage location in memory, or other storage device.
  • 26. The method of claim 1 wherein associating the first and second call legs with each other comprises: (a) sending, by a call instance associated with the second call leg to a call instance associated with the first call leg, a message that includes the address information of the bearer path associated with the second call leg; and(b) sending, by the call instance associated with the first call leg to the call instance associated with the second call leg, a response message that includes the address information of the bearer path associated with the first call leg.
  • 27. A system for associating independent legs of a call, the system comprising: (a) a network node adapted to send a first signaling message for setting up a first call leg, the first signaling message including an identifier associated with the first call leg, and the network node adapted to receive a second signaling message for setting up a second call leg, the second signaling message including an identifier associated with the second call leg; and(b) a call association module adapted to determine whether the identifiers associated with the first and second call legs have a predetermined relationship with respect to each other, and in response to a determination that the identifiers have a predetermined relationship with respect to each other, associate the first and second call legs with each other.
  • 28. The system of claim 27 wherein the identifiers associated with the first and second call legs each include a call identifier value.
  • 29. The system of claim 27 wherein the identifiers associated with the first and second call legs each include a loop counter.
  • 30. The system of claim 27 wherein the identifier associated with the first and second call legs each include a value identifying a bearer node associated with the respective call leg.
  • 31. The system of claim 30 wherein the value identifying the bearer node includes an address of the bearer node.
  • 32. The system of claim 31 wherein the address of the bearer node includes an Internet protocol (IP) address of the bearer node.
  • 33. The system of claim 30 wherein at least one of the bearer nodes associated with the respective call legs comprises a media gateway.
  • 34. The system of claim 27 wherein the identifier associated with the first call leg includes a value identifying the network node that sent the first signaling message, and the identifier associated with the second call leg includes a value identifying a network node that sent the second signaling message.
  • 35. The system of claim 34 wherein the value identifying the network node that sent the respective signaling message includes an address of the network node that sent the respective signaling message.
  • 36. The system of claim 35 wherein the address of the network node include Internet protocol (IP) address of the network node.
  • 37. The system of claim 34 wherein at least one of the network nodes that sent the signaling messages comprises a media gateway controller.
  • 38. The system of claim 27 wherein the identifiers comprise values stored in call association fields of the first and second signaling messages.
  • 39. The system of claim 38 wherein the call association field of the first signaling message comprises a component of a session initiation protocol (SIP) loose routing header portion of the first signaling message.
  • 40. The system of claim 38 wherein the call association field of the second signaling message comprises a component of a session initiation protocol (SIP) loose routing header portion of the second signaling message.
  • 41. The system of claim 38 comprising a second network node adapted to receive the first signaling message, copy the identifier in the call association field of the first signaling message into the call association field of the second signaling message prior to sending the second message to the network node, and send the second signaling message to the network node.
  • 42. The system of claim 41 wherein the second network node comprises an application server.
  • 43. The system of claim 27 wherein the identifiers comprise bearer path origination and termination address information associated with the first and second call legs.
  • 44. The system of claim 43 wherein the bearer path origination and termination address information is included in a session initiation protocol component of the first and second signaling messages.
  • 45. The system of claim 43 wherein the bearer path origination and termination address information is included in a session description protocol component of the first and second signaling messages.
  • 46. The system of claim 27 wherein the network node comprises one of a media gateway and a media gateway controller.
  • 47. The system of claim 27 wherein the call association module comprises a component of the network node.
  • 48. The system of claim 27 comprising a call manager adapted to manage call instances and to control the call association module.
  • 49. The system of claim 27 comprising call instances associated with call legs and adapted to control the call association module in associating call legs with each other.
  • 50. The system of claim 27 wherein the call association module is adapted to associate the first and second call legs together using one of a database, a table, a storage location in memory, or other storage device.
  • 51. The system of claim 27 wherein the call association module includes first and second call instances respectively associated with the first and second call legs, wherein: (a) the second call instance is adapted to send to the first call instance a message that includes the address information of the bearer path associated with the second call leg; and(b) the first call instance is adapted to send to the second call instance a response message that includes the address information of the bearer path associated with the first call leg.
  • 52. A call association initiating network element comprising: (a) a signaling module for sending and receiving signaling messages containing identifiers respectively associated with independent call legs; and(b) a call association module for analyzing the identifiers for determining whether any two or more of the identifiers have a predetermined relationship with respect to each other, and in response to determining that the two or more identifiers have a predetermined relationship, to associate the corresponding independent call legs with each other.
  • 53. The call association initiating network element of claim 52 wherein the identifiers respectively associated with independent call legs each include a call identifier value.
  • 54. The call association initiating network element of claim 52 wherein the identifiers respectively associated with independent call legs each include a loop counter.
  • 55. The call association initiating network element of claim 52 wherein the identifiers respectively associated with independent call legs each include a value identifying a bearer node associated with the respective independent call leg.
  • 56. The call association initiating network element of claim 55 wherein the value identifying the bearer node includes an address of the bearer node.
  • 57. The call association initiating network element of claim 56 wherein the address of the bearer node includes an Internet protocol (IP) address of the bearer node.
  • 58. The call association initiating network element of claim 52 wherein the identifiers respectively associated with independent call legs each include a value identifying a network node that sent the signaling message containing the respective identifier.
  • 59. The call association initiating network element of claim 58 wherein the value identifying the network node includes an address of the network node.
  • 60. The call association initiating network element of claim 59 wherein the address of the network node includes an Internet protocol (IP) address of the network node.
  • 61. The call association initiating network element of claim 52 wherein the identifiers comprise values stored in call association fields of signaling messages respectively associated with the independent call legs.
  • 62. The call association initiating network element of claim 61 wherein the call association field comprises a component of a session initiation protocol (SIP) loose routing header portion of the signaling messages.
  • 63. The call association initiating network element of claim 52 wherein the identifiers comprise bearer path origination and termination address information associated with the respective independent call legs.
  • 64. The call association initiating network element of claim 63 wherein the bearer path origination and termination address information is included in a session initiation protocol component of the signaling messages.
  • 65. The call association initiating network element of claim 63 wherein the bearer path origination and termination address information is included in a session description protocol component of the signaling messages.
  • 66. The call association initiating network element of claim 52 wherein the signaling module and the call association module are components of a media gateway.
  • 67. The call association initiating network element of claim 52 wherein at least one of the independent call legs that are associated with each other is terminated by a media gateway.
  • 68. The call association initiating network element of claim 52 comprising a call manager adapted to manage call instances and to control the call association module.
  • 69. The call association initiating network element of claim 52 comprising call instances respectively associated with independent call legs and adapted to control the call association module in associating call legs with each other.
  • 70. The call association initiating network element of claim 52 wherein the call association module is adapted to associate the corresponding independent legs with each other using one of a database, a table, a storage location in memory, or other storage device.
  • 71. The call association initiating network element of claim 52 wherein the call association module includes first and second call instances respectively associated with the first and second call legs, wherein: (a) the second call instance is adapted to send to the first call instance a message that includes the address information of the bearer path associated with the second call leg; and(b) the first call instance is adapted to send to the second call instance a response message that includes the address information of the bearer path associated with the first call leg.
  • 72. A computer program product comprising computer-executable instructions embodied in a computer-readable medium for performing steps comprising: (a) sending a first signaling message from a network node for setting up a first call leg, the first signaling message including an identifier associated with the first call leg;(b) receiving a second signaling message at the network node for setting up a second call leg, the second signaling message including an identifier associated with the second call leg; and(c) determining whether the identifiers associated with the first and second call legs have a predetermined relationship with respect to each other, and in response to determining that the identifiers have a predetermined relationship with respect to each other, associating the first and second call legs with each other.
  • 73. The computer program product of claim 72 wherein the identifiers comprise values stored in call association fields of the first and second signaling messages.
  • 74. The computer program product of claim 72 wherein the identifiers comprise bearer path origination and termination address information associated with the first and second call legs.
RELATED APPLICATIONS

This application claims the benefit of a U.S. Provisional Patent Application Ser. No. 60/837,597, filed Aug. 11, 2006; the disclosure of which is incorporated herein by reference in its entirety.

Provisional Applications (1)
Number Date Country
60837597 Aug 2006 US