You are on page 1of 64

SIP Tutoiral www.dynamicsoft.

com
A Tutorial on SIP

Jonathan Rosenberg
Chief Scientist

SIP Tutoiral www.dynamicsoft.com


Introducing - Session Initiation Protocol (SIP)

 Developed in mmusic group in IETF  Main Features


 Proposed standard RFC2543, Feb. 1999  Personal mobility services
 Work began 1995
 Wide area operation
 Part of Internet Multimedia Conferencing Suite
 Session independence
 Main functions  voice, video, games, chat,
 Invitation of users to sessions
virtual reality, etc.
 Find the users current location to deliver
invitation  Leverages other Internet protocols
 Carry opaque session descriptions
 Modification of sessions
 Termination of sessions

SIP Tutoiral www.dynamicsoft.com


Basic Design
 SIP is a Client Server Protocol
 Clients send requests, receive responses
 Servers receive requests, send responses
request
Client Server
 Modelled after HTTP
response
 Each request invokes method on server
 Main purpose of request

 Messages contain bodies

SIP Tutoiral www.dynamicsoft.com


Transactions INVITE
100
 Fundamental unit of messaging exchange 200 Cseq: 1
 Request
 Zero or more provisional responses ACK
 Usually one final response
 Maybe ACK First Transaction

 All signaling composed of independent transactions


 Identified by Cseq BYE
 Sequence number
Cseq: 2
 Method tag 200

Second Transaction

C S

SIP Tutoiral www.dynamicsoft.com


Session Independence
 SIP
BodyBodies
of SIPare
message
MIME objects
used to establish call describes the session
 MIME = Multipurpose Internet Mail Extensions
 Session could be
 Mechanisms

Audio for describing and carrying opaque content
 Used

Video with HTTP and email
 SIP bodies can carry other information too!
 Game
 JPEG for caller ID
 SIP operation is independent of type of session
 HTML page for Web IVR

SIP Tutoiral www.dynamicsoft.com


Protocol Components
 User Agent Client (UAC)
 End systems  Redirect Server
 Send SIP requests  “Network” server; redirects users to try other
 User Agent Server (UAS) server
 Listens for call requests  Proxy Server
 Prompts user or executes program to  “Network Server” Proxies request to another
determine response server Can “fork” request to multiple
servers, creating a search tree
 User Agent
 Registrar
 UAC + UAS
 receives registrations regarding current user
locations

SIP Tutoiral www.dynamicsoft.com


SIP Addressing
 SIP addresses are URL’s
 URL contains several components
 Scheme (sip)
 Username
 Optional password
 Hostname
 Optional port
 Parameters
 Headers and Body
sip:jdrosen@dynamicsoft.com:5061;
 SIP allows any URI type
user=host?Subject=foo
 tel URIs
 http URLs for redirects
 mailto URLs
 leverage vast URI infrastructure

SIP Tutoiral www.dynamicsoft.com


Network Servers
 Main Function is routing LS
 Where should request go next?
 Can redirect or proxy there

 SIP does not dictate how routing


is done
 Location Service provides data Proxy
 Abstract concept
 LDAP, whois, whois++
 result of program execution (IN)

 End result is a mapping from one


SIP URI to another
 sip:jdrosen@dynamicsoft.com to
sip:jdrosen@eagle.dynamicsoft.com

SIP Tutoiral www.dynamicsoft.com


Proxies
 Requests can traverse
multiple proxies from
caller to callee LS
 Each proxy:
 receives request
 checks if domain in request sip:joe@a.com sip:j_user@eng.a.com
URI is its own Proxy Proxy

 Domain matches 200 OK 200 OK


 invokes location service
200 OK
 obtains new request URI
 looks up host portion in DNS
 forwards to next hop server sip:j_user@host.
 receives response eng.a.com
 forwards response

SIP Tutoiral www.dynamicsoft.com


DNS Usage DNS

 Take domain name of request


URI
A
 Look for SRV records DNS SRV A 100
Query B 200
 SRV records specify a list of IP
C 300
addresses for servers for a D 400
particular service B
 List includes priority values and
preferences for each address
 Try IP addresses in order of
Proxy C
preference, go to next if no
response
 If no SRV records present, use D
