linuxcon north america: sipping from the open source well

Post on 14-Apr-2017

1.664 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SIPping from the Open Source Well

Matthew BynumUC Architect

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

SIP is a protocol for establishing sessions in an IP network.

SIP History

Glory is fleeting, but obscurity is forever. - Napoleon Bonaparte

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

IETF Meetings

The First IETF Audiocast occurred in 1992

Create 1Descr.: DNS Discussion San FranOrig.: John Doe j.doe@com.comInfo: http://www.com.comStart: 04.04.2001 / 09.30End: 20.04.2001 / 16:30Media: Audio GSM 224.1.6.7/49000Media: Video H.263 224.1.6.8/49100

Disseminate 2SAP/NNTP/HTTPInviteSMTP/SIP

Join 3PC/Telephone

Media 4PC/Telephone

Simple Conference Invitation Protocol

Session Invitation Protocol

CALLCHANGECLOSE

by Henning Schulzrinneby Mark Handley and Eve Schooler

1xx2xx3xx4xx5xx

UDP/SDP TCP/SCIP

SUCCESSUNSUCCESSFULBUSYDECLINE

UNKNOWNFAILEDFORBIDDENRINGING

RINGINGTRYINGREDIRECTALTERNATIVE

NEGOTIATE

Simple Conference Invitation Protocol

Session Invitation Protocol

SCIP/1.0 302 Callee has moved temporarilyLocation: jones@salt.lab3.company.comLocation: jones@pepper.lab3.company.comCALL hgs@lupus.fokus.gmd.de 1.0User-Agent: coco/1.3From: Christian Zahl <cz@cs.tu-berlin.de>To: Henning Schulzrinne <schulzrinne@fokus.gmd.de>Call-Id: 9510021900.AA07734@lion.cs.tu-berlin.deReferer: ceres.fokus.gmd.deExpires: Mon, 02 Oct 1995 18:44:11 GMTRequired: 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 REQPA=128.16.65.19 16AU=noneID=128.16.65.19/32492374FR=M.Handley@cs.ucl.ac.ukTO=J.Crowcroft@cs.ucl.ac.ukv=0o=van 2353644765 2353687637 IN IP4 128.3.4.5s=Mbone Audioi=Discussion of Mbone Engineering Issuese=van@ee.lbl.gov (Van Jacobsenc=IN IP4 224.2.0.1/127t=0 0m=audio 3456 RTP PCMU

Papa SIP

“Personal Mobility for Multimedia Services in the Internet”

by Henning Schulzrinne, March 1996http://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 HandleyFounder 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

Don’t Panic!

A Hitchhiker's Guide to the Session Initiation Protocol

● Q.931 (TDM)● H.323 (IP)

Alternative protocols…

Why SIP is kind of a big deal

It’s all about the decentralization

Internet

linuxcon.com20.20.20.20SIP Proxy

DNS

SIP

DNS

atlanta.comSIP Proxy

Media

bob@linuxcon.comalice@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)

● 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.

; NAPTRIN 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.)

● 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!” .

Inside SIP

User Agents

Client Server

TCP or UDP port 5060TLS on port 5061

SIP Methods

METHOD DESCRIPTION

INVITE Session setupACK Acknowledgement of final response to INVITEBYE Session terminationCANCEL Pending session cancellationREGISTER Registration of a user’s URIOPTIONS Query of options and capabilities

INFO Mid-call signaling transportPRACK Provisional response acknowledgementUPDATE Update session informationREFER Transfer user to a URISUBSCRIBE Request notification of an eventNOTIFY Transport of subscribed event notificationMESSAGE Transport of an instant message bodyPUBLISH Upload presence state to a server

SIP Responses

Status Message

100 Trying180 Ringing183 Session Progress200 OK300 Multiple Choices302 Moved Temporarily305 Use Proxy400 Bad Request401 Unauthorized402 Payment Required403 Forbidden404 Not Found500 Internal Server Error501 Not Implemented502 Bad Gateway

CLASS DESCRIPTION

1xx Provisional or Informational

2xx Success3xx Redirection4xx Client Error5xx Server Error6xx 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

SIP Service Provider

SBCProxy

Registrar/B2BUA

Media GatewaySIP

TDM

RedirectClunky Old PBX

Basic Call Flow

INVITE

Phone BPhone A

180 Ringing

200 OK

ACK

Media

BYE

200 OK

Call Flow with Proxy

INVITE

Proxy (Server/Client)Phone (Client) Phone (Server)

