Session Initiation Protocol (SIP)
Chapter 5
Introduction
A powerful alternative to H.323
More flexible, simpler
Easier to implement
Advanced features
Better suited to the support of intelligent user devices
A part of IETF multimedia data and control architecture
SDP, RTSP (Real-Time Streaming Protocol),
SAP (Session Announcement Protocol)
The Popularity of SIP
Originally Developed in the MMUSIC (Multiparty Multimedia Session Control)
A separate SIP working group
RFC 2543
Many developers
The latest version: RFC 3261
SIP + MGCP/MEGACO
The VoIP signaling in the future
“bake-off”
Various vendors come together and test their products against each other
to ensure that they have implemented the specification correctly to ensure compatibility with other implementations
SIP Architecture
A signaling protocol
The setup, modification, and tear-down of multimedia sessions
SIP + SDP
Describe the session characteristics
Separate signaling and media streams
SIP Network Entities [1/4]
Clients
User agent clients
Application programs sending SIP requests
Servers
Responds to clients’ requests
Clients and servers may be in the same platform
Proxy
Acts as both clients and servers
SIP Network Entities [2/4]
Four types of servers
Proxy servers
Handle requests or forward requests to other servers
Can be used for call forwarding, time-of-day routing, or follow-me services
SIP Network Entities [3/4]
Redirect servers
Map the destination address to zero or more new addresses
SIP Network Entities [4/4]
A user agent server
Accepts SIP requests and contacts the user
The user responds → an SIP response
A SIP device
E.g., a SIP-enabled telephone
A registrar
Accepts SIP REGISTER requests
Indicating that the user is at a particular address
Personal mobility
Typically combined with a proxy or redirect server
SIP Call Establishment
It is simple, which contains a number of interim
responses.
SIP Advantages
Attempt to keep the signaling as simple as possible
Offer a great deal of flexibility
Does not care what type of media is to be exchanged during a session or the type of transport to be used for the media
Various pieces of information can be included within the messages
Including non-standard information
Enable the users to make intelligent decisions
The control of the intelligent features is placed in the hands of the customer, not the network operator.
E.g., SUBJECT header
Call Completion to Busy Subscriber Service
Overview of SIP Messaging Syntax
Text-based
Similar to HTTP
Disadvantage – more bandwidth consumption
SIP messages
message = start-line
*message-header CRLF [message-body]
start-line = request-line | status-line
Request-line specifies the type of request
The response line indicates the success or
failure of a given request.
Message headers
Additional information of the request or response
E.g.,
The originator and recipient
Retry-after header
Subject header
Message body
Describe the type of session
The most common structure for the message body is SDP (Session Description Protocol).
Could include an ISDN User Part message
Examined only at the two ends
SIP Requests [1/2]
Method SP Request-URI SP SIP-version CRLF
Request-URI
The address of the destination
Methods
INVITE, ACK, OPTIONS, BYE, CANCLE, REGISTER
INVITE
Initiate a session
Information of the calling and called parties
The type of media
〜IAM (initial address message) of ISUP ACK only when receiving the final response
SIP Requests [2/2]
BYE
Terminate a session
Can be issued by either the calling or called party
Options
Query a server as to its capabilities
A particular type of media
CANCEL
Terminate a pending request
E.g., an INVITE did not receive a final response
REGISTER
Log in and register the address with a SIP server
“all SIP servers” – multicast address (224.0.1.1750)
Can register with multiple servers
Can have several registrations with one server
“One number” service
SIP INFO Method
Specified in RFC 2976
For transferring information during an ongoing session
The transfer of DTMF digits
The transfer of account balance information
Pre-paid service
The transfer of mid-call signaling information
SIP Responses
SIP Version SP Status Code SP Reason-Phrase CRLF
Reason-Phrase
A textual description of the outcome
Could be presented to the user
status code
A three-digit number
1XX Informational
2XX Success (only code 200 is defined)
3XX Redirection
4XX Request Failure
5XX Server Failure
6XX Global Failure
SIP Addressing
SIP URLs (Uniform Resource Locators)
user@host
sip:collins@home.net
sip:3344556789@telco.net
Message Headers
Provide further information about the message
E.g.,
To:header in an INVITE
The called party
From:header
The calling party
Four main categories
General, Request, Response, and Entity headers
General Headers
Used in both requests and responses
Basic information
E.g., To:, From:, Call-ID: (uniquely identifies a specific invitation to a session), …
Contact:
Provides a URL for use in future communication regarding a particular session
Examples 1: In a SIP INVITE, the Contact header might be different from the From header.
An third-party administrator initiates a multiparty session.
Example 2: Used in response, it is useful for directing further requests directly to the called user.
Example 3: It is used to indicate a more appropriate
address if an INVITE issued to a given URI failed to reach the user.
Request Headers
Apply only to SIP requests
Addition information about the request or the client
E.g.,
Subject:
Priority:, urgency of the request (emergency, urgent, normal, or non-urgent)
Response Headers
Further information about the response that cannot be included in the status line
E.g.,
Unsupported
Entity Headers
Indicate the type and format of information included in the message body
Content-Length: the length of the message body
Content-Type: the media type of the message body
E.g., application/sdp
Content-Encoding: for message compression
Content Disposition: how a message part should be interpreted
session, alert …
Examples of SIP Message Sequences
Registration
Via:
From: and To:
Call-ID:
host-specific
Contact: (for future SIP message transmission)
*
Content-Length:
Zero, no msg body
CSeq:
A response to any request must use the same value of CSeq as used in the request.
Expires:
TTL
0, unreg
Invitation
A two-party call
Subject:
optional
Content-Type:
application/sdp
A dialog ID
To identify a peer-to-peer relationship between two user agents
Tag in From
Tag in To
Call-ID
Termination of a Call
Cseq:
Has changed
Redirect Servers
An alternative address
302, Moved temporarily
Another INVITE
Same Call-ID
CSeq ++
Proxy Servers
Sits between a user-agent client and the far-end user- agent server
Numerous proxies can reside in a chain between the caller and callee.
The last proxy may change the Request-URI.
Via:
The path taken by a request
Loop detected, 482 (status code)
For a response
The 1st Via: header
Checked
Removed
Branch: used to distinguish between multiple responses to the
Proxy state
Can be either stateless or stateful
Record-Route:
The messages and responses may not pass through the same proxy
Use Contact:
A Proxy might require that it remains in the signaling path
In particular, for a stateful proxy
Insert its address into the Record-Route: header
The response includes the Record-Route: header
The information contained in the Record-Route: header is used in the subsequent requests related to the same call.
The Route: header = the Record-Route: header in reverse order
Forking Proxy
“fork” requests
A user is registered at several locations
;branch=xxx