A records
 A records are standard hostname
to IP address records

SIP Tutoiral www.dynamicsoft.com


Local Outbound Proxies
 Can send a request to a
proxy without performing
DNS procedure INVITE joe@b.edu

 Result is that proxy receives


a request whose domain is
not its own
 Proxy then performs DNS
process just described to
forward request INVITE joe@b.edu

 May also provide additional


services
a.com
 Outbound screening
 Authorization
 Logging
 Firewall control

SIP Tutoiral www.dynamicsoft.com


SIP Methods
 INVITE  OPTIONS
 Invites a participant to a session  Queries a participant about their media
 idempotent - reINVITEs for session capabilities, and finds them, but
modification doesn’t invite

 BYE  ACK
 Ends a client’s participation in a session  For reliability and call acceptance

 CANCEL  REGISTER
 Terminates a search  Informs a SIP server about the location
of a user

SIP Tutoiral www.dynamicsoft.com


SIP Architecture
Request
Response
Media
SIP Redirect
Server Location Service
2
3

5
4
6
1
7
11
12 10
SIP Proxy
13 SIP Proxy
8
SIP UA 14 9

SIP UA
(User Agent Server)

SIP Tutoiral www.dynamicsoft.com


SIP Message Syntax
 Many header fields from INVITE sip:ann@lucent.com SIP/2.0
http From: J. Rosenberg <sip:jdrosen@dynamicsoft.com>
Subject: SIP will be discussed, too
 Payload contains a media
To: A. Netravali <sip:ann@lucent.com>
description Via: SIP/2.0/UDP pc13.dynamicsoft.com
 SDP - Session Call-ID: 1997234505.56.78@122.3.44.12
Description Protocol Content-type: application/sdp
CSeq: 4711 INVITE
Content-Length: 187

v=0
o=user1 53655765 2353687637 IN IP4 128.3.4.5
s=Mbone Audio
i=Discussion of Mbone Engineering Issues
e=mbone@somewhere.com
c=IN IP4 224.2.0.1/127
t=0 0
m=audio 3456 RTP/AVP 0

SIP Tutoiral www.dynamicsoft.com


SIP Address Fields
INVITE sip:ann@lucent.com SIP/2.0
 Request-URI From: J. Rosenberg
 Contains address of next <sip:jdrosen@dynamicsoft.com>;tag=76ah
hop server Subject: SIP will be discussed, too
 Rewritten by proxies To: A. Netravali <sip:ann@lucent.com>
based on result of Via: SIP/2.0/UDP pc13.dynamicsoft.com
Location Service Call-ID: 1997234505.56.78@122.3.44.12
 To Content-type: application/sdp
Contact: sip:jdrosen@pc13.dynamicsoft.com
 Address of original called
CSeq: 4711 INVITE
party Content-Length: 187
 Contains optional display
name v=0
 From o=user1 53655765 2353687637 IN IP4 128.3.4.5
 Address of calling party s=Mbone Audio
i=Discussion of Mbone Engineering Issues
 Optional display name
e=mbone@somewhere.com
c=IN IP4 224.2.0.1/127
t=0 0
m=audio 3456 RTP/AVP 0

SIP Tutoiral www.dynamicsoft.com


SIP Responses
 Look much
Status Codelike
Classes
requests
 Headers,
100 - 199 bodies
(1XX): Informational
 200 - 299 (2XX): Success
 Differ in top line

 300 - 399
Status (3XX): Redirection
Code
 400
 -Numeric,
499 (4XX):
100Client
- 699Error
 500
 -Meant
599 (5XX): Server Error
for computer processing
 600 - 699 (6XX): Global Failure
 Protocol behavior based on 100s digit

 Two groups
 Other digits give extra info

 Reason
100 - 199:
Phrase
Provisional
 Not
Textreliable
phrase for humans
 200
 -Can
699:be
Final,
anything
Definitive
 Example
 200 OK
 180 Ringing

SIP Tutoiral www.dynamicsoft.com


Example SIP Response
 Note how only difference
SIP/2.0 200 OK
is top line From: J. Rosenberg
<sip:jdrosen@dynamicsoft.com>;tag=76ah
 Rules for generating