INVITE100 Trying

180 Ringing180 Ringing

200 OK200 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=z9hG4bK776asdhdsMax-Forwards: 70To: Bob <sip:bob@linuxcon.com>From: Alice <sip:alice@atlanta.com>;tag=1928301774Call-ID: a84b4c76e66710@pc33.atlanta.comCSeq: 314159 INVITEContact: <sip:alice@pc33.atlanta.com>Content-Type: application/sdpContent-Length: 142v=0o=alice 2890844526 2890844526 IN IP4 linuxcon.coms=SIP Callc=IN IP4 216.81.194.139t=0 0m=audio 32894 RTP/AVP 0 101a=rtpmap: 0 PCMU/8000a=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.139To: Alice <sip:alice@atlanta.com>;tag=1928301774From: Bob <sip:bob@linuxcon.com>;tag=a6c85cf Call-ID: a84b4c76e66710@pc33.atlanta.comCSeq: 314159 INVITEContact: <sip:bob@192.0.2.4>Content-Type: application/sdp Content-Length: 131 v=0o=bob 7844 125 IN IP4 10.0.0.1s=SIP Callc=IN IP4 10.0.0.1t=0 0m=audio 43588 RTP/AVP 0a=sendrecva=rtpmap: 0 PCMU/8000

Presence

● Real-time indicator of a person’s willingness and availability to communicate

● Blends communication methods together, allows for designating preferred contact method

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/

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/

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

Open Source (and one proprietary) SIP and XMPP Server Options

Knowledge without practice is useless. Practice without knowledge is dangerous.

- Confucius

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

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

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

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

Kamailio

● Registrar, Redirect, Proxy● Fork of “SIP Express Router”● Frequently used to “front-end” other SIP

servers● Does NOT handle media

OpenSIPS

● Registrar, Redirect, Proxy● Fork of “SIP Express Router”● Frequently used to “front-end” other SIP

servers● Does NOT handle media

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

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)

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.

Openfire

● XMPP Server● “Shiny”● Backed by Jive Software● Used by sipXecs for XMPP, has plugins galore

ejabberd

● XMPP Server● Config heavy● Efficient and scalable

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

Future of Communications

How does this get me my flying car?

- Me, a child of the 80’s

SIP-based voice is spreading...

P2P SIP

● Decentralized SIP Services● Uses overlay networks and

Distributed Hash Tables● REsource LOcation And

Discovery (RELOAD)● No RFCs, only drafts

C

AB

http://datatracker.ietf.org/wg/p2psip/

WebRTC

● sipml5.org● HTML5 Web-based SIP clients● Enables future B2C, B2B, P2P, and any other

acronym you can think of●

What do we do now?

More Information

gplus.to/mbynum

linkedin.com/in/mattbynum

slideshare.net/mbynum

www.voip-info.org

www.opentelecoms.org

Asterisk, FreeSWITCH, OpenSIPS books

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Q&A

Questions?

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

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 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

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.0Via: SIP/2.0/UDP 172.16.13.87:5060

;branch=z9hG4bKC384From: <sip:9000@172.16.13.87>;tag=1EDC10-2436To: <sip:8000@172.16.184.83>;tag=85E9C7C8-A4CDate: Fri, 01 Mar 2002 00:33:42 GMTCall-ID: D110EA36-2BE211D6-801CEF21-DD62106B@172.16.13.87CSeq: 102 PRACKRAck: 3696 101 INVITEMax-Forwards: 70Content-Length: 0

OPTIONS Ping

OPTIONS sip:8000@172.16.184.83:5060 SIP/2.0Via: SIP/2.0/UDP 172.16.13.87:5060;branch=z9hG4bKC384From: <sip:9000@172.16.13.87>;tag=1EDC10-2436To: <sip:8000@172.16.184.83>;tag=85E9C7C8-A4CCall-ID: D110EA36-2BE211D6-801CEF21-DD62106B@172.16.13.87CSeq: 100 OPTIONSContact: <sip:9000@172.16.13.87>Accept: application/sdpMax-Forwards: 70Content-Length: 0

OPTIONS

200 OK

SIMPLE Presence Example

IP PBX

PUBLISHNOTIFY

SUBSCRIBE

SIMPLE Server

On Hook / Off Hook

XMPP Presence Example

IP PBX

Presence StanzaPresence Stanza

XMPP Server

On Hook / Off Hook

<presence xml:lang="en"> <show>on hook</show> </presence>

top related