SIP Description / Call Flow


SIP Description/Call Flow
SIP, session initiation protocol, is the protocol used to facilitate the transfer of Non-Audio VoIP call data. It is used to initiate and maintain a call from start to end.

Common SIP Methods:

  • ACK - Used as an acknowledgement of receipt and/or acceptance of a SIP message

  • BYE - Used to end a session in progress (i.e. after a 200 OK)

  • CANCEL - Used to cancel a session before it begins (i.e. before a 200 OK)

  • INVITE - Used to initiate a new session

  • RE-INVITE - This is a second invite sent with the same Call-ID. This is done to change aspects of the dialog.


Uncommon SIP Methods:


  • OPTIONS - Used to ask a SIP server what methods are supported

  • MESSAGE - Single message transmission used in instant messaging (RFC3428)

  • UPDATE - Essentially like a re-invite, but it can be sent at any time during the dialog (i.e. both before and after the 200 OK or any other non-provisional response code)

 
Typical Call Flow (Successful, no Re-invite)
I - Initiator
R - Recipient

 

I --------INVITE-------> R

I <------100 Trying------ R

I <---180/183 Ringing----- R

I <-------200 OK -------- R

I -----------ACK--------> R

I -----------BYE--------> R (Direction Interchangeable)

I <--------200 OK---------R (Direction is opposite the path of the BYE)


Notes
-A dialog may have a 180 Ringing, which is a standard ringing response; a 183 ringing, which is typically early media (i.e. ringing in the actual RTP stream or in some cases, an IVR or operator message); or go directly to a 200 OK, which is typically in cases of IVRs.
-The BYE message is initiated by the end that hangs up the call first. If this is done before a 200 OK is sent, this will be a CANCEL instead of a BYE message.
-Error and Redirect Responses (3xx, 4xx, 5xx, 6xx) will typically come before the 180/183 ringing portion of a call.
-Re-invites can be initiated by either side at any time between the initial 200 OK and the BYE closing the dialog.
-Dialogs with re-invites that are rejected will continue until one of the 2 sides end the call. A error code (4xx, 5xx, 6xx level responses) should not end the session outright.

Â