LinuxCon North America: SIPPing from the Open Source Well


Published on

This presentation dives into where Session Initiation Protocol (SIP) and eXtensible Messaging and Presence Protocol (XMPP) are used on Linux platforms, and ultimately why SIP is the best thing to hit our communications infrastructure since the Central Office (CO). I'll discuss DNS SRV in bind to enable SIP calls via domain lookups of User Resource Identifiers (URI). I'll also go over Linux desktop and Android clients that can register to varios call control platforms.

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

LinuxCon North America: SIPPing from the Open Source Well

  1. 1. SIPping from the Open Source Well Matthew Bynum UC Architect
  2. 2. Agenda ● SIP History ● Why SIP matters (SIP and DNS) ● Inside the SIP spec ● Open Source (and one proprietary) SIP options ● What the future entails ● Q&A
  3. 3. SIP is a protocol for establishing sessions in an IP network.
  4. 4. SIP History Glory is fleeting, but obscurity is forever. - Napoleon Bonaparte
  5. 5. 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. “ -
  6. 6. IETF Meetings The First IETF Audiocast occurred in 1992 Create 1 Descr.: DNS Discussion San Fran Orig.: John Doe Info: Start: 04.04.2001 / 09.30 End: 20.04.2001 / 16:30 Media: Audio GSM /49000 Media: Video H.263 /49100 Disseminate 2 SAP/NNTP/HTTP Invite SMTP/SIP Join 3 PC/Telephone Media 4 PC/Telephone
  7. 7. Simple Conference Invitation Protocol Session Invitation Protocol CALL CHANGE CLOSE by Henning Schulzrinneby 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
  8. 8. Simple Conference Invitation Protocol Session Invitation Protocol SCIP/1.0 302 Callee has moved temporarily Location: Location: CALL 1.0 User-Agent: coco/1.3 From: Christian Zahl <> To: Henning Schulzrinne <schulzrinne@fokus.> Call-Id: 9510021900.AA07734@lion.cs.tu- Referer: Expires: Mon, 02 Oct 1995 18:44:11 GMT Required: fc99cb08 audio/pcmu; port=3456; transport=RTP; rate=16000; channels=1; pt=97; net=; 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= 16 AU=none ID= v=0 o=van 2353644765 2353687637 IN IP4 s=Mbone Audio i=Discussion of Mbone Engineering Issues (Van Jacobsen c=IN IP4 t=0 0 m=audio 3456 RTP PCMU
  9. 9. Papa SIP “Personal Mobility for Multimedia Services in the Internet” by Henning Schulzrinne, March 1996 Creator of RTP
  10. 10. The Internet Architect 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 ( Creator of SDP
  11. 11. SIP Drafts 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
  12. 12. 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) Don’t Panic! A Hitchhiker's Guide to the Session Initiation Protocol
  13. 13. ● Q.931 (TDM) ● H.323 (IP) Alternative protocols…
  14. 14. Why SIP is kind of a big deal
  15. 15. It’s all about the decentralization Internet SIP Proxy DNS SIP DNS SIP Proxy Media 2. Where is the SIP server for and port 5061 1. Alice places call to 3. INVITE is sent to addressed to 4. INVITE is forwarded to the user bob, who answers, and the media is established between Alice and Bob.
  16. 16. SIP and DNS (RFC 3263) ● Use DNS SRV records for determining what servers provide SIP services for a domain (internal and external) sipserver A ; SRV’s _sips._tcp IN SRV 50 1 5061 _sip._tcp IN SRV 90 1 5060 _sip._udp IN SRV 100 1 5060 ; NAPTR IN NAPTR 50 50 "s" "SIPS+D2T" "" IN NAPTR 90 50 "s" "SIP+D2T" "" IN NAPTR 100 50 "s" "SIP+D2U" ""
  17. 17. SIP and DNS (cont.) ● Use ENUM records for determining what URI a full E.164 number should map to ● Politics suck. Screenshot from the ITU website: ; NAPTR for calling +12561234567 $ORIGIN IN NAPTR 100 10 “u" "E2U+sip" “!^.*$!!” .
  18. 18. Inside SIP
  19. 19. User Agents Client Server TCP or UDP port 5060 TLS on port 5061
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. SIP Element Examples SIP Service Provider SBC Proxy Registrar/B2BUA Media Gateway SIP TDM Redirect Clunky Old PBX
  24. 24. Basic Call Flow INVITE Phone BPhone A 180 Ringing 200 OK ACK Media BYE 200 OK
  25. 25. 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
  26. 26. Example SIP INVITE INVITE SIP/2.0 Via: SIP/2.0/UDP;branch=z9hG4bK776asdhds Max-Forwards: 70 To: Bob <> From: Alice <>;tag=1928301774 Call-ID: CSeq: 314159 INVITE Contact: <> Content-Type: application/sdp Content-Length: 142 v=0 o=alice 2890844526 2890844526 IN IP4 s=SIP Call c=IN IP4 t=0 0 m=audio 32894 RTP/AVP 0 101 a=rtpmap: 0 PCMU/8000 a=rtpmap: 101 iLBC/8000
  27. 27. Example SIP OK SIP/2.0 200 OK Via: SIP/2.0/UDP; branch=z9hG4bKnashds8;received= To: Alice <>;tag=1928301774 From: Bob <>;tag=a6c85cf Call-ID: CSeq: 314159 INVITE Contact: <sip:bob@> Content-Type: application/sdp Content-Length: 131 v=0 o=bob 7844 125 IN IP4 s=SIP Call c=IN IP4 t=0 0 m=audio 43588 RTP/AVP 0 a=sendrecv a=rtpmap: 0 PCMU/8000
  28. 28. Presence ● Real-time indicator of a person’s willingness and availability to communicate ● Blends communication methods together, allows for designating preferred contact method
  29. 29. SIMPLE – Powering Presence in SIP ● Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions ● Uses the SIP methods of PUBLISH, SUBSCRIBE, and NOTIFY, defined in RFC’s 3903, 3265, and 3856 ●
  30. 30. XMPP– Powering Presence via XML ● EXtensible Messaging and Presence Protocol ● Uses XML messages and a Publisher/Subscriber model for messages, defined in RFC’s 6120, 6121, and 6122 ●
  31. 31. Which one should I use? ● Externally facing? Both! Run a “dual-stack” for maximum federation flexibility ● Current IETF draft to bring interoperability:
  32. 32. Open Source (and one proprietary) SIP and XMPP Server Options Knowledge without practice is useless. Practice without knowledge is dangerous. - Confucius
  33. 33. Two main types of SIP solution ● Back-to-Back User Agent (B2BUA) ● 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 ● Proxy ● Relays messages between UACs and other SIP entities ● Stateless option ● SIP-only (with some exceptions) ● some trouble exists with the way endpoints implement features (like transfers) ● Future-ish proof
  34. 34. Asterisk – B2BUA/Media Server ● B2BUA ● Provides ACD, Voicemail, and IVR ● Most popular VoIP project in the world ● Backed by Digium in Huntsville, AL ● Rooted in traditional telephony ● Struggles with NAT traversal
  35. 35. FreeSWITCH ● B2BUA ● Provides ACD, Voicemail, and IVR ● Used by other projects for its media processing capabilities ● Geared for replacing a PBX ● Basis of Baracuda’s CudaTel product
  36. 36. sipXecs ● Composed of sipX (Proxy), FreeSWITCH (media), OpenFire (IM & Presence) ● Backed by eZuce in Andover, MA; but run by SIPfoundry ● Biggest user is Amazon with 5,000 users ● Marketed as an open source Unified Communications solution
  37. 37. Kamailio ● Registrar, Redirect, Proxy ● Fork of “SIP Express Router” ● Frequently used to “front-end” other SIP servers ● Does NOT handle media
  38. 38. OpenSIPS ● Registrar, Redirect, Proxy ● Fork of “SIP Express Router” ● Frequently used to “front-end” other SIP servers ● Does NOT handle media
  39. 39. reSIProcate ● Proxy and Location (repro), STUN/TURN (reTurn) ● Founded in 2002 ● reSIProcate stacks used by commercial products(through a “BSD-like” license) from Cisco, Avaya, LifeSize, Plantronics, Motorola, Ericsson, and more
  40. 40. STUN and TURN and ICE, oh my! ● NAT traversal for endpoints is…troublesome ● Kamailio or OpenSIPS with RTPproxy or MediaProxy ● reSIProcate (repro + reTurn) (STUN and TURN but no RFC ICE support)
  41. 41. Proprietary: Cisco UC Manager ● B2BUA for all types of SIP calls (trunk and line) ● Cisco’s implementation is 100% standards compatible SIP…except when it’s not. ● SIP extensions for “feature parity” ● Leads to two modes of SIP support for phones, basic and advanced. Basic is no bueno.
  42. 42. Openfire ● XMPP Server ● “Shiny” ● Backed by Jive Software ● Used by sipXecs for XMPP, has plugins galore
  43. 43. ejabberd ● XMPP Server ● Config heavy ● Efficient and scalable
  44. 44. Open Source SIP Client Options Product Version Linux Win Mac Android iOS SIP XMPP NAT 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 sipdroid 3.1 X X STUN
  45. 45. Future of Communications How does this get me my flying car? - Me, a child of the 80’s
  46. 46. SIP-based voice is spreading...
  47. 47. P2P SIP ● Decentralized SIP Services ● Uses overlay networks and Distributed Hash Tables ● REsource LOcation And Discovery (RELOAD) ● No RFCs, only drafts C A B
  48. 48. WebRTC ● ● HTML5 Web-based SIP clients ● Enables future B2C, B2B, P2P, and any other acronym you can think of ●
  49. 49. What do we do now?
  50. 50. More Information Asterisk, FreeSWITCH, OpenSIPS books This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
  51. 51. Q&A Questions?
  52. 52. 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 obsolete.” - AT&T response to FCC on PSTN Evolution, Dec 2009
  53. 53. Appendix Additional Reference Slides
  54. 54. 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
  55. 55. REFER (Transfer) INVITE Phone BPhone 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
  56. 56. PRACK (Provisional Acknowledgement) INVITE 100 Trying 183 Session Progress 200 OK ACK PRACK 200 OK (PRACK) PRACK sip:8000@ SIP/2.0 Via: SIP/2.0/UDP ;branch=z9hG4bKC384 From: <sip:9000@>;tag=1EDC10-2436 To: <sip:8000@>;tag=85E9C7C8-A4C Date: Fri, 01 Mar 2002 00:33:42 GMT Call-ID: D110EA36-2BE211D6-801CEF21- DD62106B@ CSeq: 102 PRACK RAck: 3696 101 INVITE Max-Forwards: 70 Content-Length: 0
  57. 57. OPTIONS Ping OPTIONS sip:8000@ SIP/2.0 Via: SIP/2.0/UDP;branch=z9hG4bKC384 From: <sip:9000@>;tag=1EDC10-2436 To: <sip:8000@>;tag=85E9C7C8-A4C Call-ID: D110EA36-2BE211D6-801CEF21-DD62106B@172. 16.13.87 CSeq: 100 OPTIONS Contact: <sip:9000@> Accept: application/sdp Max-Forwards: 70 Content-Length: 0 OPTIONS 200 OK
  58. 58. SIMPLE Presence Example IP PBX PUBLISH NOTIFY SUBSCRIBE SIMPLE Server On Hook / Off Hook
  59. 59. XMPP Presence Example IP PBX Presence StanzaPresence Stanza XMPP Server On Hook / Off Hook <presence xml:lang="en"> <show>on hook</show> </presence>