To: A. Netravali <sip:ann@lucent.com>;tag=112
responses Via: SIP/2.0/UDP pc13.dynamicsoft.com
 Call-ID, To, From, Cseq are Call-ID: 1997234505.56.78@122.3.44.12
CSeq: 4711 INVITE
mirrored in response to
Contact: sip:ann@lucent3.lucent.com
support matching
 Tag added to To field

SIP Tutoiral www.dynamicsoft.com


SIP Transport
 Reliability
SIP Messagesmechanisms
over UDPdepend
or TCP on SIP request method
 INVITE
 Reliability mechanisms defined for UDP
 anything except INVITE
 UDP Preferred
 Reason:
 Fasteroptimized for phone calls
 No connection state needed in kernel
 Multicast possible (later)

SIP Tutoiral www.dynamicsoft.com


INVITE reliability INV
INV
 Client retransmits INVITE with exponential backoff
 500ms, 1s, 2s, 4s, 8s….. INV
 Retransmissions cease when provisional response arrives
 Next hop should send 100 Trying to stop retransmissions
INV
 Response retransmitted when request retransmissions arrive
Ring...
 Final response retransmitted with exponential backoff up to 4s
 May take a long time to answer phone!!
100 Trying
INV
 ACK sent on receipt of final response
100 Trying

200 OK

200 OK

ACK

C S

SIP Tutoiral www.dynamicsoft.com


Non-INVITE Reliability BYE
BYE
 Responses should come quickly
BYE
 No need to ring phone
 Request retransmitted w/ exponential backoff, up to 4s 100 Trying
 If provisional response received, request retransmittedBYE
at 4s intervals
 After 4s, request retransmitted every 4s
 Response retransmitted on receipt of request
 BYE
That’s why request must be retransmitted after provisional - protect against response loss
 no ACK

200 OK
BYE

200 OK

C S

SIP Tutoiral www.dynamicsoft.com


TCP Transport
 Reliability rules for TCP same as UDP with one change
 Requests not retransmitted

 However, 2xx final responses still retransmitted


 ACK is still sent
 Reason?
 Handles case of a mix of UDP and TCP connections

SIP Tutoiral www.dynamicsoft.com


Hop by Hop vs. End to End INVITE
INVITE
 Reliability can be HBH or E2E 100 Trying 100 Trying
INVITE
 HBH implies message transmitted reliably between each entity (UAC to proxy, proxy to
UAS)
100
 E2E implies proxies simply forward requests, reliability Tryingbetween UAC and UAS only
assured
 SIP uses HBH reliability… almost 200 OK
200 OK
 Stateless proxies simply forward requests
200 OK
 200 OK response to INVITE is E2E reliable!!!
 UAC must see all 200 OK
200 OK
200 OK

ACK
200 OK
200 OK
ACK ACK

UAC Proxy UAS

SIP Tutoiral www.dynamicsoft.com


Registrations
 Proxy needs to know where
users are sitting
 SIP REGISTER message allows
clients to tell proxy servers
REGISTER sip:dynamicsoft.com SIP/2.0
 REGISTER properties To: Rosenberg <sip:jdrosen@dynamicsoft.com>
 Contains list of current locations in From: Claribel <sip:cpena@dynamicsoft.com>
Contact headers Call-ID: 1997234505.56.78@122.3.44.12
 Registrar identified in Request CSeq: 123 REGISTER
URI Contact: sip:jdrosen@pc33.dynamicsoft.com
 Identifies registered user in To Contact: http://www.cs.columbia.edu/~jdrosen
field Expires: 3600
 Identifies person performing
registration in From field (usually
= To)
 Expires header indicates desired
lifetime
 Can be different for each
Contact
 May be body
SIP Tutoiral www.dynamicsoft.com
Registration Responses
 Registrar behavior on
receiving REGISTER
 check if domain is its own
 authorize user in From field SIP/2.0 200 OK
To: Rosenberg <sip:jdrosen@dynamicsoft.com>
 Add address bindings of (To
From: Claribel <sip:cpena@dynamicsoft.com>
field) -> (Contact list) Call-ID: 1997234505.56.78@122.3.44.12
 Lower expiration time if too CSeq: 123 REGISTER
