Enhanced refresh in SIP network

Embodiments of the present invention provide techniques for refreshing a session. A session is refreshed using a refresh message that is enhanced for a refresh. For example, the refresh message does not include an SDP or any other message body. The message includes only a reduced header. This reduces time spent building and parsing the refresh message. Also, less bandwidth is used in sending the refresh messages.

BACKGROUND OF THE INVENTION

Embodiments of the present invention generally relate to telecommunications and more specifically to techniques for providing an enhanced refresh in a SIP network.

Voice-over Internet Protocol (VoIP) has become popular and prevalent for communications. When a communication between two peers occurs, a session is created for the communication. As VoIP networks evolve into large end-to-end networks, messages, such as session initiation protocol (SIP) messages, increasingly have to traverse a larger number of intermediate hops before reaching a final end point. With unpredictable IP network delays and packet loss, the chances of losing a SIP message are high. This occurs especially if user datagram protocol (UDP) or any other unreliable protocol is used to send messages. When a SIP message is lost, this may lead to a hanging SIP session. A hanging SIP session is a session on one side of the communication that a peer thinks is active but is not active on the other side.

To address the issue of hanging SIP sessions, session refresh mechanisms are used. A SIP session is refreshed by sending SIP messages periodically. Refreshes in SIP can be expensive particularly if there is no change to a session. SIP sessions may be refreshed by sending messages typically used in a dialog, such as UPDATE, RE-INVITE, OPTIONS/200 OK, etc. These in-dialog messages are sent as a ping to see if the session is still active. If a response is received, then it is assumed the session is active. These messages are typically bulky in that they include a full header and body (e.g. session description protocol (SDP) or extensible markup language (XML) information). This is because they were not designed for a refresh. Rather, they were originally designed to perform other functions and thus, the format and requirements for content to be included in the messages do not take into account a mechanism for a pure refresh. For example, an INVITE message is typically used to request a connection to a device. However, the INVITE message may be used to refresh a session in that the INVITE message is sent for a session and if a response is received for the INVITE message, such as a 200 OK message, it is assumed the session is active. SIP requires that the INVITE message include certain fields in the header and also an SDP.

Accordingly, parsing and transporting these messages just for a refresh purpose includes a lot of overhead. For example, a refreshes has to parse the entire header and SDP when the message is received. Also, transporting the messages results in significant network bandwidth consumption over time. Accordingly, the above method of refreshing sessions is processing-intensive and also uses valuable network bandwidth. Further, the processing resources/bandwidth used is magnified when the messages have to pass through other SIP devices, such as SIP servers and user agents participating in the session.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

Embodiments of the present invention provide techniques for refreshing a session. A session is refreshed using a message that is enhanced purely for refresh purposes. For example, the refresh message does not include an SDP or any other message body. The message includes only a reduced header. This reduces time spent building and parsing the refresh message. Also, less bandwidth is used in sending the refresh messages.

A negotiation between a refresher and refreshes occurs to determine if each supports the enhanced refresh method. If a refresh method is supported, then a refresher generates a refresh message for a session. The refresh message may not include an SDP and also includes a reduced header. For example, the header may include only mandatory fields. The refresh message is sent to the refreshee, which can then determine if the session is active. The refreshee then sends a response message indicating whether the session is active or not. The response message may not include an SDP either and also includes a reduced header.

FIG. 1depicts a system100for providing an enhanced refresh of sessions according to one embodiment of the present invention. As shown, a session border controller (SBC)102, originating gateway (OGW)104, terminating gateway (TGW)106, end devices108, and network110are provided. Communications may be routed between a specific end device108-1and a specific end device108-2. A session is created for the communications that are routed between originating gateway104and terminating gateway106for end device108-1and end device108-2. Many sessions may be created by different end devices108-1and108-2to communicate. Session Border Controller102keeps track of which sessions are established between originating gateway104and terminating gateway106.

End devices108may be any devices that can participate in a communication. For example, end devices may be IP telephones, public switch telephone network (PSTN) devices, computers, instant message clients, soft phones, or any other devices that can participate in a communication.

Originating gateway104may be any network device configured to manage communications with end devices108-1. In one embodiment, gateway104manages a set of end devices108. Originating gateway104may be the gateway that originates a communication.

