sip for geeks

65
Kundan Singh Nov 2010 http://kundansingh.com [email protected] SIP for geeks!

Upload: kundan-singh

Post on 09-May-2015

17.845 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: SIP for geeks

Kundan SinghNov 2010

http://kundansingh.com

[email protected]

SIP for geeks!

Page 2: SIP for geeks

SIP for geeks!

SIP [acronym] – Session Initiation Protocol

“a very simple text-based application-layer control protocol to create, modify and terminate sessions such as Internet telephony and multimedia conferences with one or more participants.”

geek [slang] – noun

“a computer expert or enthusiast (a term of pride as self-reference, but often considered offensive when used by outsiders.)”

Page 3: SIP for geeks

Who am I?PhD from Columbia University in 2006 on reliable, scalable & interoperable Internet telephonyStudent of Prof. Henning Schulzrinne who is co-inventor of SIP, RTP, RTSPWorked at Adobe with Dr. Henry Sinnreich who is considered God Father of SIPWorked on SIP since 1999, building prototypes, systems.Worked at Tokbox and 6Connex on web-based video communicationWorked on open source projects p2p-sip, videocity, flash-videoio, restlite, rtmplite, siprtmp

VoIP researcherSoftware architectSystems engineer

Page 4: SIP for geeks

What will you learn?

History

CompetitionIETF, RFCEcosystemReferences

Dive-in

SyntaxSemanticsCall flowExtensionsScripting

Hands-on

Iptel.orgJain-sipapi39peerssiprtmp

Challenges

On WebNAT traversalSecurityAudio qualityWalled garden

Voice

SamplingEncodingTransportMotivation

What is the big picture?How does everything fit together? Where to look for more information?

15 min 45 min 30 min 15 min 15 min

= total 2hr

Page 5: SIP for geeks

– Digitization (e.g., sampling at 8kHz, 16 bits per sample, i.e, 128 kb/s or 320 bytes per 20 ms)

– Real-time compression/encoding (e.g., G.729A at 8 kb/s)– Transport to remote IP address and port number over UDP

(Why not TCP?)– Processing on receiver side is the reverse

Audio packet transfer

Page 6: SIP for geeks

+127

+0

-127

10101111…01101101

Sample at twice the highest voice frequency 2 x 4000=8000 Hz (interval of 125 µsec)

Round off samples to one of 256 levels (introduces noise)

Encode each quantized sample into 8 bit code word

PCM: 8000 x 8 bits = 64 kb/s

Other techniques (differential coding, linear prediction) 2.4 kb/s to 64 kb/s

What is narrowband/wideband?

What are frame vs sample-based codecs?

Sampling, Quantization, Encoding

Page 7: SIP for geeks

Voice codecs

Codecs Bitrate kb/s Use cases

G.711 64 Phone, PSTN

G.729 8 VoIP, carriers

G.723.1 5.3/6.3 VoIP, modem

G.722.2 6-24 Wideband VoIP, mobile

Speex 2-44 Good quality, free, Flash Player

iLBC 13.3/15.2 Free, low bit-rate,

SILK 6-40 Skype, open source

iSAC 10-32 Global IP sound (GIPS), Gtalk

Page 8: SIP for geeks

Unreliable UDP a) Packet lossb) Out-of-order (very rarely)c) Jitter (delay variation)

1 2 3 5 7 6

1 2 3 4 5 6 7

timeline

Sender

Receiver

(a)(b)

Problems with UDP

Page 9: SIP for geeks

Playout buffer

playout buffer

while (true) {

buf = read(au,20ms); //blocks

if (!silence)

sendto(remote, buf);

buf = get(20 ms);

write(au, buf);

}

20 ms packetmicrophone

sendto(remote IP:port)read

speaker

20 ms packet

write get

Receivedpacket

recvfrom()put

while (true) {

buf = recvfrom(...); // blocks

put(buf);

}

Page 10: SIP for geeks

Sender

Receiver

Playout buffer

1 2 3 5 7 6

1 2 3 4 5 6 7