long Contact: sip:jdrosen@pc33.dynamicsoft.com
Contact: http://www.cs.columbia.edu/~jdrosen
 Return, in response, list of all
Contact: mailto:jdrosen@dynamicsoft.com
current registrations ;expires=“Thu, 01 Dec 2002 16:00:00 GMT”
 Return, in response, Expires: 3600
expiration time for all
registrations

SIP Tutoiral www.dynamicsoft.com


Registration Details
 Querying
User Agent
list
must
of current
refreshregistrations
registrations by resending before expiration
 Send REGISTER with no Contact headers
 Each contact must be refreshed independently
 Response
 contains
Can place them listsame
all in of current registrations
REGISTER
 Distributed registrations
 Can use separate REGISTER for each
 Registrations for the same user (I.e., same To field) can come from different
 Deleting Registrations
hosts, each registering different contacts
 Send a refresh with Expires: 0
 Example: my cell phone registers itself, my PC registers itself

SIP Tutoiral www.dynamicsoft.com


Forking
 A proxy may have more than one address for a user
 Happens when more than one SIP URL is registered for a user
 Can happen based on static routing configuration INVITE user2@domain2
 In this case, proxy may fork
 Forking is when proxy sends request to more than one proxy at once
INVITE
 First 200 OK that is received is forwarded upstream
user@domain
 All other unanswered requests cancelled

INVITE user3@domain3

SIP Tutoiral www.dynamicsoft.com


More on Forking
 Many
Main benefits
proxies can fork, resulting in tree of proxies
 Allows rapid “search” for user at many locations
 “Best” response to forked request is chosen and forwarded upstream
 Phone
 rings
First 200 OKmore than one place at a time
received
 Two variations
 First 600 received if no 200 OK
 Lowest
Sequentialnumbered
Search:response
Try first address,
after all responses
only if that are
failsreceived,
try second
given
address
none was
 200 or 600
Parallel Search: Try all addresses at once (as in previous slide)
 Note usually only one response is forwarded upstream
 Hybrid approaches possible

SIP Tutoiral www.dynamicsoft.com


CANCEL
INV
INV
 CANCEL used to “take back”
100 100
a request INV
 Main application: stop
100
phones from ringing which
have not yet answered
200
 Semantics CANCEL
200
 Always refers to another
OK
request
 If you get a CANCEL, and
487
haven’t answered request,
answer request with 487. ACK
ACK
Answer CANCEL with 200.
 Can be generated by proxies or
UA - usually proxies
UAC Proxy UAS UAS

SIP Tutoiral www.dynamicsoft.com


Response Routing: Via
 Via
Responses
header reflected
take samein path
response
as requests
from UAS
 When
How does
proxy
server
receives
knowresponse
where to send response?
 check
Remember
if topmost
whereVia
request
is itselfcame from
 If
Place
yes, information
remove andincheck
request,
nextget
header
it back in response!!
 Send response to address in next Via
 Via Header
 If
 no next
Traces Via,
path ofresponse
request is for me
 “Stack” header
 Each proxy pushes its address in requests
 Pops its address in responses

SIP Tutoiral www.dynamicsoft.com


Via Operation

Via: C
Via: B Via: B
Via: A Via: A
Via: A
Proxy Proxy
UAC UAS
Via: A Via: B Via: C
Address: A Address: B Via: A Address: C Via: B Address: D
Via: A

Request
Response

SIP Tutoiral www.dynamicsoft.com


Received Tags
INVITE sip:ann@lucent.com SIP/2.0
 Many cases where address in viaFrom: sip:jdrosen@dynamicsoft.com;tag=76ah
is wrong!
To: sip:ann@lucent.com
 NAT Via: SIP/2.0/UDP
 Multihomed hosts pc13.dynamicsoft.com;received=12.3.2.1

 Rather, source address of packet is more correct


 Solution: receive tag
 If source address of packet doesn’t equal
 top viaresult
End address
 Proxy inserts received parameter into via header
 Responses sent to source IP
 Indicates source IP address address of request, but to port in
 That address is used to send responses via header
 Strange combination, but it works
well for multihomed hosts

SIP Tutoiral www.dynamicsoft.com


Stateful vs. Stateless Proxies
 A proxy must
