SIP Transactions vs. Dialogs

14 Mar

During the establishment, maintenance and termination of a SIP session, signaling messages are exchanged between the two SIP endpoints. There are two different kinds of signaling “conversations” that those messages take part in: transactions and dialogs.

A transaction is a SIP message exchange between two user-agents that starts with a request and ends with its final response (it can also contain zero or more provisional responses in between). For example, during the termination of a SIP session, one user releases the call by sending a BYE request and the other party replies back with a 200 OK response. This message exchange is called a transaction.

But what happens in the case of the INVITE request? The establishment of a SIP session starts basically with an INVITE request and is considered as completed upon the receipt of the ACK. In this case, the transaction starts with the INVITE request and ends with the 200 OK, so the ACK is not part of the transaction. The ACK can be considered as a transaction on its own. However, when the final response to an INVITE is not a 2xx response, then the ACK is considered as part of the transaction.

A dialog is a complete exchange of SIP messages between two user-agents. That means that transactions are actually parts of a dialog. For example, in the case of a SIP session establishment, a dialog starts with the INVITE-200 OK transaction, continues with the ACK and ends with the BYE-200 OK transaction.

The picture below depicts the dialog and transactions that take place during the establishment of a SIP session:

SIP transactions and dialogs

There are different SIP headers/parameters that identify the dialogs and transactions, and they will be analyzed in later posts.

Source: http://telconotes.wordpress.com/2013/03/13/sip-transactions-vs-dialogs/

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.