8 9 0 2 3 4

8 9 0 1 2 3 4

– What is the its purpose?– What should be the buffer size? – How to do adaptive delay adjustment? – Why do you need sequence number?

321

1

21

21

2

3

5

7 5

76

87

98

09

0

2

32

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.9716

Page 11: SIP for geeks

1 2 3 4

1 2 3 4

Sender

Receiver

5 6 7

5 6 7Silence …

t1 t2 t3 t4 t5 t6 t7 t8 t9

Playout time vs packet loss detection

Timestamp vs sequence number

• Silence suppression• Variable length packets

Page 12: SIP for geeks

Encoded Audio

RTP Header

UDP header

IP header

msg

sendto(…, msg, …)recvfrom(…, msg, …)

Sequence number

Optional contributors’ list (CSrc)

Source identifier (SSrc)

Timestamp (proportional to sampling time)

Payload typeCC MV P X

Real-time Transport Protocol (RTP)

RTP: media transportRTCP: QoS feedback

8 bits 8 bits 16 bits

Page 13: SIP for geeks

RTP-based conference

224.1.2.3:8000

ssrc=5263 ssrc=7182

ssrc=2639 ssrc=9844Session identified using receive IP address + port

Page 14: SIP for geeks

RTP-based conference

Mixer Transcoder-law

-law

G.729

G.729

-law

-law

Mixer mixes multiple streams, and puts rtp.ssrcs of contributors in the mixed packet as rtp.csrc

Transcoder converts one encoding to another. Typically to accommodate heterogeneous bandwidth links.

Page 15: SIP for geeks

RTP FAQ

– Who uses RTP?– Is RTP a transport or application protocol?– Is RTP secure? What are SRTP, ZRTP?– Is RTP header a big overhead?– Is RTCP needed for two-party voice calls?

http://www.cs.columbia.edu/~hgs/rtp/

Page 16: SIP for geeks

Why do you need signaling?

Alice128.59.19.194

Bob202.16.49.27

Sam154.28.32.112

Henry125.33.2.81

Bob=>192.1.2.3

Sam 154.28.32.112

Henry=>125.33.2.81

Alice=>128.59.19.194

Where is Alice?

128.59.19.194

INVITE for a call using µ-law and G.729 at 202.16.49.27:8000

OK using µ-law at 128.59.19.194

1. Locate destination user 2. Negotiate session parameters

Page 17: SIP for geeks

What will you learn?

History

CompetitionIETF, RFCEcosystemReferences

Dive-in

SyntaxSemanticsCall flowExtensionsScripting

Hands-on

iptel.orgjain-sipapi39peerssiprtmp

Challenges

On WebNAT traversalSecurityAudio qualityWalled garden

Voice

SamplingEncodingTransportMotivation

Page 18: SIP for geeks

HTTP

GET, POST, HEAD, PUT, DELETE

SIP

REGISTER, INVITE, BYE, CANCEL, ACK, OPTIONS, …

Text-based protocolRequest-responseHeaders and body

RTSP

SETUP, TEARDOWN, PLAY, RECORD, DESCRIBE, …

SMTP

HELO, MAIL, RCPT, DATA, QUIT

Page 19: SIP for geeks

Addressing

Examples:“Alice Smith” <sip:[email protected]>

sip:[email protected]:5070

sip:[email protected];user=phone;transport=tcp

tel:12125551234

tel:19172223333

pc12.columbia.edu

yahoo.com

columbia.edu

[email protected]

[email protected]

[email protected]

[email protected]

What is address-of-record (AoR)?What is sips URI?What is tel URI? – RFC 3966

Page 20: SIP for geeks

columbia.edu yahoo.com

home.com

office.com

Alice

Bob

128.59.19.194

Lookup

Two stage lookup similar to email:DNS: to locate server for a domainDatabase: locate user within a domain

Jane128.59.19.61$ dig –t naptr columbia.edu

