A Basic SIP Call Flow
There are many different SIP scenarios and call flows in a VoIP environment. This post describes a very basic SIP call flow case where A is the caller and B is the recipient. Users A and B probably have a SIP proxy server each handling the signaling on behalf of them.
When A wants to initiate a new call, it sends an initial INVITE to B. This INVITE contains various headers with signaling information such as A’s and B’s addresses/phone numbers, SIP path information, etc. The INVITE also carriers a Session Description Protocol (SDP) body with information regarding the media settings that A supports/prefers e.g. codecs and media addresses. When B’s SIP proxy receives the INVITE, it sends back an “100 Trying” SIP response which means that it has accepted the INVITE and it processes it. When B’s phone starts ringing, a “180 Ringing” is sent back to notify A.
When B answers the phone, a “200 OK” SIP message is sent back to A. This message usually contains a SDP body with the media settings that B supports/prefers. The point here is that A and B -via SDP- are negotiating the media parameters that will be used during the call. Finally A replies with an ACK in order to confirm that the “200 OK” has been received. From that moment, the two parties can start speaking with each other using the negotiated media parameters. When one of the parties releases the call, a BYE message is sent to the other party who in turn sends back a “200 OK” to confirm the call release.
Note that it is possible that other SIP messages contain a SDP body as well, for example the “180 Trying” (taking into consideration the RFCs). Note also that there could be other intermediary SIP devices in the path between A and B, e.g. a SIP proxy or B2BUA.
This example is a very basic scenario of how a successful SIP call can be established and terminated. Later posts will describe more in detail the various SIP call flows as well as signaling and media parameters and messages.