Terminating gateway106may be any network device configured to manage communications with end devices108-2. Terminating gateway106may be the gateway that receives a communication from originating gateway104. Terminating gateway106may then send a communication to an end device108-2. Although originating gateway104and terminating gateway106are referred to as “originating” and “terminating”, it will be understood that communications may be flow in both directions. Thus, originating gateway104and terminating gateway106may originate and terminate communications.

Session border controller102is a network device configured to sit in between communications between originating gateway104and terminating gateway106. Session border controller102keeps track of which set of sessions are established between originating gateway104and terminating gateway106. Session border controller102may include IP-to-IP gateways, SIP proxies, IP-PBXs, media gateways, soft switches, Back-To-Back User Agents (B2BUAs), etc.

Network110may be any network. For example, network110may be an IP network. Session initiation protocol (SIP) may be used to send SIP messages between originating gateway104and terminating gateway106. Although SIP is described, it will be understood that other protocols may be appreciated.

As SIP sessions are created, session border controller102stores a session identifier. The session may be active on both the originating gateway104and the terminating gateway106. However, at some point, a session at originating gateway104and/or terminating gateway106may become inactive on one gateway but not the other. The session may be considered hanging in this case. A hanging session is where one side or both the sides of a communication think that a session is active but the session is inactive on one side or both the sides of the communication. For example, terminating gateway106may think that a session is active. However, the session may be inactive on originating gateway104. The session may become inactive for different reasons. For example, a session may time-out and become inactive after a certain period of time. If signaling and/or media packets are lost in a communication, this may cause a time-out.

When hanging sessions occur, actions may be taken to clear the session. For example, a BYE message should be sent by terminating gateway106to end the session or the session can be forcibly torn down. This clears the hanging session from terminating gateway106. Similarly other devices like session border controller102and originating gateway104can initiate a session clean-up. Before clearing the sessions, however, it is determined which sessions are hanging by using the enhanced refresh method.

Accordingly, embodiments of the present invention provide an enhanced refresh message for refreshing sessions. In one embodiment, a negotiation, using, for example, SIP INVITE and 200 OK messages, may be performed to determine if a refreshee and refresher support the bulk refresh. In one example, session border controller102may send an INVITE message to originating gateway104with a tag that indicates the enhanced refresh is supported. Originating gateway104sends a 200 OK message back to session border controller102with a tag that indicates it supports the enhanced refresh, if it does. If it does not, the 200 OK message does not include the tag indicating it supports enhanced refresh. Although, INVITE and 200 OK messages are described, it will be recognized that other SIP messages may be used to negotiate support for the enhanced refresh method, such as message used to create a dialog.

If the enhanced refresh method is supported, a refresher can then generate an enhanced refresh message. The enhanced refresh message includes less information than other SIP messages. For example, the enhanced refresh message does not include a body (e.g., SDP or XML text) and also includes a reduced header. The enhanced refresh message is sent to a refreshee, which can then refresh the session (i.e., determine if the session is active or not). The refreshee then sends a response message to the refresher indicating whether the session is active or not. The response message may not include a body and also includes a reduced header.

Accordingly, a method of providing an enhanced refresh cuts down on extra processing because parsing of the body and header is reduced. Also, bandwidth used is reduced as the size of the message is smaller. Further, the processing time and bandwidth saved is increased as session border controller102handles a larger number of calls. Also, when session border controller102is connected to multiple gateways104, then the savings is multiplied by as many gateways104in which session border controller102is connected.

FIG. 2depicts an example of a negotiation to determine if the enhanced refresh is supported according to one embodiment of the present invention. In one embodiment, session border controller102may be a refresher that initiates the enhanced refresh and gateway104may be a refreshee that performs the refresh. Although the following will be discussed in the context of SBC102, embodiments of the present invention may be use between any two SIP peers. Also, although session border controller104is described as being the refresher and gateway104is described as being the refreshee, it will be understood that the roles may be reversed. Also, other devices in system100may assume the roles of the refresher and refreshee.

In one embodiment, session border controller102sends a message to gateway104to determine if gateway104supports the enhanced refresh. In one embodiment, a SIP message may be sent, such as a SIP INVITE message. The SIP INVITE message includes an enhanced refreshed tag in a header field that indicates support for the enhanced refresh.

FIG. 3Ashows an example of an INVITE message300that may be sent according to one embodiment of the present invention. As shown, an allow header field302is provided in an INVITE message300. Allow header field302includes features that are supported by session border controller102. As shown, a tag304indicates that the option “REFRESH” is supported by session border controller102. Other options that are supported and shown in Allow header field302include INVITE, ACK, OPTIONS, CANCEL, and BYE.