columbia.edu. 3600 IN NAPTR 1 0 "s" "SIP+D2U" "" _sip._udp.columbia.edu.columbia.edu. 3600 IN NAPTR 2 0 "s" "SIP+D2T" "" _sip._tcp.columbia.edu.

$ dig –t srv _sip._udp.columbia.edu_sip._udp.columbia.edu. 3600 IN SRV 10 10 5060 cocoa.cc.columbia.edu._sip._udp.columbia.edu. 3600 IN SRV 10 10 5060 eclair.cc.columbia.edu.

$ dig –t a cocoa.cc.columbia.educocoa.cc.columbia.edu. 3600 IN A 128.59.59.199

How to do failover and load sharing?

Page 21: SIP for geeks

INVITE sip:[email protected] SIP/2.0Via: SIP/2.0/UDP 202.16.49.27:5060;branch=z9hG4bK74bf9Max-Forwards: 70From: “Bob” <[email protected]>;tag=9fxced76s1To: “Alice” <[email protected]>Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Subject: How are you?Content-Type: application/sdpContent-Length: 151...

SIP/2.0 200 OKVia: SIP/2.0/UDP 202.16.49.27:5060;branch=z9hG4bK74bf9From: “Bob” <[email protected]>;tag=9fxced76s1To: “Alice” <[email protected]>;tag=8321234356Call-ID: [email protected]: 1 INVITEContact: <sip:[email protected]>Content-Type: application/sdpContent-Length: 147...

Request

Response

What are WS and CRLF?

Page 22: SIP for geeks

Requests

Purpose Method Reference

Establish a SIP session with offer/answer INVITE RFC 3261

Acknowledge a response to INVITE ACK

Cancel a pending request CANCEL

Terminate an existing SIP session BYE

Query the capabilities of server or UA OPTIONS

Temporarily bind AoR to device URI REGISTER

Establish a session to receive updates SUBSCRIBE RFC 3265

Deliver updates in a subscribed session NOTIFY

Upload status to a server PUBLISH RFC 3903

Ask another UA to act upon a URI REFER RFC 3515

Transport an instant message (IM) MESSAGE RFC 3428

Update session state information UPDATE RFC 3311

Acknowledge a provisional response PRACK RFC 3262

Transport mid-call signaling data INFO RFC 2976

Page 23: SIP for geeks

Class Code Examples

Provisional 1xx 100 Trying

180 Ringing

183 Session Progress

Success 2xx 200 OK

202 Accepted

Redirection 3xx 300 Moved

302 Multiple Choices

Client error 4xx 400 Bad Request

401 Unauthorized

403 Forbidden

404 Not Found

486 Busy Here

Server error 5xx 501 Not Implemented

503 Service Unavailable

Global error 6xx 600 Busy Everywhere

603 Decline

Responses

Page 24: SIP for geeks

Name Purpose Reference

Alert-Info Customized ringing RFC 3261

Record-Route Proxy will stay in SIP signaling path

Supported List of supported extensions

Replaces Call control, transfer, pickup RFC 3891

Join Conferencing RFC 3911

Reason Reason for failure response RFC 3326

Event Associated event package RFC 3265

Referred-By Third-party who initiated the request RFC 3892

Header examples

Page 25: SIP for geeks

Example call flow

INVITE INVITE INVITE100 Trying

100 Trying180 Ringing180 Ringing180 Ringing

200 OK200 OK200 OK

ACK

BYE

200 OK

RTP media session

[email protected] [email protected]

office.com home.comUA

Proxy Proxy

UASIP trapezoid

What is an outbound proxy?

Page 26: SIP for geeks

Transport

• UDP– Most common– Low state overhead– But small max packet size

• TCP: – Use with SSL– Large message bodies– NAT/firewall traversal– Connection setup overhead– Head of line blocking for

trunks (use SCTP instead)

• Transport reliability– Request retransmissions– Exponential back-off– INVITE vs non-INVITE

Why is ACK needed for INVITE response?

Page 27: SIP for geeks

Message routingResponse follows the reverse request path

– Via header in SIP message records the request path