Stateless be stateful
Proxy when
Definition

 It forks (thisrequest,
Receives requires special
acccess processing
location of responses
services, to “remember”
forwards best one)
request
 It sends a request using multicast

Forgets it even saw request after forwarding it
 It uses TCP
 When response comes, uses Via header to figure out where to send it
 Stateful vs. Stateless
 Stateful Proxy
 Stateless Definition
scales very well
 Remembers
 No memoryit saw the request after forwarding it
requirements
 Can apply
 Tiny additional
socket logic after response arrives
requirements
 Stateful is better for services
 Each proxy can independently decide which to be

 Call Stateful
 Remembers multiple transactions being associated with a call

SIP Tutoiral www.dynamicsoft.com


Loop Detection
 With all this forking and forwarding, request may hit the same proxy twice!
 Need mechanisms to prevent this from looping forever
 SIP provides two
 Max-Forwards
 Counter decremented by 1 on each hop
 Discard request when zero
 Via based loop prevention and detection
 Every proxy inserts address
 Check for my address when request comes

SIP Tutoiral www.dynamicsoft.com


Loop Detection: Details
 Branch
Spirals ID Component 1
 When a
request
proxy forks,
hits server
each twice,
fork has
butawith
different
different
component
request 1,
URIso response
 associated with forked requestforwards to bob@example.com!
Example: joe@example.com
 Branch IDerror
 Not an Component 2
 Hash
 Must of To,difference
detect From, Call-ID, Cseq and
between incoming
loop request URI
and spiral
 When you receive a request, check for Via headers with your own address
 Solution
 For those with that address, recompute hash, see if it matches value in branch ID
 Via header contains branch ID parameter
 If match, loop, if not, spiral
 Branch ID has two components

SIP Tutoiral www.dynamicsoft.com


Routing of Subsequent Requests
 Initial SIP request sent through many proxies
 No need per se for subsequent requests to go through proxies
Proxy
 Each proxy can decide whether it wants to receive subsequent
INVITE
requests
 Inserts Record-Route header containing its address
Proxy
 For subsequent requests, users insert Route header
 Contains sequence of proxies (and final user) that should receive request
BYE Proxy
UA1

UA2

SIP Tutoiral www.dynamicsoft.com


Construction of Route Header
 UAC
Each Constructs
proxy may insert
Route a RR
 Flips
Stackorder
property
of Route headers
 Places
Any URLContact
meetingfrom
two200
requirements
OK at bottom
 Result
 Routes
is Route
backset
to that server
 Identifies the target recipient in some way
 UAS Constructs Route
 UAS reflects
 Takes all RR
RR from in 200 OK Response
INVITE
 Adds
Proxies
Contact
can modify
from INVITE
RR theyatinserted
the end
 Allows Route for UAC/UAS to be different, which it should be!

SIP Tutoiral www.dynamicsoft.com


Example Route Construction

INV sip:b@t3
INV sip:b@t2 m:sip:a@o
INV sip:b@t m:sip:a@o RR:sip:a@o;maddr=C
RR:sip:a@o;maddr=B RR:sip:a@o;maddr=B
m: sip:a@o
Proxy Proxy
UAC Addr: B Addr: C UAS
SIP/2.0 200 OK SIP/2.0 200 OK
SIP/2.0 200 OK Domain: t Domain: t2
Sip:a@o m:sip:b@t3 m:sip:b@t3 m:sip:b@t3 Sip:b@t3
RR:sip:b@t2;maddr=C RR:sip:a@o;maddr=C
RR:sip:b@t2;maddr=C
RR:sip:a@o;maddr=B RR:sip:a@o;maddr=B
RR:sip:b@t;maddr=B

UAC Route: UAS Route:


Sip:b@t;maddr=B, Sip:a@o;maddr=C,
Sip:b@t2;maddr=C Sip:a@o;maddr=B
Sip:b@t3 Sip:a@o

SIP Tutoiral www.dynamicsoft.com


Setting up the Session
 SDP
INVITE
also
contains
conveysthe
other
Session
information
Description
aboutProtocol
session(SDP) in the body
 Time it will take place
 SDP conveys the desired session from the callers perspective
 Who
 originated