A body306is also included with this message as is required in SIP for an INVITE message. 1xx messages may then be exchanged between gateway104and SBC102.

Gateway104may then send a message back to session border controller102that indicates whether or not the enhanced refresh is supported. If the enhanced refresh is supported, then a tag of “REFRESH” may be included in a header field in a 200 OK SIP message. An ACK may then be received.

FIG. 3Bshows an example of a 200 OK message350according to one embodiment of the present invention. As shown, an Allow header field308includes a tag310of “REFRESH”. Also, Allow header field308includes other features that are supported by gateway104, such as INVITE, ACK, OPTIONS, CANCEL, and BYE. Further, a body312includes an SDP as is required by the SIP protocol for a 200 OK message.

Accordingly, if the enhanced refresh is supported by both session border control102and gateway104, then an enhanced refresh may be performed. However, if gateway104does not include the REFRESH tag in a response, then sessions may be refreshed individually with full messages including a body and full header using messages, such as INVITE, SUBSCRIBE, etc.

FIG. 4depicts a more detailed embodiment of system100according to embodiments of the present invention. As shown, session border controller102and originating gateway104are provided. For discussion purposes, the communication is assumed to be between session border controller102and originating gateway104. However, terminating gateway106may include the same components as described with respect to originating gateway104. Also, although session border controller102is shown as initiating the enhanced refresh, it will be understood that other devices in system100may initiate the enhanced refresh, such as originating gateway104and terminating gateway106.

As shown, session border controller102includes a session identification module202, a session refresher204, and a session list206. Session identification module202is configured to determine sessions that have been created between originating gateway104and terminating gateway106. Session identification module202uses session identifiers that are stored in session list206when the sessions were created.

In one embodiment, as sessions are created and calls are placed between gateway104and session border controller102and/or terminating gateway106, the negotiation as to whether enhanced refresh is supported may be performed during this messaging. Session refresher204may determine if the enhanced refresh message is supported for a session. If so, session refresher204then generates an enhanced refresh message.

The enhanced refresh message may not include a body. Also, a reduced header may be provided. For example, the reduced header may include only mandatory fields that are necessary for sending a SIP message. In one embodiment, the header includes a Message field followed by the dialog-identifier headers (From, To, Call ID, CSeq). This results in a lightweight message that is easy to build/parse and uses very little bandwidth to send.

FIG. 5Adepicts an example of an enhanced refresh message500according to one embodiment of the present invention. As shown, a Message field502, a To field504, a From field506, a Call-ID field508, and a command sequence (CSeq) field510are included in the enhanced refresh message500. Also, a body is not included in message500.

Message field502indicates what type of message this is, i.e., an enhanced refresh message. From field506and To field504include identifiers for the original calling and called parties, respectively.

Call-ID field508identifies the session this enhanced refresh message is for. Accordingly, the session for the session identifier included should be refreshed. CSeq field510indicates the sequential number of a message sent in the session. A tag512of “REFRESH” indicates this message is for a refresh.

Because the body does not need to be included in the enhanced refresh message500and a reduced header is provided, less processing time is spent to build message500. Also, because the SDP is not included and the header fields are reduced, bandwidth is saved in sending message500to session refreshee208. This refresh message may be a message specifically for a refresh of a session. In one embodiment, the message may have no other uses in SIP. This is different from using an INVITE message for a refresh, where the INVITE message is used to initiate a call.

Referring back forFIG. 4, a session refreshee208of originating gateway104may receive the enhanced refresh message. Session refreshee208determines that the message is a refresh message based on Message field502. To determine information needed to perform the refresh, session refreshee208does not need to parse a full header or a body. Rather, session refreshee208can determine the session identifier and then determine if the session for the identifier is active or not.

A response generator210then generates a response message. The response message indicates whether or not the session is active. Response generator210may build a response message that is enhanced in that it only includes mandatory header fields and also does not include a body. If the session is active, a response may be a 200 OK response message that is sent without a full header and body. If the session is not active, a 481 Call/Transaction does not exist is sent without a full header and body. Although these messages are described, it will be understood that other messages may be sent that indicate whether the session is active or not.

