The present invention is directed to realtime data transmission over a packet data network. In particular, the present invention is directed to maintaining call state information when migrating between call controllers by storing call state information on communication endpoints.
Packet data networks are increasingly used for the exchange of realtime audio, video and data communications. Various protocols, including the H.323 protocol, require the establishment of a call signaling channel that is separate from the bearer channel. The call signaling channel is used to exchange signaling messages, such as call setup, tear down, address translation and messages related to billing.
In connection with realtime communications over packet data networks, or IP telephony, a signaling channel is usually established over the IP network between a client (such as media gateways and IP endpoints) and a call controller for basic call service and for various call feature support. Failure of the IP network or the call controller such that the call signaling channel is lost will lead to a service outage at the media gateway or IP endpoint. In order to prevent a loss of service under such circumstances, alternate call controllers are typically provided. However, when a media gateway or IP endpoint migrates to a new call controller, the existing calls (i.e., the bearer channels) may get torn down. Even if they are not torn down, it is likely that no call features will be available to the media gateway or IP endpoint, since the alternate call controller has no knowledge of the call state information associated with the calls. In particular, preservation of call features in addition to bearer connections requires that the alternate controller be supplied with call state information.
In order to provide call state information to an alternate controller, such information can be stored in a database that can be accessed by all primary and alternate call controllers. However, establishing a common, redundant database can be expensive. In addition, such databases can create a data bottleneck, especially when a large number of controllers are accessing the database. Furthermore, such a solution is not very robust, as network failures can prevent call controllers from accessing the common database.
Another approach to providing call state information to alternate call controllers dynamically updates available alternate call controllers with call state information. That is, as call state information is generated or updated, that information is provided to the alternate call controller or controllers that would be contacted by the client if the primary call controller were lost. However, this approach adds overhead and complexity, particularly as the number of call controllers available on a system increases. In addition, the alternate call controllers must be updated with call state information regarding all of the calls on the main controller. This can result in network congestion. In addition, the solution is not very robust, as network failures can prevent controllers from communicating with one another.
The present invention is directed to solving these and other problems and disadvantages of the prior art. According to the present invention, call state information is provided from the primary call controller to the client. The client stores the state information provided by the primary call controller. If the state of the call changes, updated call state information is provided to the client. In the event of a failure of the call controller or the signaling channel, the client may provide an alternate call controller with the call state information, thus allowing the alternate call controller to provide the call features that had been provided by the primary call controller. The state information need not be in a format that the client understands and processes.
In accordance with an embodiment of the present invention, the file containing the call state information may be provided to the alternate call controller in response to a query to the client made by the alternate call controller. In accordance with another embodiment of the invention, the file containing the call state information may be pushed from the client to the alternate call controller.
With reference now to
With reference now to
The clients 204 may be of various types. For example, as illustrated in
A client 204 may additionally or alternatively comprise a communication terminal 104 capable of directly interconnecting to the IP communication network, referred to herein as an Internet protocol (IP) communication endpoint 216. In general, an IP communication endpoint 216 is capable of direct interconnection to the IP protocol communication network 108. Accordingly, examples of IP communication endpoints 216 include IP telephones or video phones, implemented either as hardware (e.g., an IP telephone) or as software (e.g., a soft phone) running in connection with a general purpose computer, computers that are operable to provide real-time audio, video, and/or data communications, or any other data endpoint.
The call controllers 208 are network nodes that function to facilitate or enable communications between clients 204 of the IP protocol communication network 200 to which the controllers 208 and clients 204 are interconnected. In particular, the call controllers 208 maintain call state information. Examples of call state information includes SIP and H.323 call state information generated in connection with real-time communications over an IP protocol communication network 200. For instance, call state information may include call setup, tear down, address translation, and billing information. The call controllers 208 also function to control access to the IP protocol communication network 200. As can be appreciated by one of skill in the art, in a typical arrangement, a call controller 208 may function or be assigned as a primary call controller with respect to one or more clients 204. Alternatively or in addition, a call controller 208 can function as an alternate call controller for a number of communication endpoints 204.
With reference now to
At step 304, a determination is made as to whether call state information is available. In general, call state information may comprise any information related to the communication channel itself, or to peripheral data associated with the communication channel. For example, call state information may identify the various endpoints associated with the communication channel, whether a communication endpoint 104 has been placed on hook, and call timer information. If no call state information is available, the system may idle at step 304. If call state information is available, a call state information file is generated using the most recent call state information (step 308). The call state information file is then sent to the client 204 (step 312). In general, the call state information file is sent to each client 204 that has established a call signaling channel with the call controller 208 and that is associated with the communication channel in connection with which the call state information has been generated. As can be appreciated by one of skill in the art, while a communication channel is being set up or established, call state information may exist that is not associated with an established communication channel. However, such information may be maintained in a call information file in accordance with the present invention, in order to facilitate establishment of a requested communication channel should the client 204 become disconnected from an assigned controller 208. As can also be appreciated by one of skill in the art, the call controller 208 may, in addition to providing a file containing call state information to the client 204, maintain call state information conventionally. Examples of such state information include coverage timers, forwarding status, login status, previous connections to other parties, override code used on the call, call park information. In general any feature related information to the user on the call is stored, as well as any call specific information on what happened to the call or is allowed to happen to the call.
At step 316, the call state information file is stored on the client 204. Accordingly, a copy of the call state information, as represented by the call state information file, is directly accessible to the client 204. However, it should be appreciated that the client 204 is not required to maintain any awareness of the format or contents of the call state information file.
At step 320, a determination is made as to whether updated call state information is available. If updated call state information is available, the system returns to step 308. If updated call state information is not available, a determination is made as to whether the call signaling channel between the client 204 and the call controller 208 has been terminated (step 324). If the call signaling channel has not been terminated, the system returns to step 320. If the call signaling channel has been terminated, a determination is next made as to whether the termination of that call signaling channel is valid (step 328). If the termination is determined to be valid, the procedure ends. An example of a valid termination is after the client 204 has gone on hook and the associated communication channel has been torn down.
If the termination of the call signaling channel was determined at step 328 to be invalid, an alternate call controller is selected (step 336). For example, the client 204 may select an alternate call controller 208 from a list of valid alternate call controllers 208 maintained on the client 204 or accessible to the client 204 over the IP protocol communication network 108. As can be appreciated by one of skill in the art, if the alternate call controller 208 that is initially selected is not available, a next call controller 208 may be selected. As a further example, the client 204 may broadcast a request for a call controller 208, and may select a responding call controller 208 as an alternate-call controller 208. At step 340, the client 204 contacts the alternate call controller 208. The call state information file is then passed from the client 204 to the alternate call controller 208 (step 344). The call state information file may be passed to the alternate call controller 208 by the client 204 as part of or in connection with establishing contact with the alternate call controller 208. Furthermore, the call state information file may be pushed to the alternate call controller 208 by the client 204. Alternatively, the call state information file may be provided to the alternate call controller 208 in response to a query for that file made by the alternate call controller 208.
After the call state information has been provided to the alternate call controller 208, the system may return to step 320. Furthermore, provided that information concerning all of the applicable call features in effect immediately prior to the loss of the call signaling channel with the primary or prior call controller 208 is contained in the call information file, all of those features may be maintained, even though the call has migrated from the primary call controller 208 to an alternate call controller 208.
Although the discussion provided herein has primarily described the use of call state information files to maintain call features associated with communication channels where a call signaling channel is lost, it should be appreciated that the present invention is not so limited. For example, the present invention may also be used to maintain call features applicable to a communication channel where a connection between a client 204 and a call controller 208 is intentionally brought down. For instance, the present invention may be used to maintain call features associated with communication channels in existence at the time that a call controller 208 is removed from service for maintenance or upgrading.
Furthermore, it should be appreciated that the present invention may be applied in connection with any IP real-time transfer protocol (RTP) stream. Therefore, although the description provided herein refers to calls and to the use of call controllers, it should be appreciated that the present invention is not limited to voice telephony applications.
The present invention, by applying a “cookie” type technique in order to save call state information increases the natural network reliability by distributing such information. In addition, the disclosed invention is highly scalable, as clients 204 store their own call state information, avoiding the need for sending updated call information to a central database or to alternate call controllers. Further, call state information is only sent to alternate controllers when such information is needed. In addition, the disclosed invention is simple to implement and requires relatively few resources. Also, because embodiments of the present invention do not require that clients 204 be capable of recognizing the content of call state information files, changes can be made to the structure and content of these files, without requiring changes to the clients 204. Instead, only call controllers 208 need to be capable of reading the content of the call state information files.
The foregoing discussion of the invention has been presented for purposes of illustration and description. Further, the description is not intended to limit the invention to the form disclosed herein. Consequently, variations and modifications commensurate with the above teachings, within the skill and knowledge of the relevant art, are within the scope of the present invention. The embodiments described hereinabove are further intended to explain the best mode presently known of practicing the invention and to enable others skilled in the art to utilize the invention in such or in other embodiments and with various modifications required by their particular application or use of the invention. It is intended that the appended claims be construed to include the alternative embodiments to the extent permitted by the prior art.
Number | Name | Date | Kind |
---|---|---|---|
5206903 | Kohler et al. | Apr 1993 | A |
5280561 | Satoh et al. | Jan 1994 | A |
5828747 | Fisher et al. | Oct 1998 | A |
5905793 | Flockhart et al. | May 1999 | A |
5974114 | Blum et al. | Oct 1999 | A |
5982873 | Flockhart et al. | Nov 1999 | A |
6163607 | Bogart et al. | Dec 2000 | A |
6173053 | Bogart et al. | Jan 2001 | B1 |
6192122 | Flockhart et al. | Feb 2001 | B1 |
6282192 | Murphy et al. | Aug 2001 | B1 |
6292463 | Burns et al. | Sep 2001 | B1 |
6314114 | Coyle et al. | Nov 2001 | B1 |
6317596 | Elwin | Nov 2001 | B1 |
6434226 | Takahashi | Aug 2002 | B1 |
6504922 | Erb | Jan 2003 | B1 |
6574469 | Xiang et al. | Jun 2003 | B1 |
6665375 | Forlenza et al. | Dec 2003 | B1 |
6671262 | Kung et al. | Dec 2003 | B1 |
6721712 | Benyassine et al. | Apr 2004 | B1 |
6731734 | Shaffer et al. | May 2004 | B1 |
6738343 | Shaffer et al. | May 2004 | B1 |
6801612 | Malcolm et al. | Oct 2004 | B2 |
6925076 | Dalgic et al. | Aug 2005 | B1 |
6937873 | Levy et al. | Aug 2005 | B2 |
6950874 | Chang et al. | Sep 2005 | B2 |
6968382 | McBrearty et al. | Nov 2005 | B2 |
6973506 | Ishiyama et al. | Dec 2005 | B2 |
6999478 | D'Angelo | Feb 2006 | B2 |
7145900 | Nix et al. | Dec 2006 | B2 |
7161897 | Davies et al. | Jan 2007 | B1 |
7215643 | Mussman et al. | May 2007 | B2 |
7227927 | Benedyk et al. | Jun 2007 | B1 |
7243142 | Poirot et al. | Jul 2007 | B2 |
20010055382 | Oran et al. | Dec 2001 | A1 |
20030031137 | Mecklin | Feb 2003 | A1 |
20030091024 | Stumer | May 2003 | A1 |
20040028199 | Carlson | Feb 2004 | A1 |
20040101119 | Malcolm et al. | May 2004 | A1 |
20040143665 | Mace et al. | Jul 2004 | A1 |
20040252676 | Bye | Dec 2004 | A1 |
20050281216 | Varonen et al. | Dec 2005 | A1 |
20060034297 | O'Neill | Feb 2006 | A1 |
20060092919 | Hallmark et al. | May 2006 | A1 |
20060146799 | Baldwin et al. | Jul 2006 | A1 |
20060146859 | Baldwin et al. | Jul 2006 | A1 |
20060168326 | Baldwin et al. | Jul 2006 | A1 |
Number | Date | Country |
---|---|---|
0805576 | Nov 1997 | EP |
0920176 | Jun 1999 | EP |
0964563 | Dec 1999 | EP |
1250023 | Oct 2002 | EP |
1677569 | Jul 2006 | EP |
1677570 | Jul 2006 | EP |
H8-320800 | Dec 1996 | JP |
H10-164240 | Jun 1998 | JP |
2002-237896 | Aug 2002 | JP |
2003-514439 | Apr 2003 | JP |
2003-244204 | Aug 2003 | JP |
WO 0072536 | Nov 2000 | WO |
WO 0072560 | Nov 2000 | WO |
WO 0165808 | Sep 2001 | WO |
Number | Date | Country | |
---|---|---|---|
20050068889 A1 | Mar 2005 | US |