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.
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. SIP is a protocol for establishing
sessions in an IP network.
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. “
- http://www.ietf.org/about/mission.html
http://tools.ietf.org/html/rfc5000
6. IETF Meetings
The First IETF Audiocast
occurred in 1992
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: 20.04.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
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
9. 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
10. 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
11. 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
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)
http://tools.ietf.org/html/rfc5411
Don’t
Panic!
A Hitchhiker's Guide to the Session Initiation Protocol
15. 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.
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 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.
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 7.6.5.4.3.2.1.6.5.2.1.e164.arpa.
IN NAPTR 100 10 “u" "E2U+sip" “!^.*$!sip:bob@linuxcon.com!” .
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. 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. 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. SIP Element Examples
SIP Service Provider
SBC
Proxy
Registrar/B2BUA
Media Gateway
SIP
TDM
Redirect
Clunky Old PBX
27. Example SIP OK
SIP/2.0 200 OK
Via: SIP/2.0/UDP server10.linuxcon.com;
branch=z9hG4bKnashds8;received= 216.81.194.139
To: Alice <sip:alice@atlanta.com>;tag=1928301774
From: Bob <sip:bob@linuxcon.com>;tag=a6c85cf
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
o=bob 7844 125 IN IP4 10.0.0.1
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
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. 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
● http://datatracker.ietf.org/wg/simple/
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
● http://datatracker.ietf.org/wg/XMPP/
31. Which one should I use?
● Externally facing? Both! Run a “dual-stack”
for maximum federation flexibility
● Current IETF draft to bring interoperability:
http://tools.ietf.org/html/draft-saintandre-sip-xmpp-core-04
32. Open Source (and one proprietary)
SIP and XMPP Server Options
Knowledge without practice is useless. Practice without
knowledge is dangerous.
- Confucius
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. 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. 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. 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. Kamailio
● Registrar, Redirect, Proxy
● Fork of “SIP Express Router”
● Frequently used to “front-end” other SIP
servers
● Does NOT handle media
38. OpenSIPS
● Registrar, Redirect, Proxy
● Fork of “SIP Express Router”
● Frequently used to “front-end” other SIP
servers
● Does NOT handle media
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. 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. 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. Openfire
● XMPP Server
● “Shiny”
● Backed by Jive Software
● Used by sipXecs for XMPP, has plugins galore
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
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
http://datatracker.ietf.org/wg/p2psip/
48. WebRTC
● sipml5.org
● HTML5 Web-based SIP clients
● Enables future B2C, B2B, P2P, and any other
acronym you can think of
●
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
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. 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
59. XMPP Presence Example
IP PBX
Presence StanzaPresence Stanza
XMPP Server
On Hook / Off Hook
<presence xml:lang="en"> <show>on
hook</show>
</presence>