Request routing decision at each hop– Usually direct end-to-end transport after initial

request

– Forcing request path: Record-route and Route headers.

– Request forking: parallel vs sequential (use q-value in Contact)

– Caller and callee info: further govern request routing

Via: a.home.comVia: b.example.comVia: a.home.com

Via: c.yahoo.comVia: b.example.comVia: a.home.com

[email protected] [email protected] [email protected] [email protected]

Via: a.home.com Via: b.example.comVia: a.home.com

Via: c.yahoo.comVia: b.example.comVia: a.home.com

q=1.0

q=0.7

q=0.2

INVITE 302 moved

486 busy

200 OK

Page 28: SIP for geeks

(3) invite (4) moved

(5)

@school.edu

Bob

@home.com

Example call setup

(6)(6)

(6)

unavailable (7)

Alice

(8)

(11) cancel

(12) ok

(13)

(1) invite

(2) moved

@yahoo.com

@residence.net

@visiting.com

@lab.school.edu

(9) ok

(10)

Page 29: SIP for geeks

Elements

• SIP user agent– IP phone, PC, conference bridge,…

• SIP redirect server– returns new location for requests

• SIP stateless proxy– routes call requests

• SIP (forking) stateful proxy– routes call requests

• SIP registrar– accepts name to address mapping

• Location server– maintains name to address mapping

• Maintaining state– stateless: each request and each

response handled independently• Fast load balancing proxies;

robust

– (transaction) stateful: remember a whole request/response transaction

• Enterprise servers, . . .

– call stateful: remember a call from beginning to end

• Billing, NAT traversal, . . .

Typically implemented in a single software or box

Other entities: outbound proxy, back-to-back user agent (b2bua), application-level-gateway (ALG), …

Page 30: SIP for geeks

SIP FAQ

– What is a SIP transaction?– What is a SIP dialog?– What is early media?– What is re-INVITE?– Why do you need record-route?– What is request forking?

http://www.cs.columbia.edu/sip/

Page 31: SIP for geeks

AliceBob

INVITE [email protected] I can support -law and G.729Send me audio at 202.16.49.27:6780

OK; I can support -lawSend me audio at 128.59.19.194:8000

202.16.49.27 128.59.19.194

To port 8000RTP

To port 6780RTP

Session negotiation

ACK

How to modify media session?

Page 32: SIP for geeks

INVITE sip:[email protected] SIP/2.0...Content-Type: application/sdpContent-Length: 151

v=0o=bob 26172 27162 IN IP4 202.16.49.27s=-c=IN IP4 202.16.49.27t=0 0m=audio 6780 RTP/AVP 0 8 5 97 98a=rtpmap:97 iLBC/8000a=rtpmap:98 telephone-event/8000m=video 6790 RTP/AVP 31

Session Description Protocol (SDP)

What is offer/answer?What is telephone-event?

Page 33: SIP for geeks

SIP is…, SIP is not …

• Core protocol for establishing sessions• Allows transport of session description• Allows change of parameters in mid-session• Terminate session• NOT for distribution of multimedia data• NOT suitable for media gateway control• . . .

SIP applications typically fall in following categories: setting up VoIP calls setting up multimedia conferences event notification => IM and presence text and general messaging signaling transport

Page 34: SIP for geeks

What is the real value in SIP?

Open systemAdvanced services

Page 35: SIP for geeks

Telephony

Call routing

speed dial, call forwarding, “follow me”, filtering/blocking (in/out), do-not-disturb, distinctive ringing,…

Call handling

auto-answer, auto-attendant, voice-mail, …

Multi-party

call waiting, call transfer (blind/consultative), conference call, park, pickup, music-on-hold, monitoring, …

what phone has is not enough!

Internet

Presence enabled

place call only if callee is available, invite participants when all are online and not busy, …

Unified messaging

receive email, IM alert for new voice mail, or when someone joins your conference, …

Web enabled

click-to-call, web conference, view conference status and voice-mails on web, …

Programmable services

Page 36: SIP for geeks

Programming services

