The subject matter described herein relates to session initiation protocol (SIP). More specifically, the subject matter relates to methods, systems, and computer readable media for SIP dialog identification.
Session initiation protocol (SIP), specified in the Internet Engineering Task Force (IETF) RFC 3261, is used for call and session control of multimedia communication sessions between parties exchanging various forms of media, such as voice and video. A SIP network may include various SIP network elements for establishing and tearing down: communications sessions. One such element includes a SIP user agent (UA). As used herein, a “SIP UA” or “UA” refers to a logical network endpoint used to communicate SIP messages. A UA may perform the role of a user agent client (UAC), which sends SIP requests, or a user agent server (UAS), which receives requests and returns SIP responses. Other SIP elements, such as a SIP proxy, may also be involved. As used herein, a “SIP proxy” refers to an intermediary device in a SIP network that acts as both a server and a client for the purpose of making requests on behalf of other clients and primarily plays the role of routing messages to one or more associated devices.
An important concept in SIP is the use of transactions, dialogs, and calls. As used herein, a “SIP transaction” includes a request along with all associated responses up to a final (non-1xx) response. As used herein, a “SIP dialog” or “dialog” refers to a peer-to-peer SIP relationship between two UAs that persists for some time. Generally, a dialog may include a collection of SIP transactions. A dialog may be established by SIP messages, such as a 2xx response to an INVITE request. As used herein, “calls” and “sessions” may be used interchangeably. A SIP call or session may include multiple dialogs. For example, a session may include multiple user agents communicating with one user agent client. Such an example may result from forking which allows a single request message to be sent to and trigger response messages from multiple user agents. UAs typically attempt to establish a SIP dialog for facilitating sequencing and routing of messages between each other. UAs managed state information for each established dialog, including information to uniquely identify a dialog.
Conventionally, a SIP dialog is identified at each UA by computing a dialog ID for each received message based on a combination of parameters, which include a Call-ID value, a local tag, and a remote tag. These parameters or values (but not the dialog ID, because it has local significance only) are generally included in every message sent after a dialog is established. While a Call-ID value may be the same for each UA in a dialog, the dialog ID is not the same for each UA because the tags used in the dialog ID are defined and interpreted relative to each UA. Specifically, the local tag value at a first UA (e.g., a UAC) is identical to the remote tag value at the peer UA (e.g., a UAS) and the local tag value at the peer UA (e.g., a UAS) is identical to the remote tag value at the first UA (e.g., a UAC). As such, the rules for constructing the dialog ID of a message depend on the SIP element receiving the message.
As described, conventional methods of SIP dialog identification present various shortcomings. One particular shortcoming is that the SIP protocol, as currently defined, does not specify a computed dialog ID parameter that is embedded within messages associated with a SIP dialog and used to uniquely identify these SIP messages as being associated with the same SIP dialog by both UAs. Instead, as stated above each UA must compute, for each received SIP message, a dialog ID using multiple SIP message parameter values. Consequently, the currently specified SIP mechanisms for identifying the dialog with which a SIP message is associated are computationally expensive and time consuming for SIP UAs, because dialog ID computation is repeated by each UA for each message.
Accordingly, in light of these difficulties, a need exists for improved methods, systems, and computer readable media for SIP dialog identification.
Methods, systems, and computer readable media for session initiation protocol (SIP) dialog identification are disclosed. According to one method, a first SIP message associated with a SIP dialog is received. A dialog ID that is associated with the SIP dialog is computed using fields of the first SIP message and stored by a first SIP user agent (e.g., UAC, UAS). A second SIP message associated with the SIP dialog is generated. The computed dialog ID is included in the second message. In one implementation, a second SIP user agent receives the second message and uses the embedded dialog ID value to identify the SIP dialog with which the second message is associated.
A system for session initiation protocol (SIP) dialog identification is also disclosed. The system includes a receiving module for receiving a first SIP message associated with a SIP dialog. The system further includes a computing module for computing, using fields of the first SIP message, a dialog ID for identifying the SIP dialog, storing the computed dialog ID value, generating a second SIP message associated with the SIP dialog, and including the computed dialog ID in the second message. A SIP user agent (e.g., UAC, UAS) may receive the second message and uses the embedded dialog ID value to identify the SIP dialog with which the second message is associated.
The subject matter described herein for session initiation protocol (SIP) dialog identification may be implemented using a computer readable medium having stored thereon computer executable instructions that, when executed by the processor of a computer, control the computer to perform the steps of the aforementioned method. Exemplary computer readable media suitable for implementing the subject matter described herein include disk memory devices, chip memory devices, programmable logic devices, and application specific integrated circuits. In one implementation, the computer readable medium may include a memory accessible by a processor. The memory may include instructions executable by the processor for implementing any of the methods for SIP dialog identification described herein. In addition, a computer readable medium that implements the subject matter described herein may be located on a single device or computing platform or may be distributed across multiple devices or computing platforms.
The subject matter described herein will now be explained with reference to the accompanying drawings of which:
The subject matter described herein includes methods, systems, and computer readable media for SIP dialog identification. As mentioned above, conventional SIP dialog identification involves the extraction and processing of three values or parameters typically found in every SIP message sent during a dialog between UAs. This parameter extraction and processing is performed de novo for each SIP message received by a SIP user agent. The parameters extracted and processed include a call-ID value and two tags, a local tag and a remote tag, where one tag is generated by each UA when establishing the dialog. A tag includes a token that is globally unique and random or pseudo-random for ensuring unique dialog IDs. The ability to fork SIP requests (i.e., the ability to allow multiple dialogs to be established from a single request) creates a need for a two-sided dialog identifier because without a contribution (i.e., a tag) from recipients, the requesting UA could not distinguish the multiple dialogs established from a single request. As such, tags are defined and maintained relative to a UA. For example, a local tag value for a UAC may be a remote tag value for a UAS and, similarly, a local tag value for the UAS may be a remote tag value for the UAC. As stated above, in conventional SIP network architectures, each time a message is received during a SIP dialog, the receiving UA needs to locate within the message and extract the three parameters. The three parameters extracted from the message are used to construct a dialog ID value for identifying a SIP dialog associated with message. This repetitive computation each time a message is received may be time and resource intensive, and, thus, inefficient for providing or communicating SIP dialog identification.
Accordingly, the subject matter described herein provides for SIP dialog identification, where a dialog ID computed by one SIP entity may be shared with and used by other SIP entities associated with a SIP dialog. The subject matter described herein provides a way for including the computed dialog ID in SIP messages associated with a SIP dialog. It is appreciated that one advantage of the subject matter described herein includes allowing a common computed dialog ID to be generated and used throughout a dialog's lifespan without having to compute or recompute the dialog ID every time a message is received at a UA associated with the SIP dialog. As a result, the time and processing resources expended by SIP user agents (or other SIP functional elements) for identifying SIP dialogs is reduced. The subject matter described herein will now be explained in greater detail with reference to
It should be appreciated that
In block 302, a dialog ID that is associated with the SIP dialog is computed using fields of the first SIP message. For example, the INVITE message from the above examples may contain a Call-ID field and a tag parameter in a “From” field. UAS 104 may extract these values. UAS 104 may also generate a second tag value that is not determinable from the first SIP message. Using these three values, UAS 104 may compute the dialog ID based on a cryptographic hash function. For example, the computed dialog ID value may be globally unique and cryptographically random.
In block 304, a second SIP message associated with the SIP dialog is generated. For example, UAS 304 may generate a response SIP message, such as a 200 OK message, for indicating that the SIP INVITE has been received and accepted. In block 306, the computed dialog ID is included in the second message. For example, UAS 104 may include a computed dialog ID in the 200 OK message from the above example. When the 200 OK response message is received, UAC 102 may locate, retrieve, and associate the computed dialog ID with the SIP dialog. Thereafter, the computed dialog ID may be included in subsequent SIP messages generated by UAC 102 or UAS 104 that are associated with the SIP dialog. In one embodiment, a SIP dialog ID value may be placed within a “To” header. In another embodiment, a dialog ID value may be stored in its own dialog ID parameter (e.g., in a Dialog_ID parameter in the header portion of a SIP message). In other embodiments of the present invention, a SIP dialog ID value may be included within any header parameter or the body of the SIP message.
Although the examples described above relate to a UAS compute or generate a dialog ID value, the subject matter described herein is not limited to such an embodiment. The present subject matter allows for other SIP elements to compute or generate a dialog ID value. For example, UAC 102 may compute or generate a dialog ID value. In such an example, UAC 102 may extract a remote tag value from a response message to an initial INVITE message. UAC 102 may compute a dialog ID value and send the computed dialog ID in an ACK message to UAS 104. UAS 104 may use the computed dialog ID value similar to UAC 102 in the description above relating to
In
Returning to
It will be understood that various details of the subject matter described herein may be changed without departing from the scope of the subject matter described herein. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation, as the subject matter described herein is defined by the claims as set forth hereinafter.
This application claims the benefit of U.S. Provisional Patent Application Ser. No. 61/085,677 filed Aug. 1, 2008, the disclosure of which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61085677 | Aug 2008 | US |