Session consiststhe
of session
a number of media streams
 subject
 of thecan
Each stream session
be audio, video, text, application, etc.
 URL for more information
 Also contains information needed about the session
 SDP origins are multicast sessions on the mbone
 codecs
 Originator

addresses of INVITE
and ports is not originator of session

SIP Tutoiral www.dynamicsoft.com


Anatomy of SDP
 SDP contains informational
headers
 version (v) v=0
 origin(o) - unique ID o=user1 53655765 2353687637 IN IP4 128.3.4.5
s=Mbone Audio
 information (I)
i=Discussion of Mbone Engineering Issues
 Time of the session e=mbone@somewhere.com
t=0 0
 Followed by a sequence of m=audio 3456 RTP/AVP 0 78
media streams c=IN IP4 1.2.3.4
a=rtpmap:78 G723
 Each media stream contains an
m=video 4444 RTP/AVP 86
m line defining c=IN IP4 1.2.3.4
 port a=rtpmap:86 H263
 transport
 codecs
 Media Stream also contains c
line
 Address information

SIP Tutoiral www.dynamicsoft.com


Negotiating the Session
 Called party receives SDP offered by caller
 Each stream can be
 accepted
v=0
 rejected o=user2 16255765 8267374637 IN IP4 4.3.2.1
 Accepting involves generating an SDP t=0listing
0 same stream
m=audio 3456 RTP/AVP 0
 port number and address of called party
c=IN IP4 4.3.2.1
 subset of codecs from SDP in request m=video 0 RTP/AVP 86

 Rejecting indicated by setting port toc=IN zeroIP4 4.3.2.1


 Resulting SDP returned in 200 OK
Audio stream accepted, PCMU only.
 Media can now be exchanged
Video stream rejected

SIP Tutoiral www.dynamicsoft.com


Changing Session Parameters INVITE

 Once call is started, session can be modified 200


ACK
 Possible changes
 Add a stream
 Remove a stream
 Change codecs
INVITE
 Change address information
 Call hold is basically a session change 200 reINVITE
ACK
 Accomplished through a re-INVITE
 Same session negotiation as INVITE, except in middle of call
 Rejected re-INVITE - call still active!

C S

SIP Tutoiral www.dynamicsoft.com


Hanging Up INVITE

 How to hang up depends on when and who100


 After call is set up
 either party sends BYE request
Hangup CANCEL 200 OK Accept
 From caller, before call is accepted
 send CANCEL
200 OK
 BYE is bad since it may not reach the same set of users that got INVITE
 If call is accepted after CANCEL, then send BYE ACK

 From callee, before accepted BYE

 Reject with 486 Busy Here


200 OK

C S

SIP Tutoiral www.dynamicsoft.com


Calls, Call Legs and Transactions
 Call is a set of point to point SIP relationships
Call-ID
 Call-ID
local participant
 Call Leg (aka Dialog) is a point to point SIP relationship
 Call-ID + To + from

 Transaction is a request/response
 Call-ID + To + From + CSeq
Remote Remote
participant participant

CSeq CSeq CSeq CSeq

SIP Tutoiral www.dynamicsoft.com


Call Flow for basic call: UA to proxy to UA
INVITE
 Call setup INVITE
 100 trying hop by hop
100 Trying
 180 ringing 100 Trying
 200 OK acceptance 180 Ringing
180 Ringing
 Call parameter modification
 re-INVITE
200 OK
200 OK
 Same as initial INVITE, updated session description
ACK
 Termination RTP
 BYE method
BYE

200 OK

SIP Tutoiral www.dynamicsoft.com


Addressing Scalability
 Internet model for scalability CSF
Proxy
 Fast and simple in core CSF
CSF
Proxy
Proxy
 Smarter towards periphery
SF
 Example: RSVP vs. Diffserv SF
Proxy
Proxy
 SIP uses Internet Model CSF SL CSF
Proxy Proxy Proxy
 Stateless proxies in the core are
SF
fast SF Proxy
 Stateful proxies at periphery Proxy
CSF
CSF
 Call-stateful proxies at edge Proxy
Proxy
CSF
Proxy

CSF Call Stateful


SF Stateful
SL Stateless

SIP Tutoiral www.dynamicsoft.com


