SIPping from the Open Source Well
Matthew Bynum
UC Architect
SIPping from the Open Source Well Matthew Bynum UC Architect A - - PowerPoint PPT Presentation
SIPping from the Open Source Well Matthew Bynum UC Architect A little about me Matthew Bynum Dabbler in Unified Communications for 12 years CCIE Voice #21753 Installed my first Linux distro at age 17 (RedHat 5.0) Open Source
Matthew Bynum
UC Architect
A little about me
Communications for 12 years
age 17 (RedHat 5.0)
maker, forestry nerd Matthew Bynum
http://gplus.to/mbynum http://www.linkedin.com/in/mattbynum/
Agenda
SIP is a protocol for establishing sessions in an IP network.
SIP History
Glory is fleeting, but obscurity is forever.
Setting the Stage
The Internet Engineering Task Force first met in 1986. “The mission of the IETF is to make the Internet work better by producing high quality, relevant technical documents that influence the way people design, use, and manage the Internet. “
http://tools.ietf.org/html/rfc5000
dhcp
TCP UDP TELNET IGMP ICMP FTP ECHO POP3 OSPF RIP
IETF Meetings The First IETF Audiocast
method was needed to disseminate the meeting invites.
Create
1
Descr.: DNS Discussion San Fran Orig.: John Doe j.doe@com.com Info: http://www.com.com Start: 04.04.2001 / 09.30 End: 04.20.2001 / 16:30 Media: Audio GSM 224.1.6.7/49000 Media: Video H.263 224.1.6.8/49100
Disseminate
2
SAP/NNTP/HTTP
Invite
SMTP/SIP
Join
3
PC/Telephone
Media
4
PC/Telephone
Simple Conference Invitation Protocol
Session Invitation Protocol
CALL CHANGE CLOSE by Henning Schulzrinne by Mark Handley and Eve Schooler 1xx 2xx 3xx 4xx 5xx UDP/SDP TCP/SCIP SUCCESS UNSUCCESSFUL BUSY DECLINE UNKNOWN FAILED FORBIDDEN RINGING RINGING TRYING REDIRECT ALTERNATIVE NEGOTIATE
Simple Conference Invitation Protocol
Session Invitation Protocol
SCIP/1.0 302 Callee has moved temporarily Location: jones@salt.lab3.company.com Location: jones@pepper.lab3.company.com CALL hgs@lupus.fokus.gmd.de 1.0 User-Agent: coco/1.3 From: Christian Zahl <cz@cs.tu-berlin.de> To: Henning Schulzrinne <schulzrinne@fokus.gmd.de> Call-Id: 9510021900.AA07734@lion.cs.tu- berlin.de Referer: ceres.fokus.gmd.de Expires: Mon, 02 Oct 1995 18:44:11 GMT Required: fc99cb08 audio/pcmu; port=3456; transport=RTP; rate=16000; channels=1; pt=97; net=224.2.0.1; ttl=128, audio/gsm; port=3456; transport=RTP; rate=8000; channels=1, audio/lpc; port=3456; transport=RTP; rate=8000; channels=1
SIP/1.0 REQ PA=128.16.65.19 16 AU=none ID=128.16.65.19/32492374 FR=M.Handley@cs.ucl.ac.uk TO=J.Crowcroft@cs.ucl.ac.uk v=0
128.3.4.5 s=Mbone Audio i=Discussion of Mbone Engineering Issues e=van@ee.lbl.gov (Van Jacobsen c=IN IP4 224.2.0.1/127 t=0 0 m=audio 3456 RTP PCMU
Papa SIP
“Personal Mobility for Multimedia Services in the Internet” by Henning Schulzrinne, March 1996
http://www.cs.columbia.edu/~hgs/papers/Schu9603_Personal.pdf
http://www.cs.columbia.edu/~hgs/ Creator of RTP
The Internet Architect
http://www.cs.ucl.ac.uk/staff/M.Handley/ SIP (RFC 2543, RFC 3261); SDP (RFC 2327; SAP, RFC 2974); Protocol Independent Multicast-Sparse Mode (PIM-SM, RFC 2362), TCP-Friendly Rate Control (TFRC, RFC 3448), Multicast-Scope Zone Announcement Protocol (MZAP, RFC 2776), Multicast Address Allocation (RFC 2908, RFC 2909), TCP Congestion Window Validation ( RFC 2861), Reliable Multicast ( RFC 3451, RFC 3452, RFC 3453, RFC 3048), Datagram Congestion Control Protocol ( RFC 4340, RFC 4336).
Mark Handley
Founder of XORP (www.xorp.org) Creator of SDP
SIP Drafts
http://www.cs.columbia.edu/sip/history.html
Date Draft Name December 2, 1996 draft-ietf-mmusic-sip-01 March 27, 1997 draft-ietf-mmusic-sip-02 July 31, 1997 draft-ietf-mmusic-sip-03 November 11, 1997 draft-ietf-mmusic-sip-04 May 14, 1998 draft-ietf-mmusic-sip-05 June 17, 1998 draft-ietf-mmusic-sip-06 July 16, 1998 draft-ietf-mmusic-sip-07 August 7, 1998 draft-ietf-mmusic-sip-08 September 18, 1998 draft-ietf-mmusic-sip-09 September 28, 1998 Last call November 12, 1998 draft-ietf-mmusic-sip-10 December 15, 1998 draft-ietf-mmusic-sip-11 January 16, 1999 draft-ietf-mmusic-sip-12 February 2, 1999 Approved March 17, 1999 RFC 2543
SIP Today
RFC 3261 (SIP: Session Initiation Protocol) RFC 3263 (Session Initiation Protocol (SIP): Locating SIP Servers) RFC 3264 (An Offer/Answer Model with Session Description Protocol (SDP)) RFC 3265 (Session Initiation Protocol (SIP)-Specific Event Notification) RFC 3325 (Private Extensions to SIP for Asserted Identity within Trusted Networks) RFC 3327 (SIP Extension Header Field for Registering Non-Adjacent Contacts) RFC 3581 (An Extension to SIP for Symmetric Response Routing) RFC 3840 (Indicating User Agent Capabilities in SIP) RFC 4320 (Actions Addressing Issues Identified with the Non-INVITE Transaction in SIP) RFC 4474 (Enhancements for Authenticated Identity Management in SIP) GRUU (Obtaining and Using Globally Routable User Agent Identifiers (GRUU) in SIP) OUTBOUND (Managing Client Initiated Connections through SIP) RFC 4566 (Session Description Protocol) SDP-CAP (SDP Capability Negotiation) ICE (Interactive Connectivity Establishment) RFC 3605 (Real Time Control Protocol (RTCP) Attribute in the Session Description Protocol) RFC 4916 (Connected Identity in the Session Initiation Protocol (SIP)) RFC 3311 (The SIP UPDATE Method) SIPS-URI (The Use of the SIPS URI Scheme in the Session Initiation Protocol (SIP)) RFC 3665 (Session Initiation Protocol (SIP) Basic Call Flow Examples)
http://tools.ietf.org/html/rfc5411
A Hitchhiker's Guide to the Session Initiation Protocol (SIP)
Alternative protocols…
Why SIP is kind of a big deal
It’s all about the decentralization
Internet
linuxcon.com 20.20.20.20 SIP Proxy DNS SIP DNS atlanta.com SIP Proxy Media bob@linuxcon.com alice@atlanta.com 2. Where is the SIP server for linuxcon.com? 20.20.20.20 and port 5061 1. Alice places call to bob@linuxcon.com. 3. INVITE is sent to 20.20.20.20 addressed to bob@linuxcon.com 4. INVITE is forwarded to the user bob, who answers, and the media is established between Alice and Bob.SIP and DNS (RFC 3263)
servers provide SIP services for a domain (internal and external)
sipserver A 10.0.0.1 ; SRV’s _sips._tcp IN SRV 50 1 5061 sipserver.yourdomain.com. _sip._tcp IN SRV 90 1 5060 sipserver.yourdomain.com. _sip._udp IN SRV 100 1 5060 sipserver.yourdomain.com. ; NAPTR IN NAPTR 50 50 "s" "SIPS+D2T" "" _sips._tcp.yourdomain.com. IN NAPTR 90 50 "s" "SIP+D2T" "" _sip._tcp.yourdomain.com. IN NAPTR 100 50 "s" "SIP+D2U" "" _sip._udp.yourdomain.com.
SIP and DNS (cont.)
a full E.164 number should map to
; NAPTR for calling +12561234567 $ORIGIN 7.6.5.4.3.2.1.6.5.2.1.e164.arpa. IN NAPTR 100 10 “u" "E2U+sip" “!^.*$!sip:bob@linuxcon.com!” .
Inside SIP
User Agents Client Server
TCP or UDP port 5060 TLS on port 5061
SIP Methods
METHOD DESCRIPTION
INVITE Session setup ACK Acknowledgement of final response to INVITE BYE Session termination CANCEL Pending session cancellation REGISTER Registration of a user’s URI OPTIONS Query of options and capabilities INFO Mid-call signaling transport PRACK Provisional response acknowledgement UPDATE Update session information REFER Transfer user to a URI SUBSCRIBE Request notification of an event NOTIFY Transport of subscribed event notification MESSAGE Transport of an instant message body PUBLISH Upload presence state to a server
SIP Responses
Status Message
100 Trying 180 Ringing 183 Session Progress 200 OK 300 Multiple Choices 302 Moved Temporarily 305 Use Proxy 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 500 Internal Server Error 501 Not Implemented 502 Bad Gateway
CLASS DESCRIPTION
1xx Provisional or Informational 2xx Success 3xx Redirection 4xx Client Error 5xx Server Error 6xx Global Failure
SIP Roles
Element Function
Proxy Responsible for routing Registrar Accepts REGISTER request from endpoints Redirect Generates 3xx responses Back to Back User Agent (B2BUA) Terminates SIP dialogs from UAC and creates new dialog to end destination Session Border Controller (SBC) Demarcation between disparate networks Media Gateway Media translation
SIP Element Examples
Service Provider
SBC Proxy Registrar/B2BUA Media Gateway SIP TDM RedirectBasic Call Flow
INVITE
Phone B Phone A
180 Ringing 200 OK ACK Media BYE 200 OK
Call Flow with Proxy
INVITE
Proxy (Server/Client) Phone (Client) Phone (Server)
INVITE 100 Trying 180 Ringing 180 Ringing 200 OK 200 OK ACK Media BYE 200 OK
Example SIP INVITE
INVITE <sip:bob@linuxcon.com> SIP/2.0 Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds Max-Forwards: 70 To: Bob <sip:bob@linuxcon.com> From: Alice <sip:alice@atlanta.com>;tag=1928301774 Call-ID: a84b4c76e66710@pc33.atlanta.com CSeq: 314159 INVITE Contact: <sip:alice@pc33.atlanta.com> Content-Type: application/sdp Content-Length: 142 v=0
s=SIP Call c=IN IP4 216.81.194.139 t=0 0 m=audio 32894 RTP/AVP 0 101 a=rtpmap: 0 PCMU/8000 a=rtpmap: 101 iLBC/8000
Example SIP OK
SIP/2.0 200 OK Via: SIP/2.0/UDP server10.linuxcon.com ;branch=z9hG4bKnashds8;received= 216.81.194.139 To: Bob <sip:bob@linuxcon.com>;tag=a6c85cf From: Alice <sip:alice@atlanta.com>;tag=1928301774 Call-ID: a84b4c76e66710@pc33.atlanta.com CSeq: 314159 INVITE Contact: <sip:bob@192.0.2.4> Content-Type: application/sdp Content-Length: 131 v=0
s=SIP Call c=IN IP4 10.0.0.1 t=0 0 m=audio 43588 RTP/AVP 0 a=sendrecv a=rtpmap: 0 PCMU/8000
Presence
person’s willingness and availability to communicate
methods together, allows for designating preferred contact method
SIMPLE – Powering Presence in SIP
for Instant Messaging and Presence Leveraging Extensions
and NOTIFY, defined in RFC’s 3903, 3265, and 3856
XMPP– Powering Presence in SIP
Publisher/Subscriber model for messages, defined in RFC’s 6120, 6121, and 6122
Open Source (and one proprietary) SIP Server Options
Knowledge without practice is useless. Practice without knowledge is dangerous.
Two main types of SIP servers
– owns each leg of call as a separate dialog – Stateful – inter-work SIP with other protocols, including TDM and analog interfaces – More like traditional telephony – Doesn’t scale as well as a Proxy
– Relays messages between UACs and other SIP entities – Stateless option – SIP-only (with some exceptions) – some trouble exists with the way endpoints implement some features (like transfers) – Future proof
Asterisk – B2BUA/Media Server
path
FreeSWITCH
processing capabilities
sipXecs
(media), OpenFire (IM & Presence)
SIPfoundry
Communications solution
Kamailio
per month of usage through the platform
servers such as Asterisk or FreeSWITCH
Asterisk or FreeSWITCH for that)
OpenSIPS
Router or SER)
servers such as Asterisk or FreeSWITCH
Asterisk or FreeSWITCH for that)
reSIProcate
“back in the day”, then was acquired by Cisco
SIPfoundry, then went independent in 2006
products(through a “BSD-like” license) from Cisco, Avaya, LifeSize, Plantronics, Motorola, Ericsson, and more
STUN and TURN and ICE, oh my!
MediaProxy
but no RFC ICE support)
Proprietary: Cisco CallManager (CUCM)
compatible SIP…except when it’s not.
CUCM for Cisco’s SCCP protocol feature parity to handsets
basic and advanced. Basic is no bueno.
Open Source SIP Client Options
Product Version Linux Win Mac Android iOS SIP XMPP NAT Traversal Jitsi 2.2 X X X X X TURN Blink 0.5.0 X X Pro X ICE Empathy 3.8.4 X X X ICE Linphone 3.6.0 X X X X (2.0) X (2.0) X ICE cSipSimple 1.01 X X ICE
Future of SIP
How does this get me my flying car?
SIP-based UC is spreading
P2P SIP
Distributed Hash Tables
Discovery (RELOAD)
C A B http://datatracker.ietf.org/wg/p2psip/
WebRTC
acronym you can think of
Where do we go now?
Q&A
The End
“Due to technological advances, changes in consumer preference, and market forces, the question is when, not if, POTS service and the PSTN over which it is provided will become
Appendix
Additional Reference Slides
Offer/Answer Model
INVITE w/SDP (offer) 200 OK w/SDP (answer) INVITE w/o SDP 200 OK w/SDP (offer) ACK w/SDP (answer) ACK
Early Offer Delayed Offer
REFER (Transfer)
INVITE
Phone B Phone A Phone C
INVITE 200 OK 200 OK ACK ACK Media Session REFER (Refer-To: C) 202 Accepted 200 OK Media Session NOTIFY 200 OK BYE
PRACK (Provisional Acknowledgement)
INVITE 100 Trying 183 Session Progress 200 OK ACK PRACK 200 OK (PRACK) PRACK sip:8000@172.16.184.83:5060 SIP/2.0 Via: SIP/2.0/UDP 172.16.13.87:5060 ;branch=z9hG4bKC384 From: <sip:9000@172.16.13.87>;tag=1EDC10-2436 To: <sip:8000@172.16.184.83>;tag=85E9C7C8-A4C Date: Fri, 01 Mar 2002 00:33:42 GMT Call-ID: D110EA36-2BE211D6-801CEF21- DD62106B@172.16.13.87 CSeq: 102 PRACK RAck: 3696 101 INVITE Max-Forwards: 70 Content-Length: 0
OPTIONS Ping
OPTIONS sip:8000@172.16.184.83:5060 SIP/2.0 Via: SIP/2.0/UDP 172.16.13.87:5060;branch=z9hG4bKC384 From: <sip:9000@172.16.13.87>;tag=1EDC10-2436 To: <sip:8000@172.16.184.83>;tag=85E9C7C8-A4C Call-ID: D110EA36-2BE211D6-801CEF21- DD62106B@172.16.13.87 CSeq: 100 OPTIONS Contact: <sip:9000@172.16.13.87> Accept: application/sdp Max-Forwards: 70 Content-Length: 0
OPTIONS 200 OK
SIMPLE Presence Example
IP PBX PUBLISH NOTIFY SUBSCRIBE SIMPLE Server On Hook / Off HookXMPP Presence Example
IP PBX Presence Stanza Presence Stanza XMPP Server On Hook / Off Hook<presence xml:lang="en"> <show>on hook</show> </presence>