If somebody is calling the third-time, allow mobile.Try office and home in parallel, if that fails, try home.Allow call to mobile if I’ve talked to person before.If on tele-marketing list, forward to dial-a-joke.Try office during day, and mobile in evening.…

Page 37: SIP for geeks

Where do the services reside?

Make call when boss is online …

B2BUA

Double ringing sound when boss calls…

Endpoint

Proxy/registrar

Endpoint

Service control in endpoint vs network?

Forward to office phone during day, and home phone during evening…

Enter your authentication PIN for billing…

Use finger for locating user…

Page 38: SIP for geeks

Endpoint call control• Language for End System Services (LESS) • Direct user interaction, direct media control• Handle converged information, e.g., call, presence, email

Example: call a friend when he comes online

<less name="online_call" require="generic presence ui"> <notification status="online" priority="0.5"> <address-switch field="origin"> <address is=“[email protected]"> <call /> <alert sound=“ring.au" text="Calling …" /> </address> </address-switch> </notification></less>

Page 39: SIP for geeks

Network call control

SIP-CGI RFC 3050, CPL, servletsPriority.pl

SIP_FROMSIP_TOstdin

CGI-PROXY-REQUESTstdout

SIP proxy

Urgent

Low-priority

Voicemail

Phone

if (defined $ENV{SIP_FROM} &&

$ENV{SIP_FROM} =~ /sip:[email protected]/)

{

foreach $reg (get_regs())

{

print "CGI-PROXY-REQUEST $reg SIP/2.0\n";

print "Priority: urgent\n\n";

}

}

Page 40: SIP for geeks

Call transfer

Blind/consultation/attended

active call

REFER CReferred-By: B

INVITE CReferred-By: B

BYE A

A B

C

active call

Page 41: SIP for geeks

B2BUA and 3pcc

Back-to-back UA– Incoming call

triggers outgoing call

Services– Calling card– Anonymizer

INVITE

AB

CSIP

SIP

OK (SDP1)

ACKINVITE (SDP1)

OK (SDP2)

ACKINVITE (SDP2)

OK

ACK

Page 42: SIP for geeks

Voicemail

vmail.pl

SIP_FROMSIP_TOstdin

CGI-PROXY-REQUESTstdout

If no response

Proxy controls

accept after 15s

Voicemail acts like a phone

[email protected]

Redirect after 10s

Endpoint based

Page 43: SIP for geeks

VoiceXML

Telephone

PSTNPSTN

Voice gateway

Web server

Service logic (CGI, servlet, JSP)

1. Voice and telephony functions2. VoiceXML browser

Internet userVXMLVXML HTMLHTML

Internet

Internet

IVR platform• Voice and telephony functions (ASR, TTS, DTMF)• Service logic (application specific)

VXML BrowserGateway

Page 44: SIP for geeks

VoiceXML contd.

<form action=“url”> Enter your Id: <input name=‘id’> <input type=‘submit’> </form>

<form> <field name=‘id’> <prompt> Your ID, please. </prompt> </field> <block> <submit next=“url”/> </block></form>

Telephony, speech synthesis or audio output, user input and grammar, program flow, variable and properties, error handling, …

Page 45: SIP for geeks

Interworking with telephone

• Translating audio (µ-law/A-law)• Translating signaling (PRI/T1,ISUP)

– Overlap signaling– Advanced features in SIP are lost in PSTN

• Translating identifiers (phone number)• Determining transition points

Telephonenetwork

SIP/PSTN gateway

SIP server IP endpointTelephonesubscriber

+1-415-123-4567 sip:[email protected]

IP to telephoneStatic mapping

– 1-212854xxxx=>@gw1.columbia.eduGateway information is dynamic:

– Overlapping networks, multiple providers, Load balancing

Telephony routing over IP (TRIP)– Route advertisement, can be implemented

in outbound proxy, suitable for current hierarchical network

+1 @service.mci.com at 4¢/min+1212 @nyc.gw.com at 1¢/min+1212939 @itgw1.columbia.edu free