Fault Tolerance
 DCS
Server
State
crashes
Header
have little effect
 Under
No calls
development
terminated, even for Call Stateful proxies running TCP
 Much
Transactions
like httpincookies
progress complete if a backup is available (SRV)
 Will allow proxies to ask for data back in subsequent requests
 Protocol State stored in messages
 Allows
 fully call
Responses stateful
always servers
routed back that are highly recoverable!!
 TCP connections may even be re-opened to send responses!
 Branch parameter as a tool of the proxy

SIP Tutoiral www.dynamicsoft.com


Extensibility Model
 Goal: Ensure baseline operation always works that must be
 Features
 Protocol can be extended by understood are given names
 Defining new headers and semantics 
Feature naming
 Defining new parameters and semantics
 IANA registered
 Defining new methods
 com.microsoft.featurefoo naming
 Defining new bodies
 New parameters and headers can be Clients can insist server
 optional
 Safely ignored by recipient understand a feature
 Spec mandates that unknown headersand paramscan
Server are place
ignoreda feature
in a
 Maximizes interoperability
response if client understands
it

SIP Tutoiral www.dynamicsoft.com


Extensibility: Client requests Feature
INVITE
Foo: blah-blah
 Feature represented by new header, parameter and/or new behavior
Bar: la-la
 Client places needed feature in special header in request
Require: foo, bar
 Require: want UAS to understand feature
 Proxy-require: want proxies to understand feature
420 Bad Extension
Unsupported:
 If UAS or proxy doesn’t know feature, it responds foo and lists
with error
unknown features in Unsupported header
 Client can resubmit request
INVITE
Bar: la-la
Require: bar

C S

SIP Tutoiral www.dynamicsoft.com


Extensibility: Server wants feature
 Client indicates features it understands in Supported header in
request
INVITE
 All features must be listed Supported: foo, bar
 Always place header in every request

 Server can use feature if its listed


201 OK
 If server applies feature in response, it includes a Require header
Foo: blah-blah
indicating the feature Require: foo

C S

SIP Tutoiral www.dynamicsoft.com


Extensibility: New Methods
 Methods define fundamental behavior
 Client can send request with new method GOAWAY
To: joe
 UAS rejects requests with unknown methods
 405 response
 list allowed methods in Allow header 405 Method Not Allowed
 Proxies don’t care about methods Allow: INVITE, BYE,
OPTIONS, ACK,
 Proxy rules are independent of method
CANCEL

C S

SIP Tutoiral www.dynamicsoft.com


Extensibility: New Bodies
 Bodies convey non-SIP related information about request
 Body types enumerated by IANA registry INVITE
Content-Type: text/foo
 Not all bodies known to a server Content-Length: 2
 When server receives request with unknown body
aa
 415 Unsupported Media response
 Accept header lists valid MIME body types

 Only used by UA! 415 Unsupported Media


Accept: text/plain

C S

SIP Tutoiral www.dynamicsoft.com


Security
 Leverage existing mechanisms
 HTTP
 Basic authentication
 Digest authentication

 PGP
 S/MIME
 Transport Mechanisms

SIP Tutoiral www.dynamicsoft.com


HTTP Basic and Digest
 Credentials
Challenge Response
can be cached
 Subsequent
Client sends requests
request to the same server can contain same credentials
 If
Server
they expire,
respondsserver
withissues
401 or401/407
407 with “challenge”
 Client ACKs
 Two relationships
 Client

Proxy sends
Serverrequest again
challenges (higher Cseq) with credentials
UAC
 If

UASOK,challenges
server processes,
UAC else sends 401/407 again
 Mechanism
 is Stateless
Multiple credentials
 Don’t
 need toofknow
Any number thatand
proxies a challenge
a UAS canwas issued
issue challenge
 Requests
 just
Credentials arecontain credentials
accumulated

SIP Tutoiral www.dynamicsoft.com


HTTP Basic Authentication
INVITE
 Cleartext Password
 Base64 encoded
401 Authorize Yourself
 Not useful alone WWW-Authenticate:
Basic realm=“mufasa”
 May be useful within a TLS connection from client to server
 Emulates http usage of client authentication

 Not widely implemented


INVITE
 Depecated from bis Authorization: Basic
