SIP: Session Initiation Protocol (RFC 3261) – Application-layer control (signaling) protocol used to create, manage and terminate sessions in an IP based network. A session could be a simple two-way telephone call or it could be a collaborative conference session.
SIP PHYSICAL ATTRIBUTES [Characteristics]
SIP is a text-based protocol. Endpoints that communicate using SIP use the following three protocols:
- SIP itself, used to establish and terminate the session;
- Session Description Protocol (SDP), used to exchange information about audio channels.
- RTP, used to send the real-time streams of audio across the network.
Messages are sent between each endpoint while in a SIP transaction. A transaction consists of a request and a response between each endpoint. The messages that belong to the transaction share the same ID. This ID is called CSeq.
Each transaction id will have a unique CSeq number, with only a single exception: the ACK message uses the same CSeq number as the transaction which it applies to.
(ACK for “acknowledge”)
SIP Methods: SIP requests or messages. SIP originally only had 6 requests (also called methods). Lets describe the individual methods:
INVITE — This is a request to establish a call (a session).
CANCEL — This method is used to stop an INVITE that is in progress (that is, the call has not been established yet).
ACK — The ACK request is used to confirm that the endpoint has received a final response in a transaction. Typically, after the called party accepts a call, the caller confirms the receipt of the accepting response (200 OK) with the ACK method.
BYE — The BYE method is used to end an established call.
REGISTER — The REGISTER method is used to register the SIP endpoint at the registrar server.
OPTIONS — The OPTIONS method is used to ask the other party for the list of SIP methods it supports.
In addition to the six SIP methods listed, several other SIP methods have been added to SIP 2.0
INFO — The FacetPhone system uses the SIP INFO method to carry DTMF digits only. RFC2833
SUBSCRIBE / NOTIFY— If you send a SUBSCRIBE method you are asking the other party to send you notifications NOTIFY method about status changes, example: at desk, away from desk, DND, etc.). The status change notifications is then sent in the NOTIFY messages.
MESSAGE — The MESSAGE method is a single message transmission used in instant messaging.
SIP Response Codes: SIP Requests are answered with SIP responses, of which there are 6 classes: 1xx through 6xx.
SIP User Agent (UA): An endpoint device that can issue or respond to SIP protocol methods.
SIP User Agent Client (UAS): A SIP endpoint device issuing the request (eg: Phone, PC, Smartphone ie iPhone, Android)
SIP Gateway: A network element that can convert SIP methods and response codes to another protocol.
SIP Proxy Server: An intermediary entity that acts as both a server and a client for the purpose of making requests on behalf of other clients.
SDP: Session Description Protocol (RFC 2327): – Text-based protocol describing multi-media sessions.
Most of these response codes are briefly described in RFC 3261. These are some of the most common reasons and in many cases debug logs might be required to troubleshoot further and find the exact reason.
100 – Trying
180 – Ringing
181 – Call Being Forwarded
182 – Call Queued
183 – Session Progress
200 – OK
202 – Accepted
300 – Multiple Choices
301 – Moved Permanently
302 – Moved Temporarily
305 – Use Proxy
380 – Alternative Service
400 – Bad Request
401 – Unauthorized
402 – Payment Required
403 – Forbidden
404 – Not Found
405 – Method Not Allowed
406 – Not Acceptable
407 – Proxy Authentication Required
408 – Request Timeout
409 – Conflict
410 – Gone
411 – Length Required
413 – Request Entity Too Large
414 – Request URI Too Long
415 – Unsupported Media Type
416 – Unsupported URI Scheme
420 – Bad Extension
421 – Extension Required
423 – Interval Too Brief
480 – Temporarily Unavailable
481 – Call/Transaction Does Not Exist
482 – Loop Detected
483 – Too Many Hops
484 – Address Incomplete
485 – Ambiguous
486 – Busy Here
487 – Request Terminated
488 – Not Acceptable Here
491 – Request Pending
493 – Undecipherable
500 – Server Internal Error
501 – Not Implemented
502 – Bad Gateway
503 – Service Unavailable
504 – Server Time-Out
505 – Version Not Supported
513 – Message Too Large
600 – Busy Everywhere
603 – Declined
604 – Does Not Exist Anywhere
606 – Not Acceptable