FIG. 5Bshows an example of a response message520for indicating the session is active according to one embodiment of the present invention. This message is a 200 OK message indicating the session is active. As shown, a body is not included. Also, the same header fields are provided in response message502as found in enhanced refresh message500. In call-ID field508, the session identifier that was included in message500is included. Because the response message502does not include an SDP and includes a reduced number of header fields, processing in generating message510is saved and bandwidth is conserved in sending message510to an inactive session identifier module212. A tag502of “REFRESH” is included in message520. This is so the refresher can distinguish this 200 OK message as a response to the refresh message rather than a response to an INVITE message or other SIP message.

Inactive session identifier module212receives the response from response generator210. Message510is parsed and it is determined if the session is active or not. Message510does not include a body so that does not need to be parsed and, in addition, the header is reduced and a large number of fields do not need to be parsed. Accordingly, it can be determined if the session is active or not with a minimal amount of parsing/processing.

In one embodiment, when a 200 OK message is received with a tag512of REFRESH, it is assumed the session identified in Call-ID field508is active.

If inactive session identifier module212determines that a session is inactive, then session border controller102may take actions to clear any discrepancies for inactive sessions. For example, session border controller102may send a BYE message to terminating gateway106for the inactive sessions identified. Also, originating gateway104may send a BYE message for the inactive sessions. Accordingly, terminating gateway106is notified and can end the inactive sessions itself.

If the session is not active, a response message may be a failure message, such as a 481 Call/Transaction does not exist.FIG. 5Cshows a response message540for indicating the session is inactive according to one embodiment of the present invention. Response message540includes message field502, To field504, From field506, Call-ID field508and CSeq field510.

In one embodiment, when the 481 Call/Transaction does not exist message is received with a tag512of REFRESH, it is assumed the session identified in Call-ID field508is inactive.

Other methods of determining that a session is active or inactive may be appreciated. For example, a tag may be included in a message that indicates whether the session is active or not. Thus, two different types of messages do not need to be sent. Also, a response message may not be sent back if the session is not active. Session border controller102may then determine that the session is not active if a response is not received within a certain amount of time.

Although the above is described as sending an enhanced session refresh message for one session, it will be recognized that multiple sessions may be refreshed using the same enhanced refresh message500. For example, multiple session identifiers may be included in message500and refreshed. A response that indicates which sessions are active or not may then be received. In one embodiment, further details are described in U.S. patent application Ser. No. 11/411,367, entitled “Techniques for Bulk Refresh of Sessions in IP Networks”, filed Apr. 26, 2006, which is incorporated by reference in its entirety for all purposes.

Embodiments of the present invention provide many advantages. For example, an efficient way of refreshing SIP sessions is provided. Less processing is spent building the refresh message. The reduced message size also uses less bandwidth and requires less parsing at the refreshee. Accordingly, resources (CPU/memory) on the SIP network involved in the session refresh are saved thus freeing up devices to handle a larger number of simultaneous calls. Further, there is a direct impact on network bandwidth use due to messages that are smaller. Accordingly, session border controllers102may handle more calls with multiple gateways104because of the processing and bandwidth that is saved using embodiments of the present invention.

Although the invention has been described with respect to specific embodiments thereof, these embodiments are merely illustrative, and not restrictive of the invention. For example, although SIP is described, it will be recognized that other protocols may be appreciated. Additionally, other devices than those described may use the enhanced refresh.

Any suitable programming language can be used to implement the routines of embodiments of the present invention including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different embodiments. In some embodiments, multiple steps shown as sequential in this specification can be performed at the same time. The sequence of operations described herein can be interrupted, suspended, or otherwise controlled by another process, such as an operating system, kernel, etc. The routines can operate in an operating system environment or as stand-alone routines occupying all, or a substantial part, of the system processing. Functions can be performed in hardware, software, or a combination of both. Unless otherwise stated, functions may also be performed manually, in whole or in part.

A “computer-readable medium” for purposes of embodiments of the present invention may be any medium that can contain and store the program for use by or in connection with the instruction execution system, apparatus, system or device. The computer readable medium can be, by way of example only but not by limitation, a semiconductor system, apparatus, system, device, or computer memory.

Embodiments of the present invention can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium, such as a computer-readable medium, as a plurality of instructions adapted to direct an information processing device to perform a set of steps disclosed in embodiments of the present invention. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the present invention.

Embodiments of the invention may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of embodiments of the present invention can be achieved by any means as is known in the art. Distributed, or networked systems, components and circuits can be used. Communication, or transfer, of data may be wired, wireless, or by any other means.