Telephone to IPGateway knows the SIP server

– <sip:[email protected];user=phone>

ENUM – E164 numbering (using DNS)– +1 212 9397042 =>

2.4.0.7.9.3.9.2.1.2.1.e164.arpa => sip:[email protected]

– Suitable for relatively “static” contacts

Page 46: SIP for geeks

Summary of services

• Call forwarding: basic INVITE behavior• Call transfer: REFER method• Call hold: set media to 0.0.0.0• Caller id: From, plus extensions• DTMF carriage: carry as RTP (RFC 2833)• Calling card: B2BUA + voice server• Voicemail: UA, proxy, media server• Programming: CGI, CPL, servlet, LESS,

CCXML, VoiceXML, SECE, …

Page 47: SIP for geeks

What will you learn?

History

CompetitionIETF, RFCEcosystemReferences

Dive-in

SyntaxSemanticsCall flowExtensionsScripting

Hands-on

iptel.orgjain-sipapi39peerssiprtmp

Challenges

On WebNAT traversalSecurityAudio qualityWalled garden

Voice

SamplingEncodingTransportMotivation

Page 48: SIP for geeks

Hands-on exercises

• Experiment with iptel.org to understand SIP message format

• Walk-through of JAIN SIP API reference implementation

• Programming server with SIP express router (SER)

• Walk-through of 39peers Python stack• Experiment with siprtmp for Flash-to-SIP

call

Page 49: SIP for geeks

What will you learn?

History

CompetitionIETF, RFCEcosystemReferences

Dive-in

SyntaxSemanticsCall flowExtensionsScripting

Hands-on

iptel.orgjain-sipapi39peerssiprtmp

Challenges

On WebNAT traversalSecurityAudio qualityWalled garden

Voice

SamplingEncodingTransportMotivation

Page 50: SIP for geeks

JavaScript API

Page 51: SIP for geeks

siprtmp.py in action

Page 52: SIP for geeks

Browser Cloud

HTML× Device capture× Real-time codecs× E2E UDP media

Flash Player× H.264 Video encoder× Echo cancellation× UDP media× Server socket

Hosted & elastic– Utility billing– Programmable IVR– Conferencing– Recording/playback– Accounting– Tracking

Phone– Voice, SMS, …

Page 53: SIP for geeks

Peer-to-peer ≠ cloud computing

• Self management• Free resource sharing• No central co-ordination• …

• Self management• Utility computing• Central co-ordination

• …

managed

Page 54: SIP for geeks

When to do P2P?

if – most of the peers do not trust each other,

AND– There is no incentive to help peers

then – P2P does not evolve naturally to work

See http://p2p-sip.blogspot.com/2009/10/security-in-p2p-sip.html

Page 55: SIP for geeks

NAT traversal

Problem: Solutions:Smart servers

– SER allows detecting nodes behind a NAT

– Use application level gateway and media-proxy

SIP Signaling– Symmetric response routing for

UDP (rport)– Connection reuse for TCP/TLS

(sip-outbound)

Media– STUN: Simple traversal of UDP

through NAT– TURN: Traversal using relay NAT– ICE: Interactive connectivity

establishmentL=10.1.2.3:5060

REGISTER [email protected]: sip:[email protected]:5060. . .

E=128.59.19.194:8123

iptel.org

INVITE alice@

Page 56: SIP for geeks

Interactive connectivity establishment

1. Address gathering2. Negotiation3. Connectivity check

L=10.1.2.3:8000 192.168.1.2:6000

example.net

STUN serverstun01.sipphone.com

E=128.59.19.194:8123

R=192.1.2.3:7002

Gather addresses (L,E,R)10.1.2.3:8000 (local)128.59.19.194:8123 (external)192.1.2.3:7002 (relay)

Gather addresses192.168.1.2:6000 (local)135.59.22.99:6000 (external)192.1.2.4:9004 (relay)

INVITE (offer)

OK (answer)

10.1.2.3:8000

Page 57: SIP for geeks

Security