QWxhZGRpbjpvcGVuI==

200 OK

SIP Tutoiral www.dynamicsoft.com


HTTP Digest Authentication
 Why
Server
double
challenge
hashing?
 Server
Realm (keyword
can store for
H(user:realm:pass);
password) doesn’t change
 Computes
Nonce (random
H(method:URI)
number, rotates
combines
periodically)
with first
 No password or username on disk!
 UAC Response
 Response
 Hash of Authorization
username, password, realm and nonce, and also method
 Responses
Can also include
can also
body
contain
in hash
credetials that authenticate caller
 Specifically, its H(H(username:realm:password):nonce:H(method:URI))

SIP Tutoiral www.dynamicsoft.com


PGP
 Requires
RFC2543 specified
request tosecurity
be “canonicalized”
based on PGP
 Standardized format over which signature is computed
 Provided
 Requires
 devices
Client to server to maintain order of headers and parameters
authentication
 Deprecated!
 Client to server encryption
 No
Server
implementations
to client authentication
 Canonicalization
Server to client encryption
a pain
 Other approaches more mature
 Uses public keys
 Requires PGP community
 General problem with PGP

SIP Tutoiral www.dynamicsoft.com


Coming soon: S/MIME
INVITE sip:u@h SIP/2.0
From: sip:bob@foo
 S/MIME is an IETF standard for email security To: sip:a@c
Content-Type: multipart
 Provides authentication and encryption
 Based on X.409 Public Key Certificates
 The kind you get from Verisign SDP
 Some infrastructure in place
 Can be shipped with message INVITE sip:u@h SIP/2.0
From: sip:bob@foo
 Big overhead To: sip:a@c
Content-Type: SDP
 Message contains payload, signed piece, and signature, maybe certificate
SDP text
 Requires multipart

signature

certificate

SIP Tutoiral www.dynamicsoft.com


Transport Security
 Previous mechanisms allow for E2E Security
 Works through any number of proxies
Proxy
 Proxies don’t need to be trusted
 Security within SIP layer

 Hop by Hop Security Possible as well


Proxy
 Proxies have trust relationship with each other
 E2E security by transitivity
 Relies on all hops doing security Proxy
UA1

Secure UA2
Tunnel

SIP Tutoiral www.dynamicsoft.com


Transport Security
 Requires
IPSec no SIP extensions
 UDP also
 Several techniques
 Not
 widely implemented
TLS/SSL
 IKE
 barely supported
IPSec
 Resides in OS
 TLS/SSL
 Firewall and NAT Traversal
 Widely implemented
 Key exchange works
 Resides in application layer
 TCP only

SIP Tutoiral www.dynamicsoft.com


What about QoS?
 QoS is handled orthogonally by  Voice will be negligible
other protocols compared to data anyway
 Signaling path isn’t same as media
path at all!!
 Even set of ISPs is different
 Separation allows yahoo to be a
phone company
 Many other apps need QOS, keep
one mechanism

SIP Tutoiral www.dynamicsoft.com


Models of QoS for SIP
 Diffserv  RSVP/diffserv core w/ ringing
 users mark TOS byte in their RTP holdback
packets  don’t ring unless resources
 olympic service model reserved
 total separation  use RSVP in periphery
 no  resource reservations starts after
 admission control INVITE
 ringing and continued signaling
 end to end signaling
after RSVP done
 per call minute metering

SIP Tutoiral www.dynamicsoft.com


Quality of Service INV

183 Progress
 SIP is “not” a Reservation Protocol, but. . .
PRACK
 Need Coupling Between Signaling and
Reservation
Resource Reservation
 Do not ring phone until resources reserved

 Uses a new extension to SIP


COMET
 INVITE contains a header that indicates there
is a precondition to ringing the phone 200 OK Ringing
 Preconditions include
200 OK
 QoS establishment Pickup
 Security ACK

 When preconditions met, COMET request is


sent Media

 Phone can then ring


Caller Callee

SIP Tutoiral www.dynamicsoft.com


Information Resource
 Jonathan Rosenberg
 jdrosen@dynamicsoft.com
 +1 973-952-5000

SIP Tutoiral www.dynamicsoft.com

You might also like