Spoofing “From”Snooping signalingSnooping mediaBilling confusionDenial-of-service attacksSPAM on IP telephony

TLS, IPsec, auth, S/MIME, …SRTP, ZRTP, …

Page 58: SIP for geeks

SIP is just a tool!How do you use it?

Open house vs walled garden

Page 59: SIP for geeks

What will you learn?

History

CompetitionIETF, RFCEcosystemReferences

Dive-in

SyntaxSemanticsCall flowExtensionsScripting

Hands-on

iptel.orgjain-sipapi39peerssiprtmp

Challenges

On WebNAT traversalSecurityAudio qualityWalled garden

Voice

SamplingEncodingTransportMotivation

Page 60: SIP for geeks

IETF’s SIP

End-to-end principleInspired by Internet & webOne task for one protocol

ITU-T’s H.323

Managed “services”Legacy of telecom networkComplex integrated spec

IP and lower layers

TCP UDPTPKT

Q.931 H.245 RAS RTCPRTP

Codecs

Terminal Control/Devices

Transport Layer

SIP SDPRTP

CodecsRTCP

Terminal Control/DevicesJabber/XMPP

Jingle for session initiationRe-uses many SIP features

Proprietary

Adobe’s RTMFP,Skype, Yahoo, MSN,Cisco’s Skinny, …

Winner among VoIP carriers, mobile operators, and digital voice providers

Page 61: SIP for geeks

Brief history of SIP 1996: avt to focus on real-time transmission over UDP 1998: mmusic to focus on Internet conferencing 1999: First SIP proposed standard RFC 2543

by M. Handley, H. Schulzrinne, E. Schooler, J. Rosenberg 1999: sip to focus on core development of SIP 2000: iptel to focus on routing and call processing 2000: enum to focus on DNS based phone numbers 2002: New SIP proposed standard RFC 3261, added authors 2002: sipping to focus on applications/extensions to SIP 2004: simple to focus on SIP-based IM/presence 2005: xcon to focus on centralized conferences 2005: behave to focus on NAT traversal for SIP, RTP 2006: p2psip to focus on peer-to-peer rendezvous for SIP

Page 62: SIP for geeks

Specification in 140+ documents1. RFC 3261: SIP: Session Initiation Protocol2. RFC 4566: SDP: Session Description Protocol3. RFC 3550: RTP: a transport protocol for real-time applications4. RFC 3264: An offer/answer model with SDP5. RFC 3840: Indicating UA capabilities in SIP6. RFC 3263: Locating SIP servers7. RFC 4474: Enhancements for authenticated identity management in SIP8. RFC 3265: SIP-specific event notification9. RFC 3856: A presence event-package for SIP10. RFC 3863: Presence information data format (PIDF)11. RFC 3428: SIP extension for instant messaging12. RFC 3581: An extension of SIP for symmetric response routing13. RFC 5248: Interactive connectivity establishment (ICE)14. RFC 5389: Session traversal utilities for NAT (STUN)15. RFC 5766: Traversal using relays around NAT (TURN)

RFC 5638: Simple SIP usage scenarios for applications in the endpointsRFC 5411: A hitchhiker’s guide to SIP

Basic

Advanced

Presence/IM

NAT traversal

Page 63: SIP for geeks

Why was SIP invented? Invented as a “rendezvous” function To locate another SIP device To locate a SIP server to find another SIP device To establish (separate) media session To modify existing session To express SIP device’s capabilities To request 3rd party call control To find status, capability, availability of another SIP device or user To subscribe to receive future updates of status/availability To exchange mid-session signaling data To exchange short instant messages To support provider’s closed network of “managed” services

Page 64: SIP for geeks

Protocol jungle

Page 65: SIP for geeks

VoIP activities

IETF working groups– sip, sipping, mmusic, xcon, p2psip, simple,

impp, iptel, enum, ecrit, avt, sigtran, midcom, …

Elsewhere– 3GPP, ITU-T, W3C, Jabber/XSF, ETSI-

Tiphon, IMTC, sip-forum, VON, …