SlideShare ist ein Scribd-Unternehmen logo
1 von 137
Downloaden Sie, um offline zu lesen
hgs/SIP Tutorial                                             1




       The Session Initiation Protocol
                   (SIP)
                            Henning Schulzrinne
                         Dept. of Computer Science
                            Columbia University
                           New York, New York
                   (sip:)schulzrinne@cs.columbia.edu




                                                       May 2001
hgs/SIP Tutorial                                      2




Overview

  • protocol architecture
  • typical component architectures
  • addressing and locating SIP entities
  • protocol operation and extensions
  • reliability
  • services, features and caller preferences
  • security and QoS
  • programming SIP services




                                                May 2001
hgs/SIP Tutorial                                                                          3




Introduction

  • SIP = core protocol for establishing sessions in the Internet
  • transports session description information from initiator (caller) to callees
  • allows to change parameters in mid-session
  • terminate session




                                                                                    May 2001
hgs/SIP Tutorial                                                                                  4




VoIP protocol architecture

                                          Languages/APIs
                                       JAIN   CPL voiceXML
                                      Parlay     servlets
                                                 sip−cgi


                  Directory/Discovery             peer−to−peer  Signaling
              DNS/enum LDAP TRIP                          SIP SDP MGCP               RTSP
                                                            PINT        H.248
                              SLP                           SPIRITS
                                                                      master−slave




                              QoS                              Transport
                   DiffServ         IntServ                RTP        TLS
                                                                SCTP




                                                                                            May 2001
hgs/SIP Tutorial                                                                                                         5




Multimedia protocol stack

                             signaling                                    quality of service           media transport
                   MGCP/Megaco

                                 SDP                             reservation             measurement   media encaps.
                                                                                                       (H.261, MPEG)




                                                                                                                          application
            H.323                SIP            RTSP                 RSVP                  RTCP




                                                                                                                           daemon
                                                                                                           RTP
transport




                      TCP                                                      UDP
network




                                                        IPv4, IPv6




                                                                                                                          kernel
            PPP                  AAL3/4          AAL5                                                      PPP
link




            Sonet                         ATM                         Ethernet                             V.34
physical




                                                                                                                   May 2001
hgs/SIP Tutorial                                                                     6




SIP protocol use


                   LDAP        address    TRIP
                                lookup

                                            PSTN gateway lookup


                   DNS         next−hop

                                          SIP                       SIP
                   signaling              SDP                       SDP
                                  may       sets up
                               trigger
                                   RSVP                           RSVP
                      media               RTP                            RTP
                                          UDP                            UDP



                                                                               May 2001
hgs/SIP Tutorial                                                   7




SIP applications

  • setting up voice-over-IP calls
  • setting up multimedia conferences
  • event notification (subscribe/notify) « IM and presence
  • text and general messaging
  • signaling transport




                                                             May 2001
hgs/SIP Tutorial                          8




                   SIP addressing




                                    May 2001
hgs/SIP Tutorial                                                                             9




Personal mobility

SIP uses email-style addresses to identify users
                                                                        alice@columbia.edu
                                                                  (also used by bob@columbia.edu)



                                                    yahoo.com

                                                                         tel:12128541111
                       alice17@yahoo.com


                       alice@columbia.edu

                       7000@columbia.edu

                                                   columbia.edu          tel:12015551234
                   Alice.Cary@columbia.edu


                                                                     alice@host.columbia.edu




                                                                                       May 2001
hgs/SIP Tutorial                                                                 10




SIP addressing

  • typically, same as user’s email address:
            alice@example.com
            12125551212@gateways-r-us.com
  • written as URL, e.g., sip:alice@example.com
  • can add parameters, such as type (user=”phone”) or transport protocol




                                                                            May 2001
hgs/SIP Tutorial                                                              11




tel URLs (RFC 2806)

  • also can use tel URLs for telephone numbers, e.g., tel:+12125551212 or
    fax:+358.555.1234567
  • either global (tel:+1...) or local
    (tel:0w003585551234567;phone-context=+3585551234 numbers
  • allow post-dialing digits: ;postd=pp32
  • also modem:+3585551234567;type=v32b?7e1;type=v110




                                                                         May 2001
hgs/SIP Tutorial                                                                      12




SIP building blocks


                   SIP user agent        IP phone, PC, conference bridge

                   SIP redirect server   returns new location for requests

                   SIP stateless proxy   routes call requests

                   SIP (forking) proxy   routes call requests
            A@
            B@
            C@
                   SIP registrar         maintains mappings from names to addresses




                                                                                 May 2001
hgs/SIP Tutorial                                                                     13




Back-to-back UA (B2BUA)

  • two (or more) user agents, where incoming calls trigger outgoing calls to
    somebody else
  • also, “third-party call control” (later)
  • useful for services and anonymity


                         SIP UA1 (UAS)         SIP UA2 (UAC)
        INVITE b2b                                                     INVITE callee

          200 OK
                                                                       200 OK




                                                                                May 2001
hgs/SIP Tutorial                                                             14




Maintaining state in SIP entities

Stateless: each request and response handled indepdently
(Transaction) stateful: remember a whole request/response transaction
Call stateful: remember a call from beginning to end




                                                                        May 2001
hgs/SIP Tutorial                                                                            15




SIP building block properties

                                   media   stateless   stateful   call state
              UA (UAC, UAS)        yes     no          unlikely   common
              proxy                no      yes         common     possible (firewall)
              redirect registrar   no      no          yes        N/A




                                                                                       May 2001
hgs/SIP Tutorial                                                                         16




SIP architecture: peer-to-peer

                                    SIP
                              redirect server


                                                            user agent (UA)




 user agent (UA)                                                                user agent (UA)

                                                               128.119.40.186
                                                Internet

                                                RTP audio



 128.59.19.141

                   CATV
                   Ethernet




                                                                                    May 2001
hgs/SIP Tutorial                                                                                                       17




SIP architecture: outbound proxy

                   wonderland.com                                                  macrosoft.com
                                                                     REGISTER sip:macrosoft.com SIP/2.0
                                                                     To: sip:bob@macrosoft.com
                                                                     From: sip:bob@macrosoft.com
                                                                     Contact: sip:bob@p42.macrosoft.com




                                outbound                                      registrar

                                  proxy              Internet                  proxy


                              wonderland.com
                     INVITE sip:bob@macrosoft.com SIP/2.0       INVITE sip:bob@macrosoft.com SIP/2.0
                                                                                               bob@p42.macrosoft.com
   alice@ph7.wonderland.com
                                                                                 INVITE sip:bob@p42.macrosoft.com SIP/2.0




                                                                                                                 May 2001
hgs/SIP Tutorial                                                                                    18




SIP architecture: VoIP to PSTN

                                                location server

                                                                          TRIP


                                                         SLP?, TRIP−GW?

                                                                   sip:12125551234@gwrus.com
                   sip:1−212−555−1234@domain
                                                                            SIP

                                                                              H.248
                   tel:+1−212−555−1234

                                               outbound proxy
                                                                                  IP
                                                                            010




                                                                                               May 2001
hgs/SIP Tutorial                                                                                  19




SIP architecture: PSTN to VoIP

                                                      enum database
                                                           DNS
                         4.3.2.1.5.5.5.2.1.2.1.e164.arpa
                   SCP   enum

                         sip:alice@wonderland.com




                                                           INVITE sip:alice@wonderland.com
                                                     IP
                                               010




                                                                                             May 2001
hgs/SIP Tutorial                                                                                                                   20




SIP operation in proxy mode

                                                                                                     cs.columbia.edu

                                                                                ? location server
                                        1
                                                                                                         4
                                        INVITE
                     cs.tu−berlin.de                                                                   INVITE hgs@play 5




                                                                                      hgs@play
                                                                     henning
                                        henning@columbia.edu     2
                                                                                                 3
                                                                                                             200 OK
                                        200 OK
                   cz@cs.tu−berlin.de                                                                        6
                                        7                                                                              play


                                                                               tune
                                        8


                                        ACK hgs@play




                                                       9   media stream


                                                                                                                              May 2001
hgs/SIP Tutorial                                                                                                 21




SIP operation in redirect mode

                                                     ieee.org
                                                                              ?                  location
                                                                                                 server




                                                                                  columbia.edu
                               1
                   tu-berlin.de INVITE henning@ieee.org         2




                                                                    henning
                                                                                                  3

                              302 Moved temporarily
                              Contact: hgs@columbia.edu
                               4


                               5 ACK henning@ieee.org

                                                                         columbia.edu
                               6 INVITE hgs@columbia.edu


                               7 200 OK

                               8 ACK hgs@columbia.edu                                                 hgs


(302: redirection for single call; 301 permanently)


                                                                                                            May 2001
hgs/SIP Tutorial                             22




                   Locating SIP users




                                        May 2001
hgs/SIP Tutorial                                                                     23




Locating users: registrars and location servers

                                       registrar example.com
                   REGISTER
                   alice@example.com    A@          SQL, LDAP, Corba,
                                        B@          proprietary, ...
                   Contact:             C@
                    alice@pc17




                                                            location server
                   INVITE
                   alice@example.com            INVITE alice@pc17.example.com



                                        proxy




                                                                                May 2001
hgs/SIP Tutorial                                                                  24




Basic user location mechanism

 1. host(SIP URL) −→ host name of proxy
 2. DNS: host name of proxy → SIP server(s)
 3. if SIP UAS: alert user; done
 4. if SIP proxy/redirect server: map URLn −→ URLn+1 , using any information in
    request
 5. go to step 1
One minor exception. . .




                                                                           May 2001
hgs/SIP Tutorial                                                                       25




Basic SIP “routing” mechanisms

  • will fill in details later
  • route using request URIs
  • all but first request in call typically bypass proxies and go direct UAC – UAS
  • however, can use “record-routing” to force certain proxies to be visited all the time
  • responses always traverse the same route as requests




                                                                                  May 2001
hgs/SIP Tutorial                                                                    26




Outbound proxies

  • normally, proxy serves one or more domains
  • outbound proxies are used for all outbound requests from within a domain
  • typically, for managing corporate firewalls and policy enforcement
  • may also provide dial plans or route tel/fax URLs
  • other uses: lawyer client billing, . . .




                                                                               May 2001
hgs/SIP Tutorial                                                                    27




Locating users: DNS SRV

  • email: DNS MX record allows mapping of domain to mail host, e.g.
       host -t mx yahoo.com
       yahoo.com                          MX         1   mx2.mail.yahoo.com
       yahoo.com                          MX         1   mx3.mail.yahoo.com
       yahoo.com                          MX         1   mx1.mail.yahoo.com
       yahoo.com                          MX         9   mta-v1.mail.yahoo.com
  • SIP: use a newer record for general-purpose mapping, SRV (RFC 2782)
  • mapping from service and transport protocol to one or more servers, including
    protocols
       _sip._tcp            SRV   0   0   5060   sip-server.cs.columbia.edu.
                            SRV   1   0   5060   backup.ip-provider.net.
       _sip._udp            SRV   0   0   5060   sip-server.cs.columbia.edu.
                            SRV   1   0   5060   backup.ip-provider.net.
  • allows priority (for back-up) and weight (for load balancing)

                                                                               May 2001
hgs/SIP Tutorial                                                                                                        28




Using DNS SRV for scalable load-balancing

                                                                           a.example.com
                                                                           _sip._udp SRV 0 0 a1.example.com
                                                                                     SRV 1 0 a2.example.com
                                                                                  a1.example.com, a2.example.com

                                                                                      a*@example.com




                                         s1.example.com




                                         s2.example.com                               b*@example.com
                   sip:bob@example.com                    sip:bob@a.example.com


                                         s3.example.com




                        _sip._udp SRV 0 0 s1.example.com                          b1.example.com, b2.example.com
                                  SRV 0 0 s2.example.com
                                  SRV 0 0 s3.example.com




                                                                                                                   May 2001
hgs/SIP Tutorial                                                                    29




Aside: SIP scaling

  • HTTP request director ↔ SIP client-based
  • HTTP randomized DNS (short TTL!) ↔ SRV weights and priorities
  • can’t just distribute requests randomly, since backend (registration)
    synchronization is needed
  • registration scaling: requests/second * 3600; e.g., 100 requests/second « 360,000
    users/server
  • major bottlenecks are logging and database updates
  • generally, higher registration than INVITE rates




                                                                               May 2001
hgs/SIP Tutorial                                 30




                   SIP protocol operation




                                            May 2001
hgs/SIP Tutorial                                                                     31




SIP requests and responses

  • text, not binary, format
  • look very similar to HTTP/1.1
  • requests and responses are similar except for first line
  • requests and responses can contain message bodies: typically session descriptions,
    but also ASCII or HTML




                                                                                May 2001
hgs/SIP Tutorial                                                                                               32




SIP syntax

                                request                             response

                   method URL SIP/2.0                     SIP/2.0 status reason
                   Via:                 SIP/2.0/ protocol host:port
                   From:                user <sip:from_user@source>




                                                                                         message header
                   To:                  user <sip:to_user@destination>
                   Call−ID:             localid@host
                   CSeq:                seq# method
                   Content−Length: length of body
                   Content−Type:        media type of body
                   Header:              parameter ;par1=value ;par2="value"
                        ;par3="value folded into next line"
                   blank line




                                                                                         message body
                   V=0
                   o= origin_user timestamp timestamp IN IP4 host
                   c=IN IP4 media destination address
                   t=0 0
                   m= media type port RTP/AVP payload types

                                                                               message



                                                                                                          May 2001
hgs/SIP Tutorial                                                              33




SIP syntax

  • field names and some tokens (e.g., media type) are case-insensitive
  • everything else is case-sensitive
  • white space doesn’t matter except in first line
  • lines can be folded
  • multi-valued header fields can be combined as a comma-list




                                                                         May 2001
hgs/SIP Tutorial                                                                         34




SIP methods

                   INVITE      initiate call
                   ACK         confirm final response
                   BYE         terminate (and transfer) call
                   CANCEL      cancel searches and “ringing”
                   OPTIONS     features support by other side
                   REGISTER    register with location service
                   INFO        mid-call information (ISUP)
                   COMET       precondition met
                   PRACK       provisional acknowledgement
                   SUBSCRIBE   subscribe to event
                   NOTIFY      notify subscribers
                   REFER       ask recipient to issue SIP request (call transfer)


                                                                                    May 2001
hgs/SIP Tutorial                                                                              35




SIP invitation and media negotiation

                   alice@wonderland.com       calls               bob@macrosoft.com

  INVITE sip:bob@macrosoft.com SIP/2.0                SIP/2.0 200 OK
  From: sip:alice@wonderland.com                      From: sip:alice@wonderland.com
  To: sip:bob@macrosoft.com                           To: sip:bob@macrosoft.com
  Call−ID: 31415@wonderland.com                       Call−ID: 31415@wonderland.com
  CSeq: 42 INVITE                                     CSeq: 42 INVITE
  Content−Type: application/sdp                       Content−Type: application/sdp
  v=0                                                 v=0
  o=user1 536 2337 IN IP4 h3.wonderland.com           o=user1 535 687637 IN IP4 m.macrosoft.com
  c=IN IP4 h3.wonderland.com                          c=IN IP4 m.macrosoft.com
  m=audio 3456 RTP/AVP 0 1                            m=audio 1200 RTP/AVP 1
  m=video 4000 RTP/AVP 38 39                          m=video 0 RTP/AVP

                                                      accept audio, decline video




                                                                                         May 2001
hgs/SIP Tutorial                                                     36




Tagging To

  • after forking and merging, hard to tell who responded
  • UAS responds with random tag added to disambiguate
       To: "A. G. Bell" <sip:agb@bell-telephone.com>
         ;tag=a48s
  • future requests are ignored if they contain the wrong tag




                                                                May 2001
hgs/SIP Tutorial                                              37




SIP call legs

  • call leg: From, To, Call-ID
  • requests from callee to caller reverse To and From
  • caller and callee keep their own CSeq space
  • either side can send more INVITEs or BYE




                                                         May 2001
hgs/SIP Tutorial                                                                                38




SIP responses

        Informational          Success       Redirection           Request Failure

   100 Trying             200 OK         300 Multiple Choices    400 Bad Request
   180 Ringing                           301 Moved Perm.         401 Unauthorized
   181 Call forwarded                    302 Moved Temp.         403 Forbidden
   182 Queued                            380 Alternative Serv.   404 Not Found
   183 Session Progress                                          405 Bad Method
                                                                 415 Unsupp. Content
                                                                 420 Bad Extensions
                                                                 486 Busy Here


                                                     500 Server Error        600 Busy Everwhere
                                                     501 Not Implemented     603 Decline
                                                     503 Unavailable         604 Doesn’t Exist
                                                     504 Timeout             606 Not Acceptable

                                                        Server Failure         Global Failure



                                                                                          May 2001
hgs/SIP Tutorial                                                         39




SIP response routing

  • requests are routed via URL
  • response traces back request route without proxy server state
  • forward to host, port in next Via
  • TCP: re-use connection if possible, create new one if needed
  • UDP: may send responses to same port as requests
Via: SIP/2.0/UDP server.domain.org:5060
  ;received=128.1.2.3




                                                                    May 2001
hgs/SIP Tutorial                                                                                                                 40




SIP response routing

alice@example.com                       bob_doe@yahoo.com                   bob@columbia.edu

                                                      Via: y1.yahoo.com
                   Via: a.example.com                 Via: a.example.com

                   INvITE

                   Via: a.example.com
                                                      Via: y1.yahoo.com
                                                      Via: a.example.com




                                                                                        Via: sip.columbia.edu
                                                                                        Via: y1.yahoo.com
                                                                                        Via: a.example.com
                                                            Via: sip.columbia.edu
                                                            Via: y1.yahoo.com
                                                            Via: a.example.com
                                                                                            Via: cs.columbia.edu
                                                                                            Via: sip.columbia.edu
                                                                                            Via: y1.yahoo.com
                                                                                            Via: a.example.com

                                                  bob@cs.columbia.edu

                                                                                                     200 OK

                                                                                            Via: cs.columbia.edu
                                                                                            Via: sip.columbia.edu
                                                                                            Via: y1.yahoo.com
                                                                                            Via: a.example.com

                                                                                                            bob@pc42.cs.columbia.edu




                                                                                                                            May 2001
hgs/SIP Tutorial                                                                                                               41




SIP spirals

                                                            INVITE sip:kelly@p4711.sales.acme.com SIP/2.0
                                                            Via: sales.acme.com;branch= h(info,alice,17,1,kelly@sales)
                                                            Via: acme.com;branch= h(info,alice,17,1,kelly@acme)
                                                            Via: sales.acme.com;branch= h(info,alice,17,1,bob@sales)
                                                            Via: acme.com;branch= h(info,alice,17,1,info)
                                                            Via: ph123.wonderland.com




                                                            INVITE sip:bob@sales.acme.com SIP/2.0
                                                            Via: acme.com;branch= h(info,alice,17,1,info)
                                                            Via: ph123.wonderland.com
                   INVITE sip:info@acme.com SIP/2.0
                   To: sip:info@acme.com
                   Via: ph123.wonderland.com
                                                               acme.com                       sales.acme.com




                                                               INVITE sip:kelly@sales.acme.com SIP/2.0
                                                               Via: acme.com;branch=
                                                                                   h(info,alice,17,1,kelly@acme)
                                                               Via: sales.acme.com;branch= h(info,alice,17,1,bob@sales)
                                                               Via: acme.com;branch= h(info,alice,17,1,info)
                                                               Via: ph123.wonderland.com
                   alice@ph123.wonderland.com




                                                                INVITE sip:kelly@acme.com SIP/2.0
                                                                Via: sales.acme.com;branch=
                                                                                         h(info,alice,17,1,bob@sales)
                                                                Via: acme.com;branch= h(info,alice,17,1,bob@sales)
                      branch= h(To,From,Call−ID,CSeq,URL)       Via: ph123.wonderland.com




                                                                                                                          May 2001
hgs/SIP Tutorial                                                  42




Forcing request paths

  • usually, bypass proxies on subsequent requests
  • some proxies want to stay in the path → call-stateful:
     – firewalls
     – anonymizer proxies
     – proxies controlling PSTN gateways
  • use Record-Route and Route




                                                             May 2001
hgs/SIP Tutorial                                                                                        43




Request routing

       A                                  PA                          PB                            B

                   INVITE PB                   INVITE PB                   INVITE B
                   Contact: A                  Contact: A                  Contact: A
                                               Record−Route: PA            Record−Route: PB, PA

                   200 OK                      200 OK                      200 OK
                   Contact: B                  Contact: B                  Contact: B
                   Record−Route: PB, PA        Record−Route: PB, PA        Record−Route: PB, PA


                   ACK PA                      ACK PB                      ACK B
                   Route: PB,B                 Route: B


                   BYE A                       BYE A                       BYE A
                                               Route: A;maddr=PB           Route: A;maddr=PB
                                                                           Route: A;maddr=PA
                                                                           Route: A;maddr=A




                                                                                                  May 2001
hgs/SIP Tutorial                                                                                                44




SIP request forking

                                                                       macrosoft.com

                                                                                   bob@b.macrosoft.com


           a.wonderland.com                                   INVITE bob@b


                              INVITE sales@macrosoft.com
                                                                      CANCEL bob@c


                                                                      INVITE carol@c
                                                                                   carol@c.macrosoft.com

                                             ACK                  200 OK



                                  BYE carol@c.macrosoft.com


                                            200 OK




                                                                                                           May 2001
hgs/SIP Tutorial                                                                      45




SIP sequential request forking

Use q values to govern order of sequential search:



                                                q=1.0

                                            1            302 Moved temporarily


                                                    2      q=0.7
                    INVITE
                                                 486 Busy here


                                                            3
                                                                q=0.1
                                                200 OK




                                                                                 May 2001
hgs/SIP Tutorial                                                        46




SIP request forking

  • branches tried in sequence or parallel (or some combination)
  • recursion: may try new branches if branch returns 3xx
  • return best final answer = lowest status code
  • forward provisional responses




                                                                   May 2001
hgs/SIP Tutorial                                                                              47




Parallel forking call flow

                   alice              bob@portal        bob@home              bob@work

                       INVITE bob@portal


                               100 Trying


                                                                180 Ringing


                                            200 OK
                                            Contact: bob@home

                             200 OK
                                             CANCEL bob@work


                                                                200 OK (CANCEL)

                                                                487 Cancelled (INVITE)

                                             ACK bob@work


                           ACK bob@home




                   UAC                proxy server          UAS                 UAS




                                                                                         May 2001
hgs/SIP Tutorial                                                        48




SIP transport issues

  • SIP operates over any packet network, reliable or unreliable
  • choices:
    UDP: most common
       – low state overhead
       – small max. packet size
    TCP: can combine multiple signaling flows over one link
       – use with SSL
       – connection setup overhead
       – HOL blocking for trunks
    SCTP: new protocol
       – no HOL blocking
       – fallback address (but SRV provides this already)
       – connection setup overhead


                                                                   May 2001
hgs/SIP Tutorial                                                                                      49




Transport reliability for all but INVITE
                                            client                         UAS, proxy

                                                     BYE
                                       500 ms

     • used for BYE, OPTIONS,
                                          1s
       SUBSCRIBE, NOTIFY, . . .
     • 1xx sent by UAS or proxy           2s
                                          4s
       only if no final answer ex-         4s
                                           ...
       pected within 200 ms                                                       no more than
                                                                                  11 packets
     • if provisional response, re-
       transmit with T 2 (4) seconds                  200, 4xx, 5xx, 6xx




                                                                                                 May 2001
hgs/SIP Tutorial                                                                              50




INVITE reliability

  • INVITE is special – long time
    between request and final re-                       Initial
    sponse                                                   −
                                                           INVITE
  • 100 (by proxy) indicates re-    T1*2
                                          n
                                                       Calling
                                    INVITE
    quest has been received
                                                           1xx
  • proxy usually forwards 1xx
                                       status                        1xx 7 INVITE sent
    from all branches                  ACK
                                                   Call proceeding

  • only retransmit until 100
                                                           status
                                                           ACK

  • ACK confirms receipt of final        status
                                       ACK
                                                     Completed
    response                           event
                                    request sent




                                                                                         May 2001
hgs/SIP Tutorial                                     51




                   Other signaling approaches




                                                May 2001
hgs/SIP Tutorial                                                                     52




Differences to classical signaling

                   name          examples      network          “channel”
                   in-band       E&M, DTMF     same             same
                   out-of-band   ISUP, Q.931   different        different
                   IP            SIP           typically same   different
IP signaling meets media only at end systems, while PSTN out-of-band intersects at
every switch




                                                                               May 2001
hgs/SIP Tutorial                                                                 53




Aside: Alternative architecture: master-slave

  • master-slave: MGC (media gateway controller) controls one or more gateways
  • allows splitting of signaling and media functionality
  • “please send audio from circuit 42 to 10.1.2.3”
  • uses MGCP (implemented) or Megaco/H.248 (standardized, but just beginning to
    be implemented)
  • gateway can be residential
  • basis of PacketCable NCS (network control system) architecture
  • service creation similar to digital PBX or switch
  • end system has no semantic knowledge of what’s happening
  • −→ can charge for caller id, call waiting


                                                                            May 2001
hgs/SIP Tutorial                                                                                     54




MGCP/SIP architecture

                                                                                          STP

                    call agent           SIP    call agent      SIP               TCAP
                   MG controller               MG controller            SS7 gwy                  SCP
                                       H.323                    H.323              ISUP




                          MGCP/Megaco                          MGCP/Megaco                SS7


           RGW


                                                                 TGW              PSTN
                                   Internet
                                                          RTP
           RGW




                                                                                                May 2001
hgs/SIP Tutorial                                                     55




Extending SIP

                   extension         behavior      determine?
                   new headers       ignored       –
                   new headers       mandatory     Supported
                   new method                      OPTIONS
                   new body type                   Accept
                   new status code   class-based
                   new URL type                    ?




                                                                May 2001
hgs/SIP Tutorial                                                                     56




SIP extensions and feature negotiation

  • if crucial, mark with “Require: feature”
  • IANA-registered features are simple names, private features use reverse domain
    names
  • indicate features supported in Supported:
       C->S:       INVITE sip:watson@bell-telephone.com SIP/2.0
                   Require: com.example.billing
                   Supported: 100rel
                   Payment: sheep_skins, conch_shells

       S->C:       SIP/2.0 420 Bad Extension
                   Unsupported: com.example.billing

       S->C:       SIP/2.0 421 Extension Required
                   Require: 183




                                                                              May 2001
hgs/SIP Tutorial                             57




                   User identification




                                        May 2001
hgs/SIP Tutorial                                                         58




Standard call/caller identification

Request-URI: next hop
To: logical call destination
From: logical call origin
Organization: organization of caller/callee
Subject: subject of call
Call-Info: additional information about caller or callee
       Call-Info:
         <http://wwww.example.com/alice/photo.jpg> ;purpose=icon,
         <http://www.example.com/alice/> ;purpose=info

User-Agent: make and model of user agent



                                                                    May 2001
hgs/SIP Tutorial                                                      59




Additional call information

Priority: call priority: emergency, urgent, normal, non-urgent
Alert-Info: render instead of ring tone
       Alert-Info: <http://wwww.example.com/sounds/moo.wav>
In-Reply-To: call-id being returned




                                                                 May 2001
hgs/SIP Tutorial                                                                60




draft-ietf-sip-privacy

  • To/headerFrom are chosen by end system « may lie
  • need privacy indications similar to caller id
       Remote-Party-ID: "John Doe"
                        <sip:jdoe@foo.com>;party=calling;
                        id-type=subscriber;privacy=full
  • screen=yes: was verified by proxy
  • type can be subscriber, user, alias, return (calls), term (terminal)
  • may add geographic user location




                                                                           May 2001
hgs/SIP Tutorial                       61




                   SIP services




                                  May 2001
hgs/SIP Tutorial                                                    62




Invitation modes

                     signaling              media
                                 unicast     multicast
                     unicast     telephony multicast session
                     multicast   reach first dept. conference
« SIP for all modes, SAP/SDP also for multicast/multicast




                                                               May 2001
hgs/SIP Tutorial                                                                    63




SIP-based services

Call forwarding: basic INVITE behavior (proxy/redirect)
Call transfer: REFER method (see later)
Call hold: set media address to 0.0.0.0 – can be done individually per media
Caller id: From, plus extensions
DTMF carriage: carry as RTP payload (RFC 2833)
Calling card: B2BUA + voice server
Voice mail: UA with special URL(s) + possibly RTSP




                                                                               May 2001
hgs/SIP Tutorial                                                     64




Call transfer


                                                           B1


                       3   BYE A




                                     1   REFER B2
                                         Referred−By: B1
                   A




                               2   INVITE B2
                                   Referred−By: B1

                                                           B2




                                                                May 2001
hgs/SIP Tutorial                                                                 65




IVR and VoiceXML

                               A@
                               B@
                               C@   SQL, LDAP




                   SIP                           SIP UA
                                    REFER       VoiceXML
                                    200
                                                                 VoiceXML
                                                                  scripts
                                            text
                         RTP


                                                          text




                                                                            May 2001
hgs/SIP Tutorial                                                                  66




Third-party call control


                                           RTP




                                                                   200
                       200                                    3
                                                  INVITE
                         2                    SDP (from 2)               6
                                 5
                                     ACK
                                     SDP (from 4)             4


                   INVITE
                    no SDP   1
                                              SIP            ACK

                                        SIP




                                                                             May 2001
hgs/SIP Tutorial                                                                      67




SIP billing/charging

 What for?                                   How?
     • transport « resource reservation       • resource reservation protocols
       protocol                               • SIP-in-DIAMETER approach
     • SIP services (call processing) «       • server log files
       authentication
     • PSTN gateway services
     • media server services (translation,
       storage)




                                                                                 May 2001
hgs/SIP Tutorial                          68




                   Security issues




                                     May 2001
hgs/SIP Tutorial                                        69




Threats

  • spoofing From in REGISTER: call redirection
  • spoofing From in INVITE: bypass call filtering
  • snooping media packets
  • billing confusion (identifier munging)
  • denial-of-service attacks




                                                   May 2001
hgs/SIP Tutorial                                                                      70




SIP security

  layer/mechanism    approach       characteristics
  network layer      IPsec          adjacent nodes, all or nothing, hard to configure
  transport layer    TLS            adjacent nodes, all or nothing
  SIP INVITE         basic/digest   shared secrets with random parties
  SIP REGISTER       basic/digest   securing headers?
  SIP general        S/MIME         in progress
Basic (plaintext password) and digest (challenge-response) are very similar to HTTP
security mechanisms.




                                                                                May 2001
hgs/SIP Tutorial                                                                 71




SIP authentication

Basic: include plain-text password in request, immediately or after 401
    (Unauthorized) or 407 (Proxy Authorization) response
Digest: challenge-response with shared secret
Certificate: sign non-Via parts of request headers, body with PGP, PKCS #7
SSL, SSH: but only for TCP
  • but: need more elaborate cryptographic capability indication in SDP




                                                                            May 2001
hgs/SIP Tutorial                                                    72




Basic authentication

  • Challenge by UAS:
       SIP/2.0 401 Unauthorized
       WWW-Authenticate: Basic realm="business"
  • client responds with
       INVITE sip:alice@wonderland.com SIP/2.0
       CSeq: 2 INVITE
       Authorization: QWxhZGRpbjpvcGVuIHNlc2FtZQ==
       where authorization is base64(userid:password)
  • usually caller → callee, but challenge can be in request




                                                               May 2001
hgs/SIP Tutorial                                             73




Digest authentication

  • A calls B and fails:
       SIP/2.0 401 Unauthorized
       Authenticate: Digest realm="GW service",
          domain="wcom.com",
          nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359",
          opaque="42", stale="FALSE", algorithm="MD5"
  • A tries again:
       INVITE sip:UserB@ss1.wcom.com SIP/2.0
       Authorization:Digest username="UserA",
          realm="GW service",
          nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359",
          opaque="42", uri="sip:UserB@ss1.wcom.com",
          response="42ce3cef44b22f50c6a6071bc8"




                                                        May 2001
hgs/SIP Tutorial                                      74




Digest authentication

username: user authenticating herself
realm: several per user, used also for display
nonce: copied into Authorization
opaque: copied into Authorization
uri: original request URL
response: 32 hex digits:
    KD (H(A1 ), nonce-value : H(A2 ))
    for MD5: H(H(A1 ) : nonce-value : H(A2 )))
    where A1 = username : realm : passwd
    A2 = method : uri



                                                 May 2001
hgs/SIP Tutorial                             75




                   Quality of Service




                                        May 2001
hgs/SIP Tutorial                                                          76




Quality of service

  • SIP and data paths disjoint « SIP can’t reserve resources
  • but: SDP may provide information to end systems on desired QoS
  • SDP contains range of codecs to allow mid-call adaptation




                                                                     May 2001
hgs/SIP Tutorial                                                               77




Interaction with resource reservation

avoid “fast busy” after ringing « interleave
                                       INVITE alice@ieee.org

                                       183 Session Progress (SDP)


                                                PRACK


                                            200 OK (PRACK)


                                               reservation


                                                COMET


                                             200 (COMET)


                                              180 Ringing


                                                PRACK


                                            200 OK (PRACK)


                                            200 OK (INVITE)


                                             ACK (INVITE)
                                 UAC                                UAS




                                                                          May 2001
hgs/SIP Tutorial                                 78




                   SIP Caller Preferences




                                            May 2001
hgs/SIP Tutorial                                                                   79




Preferences

callee: scripts, CPL, REGISTER advice in Contact, . . .
caller: help guide routing (“no home number”) and order of attempts when forking
     (“try videophone first, then phone, then answering service”)
“caller proposes, callee disposes”




                                                                             May 2001
hgs/SIP Tutorial                                            80




Extended SIP Contact header

 q                 location preference
 class             business, residence
 description       show to caller
 duplex            full or half-duplex
 feature           call handling features
 language          languages spoken
 media             audio, video, text/numeric, . . .
 mobility          fixed or mobile
 priority          “only in case of emergency”
 scheme            URL schemes (tel, http, . . . )
 service           IP, PSTN, ISDN, pager, . . .




                                                       May 2001
hgs/SIP Tutorial                                              81




Contact example

q=quality gives preference.
SIP/2.0 302 Moved temporarily
Contact: sip:hgs@erlang.cs.columbia.edu
 ;action=redirect ;service=IP,voice-mail
 ;media=audio ;duplex=full ;q=0.7;
Contact: tel:+1-415-555-1212 ; service=ISDN
 ;mobility=fixed ;language=en,es,iw ;q=0.5
Contact: tel:+1-800-555-1212 ; service=pager
 ;mobility=mobile
 ;duplex=send-only;media=text; q=0.1; priority=urgent;
 ;description="For emergencies only"
Contact: mailto:hgs@cs.columbia.edu




                                                         May 2001
hgs/SIP Tutorial                                                              82




Accept-Contact and Reject-Contact

  • determine order of contacting users:
            Accept-Contact: sip:sales@acme.com ;q=0,
            ;media="!video" ;q=0.1,
            ;mobility="fixed" ;q=0.6,
            ;mobility="!fixed" ;q=0.4
       « “avoid connecting me to sales; I prefer a landline phone; try
  • Reject-Contact: rule out destinations
            Reject-Contact: ;class=personal




                                                                         May 2001
hgs/SIP Tutorial                                             83




Request-Disposition

  • proxy or redirect
  • cancel ringing second phone after first picked up?
  • allow forking?
  • search recursively?
  • search sequentially or in parallel?
  • queue the call?
Request-Disposition: proxy, recurse, parallel




                                                        May 2001
hgs/SIP Tutorial                         84




     SIP presence, events and instant
               messaging



                                    May 2001
hgs/SIP Tutorial                                                                85




SIP presence architecture

                                                                  presentity
                                                                     bob
                                    macrosoft.com
                                     presence server
                                                                    PUA
                                          PA           REGISTER
           alice@
        example.com
                        SUBSCRIBE
                   UA                                               PUA
                         NOTIFY

                                        registrar

                                                                    PUA

                                                                     PA
                                        NOTIFY



                                                                           May 2001
hgs/SIP Tutorial                                                                  86




SIP presence components

Presentity: logical entity being subscribe to, e.g., alice@wonderland.com, with
    several agents
Registrar: receives REGISTER requests
Presence user agent (PUA): generates REGISTER, but no SUBSCRIBE or
    NOTIFY « any non-presence-aware SIP software
Presence agent: receive SUBSCRIBE, generate NOTIFY
Presence server: SIP proxy + PA
Presence client: SIP UA + PA




                                                                             May 2001
hgs/SIP Tutorial                                                             87




SIP presence protocol

                    subcriber                  presentity, PA
                     alice                         bob
                                SUBSCRIBE bob
                                Event: presence
                                From: alice
                                To: bob


                                   200 OK

                                NOTIFY alice            bob available



                                   200 OK

                                NOTIFY alice            bob not
                                                        available

                                   200 OK




                                                                        May 2001
hgs/SIP Tutorial                                                          88




SIP SUBSCRIBE example

SUBSCRIBE sip:bob@macrosoft.com SIP/2.0
Event: presence
To: sip:bob@macrosoft.com
From: sip:user@example.com
Contact: sip:user@userpc.example.com
Call-ID: knsd08alas9dy@3.4.5.6
CSeq: 1 SUBSCRIBE
Expires: 3600
Content-Length: 0

  • Forked to all PUAs that have REGISTERed with method SUBSCRIBE.
  • 200 (OK) response contains current state.




                                                                     May 2001
hgs/SIP Tutorial                                                       89




SIP NOTIFY example

NOTIFY sip:user@userpc.example.com
To: sip:user@example.com
From: sip:alice@wonderland.com
Call-ID: knsd08alas9dy@3.4.5.6
CSeq: 1 NOTIFY
Content-Type: application/xpidf+xml

<?xml version="1.0"?>
<!DOCTYPE presence
 PUBLIC "-//IETF//DTD RFCxxxx XPIDF 1.0//EN" "xpidf.dtd">
<presence>
  <presentity uri="sip:alice@wonderland.com;method="SUBSCRIBE">
    <atom id="779js0a98">
      <address uri="sip:alice@wonderland.com;method=INVITE">
       <status status="closed"/>
      </address>
    </atom>
  </presentity>
</presence>


                                                                  May 2001
hgs/SIP Tutorial                                                                        90




SIP events

  • single-valued (light-switch) to complex (CD changer) to multi-valued
    (temperature samples)
  • both built-in and mediated (X10)
  • often combined with audio/video in same system: security, industrial control,
    home entertainment
  • notification rates vary « gradual transition to continuous media
                                 temperature      process             packet
                   IR detector      sensor        control           audio/video

                      0.01          0.1              1              10            100
                                          events (packets) / second
  • Event describes event type


                                                                                   May 2001
hgs/SIP Tutorial                                                    91




Example home architecture




                   SUBSCRIBE door@alice.home.net

                   NOTIFY alice@work.com
                                                   SIP proxy
 SIP user agent    DO light@alice.home.net          (RGW)

                   INVITE camera@alice.home.net



(Work with Telcordia)



                                                               May 2001
hgs/SIP Tutorial                                                     92




SIP IM

  • send text or any other MIME type
  • either as SDP-initiated session or as individual messages
  • use MESSAGE




                                                                May 2001
hgs/SIP Tutorial                                   93




                   Programming SIP Services




                                              May 2001
hgs/SIP Tutorial                                                 94




Programming SIP services

                   safety              language?   party?
 SIP-cgi           same as scripting   any         callee
 servlets          same as Java        Java        callee
 CPL               very                XML         both
 applets           same as Java        Java        caller




                                                            May 2001
hgs/SIP Tutorial                                                          95




Programming services

  • “caller proposes, callee disposes, administrator decides”
  • web = static pages −→ cgi-bin −→ Java
  • “if somebody is trying to call for the 3rd time, allow mobile”
  • “try office and lab in parallel, if that fails, try home”
  • “allow call to mobile if I’ve talked to person before”
  • “if on telemarketing list, forward to dial-a-joke”
  • phone: CTI = complex, not generally for end users




                                                                     May 2001
hgs/SIP Tutorial                                                                       96




cgi-bin for SIP Servers

  • extend SIP user/proxy/redirect server functionality without changing server
    software
  • server manages retransmission, loop detection, authentication, . . .
  • Perl, Tcl, VB scripts




                                                                                  May 2001
hgs/SIP Tutorial                                                                      97




Examples


     • Call forward on busy/no answer       • Third-party registration control
     • Administrative screening (firewall)   • Calendarbook access
     • Central phone server                 • Client billing allocation (lawyer’s
     • Intelligent user location              office)
                                            • End system busy
                                            • Phone bank        (call    distribu-
                                              tion/queueing)




                                                                                 May 2001
hgs/SIP Tutorial                                    98




cgi Script Functionality

called for any method except ACK or CANCEL
  • proxying of requests
  • returning responses
  • generate new requests
once for each request or response or timeout




                                               May 2001
hgs/SIP Tutorial                                                          99




cgi Script Mechanism

environment variables: headers, methods, authenticated user, . . .
stdin: body of request
stdout: new request, meta-requests:
     • CGI- requests for proxying, response, default action
     • script cookie for state across messages
     • reexecute on all, final response, never




                                                                     May 2001
hgs/SIP Tutorial                                      100




Cgi Example: Call Forwarding

use DB_File;
sub fail {
    my($status, $reason) = @_;
    print "SIP/2.0 $status $reasonnn";
    exit 0;
}

tie %addresses, ’DB_File’, ’addresses.db’
    or fail("500", "Address database failure");
$to = $ENV{’HTTP_TO’};
if (! defined( $to )) {
    fail("400", "Missing Recipient");
}




                                                  May 2001
hgs/SIP Tutorial                                           101




$destination = $addresses{$to};

if (! defined( $destination )) {
    fail("404", "No such user");
}

print "CGI-PROXY-REQUEST-TO $destination SIP/2.0n";
print "CGI-Reexecute-On: nevernn";
untie %addresses; # Close db file




                                                       May 2001
hgs/SIP Tutorial                                 102




The Call Processing Language

                        Jonathan Lennox
                       Columbia University
                   lennox@cs.columbia.edu



                          May 5, 2000




                                             May 2001
hgs/SIP Tutorial                                               103




Purpose

Allow users to create simple Internet telephony services
Features:
  • Creatable and editable by simple graphical tools
  • Independent of signalling protocol
  • Safe to run in servers




                                                           May 2001
hgs/SIP Tutorial                                                                   104




Abstract structure

                                                                         busy
                                    location            proxy            timeout
                                      url: sip:jones@     timeout: 10s   failure
Call               String-switch        example.com
                     field: from
                   match:
                    *@example.com
                   otherwise
                                    location
                                      url: sip:jones@
                                        voicemail.      redirect
                                        example.com
                                      merge: clear




                                                                            May 2001
hgs/SIP Tutorial                                           105




Abstract structure (cont)

  • Nodes and outputs — “boxes” and “arrows”
  • Nodes have parameters
  • Start from single root “call” node
  • Progress down tree of control
  • May invoke sub-actions
  • Follow one output of each node, based on outcome
  • Continue until we get to a node with no outputs




                                                       May 2001
hgs/SIP Tutorial                                           106




Textual representation

<cpl>
  <subaction id="voicemail">
    <location url="sip:jones@voicemail.example.com">
      <redirect />
    </location>
  </subaction>




                                                       May 2001
hgs/SIP Tutorial                                                107




Textual representation
  <incoming>
    <address-switch field="origin" subfield="host">
      <address subdomain-of="example.com">
        <location url="sip:jones@example.com">
          <proxy>
            <busy> <sub ref="voicemail" /> </busy>
            <noanswer> <sub ref="voicemail" /> </noanswer>
            <failure> <sub ref="voicemail" /> </failure>
          </proxy>
        </location>
      </address>
      <otherwise>
        <sub ref="voicemail" />
      </otherwise>
    </address-switch>
  </incoming>
</cpl>




                                                             May 2001
hgs/SIP Tutorial                                                  108




Textual representation

  • Represent scripts as XML documents
  • Incoming, outgoing scripts are separate top-level tags
  • Nodes and outputs are both tags
  • Parameters are tag attributes
  • Multiple outputs to one input represented by subactions




                                                              May 2001
hgs/SIP Tutorial                     109




Switch nodes

Switch nodes make decisions.
Structure:
<type-switch field=var>
    <type condition1="value1">
        action1
    </type>
    <type condition2="value2">
        action2
    </type>
    <not-present>
        action3
    <otherwise>
        action4
    </otherwise>
</type-switch>




                                 May 2001
hgs/SIP Tutorial                                                                       110




Address Switches: address

Switch based on textual strings:
is: (exact string match)
contains: substring match: only for “display”
subdomain-of: domain match: only for “host”, “tel”
Fields are “origin,” “destination,” “original-destination”, with subfields “address-type,”
“user,” “host,” “port,” “tel,” “display”




                                                                                   May 2001
hgs/SIP Tutorial                                        111




String Switches: string

Switch based on textual strings, with conditions:
is: exact string match
contain: substring match
Fields: subject, organization, user-agent




                                                    May 2001
hgs/SIP Tutorial                                                        112




Time switches: time

Switch based on the current time at the server.
timezone: which timezone the matching should apply in
Conditions:
  • year, month, date, day, timeofday
  • each condition is a list of ranges: a1 − b1 , a2 − b2 , . . .
  • must fall within a range of all specified conditions




                                                                    May 2001
hgs/SIP Tutorial                                        113




Time switches: examples

<time month="12" date="25" year="1999">
   December 25th, 1999, all day
<time month="5" date="4">
   May 4th, every year, all day
<time day="1-5" timeofday="0900-1700">
   9 AM – 5 PM, Monday through Friday, every week




                                                    May 2001
hgs/SIP Tutorial                                                              114




Time switches: examples

<time timeofday="1310-1425,1440-1555,1610-1725"
   day="2,4">
   1:10 – 2:25 PM, 2:40 – 3:55 PM, and 4:10 – 5:25 PM, Tuesdays and Thursdays,
   every week
<time date="1-7" day="1">
   The first Monday of every month, all day




                                                                          May 2001
hgs/SIP Tutorial                                                                 115




Location nodes

  • A number of CPL actions (proxy, redirect) take locations
  • Location nodes let you specify them
  • These are full-featured nodes because we might want to make decisions based on
    outcomes of location lookups, or cascade locations
  • A CPL script has an implicit global list of locations
  • Location nodes can add to this list, or clear the list




                                                                             May 2001
hgs/SIP Tutorial                                                                  116




Simple location nodes: location

Specify a location explicitly.
url: explicitly specified location
clear: clear earlier location values
Only one output; cannot fail. Don’t use an explicit output node in the URL.




                                                                              May 2001
hgs/SIP Tutorial                                                                   117




Location lookup nodes: lookup

Specify a location abstractly, by where it should be looked up.
Parameters:
source: URL (ldap, http (CGI), etc) or non-URL source (“registration”) to search for
    locations
timeout: time to wait
use/ignore: • use: caller-preferences parameters to use
      • ignore: caller-preferences parameters to disregard
merge:
Outputs: success, notfound, failure



                                                                               May 2001
hgs/SIP Tutorial                                                                      118




Location removal nodes: remove-location

Remove locations from the location set, based on caller preferences/callee capabilities.
Has the same effect as a “Reject-Contact” header.
param: caller preference parameters to apply
value: values of parameters specified in “param”
location: caller preference location to apply




                                                                                  May 2001
hgs/SIP Tutorial                                                                       119




Signalling Actions: proxy

Proxy the call to the currently-specified set of locations, and automatically select one
“best” final response.
timeout: time before giving up on the proxy attempt
recurse: recurse on redirect responses to the proxy attempt?
ordering: try location in parallel, sequential, first-only
  • Outputs: busy, noanswer, failure
  • If the proxy attempt was successful, script terminates




                                                                                   May 2001
hgs/SIP Tutorial                                                                        120




Signalling Actions: redirect

Redirect the call to the currently-specified set of locations. This has no specific
parameters, and causes the script to terminate.




                                                                                    May 2001
hgs/SIP Tutorial                                                                       121




Signalling Actions: reject

Reject the call attempt. This causes the script to terminate.
status: “busy,” “notfound,” “reject,” or “error”, or a 4xx, 5xx, or 6xx code (for SIP).
reason: string explaining the failure.




                                                                                   May 2001
hgs/SIP Tutorial                                                    122




Non-signalling action: mail

Notify a user of something through e-mail.
url: the address to contact, including any header parameters.




                                                                May 2001
hgs/SIP Tutorial                                      123




Non-signalling action: log

Store a record of the current call in a log.
name: the name of the log this should be stored
omment: a string explaining the log entry
Outputs: success, failure




                                                  May 2001
hgs/SIP Tutorial                                                                       124




Subactions

  • XML syntax defines a tree; we want CPLs to be represented as directed acyclic
    graphs.
  • Subactions are defined at the top level of the script, outside other actions.
  • for acyclicity, top-level actions and subactions may only call subactions which
    were defined earlier in the script.
  • Anywhere a node is expected, you can instead have a sub tag, with a ref
    parameter which refers to a subaction’s id.




                                                                                   May 2001
hgs/SIP Tutorial                                       125




Example: Call Redirect Unconditional

<cpl>
  <incoming>
    <location url="sip:smith@phone.example.com">
      <redirect />
    </location>
  </incoming>
</cpl>




                                                   May 2001
hgs/SIP Tutorial                                            126




Example: Call Forward Busy/No Answer

<cpl>
  <subaction id="voicemail">
    <location url="sip:jones@voicemail.example.com" >
      <proxy />
    </location>
  </subaction>

  <incoming>
    <location url="sip:jones@jonespc.example.com">
       <proxy timeout="8s">
         <busy>
         </busy>
         <noanswer>
           <sub ref="voicemail" />
         </noanswer>
       </proxy>
    </location>
  </incoming>
</cpl>




                                                        May 2001
hgs/SIP Tutorial                                                   127




Example: Call Screening

<cpl>
  <incoming>
    <address-switch field="origin" subfield="user">
       <address is="anonymous">
          <reject status="reject"
                  reason="I don’t accept anonymous calls" />
       </address>
    </address-switch>
  </incoming>
</cpl>




                                                               May 2001
hgs/SIP Tutorial                                                128




Example: Time-of-day Routing

<?xml version="1.0" ?>
<!DOCTYPE call SYSTEM "cpl.dtd">

<cpl>
  <incoming>
    <time-switch timezone="US/Eastern">
       <time day="1-5" timeofday="0900-1700">
         <lookup source="registration">
           <success>
             <proxy />
           </success>
         </lookup>
       </time>
       <otherwise>
         <location url="sip:jones@voicemail.example.com">
           <proxy />
         </location>
       </otherwise>
    </time-switch>
  </incoming>
</cpl>




                                                            May 2001
hgs/SIP Tutorial                                                                129




Example: Non-call Actions

<?xml version="1.0" ?>
<!DOCTYPE call SYSTEM "cpl.dtd">

<cpl>
  <incoming>
    <lookup source="http://www.example.com/cgi-bin/locate.cgi?user=jones"
             timeout="8">
       <success>
         <proxy />
       </success>
       <failure>
         <mail url="mailto:jones@example.com&Subject=lookup%20failed" />
       </failure>
    </lookup>
  </incoming>
</cpl>




                                                                            May 2001
hgs/SIP Tutorial                  130




SIP for Third-Generation Wireless
            Networks



                              May 2001
hgs/SIP Tutorial                                                          131




3G networks

  • successor to 2G mobile networks: GSM (TDMA) and IS-95 (CDMA) in 900/1800
    MHz range
  • 2.5G: GSM −→ GPRS −→ EDGE
  • use different air interfaces in 2 GHz range: W-CDMA, CDMA 2000, TD-CDMA
  • 3GPP standardizes for W-CDMA (GSM follow-on), while 3GPP2 does CDMA
    2000
  • identified by releases (1999, R4, R5)




                                                                      May 2001
hgs/SIP Tutorial                                                                    132




3G and VoIP

  • GPRS not suitable for VoIP: low bandwidth, high delay (500-600 ms RTT)
  • initially (R4), CS voice to base station, then ATM/IP packets
  • later (R5), in Internet multimedia (IM) subsystem « IP to UE (user equipment)
  • uses AMR audio codec, with variable rate of 4.75 to 12.2 kb/s, or GSM HR or EFR
  • UTRAN delays: see TR 25.932




                                                                              May 2001
hgs/SIP Tutorial                                                                    133




Signaling in 3GPP IM subsystem

Uses SIP for session setup and defines new entities:
Proxy CSCF: first point of contact in visited network; finds the user’s home network
    and provide some translation, security and authorization functions
Serving CSCF: controls sessions, acts as registrar and triggers and executes services.
    Accesses the user’s profile; can be located in the home or visited network.
Interrogating CSCF: first point of contact in home network. It assigns the serving
    CSCF, contacts the HSS and forwards SIP request.




                                                                                May 2001
hgs/SIP Tutorial                                                                                       134




3G SIP registration


                                             mobility management
                                                    signaling




                   serving                   interrogating                    interrogating
                    CSCF

                   proxy                                                home IM domain


                                                                   registration signaling (SIP)_



                             visited IM domain



                                                                                                   May 2001
hgs/SIP Tutorial                                                            135




Differences to “standard” SIP

  • requires REGISTER before making call
  • INVITE uses authentication information provided by REGISTER « Path header
  • always visit I/P/S for “home” services
  • compression on link from UE to P-CSCF




                                                                        May 2001
hgs/SIP Tutorial                                                               136




RFCs

 draft-ietf-sip-rfc2543bis-03   base protocol spec
 RFC 3087                       Control of Service Context using SIP Request-URI
 RFC 3050                       Common Gateway Interface for SIP
 RFC 2916                       E.164 number and DNS
 RFC 2833                       RTP Payload for DTMF Digits, Telephony Tones and
                                Telephony Signals
 RFC 2806                       URLs for Telephone Calls
 RFC 2543                       SIP: Session Initiation Protocol




                                                                           May 2001
hgs/SIP Tutorial                                             137




For more information. . .

SIP: http://www.cs.columbia.edu/sip
SDP: http://www.cs.columbia.edu/˜hgs/internet/sdp.html
RTP: http://www.cs.columbia.edu/˜hgs/rtp
Papers: http://www.cs.columbia.edu/IRT




                                                         May 2001

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to VoIP using SIP
Introduction to VoIP using SIPIntroduction to VoIP using SIP
Introduction to VoIP using SIP
Kundan Singh
 
Session Initiation Protocol - In depth analysis
Session Initiation Protocol - In depth analysisSession Initiation Protocol - In depth analysis
Session Initiation Protocol - In depth analysis
chinmaypadhye1985
 
Sip call flows all cases ccmigration
Sip call flows all cases ccmigrationSip call flows all cases ccmigration
Sip call flows all cases ccmigration
coolrahul28
 
VoIP and multimedia networking
VoIP and multimedia networkingVoIP and multimedia networking
VoIP and multimedia networking
sangusajjan
 

Was ist angesagt? (20)

Introduction into SIP protocol
Introduction into SIP protocolIntroduction into SIP protocol
Introduction into SIP protocol
 
Indroduction to SIP
Indroduction to SIPIndroduction to SIP
Indroduction to SIP
 
Sip Detailed , Call flows , Architecture descriptions , SIP services , sip se...
Sip Detailed , Call flows , Architecture descriptions , SIP services , sip se...Sip Detailed , Call flows , Architecture descriptions , SIP services , sip se...
Sip Detailed , Call flows , Architecture descriptions , SIP services , sip se...
 
Introduction to VoIP using SIP
Introduction to VoIP using SIPIntroduction to VoIP using SIP
Introduction to VoIP using SIP
 
Session Initiation Protocol - In depth analysis
Session Initiation Protocol - In depth analysisSession Initiation Protocol - In depth analysis
Session Initiation Protocol - In depth analysis
 
Session initiation protocol SIP
Session initiation protocol SIPSession initiation protocol SIP
Session initiation protocol SIP
 
Sip crash course
Sip crash courseSip crash course
Sip crash course
 
Sip call flows all cases ccmigration
Sip call flows all cases ccmigrationSip call flows all cases ccmigration
Sip call flows all cases ccmigration
 
Session initiation protocol
Session initiation protocolSession initiation protocol
Session initiation protocol
 
Session Initiation Protocol
Session Initiation ProtocolSession Initiation Protocol
Session Initiation Protocol
 
SIP (Session Initiation Protocol)
SIP (Session Initiation Protocol)SIP (Session Initiation Protocol)
SIP (Session Initiation Protocol)
 
VOIP
VOIPVOIP
VOIP
 
SIP for geeks
SIP for geeksSIP for geeks
SIP for geeks
 
Introduction to VoIP, RTP and SIP
Introduction to VoIP, RTP and SIP Introduction to VoIP, RTP and SIP
Introduction to VoIP, RTP and SIP
 
SIP (Session Initiation Protocol) - Study Notes
SIP (Session Initiation Protocol) - Study NotesSIP (Session Initiation Protocol) - Study Notes
SIP (Session Initiation Protocol) - Study Notes
 
Session Initiation Protocol (SIP)– Via Header Detailed Coverage
Session Initiation Protocol (SIP)– Via Header Detailed Coverage Session Initiation Protocol (SIP)– Via Header Detailed Coverage
Session Initiation Protocol (SIP)– Via Header Detailed Coverage
 
Vo Ip Rajibdeka
Vo Ip RajibdekaVo Ip Rajibdeka
Vo Ip Rajibdeka
 
Tlc 004 - take a sip of sip
Tlc 004 - take a sip of sipTlc 004 - take a sip of sip
Tlc 004 - take a sip of sip
 
VoIP and multimedia networking
VoIP and multimedia networkingVoIP and multimedia networking
VoIP and multimedia networking
 
1 Vo Ip Overview
1 Vo Ip Overview1 Vo Ip Overview
1 Vo Ip Overview
 

Andere mochten auch

6. activity diagrams
6. activity diagrams6. activity diagrams
6. activity diagrams
APU
 
MISA DE AÑO AMIGA ANITA LLANOS 31-03-2015
MISA DE AÑO AMIGA ANITA LLANOS 31-03-2015MISA DE AÑO AMIGA ANITA LLANOS 31-03-2015
MISA DE AÑO AMIGA ANITA LLANOS 31-03-2015
Alejandro Sosa
 

Andere mochten auch (20)

Seminar on Parallel and Concurrent Programming
Seminar on Parallel and Concurrent ProgrammingSeminar on Parallel and Concurrent Programming
Seminar on Parallel and Concurrent Programming
 
IMS Signaling (Rev. 3)
IMS Signaling (Rev. 3)IMS Signaling (Rev. 3)
IMS Signaling (Rev. 3)
 
BlackHat Hacking - Hacking VoIP.
BlackHat Hacking - Hacking VoIP.BlackHat Hacking - Hacking VoIP.
BlackHat Hacking - Hacking VoIP.
 
UBSS : Unix Based System Software
UBSS : Unix Based System SoftwareUBSS : Unix Based System Software
UBSS : Unix Based System Software
 
Ies5000 config guide
Ies5000 config guideIes5000 config guide
Ies5000 config guide
 
6. activity diagrams
6. activity diagrams6. activity diagrams
6. activity diagrams
 
RTP -- Real-time Transport Protocol
RTP -- Real-time Transport ProtocolRTP -- Real-time Transport Protocol
RTP -- Real-time Transport Protocol
 
6 Steps To Keep Pace With The Omnichannel Consumer
6 Steps To Keep Pace With The Omnichannel Consumer6 Steps To Keep Pace With The Omnichannel Consumer
6 Steps To Keep Pace With The Omnichannel Consumer
 
Encuentro Digital CEXT con la Consejera de Trabajo e Inmigración de la Embaja...
Encuentro Digital CEXT con la Consejera de Trabajo e Inmigración de la Embaja...Encuentro Digital CEXT con la Consejera de Trabajo e Inmigración de la Embaja...
Encuentro Digital CEXT con la Consejera de Trabajo e Inmigración de la Embaja...
 
Thijs Feryn: Varnish - where devops & sysadmins meet
Thijs Feryn: Varnish - where devops & sysadmins meetThijs Feryn: Varnish - where devops & sysadmins meet
Thijs Feryn: Varnish - where devops & sysadmins meet
 
Chapuzas
ChapuzasChapuzas
Chapuzas
 
Nuevas tecnologias
Nuevas tecnologiasNuevas tecnologias
Nuevas tecnologias
 
MISA DE AÑO AMIGA ANITA LLANOS 31-03-2015
MISA DE AÑO AMIGA ANITA LLANOS 31-03-2015MISA DE AÑO AMIGA ANITA LLANOS 31-03-2015
MISA DE AÑO AMIGA ANITA LLANOS 31-03-2015
 
Cavernoso
CavernosoCavernoso
Cavernoso
 
NAJIT Logo
NAJIT LogoNAJIT Logo
NAJIT Logo
 
MÁLAGA GASTRONOMY - Leisure & Culture on the Costa del Sol
MÁLAGA GASTRONOMY - Leisure & Culture on the Costa del SolMÁLAGA GASTRONOMY - Leisure & Culture on the Costa del Sol
MÁLAGA GASTRONOMY - Leisure & Culture on the Costa del Sol
 
eddie resume AUS
eddie resume AUSeddie resume AUS
eddie resume AUS
 
Ositos en-el-frio
Ositos en-el-frioOsitos en-el-frio
Ositos en-el-frio
 
Paper flexibel-benefits feb2016_margas.it
Paper flexibel-benefits feb2016_margas.itPaper flexibel-benefits feb2016_margas.it
Paper flexibel-benefits feb2016_margas.it
 
Publicidad 2,0
Publicidad  2,0Publicidad  2,0
Publicidad 2,0
 

Ähnlich wie 6293213 sip-presentation

The ssca® sip training program course outline
The ssca® sip training program   course outlineThe ssca® sip training program   course outline
The ssca® sip training program course outline
swap3731
 
"Internet Protocol Suite" prepared by Szymon M. from Poland
"Internet Protocol Suite" prepared by Szymon M. from Poland"Internet Protocol Suite" prepared by Szymon M. from Poland
"Internet Protocol Suite" prepared by Szymon M. from Poland
irenazd
 

Ähnlich wie 6293213 sip-presentation (20)

Ap nr5000 pt file
Ap nr5000 pt fileAp nr5000 pt file
Ap nr5000 pt file
 
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
Troubleshooting Dual-Protocol Networks and Systems by Scott Hogg at gogoNET L...
 
TCP/IP and DNS
TCP/IP and DNSTCP/IP and DNS
TCP/IP and DNS
 
Future Signaling Protocols What’s New in IETF
Future Signaling Protocols What’s New in IETFFuture Signaling Protocols What’s New in IETF
Future Signaling Protocols What’s New in IETF
 
Matrix sapex vs grandstream gxe502 x series
Matrix sapex vs grandstream gxe502 x seriesMatrix sapex vs grandstream gxe502 x series
Matrix sapex vs grandstream gxe502 x series
 
TCP/IP – Transmission Control Protocol/ Internet Protocol
TCP/IP – Transmission Control Protocol/ Internet ProtocolTCP/IP – Transmission Control Protocol/ Internet Protocol
TCP/IP – Transmission Control Protocol/ Internet Protocol
 
FOSS Sthlm: Realtime Communication Update
FOSS Sthlm: Realtime Communication UpdateFOSS Sthlm: Realtime Communication Update
FOSS Sthlm: Realtime Communication Update
 
lect20-Layer5.ppt
lect20-Layer5.pptlect20-Layer5.ppt
lect20-Layer5.ppt
 
Rtp
RtpRtp
Rtp
 
The ssca® sip training program course outline
The ssca® sip training program   course outlineThe ssca® sip training program   course outline
The ssca® sip training program course outline
 
10 fn s42
10 fn s4210 fn s42
10 fn s42
 
Lecture 04
Lecture 04Lecture 04
Lecture 04
 
New Convergence
New ConvergenceNew Convergence
New Convergence
 
IP QoS signaling in the IETF:Past, Present and Future
IP QoS signaling in the IETF:Past, Present and FutureIP QoS signaling in the IETF:Past, Present and Future
IP QoS signaling in the IETF:Past, Present and Future
 
"Internet Protocol Suite" prepared by Szymon M. from Poland
"Internet Protocol Suite" prepared by Szymon M. from Poland"Internet Protocol Suite" prepared by Szymon M. from Poland
"Internet Protocol Suite" prepared by Szymon M. from Poland
 
Wcdma Training
Wcdma TrainingWcdma Training
Wcdma Training
 
What Mobile Developers Should Know
What Mobile Developers Should KnowWhat Mobile Developers Should Know
What Mobile Developers Should Know
 
SIGTRAN - An Introduction
SIGTRAN - An IntroductionSIGTRAN - An Introduction
SIGTRAN - An Introduction
 
ARM LPC2300/LPC2400 TCP/IP Stack Porting
ARM LPC2300/LPC2400 TCP/IP Stack PortingARM LPC2300/LPC2400 TCP/IP Stack Porting
ARM LPC2300/LPC2400 TCP/IP Stack Porting
 
IAPsolutions
IAPsolutionsIAPsolutions
IAPsolutions
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

6293213 sip-presentation

  • 1. hgs/SIP Tutorial 1 The Session Initiation Protocol (SIP) Henning Schulzrinne Dept. of Computer Science Columbia University New York, New York (sip:)schulzrinne@cs.columbia.edu May 2001
  • 2. hgs/SIP Tutorial 2 Overview • protocol architecture • typical component architectures • addressing and locating SIP entities • protocol operation and extensions • reliability • services, features and caller preferences • security and QoS • programming SIP services May 2001
  • 3. hgs/SIP Tutorial 3 Introduction • SIP = core protocol for establishing sessions in the Internet • transports session description information from initiator (caller) to callees • allows to change parameters in mid-session • terminate session May 2001
  • 4. hgs/SIP Tutorial 4 VoIP protocol architecture Languages/APIs JAIN CPL voiceXML Parlay servlets sip−cgi Directory/Discovery peer−to−peer Signaling DNS/enum LDAP TRIP SIP SDP MGCP RTSP PINT H.248 SLP SPIRITS master−slave QoS Transport DiffServ IntServ RTP TLS SCTP May 2001
  • 5. hgs/SIP Tutorial 5 Multimedia protocol stack signaling quality of service media transport MGCP/Megaco SDP reservation measurement media encaps. (H.261, MPEG) application H.323 SIP RTSP RSVP RTCP daemon RTP transport TCP UDP network IPv4, IPv6 kernel PPP AAL3/4 AAL5 PPP link Sonet ATM Ethernet V.34 physical May 2001
  • 6. hgs/SIP Tutorial 6 SIP protocol use LDAP address TRIP lookup PSTN gateway lookup DNS next−hop SIP SIP signaling SDP SDP may sets up trigger RSVP RSVP media RTP RTP UDP UDP May 2001
  • 7. hgs/SIP Tutorial 7 SIP applications • setting up voice-over-IP calls • setting up multimedia conferences • event notification (subscribe/notify) « IM and presence • text and general messaging • signaling transport May 2001
  • 8. hgs/SIP Tutorial 8 SIP addressing May 2001
  • 9. hgs/SIP Tutorial 9 Personal mobility SIP uses email-style addresses to identify users alice@columbia.edu (also used by bob@columbia.edu) yahoo.com tel:12128541111 alice17@yahoo.com alice@columbia.edu 7000@columbia.edu columbia.edu tel:12015551234 Alice.Cary@columbia.edu alice@host.columbia.edu May 2001
  • 10. hgs/SIP Tutorial 10 SIP addressing • typically, same as user’s email address: alice@example.com 12125551212@gateways-r-us.com • written as URL, e.g., sip:alice@example.com • can add parameters, such as type (user=”phone”) or transport protocol May 2001
  • 11. hgs/SIP Tutorial 11 tel URLs (RFC 2806) • also can use tel URLs for telephone numbers, e.g., tel:+12125551212 or fax:+358.555.1234567 • either global (tel:+1...) or local (tel:0w003585551234567;phone-context=+3585551234 numbers • allow post-dialing digits: ;postd=pp32 • also modem:+3585551234567;type=v32b?7e1;type=v110 May 2001
  • 12. hgs/SIP Tutorial 12 SIP building blocks SIP user agent IP phone, PC, conference bridge SIP redirect server returns new location for requests SIP stateless proxy routes call requests SIP (forking) proxy routes call requests A@ B@ C@ SIP registrar maintains mappings from names to addresses May 2001
  • 13. hgs/SIP Tutorial 13 Back-to-back UA (B2BUA) • two (or more) user agents, where incoming calls trigger outgoing calls to somebody else • also, “third-party call control” (later) • useful for services and anonymity SIP UA1 (UAS) SIP UA2 (UAC) INVITE b2b INVITE callee 200 OK 200 OK May 2001
  • 14. hgs/SIP Tutorial 14 Maintaining state in SIP entities Stateless: each request and response handled indepdently (Transaction) stateful: remember a whole request/response transaction Call stateful: remember a call from beginning to end May 2001
  • 15. hgs/SIP Tutorial 15 SIP building block properties media stateless stateful call state UA (UAC, UAS) yes no unlikely common proxy no yes common possible (firewall) redirect registrar no no yes N/A May 2001
  • 16. hgs/SIP Tutorial 16 SIP architecture: peer-to-peer SIP redirect server user agent (UA) user agent (UA) user agent (UA) 128.119.40.186 Internet RTP audio 128.59.19.141 CATV Ethernet May 2001
  • 17. hgs/SIP Tutorial 17 SIP architecture: outbound proxy wonderland.com macrosoft.com REGISTER sip:macrosoft.com SIP/2.0 To: sip:bob@macrosoft.com From: sip:bob@macrosoft.com Contact: sip:bob@p42.macrosoft.com outbound registrar proxy Internet proxy wonderland.com INVITE sip:bob@macrosoft.com SIP/2.0 INVITE sip:bob@macrosoft.com SIP/2.0 bob@p42.macrosoft.com alice@ph7.wonderland.com INVITE sip:bob@p42.macrosoft.com SIP/2.0 May 2001
  • 18. hgs/SIP Tutorial 18 SIP architecture: VoIP to PSTN location server TRIP SLP?, TRIP−GW? sip:12125551234@gwrus.com sip:1−212−555−1234@domain SIP H.248 tel:+1−212−555−1234 outbound proxy IP 010 May 2001
  • 19. hgs/SIP Tutorial 19 SIP architecture: PSTN to VoIP enum database DNS 4.3.2.1.5.5.5.2.1.2.1.e164.arpa SCP enum sip:alice@wonderland.com INVITE sip:alice@wonderland.com IP 010 May 2001
  • 20. hgs/SIP Tutorial 20 SIP operation in proxy mode cs.columbia.edu ? location server 1 4 INVITE cs.tu−berlin.de INVITE hgs@play 5 hgs@play henning henning@columbia.edu 2 3 200 OK 200 OK cz@cs.tu−berlin.de 6 7 play tune 8 ACK hgs@play 9 media stream May 2001
  • 21. hgs/SIP Tutorial 21 SIP operation in redirect mode ieee.org ? location server columbia.edu 1 tu-berlin.de INVITE henning@ieee.org 2 henning 3 302 Moved temporarily Contact: hgs@columbia.edu 4 5 ACK henning@ieee.org columbia.edu 6 INVITE hgs@columbia.edu 7 200 OK 8 ACK hgs@columbia.edu hgs (302: redirection for single call; 301 permanently) May 2001
  • 22. hgs/SIP Tutorial 22 Locating SIP users May 2001
  • 23. hgs/SIP Tutorial 23 Locating users: registrars and location servers registrar example.com REGISTER alice@example.com A@ SQL, LDAP, Corba, B@ proprietary, ... Contact: C@ alice@pc17 location server INVITE alice@example.com INVITE alice@pc17.example.com proxy May 2001
  • 24. hgs/SIP Tutorial 24 Basic user location mechanism 1. host(SIP URL) −→ host name of proxy 2. DNS: host name of proxy → SIP server(s) 3. if SIP UAS: alert user; done 4. if SIP proxy/redirect server: map URLn −→ URLn+1 , using any information in request 5. go to step 1 One minor exception. . . May 2001
  • 25. hgs/SIP Tutorial 25 Basic SIP “routing” mechanisms • will fill in details later • route using request URIs • all but first request in call typically bypass proxies and go direct UAC – UAS • however, can use “record-routing” to force certain proxies to be visited all the time • responses always traverse the same route as requests May 2001
  • 26. hgs/SIP Tutorial 26 Outbound proxies • normally, proxy serves one or more domains • outbound proxies are used for all outbound requests from within a domain • typically, for managing corporate firewalls and policy enforcement • may also provide dial plans or route tel/fax URLs • other uses: lawyer client billing, . . . May 2001
  • 27. hgs/SIP Tutorial 27 Locating users: DNS SRV • email: DNS MX record allows mapping of domain to mail host, e.g. host -t mx yahoo.com yahoo.com MX 1 mx2.mail.yahoo.com yahoo.com MX 1 mx3.mail.yahoo.com yahoo.com MX 1 mx1.mail.yahoo.com yahoo.com MX 9 mta-v1.mail.yahoo.com • SIP: use a newer record for general-purpose mapping, SRV (RFC 2782) • mapping from service and transport protocol to one or more servers, including protocols _sip._tcp SRV 0 0 5060 sip-server.cs.columbia.edu. SRV 1 0 5060 backup.ip-provider.net. _sip._udp SRV 0 0 5060 sip-server.cs.columbia.edu. SRV 1 0 5060 backup.ip-provider.net. • allows priority (for back-up) and weight (for load balancing) May 2001
  • 28. hgs/SIP Tutorial 28 Using DNS SRV for scalable load-balancing a.example.com _sip._udp SRV 0 0 a1.example.com SRV 1 0 a2.example.com a1.example.com, a2.example.com a*@example.com s1.example.com s2.example.com b*@example.com sip:bob@example.com sip:bob@a.example.com s3.example.com _sip._udp SRV 0 0 s1.example.com b1.example.com, b2.example.com SRV 0 0 s2.example.com SRV 0 0 s3.example.com May 2001
  • 29. hgs/SIP Tutorial 29 Aside: SIP scaling • HTTP request director ↔ SIP client-based • HTTP randomized DNS (short TTL!) ↔ SRV weights and priorities • can’t just distribute requests randomly, since backend (registration) synchronization is needed • registration scaling: requests/second * 3600; e.g., 100 requests/second « 360,000 users/server • major bottlenecks are logging and database updates • generally, higher registration than INVITE rates May 2001
  • 30. hgs/SIP Tutorial 30 SIP protocol operation May 2001
  • 31. hgs/SIP Tutorial 31 SIP requests and responses • text, not binary, format • look very similar to HTTP/1.1 • requests and responses are similar except for first line • requests and responses can contain message bodies: typically session descriptions, but also ASCII or HTML May 2001
  • 32. hgs/SIP Tutorial 32 SIP syntax request response method URL SIP/2.0 SIP/2.0 status reason Via: SIP/2.0/ protocol host:port From: user <sip:from_user@source> message header To: user <sip:to_user@destination> Call−ID: localid@host CSeq: seq# method Content−Length: length of body Content−Type: media type of body Header: parameter ;par1=value ;par2="value" ;par3="value folded into next line" blank line message body V=0 o= origin_user timestamp timestamp IN IP4 host c=IN IP4 media destination address t=0 0 m= media type port RTP/AVP payload types message May 2001
  • 33. hgs/SIP Tutorial 33 SIP syntax • field names and some tokens (e.g., media type) are case-insensitive • everything else is case-sensitive • white space doesn’t matter except in first line • lines can be folded • multi-valued header fields can be combined as a comma-list May 2001
  • 34. hgs/SIP Tutorial 34 SIP methods INVITE initiate call ACK confirm final response BYE terminate (and transfer) call CANCEL cancel searches and “ringing” OPTIONS features support by other side REGISTER register with location service INFO mid-call information (ISUP) COMET precondition met PRACK provisional acknowledgement SUBSCRIBE subscribe to event NOTIFY notify subscribers REFER ask recipient to issue SIP request (call transfer) May 2001
  • 35. hgs/SIP Tutorial 35 SIP invitation and media negotiation alice@wonderland.com calls bob@macrosoft.com INVITE sip:bob@macrosoft.com SIP/2.0 SIP/2.0 200 OK From: sip:alice@wonderland.com From: sip:alice@wonderland.com To: sip:bob@macrosoft.com To: sip:bob@macrosoft.com Call−ID: 31415@wonderland.com Call−ID: 31415@wonderland.com CSeq: 42 INVITE CSeq: 42 INVITE Content−Type: application/sdp Content−Type: application/sdp v=0 v=0 o=user1 536 2337 IN IP4 h3.wonderland.com o=user1 535 687637 IN IP4 m.macrosoft.com c=IN IP4 h3.wonderland.com c=IN IP4 m.macrosoft.com m=audio 3456 RTP/AVP 0 1 m=audio 1200 RTP/AVP 1 m=video 4000 RTP/AVP 38 39 m=video 0 RTP/AVP accept audio, decline video May 2001
  • 36. hgs/SIP Tutorial 36 Tagging To • after forking and merging, hard to tell who responded • UAS responds with random tag added to disambiguate To: "A. G. Bell" <sip:agb@bell-telephone.com> ;tag=a48s • future requests are ignored if they contain the wrong tag May 2001
  • 37. hgs/SIP Tutorial 37 SIP call legs • call leg: From, To, Call-ID • requests from callee to caller reverse To and From • caller and callee keep their own CSeq space • either side can send more INVITEs or BYE May 2001
  • 38. hgs/SIP Tutorial 38 SIP responses Informational Success Redirection Request Failure 100 Trying 200 OK 300 Multiple Choices 400 Bad Request 180 Ringing 301 Moved Perm. 401 Unauthorized 181 Call forwarded 302 Moved Temp. 403 Forbidden 182 Queued 380 Alternative Serv. 404 Not Found 183 Session Progress 405 Bad Method 415 Unsupp. Content 420 Bad Extensions 486 Busy Here 500 Server Error 600 Busy Everwhere 501 Not Implemented 603 Decline 503 Unavailable 604 Doesn’t Exist 504 Timeout 606 Not Acceptable Server Failure Global Failure May 2001
  • 39. hgs/SIP Tutorial 39 SIP response routing • requests are routed via URL • response traces back request route without proxy server state • forward to host, port in next Via • TCP: re-use connection if possible, create new one if needed • UDP: may send responses to same port as requests Via: SIP/2.0/UDP server.domain.org:5060 ;received=128.1.2.3 May 2001
  • 40. hgs/SIP Tutorial 40 SIP response routing alice@example.com bob_doe@yahoo.com bob@columbia.edu Via: y1.yahoo.com Via: a.example.com Via: a.example.com INvITE Via: a.example.com Via: y1.yahoo.com Via: a.example.com Via: sip.columbia.edu Via: y1.yahoo.com Via: a.example.com Via: sip.columbia.edu Via: y1.yahoo.com Via: a.example.com Via: cs.columbia.edu Via: sip.columbia.edu Via: y1.yahoo.com Via: a.example.com bob@cs.columbia.edu 200 OK Via: cs.columbia.edu Via: sip.columbia.edu Via: y1.yahoo.com Via: a.example.com bob@pc42.cs.columbia.edu May 2001
  • 41. hgs/SIP Tutorial 41 SIP spirals INVITE sip:kelly@p4711.sales.acme.com SIP/2.0 Via: sales.acme.com;branch= h(info,alice,17,1,kelly@sales) Via: acme.com;branch= h(info,alice,17,1,kelly@acme) Via: sales.acme.com;branch= h(info,alice,17,1,bob@sales) Via: acme.com;branch= h(info,alice,17,1,info) Via: ph123.wonderland.com INVITE sip:bob@sales.acme.com SIP/2.0 Via: acme.com;branch= h(info,alice,17,1,info) Via: ph123.wonderland.com INVITE sip:info@acme.com SIP/2.0 To: sip:info@acme.com Via: ph123.wonderland.com acme.com sales.acme.com INVITE sip:kelly@sales.acme.com SIP/2.0 Via: acme.com;branch= h(info,alice,17,1,kelly@acme) Via: sales.acme.com;branch= h(info,alice,17,1,bob@sales) Via: acme.com;branch= h(info,alice,17,1,info) Via: ph123.wonderland.com alice@ph123.wonderland.com INVITE sip:kelly@acme.com SIP/2.0 Via: sales.acme.com;branch= h(info,alice,17,1,bob@sales) Via: acme.com;branch= h(info,alice,17,1,bob@sales) branch= h(To,From,Call−ID,CSeq,URL) Via: ph123.wonderland.com May 2001
  • 42. hgs/SIP Tutorial 42 Forcing request paths • usually, bypass proxies on subsequent requests • some proxies want to stay in the path → call-stateful: – firewalls – anonymizer proxies – proxies controlling PSTN gateways • use Record-Route and Route May 2001
  • 43. hgs/SIP Tutorial 43 Request routing A PA PB B INVITE PB INVITE PB INVITE B Contact: A Contact: A Contact: A Record−Route: PA Record−Route: PB, PA 200 OK 200 OK 200 OK Contact: B Contact: B Contact: B Record−Route: PB, PA Record−Route: PB, PA Record−Route: PB, PA ACK PA ACK PB ACK B Route: PB,B Route: B BYE A BYE A BYE A Route: A;maddr=PB Route: A;maddr=PB Route: A;maddr=PA Route: A;maddr=A May 2001
  • 44. hgs/SIP Tutorial 44 SIP request forking macrosoft.com bob@b.macrosoft.com a.wonderland.com INVITE bob@b INVITE sales@macrosoft.com CANCEL bob@c INVITE carol@c carol@c.macrosoft.com ACK 200 OK BYE carol@c.macrosoft.com 200 OK May 2001
  • 45. hgs/SIP Tutorial 45 SIP sequential request forking Use q values to govern order of sequential search: q=1.0 1 302 Moved temporarily 2 q=0.7 INVITE 486 Busy here 3 q=0.1 200 OK May 2001
  • 46. hgs/SIP Tutorial 46 SIP request forking • branches tried in sequence or parallel (or some combination) • recursion: may try new branches if branch returns 3xx • return best final answer = lowest status code • forward provisional responses May 2001
  • 47. hgs/SIP Tutorial 47 Parallel forking call flow alice bob@portal bob@home bob@work INVITE bob@portal 100 Trying 180 Ringing 200 OK Contact: bob@home 200 OK CANCEL bob@work 200 OK (CANCEL) 487 Cancelled (INVITE) ACK bob@work ACK bob@home UAC proxy server UAS UAS May 2001
  • 48. hgs/SIP Tutorial 48 SIP transport issues • SIP operates over any packet network, reliable or unreliable • choices: UDP: most common – low state overhead – small max. packet size TCP: can combine multiple signaling flows over one link – use with SSL – connection setup overhead – HOL blocking for trunks SCTP: new protocol – no HOL blocking – fallback address (but SRV provides this already) – connection setup overhead May 2001
  • 49. hgs/SIP Tutorial 49 Transport reliability for all but INVITE client UAS, proxy BYE 500 ms • used for BYE, OPTIONS, 1s SUBSCRIBE, NOTIFY, . . . • 1xx sent by UAS or proxy 2s 4s only if no final answer ex- 4s ... pected within 200 ms no more than 11 packets • if provisional response, re- transmit with T 2 (4) seconds 200, 4xx, 5xx, 6xx May 2001
  • 50. hgs/SIP Tutorial 50 INVITE reliability • INVITE is special – long time between request and final re- Initial sponse − INVITE • 100 (by proxy) indicates re- T1*2 n Calling INVITE quest has been received 1xx • proxy usually forwards 1xx status 1xx 7 INVITE sent from all branches ACK Call proceeding • only retransmit until 100 status ACK • ACK confirms receipt of final status ACK Completed response event request sent May 2001
  • 51. hgs/SIP Tutorial 51 Other signaling approaches May 2001
  • 52. hgs/SIP Tutorial 52 Differences to classical signaling name examples network “channel” in-band E&M, DTMF same same out-of-band ISUP, Q.931 different different IP SIP typically same different IP signaling meets media only at end systems, while PSTN out-of-band intersects at every switch May 2001
  • 53. hgs/SIP Tutorial 53 Aside: Alternative architecture: master-slave • master-slave: MGC (media gateway controller) controls one or more gateways • allows splitting of signaling and media functionality • “please send audio from circuit 42 to 10.1.2.3” • uses MGCP (implemented) or Megaco/H.248 (standardized, but just beginning to be implemented) • gateway can be residential • basis of PacketCable NCS (network control system) architecture • service creation similar to digital PBX or switch • end system has no semantic knowledge of what’s happening • −→ can charge for caller id, call waiting May 2001
  • 54. hgs/SIP Tutorial 54 MGCP/SIP architecture STP call agent SIP call agent SIP TCAP MG controller MG controller SS7 gwy SCP H.323 H.323 ISUP MGCP/Megaco MGCP/Megaco SS7 RGW TGW PSTN Internet RTP RGW May 2001
  • 55. hgs/SIP Tutorial 55 Extending SIP extension behavior determine? new headers ignored – new headers mandatory Supported new method OPTIONS new body type Accept new status code class-based new URL type ? May 2001
  • 56. hgs/SIP Tutorial 56 SIP extensions and feature negotiation • if crucial, mark with “Require: feature” • IANA-registered features are simple names, private features use reverse domain names • indicate features supported in Supported: C->S: INVITE sip:watson@bell-telephone.com SIP/2.0 Require: com.example.billing Supported: 100rel Payment: sheep_skins, conch_shells S->C: SIP/2.0 420 Bad Extension Unsupported: com.example.billing S->C: SIP/2.0 421 Extension Required Require: 183 May 2001
  • 57. hgs/SIP Tutorial 57 User identification May 2001
  • 58. hgs/SIP Tutorial 58 Standard call/caller identification Request-URI: next hop To: logical call destination From: logical call origin Organization: organization of caller/callee Subject: subject of call Call-Info: additional information about caller or callee Call-Info: <http://wwww.example.com/alice/photo.jpg> ;purpose=icon, <http://www.example.com/alice/> ;purpose=info User-Agent: make and model of user agent May 2001
  • 59. hgs/SIP Tutorial 59 Additional call information Priority: call priority: emergency, urgent, normal, non-urgent Alert-Info: render instead of ring tone Alert-Info: <http://wwww.example.com/sounds/moo.wav> In-Reply-To: call-id being returned May 2001
  • 60. hgs/SIP Tutorial 60 draft-ietf-sip-privacy • To/headerFrom are chosen by end system « may lie • need privacy indications similar to caller id Remote-Party-ID: "John Doe" <sip:jdoe@foo.com>;party=calling; id-type=subscriber;privacy=full • screen=yes: was verified by proxy • type can be subscriber, user, alias, return (calls), term (terminal) • may add geographic user location May 2001
  • 61. hgs/SIP Tutorial 61 SIP services May 2001
  • 62. hgs/SIP Tutorial 62 Invitation modes signaling media unicast multicast unicast telephony multicast session multicast reach first dept. conference « SIP for all modes, SAP/SDP also for multicast/multicast May 2001
  • 63. hgs/SIP Tutorial 63 SIP-based services Call forwarding: basic INVITE behavior (proxy/redirect) Call transfer: REFER method (see later) Call hold: set media address to 0.0.0.0 – can be done individually per media Caller id: From, plus extensions DTMF carriage: carry as RTP payload (RFC 2833) Calling card: B2BUA + voice server Voice mail: UA with special URL(s) + possibly RTSP May 2001
  • 64. hgs/SIP Tutorial 64 Call transfer B1 3 BYE A 1 REFER B2 Referred−By: B1 A 2 INVITE B2 Referred−By: B1 B2 May 2001
  • 65. hgs/SIP Tutorial 65 IVR and VoiceXML A@ B@ C@ SQL, LDAP SIP SIP UA REFER VoiceXML 200 VoiceXML scripts text RTP text May 2001
  • 66. hgs/SIP Tutorial 66 Third-party call control RTP 200 200 3 INVITE 2 SDP (from 2) 6 5 ACK SDP (from 4) 4 INVITE no SDP 1 SIP ACK SIP May 2001
  • 67. hgs/SIP Tutorial 67 SIP billing/charging What for? How? • transport « resource reservation • resource reservation protocols protocol • SIP-in-DIAMETER approach • SIP services (call processing) « • server log files authentication • PSTN gateway services • media server services (translation, storage) May 2001
  • 68. hgs/SIP Tutorial 68 Security issues May 2001
  • 69. hgs/SIP Tutorial 69 Threats • spoofing From in REGISTER: call redirection • spoofing From in INVITE: bypass call filtering • snooping media packets • billing confusion (identifier munging) • denial-of-service attacks May 2001
  • 70. hgs/SIP Tutorial 70 SIP security layer/mechanism approach characteristics network layer IPsec adjacent nodes, all or nothing, hard to configure transport layer TLS adjacent nodes, all or nothing SIP INVITE basic/digest shared secrets with random parties SIP REGISTER basic/digest securing headers? SIP general S/MIME in progress Basic (plaintext password) and digest (challenge-response) are very similar to HTTP security mechanisms. May 2001
  • 71. hgs/SIP Tutorial 71 SIP authentication Basic: include plain-text password in request, immediately or after 401 (Unauthorized) or 407 (Proxy Authorization) response Digest: challenge-response with shared secret Certificate: sign non-Via parts of request headers, body with PGP, PKCS #7 SSL, SSH: but only for TCP • but: need more elaborate cryptographic capability indication in SDP May 2001
  • 72. hgs/SIP Tutorial 72 Basic authentication • Challenge by UAS: SIP/2.0 401 Unauthorized WWW-Authenticate: Basic realm="business" • client responds with INVITE sip:alice@wonderland.com SIP/2.0 CSeq: 2 INVITE Authorization: QWxhZGRpbjpvcGVuIHNlc2FtZQ== where authorization is base64(userid:password) • usually caller → callee, but challenge can be in request May 2001
  • 73. hgs/SIP Tutorial 73 Digest authentication • A calls B and fails: SIP/2.0 401 Unauthorized Authenticate: Digest realm="GW service", domain="wcom.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="42", stale="FALSE", algorithm="MD5" • A tries again: INVITE sip:UserB@ss1.wcom.com SIP/2.0 Authorization:Digest username="UserA", realm="GW service", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="42", uri="sip:UserB@ss1.wcom.com", response="42ce3cef44b22f50c6a6071bc8" May 2001
  • 74. hgs/SIP Tutorial 74 Digest authentication username: user authenticating herself realm: several per user, used also for display nonce: copied into Authorization opaque: copied into Authorization uri: original request URL response: 32 hex digits: KD (H(A1 ), nonce-value : H(A2 )) for MD5: H(H(A1 ) : nonce-value : H(A2 ))) where A1 = username : realm : passwd A2 = method : uri May 2001
  • 75. hgs/SIP Tutorial 75 Quality of Service May 2001
  • 76. hgs/SIP Tutorial 76 Quality of service • SIP and data paths disjoint « SIP can’t reserve resources • but: SDP may provide information to end systems on desired QoS • SDP contains range of codecs to allow mid-call adaptation May 2001
  • 77. hgs/SIP Tutorial 77 Interaction with resource reservation avoid “fast busy” after ringing « interleave INVITE alice@ieee.org 183 Session Progress (SDP) PRACK 200 OK (PRACK) reservation COMET 200 (COMET) 180 Ringing PRACK 200 OK (PRACK) 200 OK (INVITE) ACK (INVITE) UAC UAS May 2001
  • 78. hgs/SIP Tutorial 78 SIP Caller Preferences May 2001
  • 79. hgs/SIP Tutorial 79 Preferences callee: scripts, CPL, REGISTER advice in Contact, . . . caller: help guide routing (“no home number”) and order of attempts when forking (“try videophone first, then phone, then answering service”) “caller proposes, callee disposes” May 2001
  • 80. hgs/SIP Tutorial 80 Extended SIP Contact header q location preference class business, residence description show to caller duplex full or half-duplex feature call handling features language languages spoken media audio, video, text/numeric, . . . mobility fixed or mobile priority “only in case of emergency” scheme URL schemes (tel, http, . . . ) service IP, PSTN, ISDN, pager, . . . May 2001
  • 81. hgs/SIP Tutorial 81 Contact example q=quality gives preference. SIP/2.0 302 Moved temporarily Contact: sip:hgs@erlang.cs.columbia.edu ;action=redirect ;service=IP,voice-mail ;media=audio ;duplex=full ;q=0.7; Contact: tel:+1-415-555-1212 ; service=ISDN ;mobility=fixed ;language=en,es,iw ;q=0.5 Contact: tel:+1-800-555-1212 ; service=pager ;mobility=mobile ;duplex=send-only;media=text; q=0.1; priority=urgent; ;description="For emergencies only" Contact: mailto:hgs@cs.columbia.edu May 2001
  • 82. hgs/SIP Tutorial 82 Accept-Contact and Reject-Contact • determine order of contacting users: Accept-Contact: sip:sales@acme.com ;q=0, ;media="!video" ;q=0.1, ;mobility="fixed" ;q=0.6, ;mobility="!fixed" ;q=0.4 « “avoid connecting me to sales; I prefer a landline phone; try • Reject-Contact: rule out destinations Reject-Contact: ;class=personal May 2001
  • 83. hgs/SIP Tutorial 83 Request-Disposition • proxy or redirect • cancel ringing second phone after first picked up? • allow forking? • search recursively? • search sequentially or in parallel? • queue the call? Request-Disposition: proxy, recurse, parallel May 2001
  • 84. hgs/SIP Tutorial 84 SIP presence, events and instant messaging May 2001
  • 85. hgs/SIP Tutorial 85 SIP presence architecture presentity bob macrosoft.com presence server PUA PA REGISTER alice@ example.com SUBSCRIBE UA PUA NOTIFY registrar PUA PA NOTIFY May 2001
  • 86. hgs/SIP Tutorial 86 SIP presence components Presentity: logical entity being subscribe to, e.g., alice@wonderland.com, with several agents Registrar: receives REGISTER requests Presence user agent (PUA): generates REGISTER, but no SUBSCRIBE or NOTIFY « any non-presence-aware SIP software Presence agent: receive SUBSCRIBE, generate NOTIFY Presence server: SIP proxy + PA Presence client: SIP UA + PA May 2001
  • 87. hgs/SIP Tutorial 87 SIP presence protocol subcriber presentity, PA alice bob SUBSCRIBE bob Event: presence From: alice To: bob 200 OK NOTIFY alice bob available 200 OK NOTIFY alice bob not available 200 OK May 2001
  • 88. hgs/SIP Tutorial 88 SIP SUBSCRIBE example SUBSCRIBE sip:bob@macrosoft.com SIP/2.0 Event: presence To: sip:bob@macrosoft.com From: sip:user@example.com Contact: sip:user@userpc.example.com Call-ID: knsd08alas9dy@3.4.5.6 CSeq: 1 SUBSCRIBE Expires: 3600 Content-Length: 0 • Forked to all PUAs that have REGISTERed with method SUBSCRIBE. • 200 (OK) response contains current state. May 2001
  • 89. hgs/SIP Tutorial 89 SIP NOTIFY example NOTIFY sip:user@userpc.example.com To: sip:user@example.com From: sip:alice@wonderland.com Call-ID: knsd08alas9dy@3.4.5.6 CSeq: 1 NOTIFY Content-Type: application/xpidf+xml <?xml version="1.0"?> <!DOCTYPE presence PUBLIC "-//IETF//DTD RFCxxxx XPIDF 1.0//EN" "xpidf.dtd"> <presence> <presentity uri="sip:alice@wonderland.com;method="SUBSCRIBE"> <atom id="779js0a98"> <address uri="sip:alice@wonderland.com;method=INVITE"> <status status="closed"/> </address> </atom> </presentity> </presence> May 2001
  • 90. hgs/SIP Tutorial 90 SIP events • single-valued (light-switch) to complex (CD changer) to multi-valued (temperature samples) • both built-in and mediated (X10) • often combined with audio/video in same system: security, industrial control, home entertainment • notification rates vary « gradual transition to continuous media temperature process packet IR detector sensor control audio/video 0.01 0.1 1 10 100 events (packets) / second • Event describes event type May 2001
  • 91. hgs/SIP Tutorial 91 Example home architecture SUBSCRIBE door@alice.home.net NOTIFY alice@work.com SIP proxy SIP user agent DO light@alice.home.net (RGW) INVITE camera@alice.home.net (Work with Telcordia) May 2001
  • 92. hgs/SIP Tutorial 92 SIP IM • send text or any other MIME type • either as SDP-initiated session or as individual messages • use MESSAGE May 2001
  • 93. hgs/SIP Tutorial 93 Programming SIP Services May 2001
  • 94. hgs/SIP Tutorial 94 Programming SIP services safety language? party? SIP-cgi same as scripting any callee servlets same as Java Java callee CPL very XML both applets same as Java Java caller May 2001
  • 95. hgs/SIP Tutorial 95 Programming services • “caller proposes, callee disposes, administrator decides” • web = static pages −→ cgi-bin −→ Java • “if somebody is trying to call for the 3rd time, allow mobile” • “try office and lab in parallel, if that fails, try home” • “allow call to mobile if I’ve talked to person before” • “if on telemarketing list, forward to dial-a-joke” • phone: CTI = complex, not generally for end users May 2001
  • 96. hgs/SIP Tutorial 96 cgi-bin for SIP Servers • extend SIP user/proxy/redirect server functionality without changing server software • server manages retransmission, loop detection, authentication, . . . • Perl, Tcl, VB scripts May 2001
  • 97. hgs/SIP Tutorial 97 Examples • Call forward on busy/no answer • Third-party registration control • Administrative screening (firewall) • Calendarbook access • Central phone server • Client billing allocation (lawyer’s • Intelligent user location office) • End system busy • Phone bank (call distribu- tion/queueing) May 2001
  • 98. hgs/SIP Tutorial 98 cgi Script Functionality called for any method except ACK or CANCEL • proxying of requests • returning responses • generate new requests once for each request or response or timeout May 2001
  • 99. hgs/SIP Tutorial 99 cgi Script Mechanism environment variables: headers, methods, authenticated user, . . . stdin: body of request stdout: new request, meta-requests: • CGI- requests for proxying, response, default action • script cookie for state across messages • reexecute on all, final response, never May 2001
  • 100. hgs/SIP Tutorial 100 Cgi Example: Call Forwarding use DB_File; sub fail { my($status, $reason) = @_; print "SIP/2.0 $status $reasonnn"; exit 0; } tie %addresses, ’DB_File’, ’addresses.db’ or fail("500", "Address database failure"); $to = $ENV{’HTTP_TO’}; if (! defined( $to )) { fail("400", "Missing Recipient"); } May 2001
  • 101. hgs/SIP Tutorial 101 $destination = $addresses{$to}; if (! defined( $destination )) { fail("404", "No such user"); } print "CGI-PROXY-REQUEST-TO $destination SIP/2.0n"; print "CGI-Reexecute-On: nevernn"; untie %addresses; # Close db file May 2001
  • 102. hgs/SIP Tutorial 102 The Call Processing Language Jonathan Lennox Columbia University lennox@cs.columbia.edu May 5, 2000 May 2001
  • 103. hgs/SIP Tutorial 103 Purpose Allow users to create simple Internet telephony services Features: • Creatable and editable by simple graphical tools • Independent of signalling protocol • Safe to run in servers May 2001
  • 104. hgs/SIP Tutorial 104 Abstract structure busy location proxy timeout url: sip:jones@ timeout: 10s failure Call String-switch example.com field: from match: *@example.com otherwise location url: sip:jones@ voicemail. redirect example.com merge: clear May 2001
  • 105. hgs/SIP Tutorial 105 Abstract structure (cont) • Nodes and outputs — “boxes” and “arrows” • Nodes have parameters • Start from single root “call” node • Progress down tree of control • May invoke sub-actions • Follow one output of each node, based on outcome • Continue until we get to a node with no outputs May 2001
  • 106. hgs/SIP Tutorial 106 Textual representation <cpl> <subaction id="voicemail"> <location url="sip:jones@voicemail.example.com"> <redirect /> </location> </subaction> May 2001
  • 107. hgs/SIP Tutorial 107 Textual representation <incoming> <address-switch field="origin" subfield="host"> <address subdomain-of="example.com"> <location url="sip:jones@example.com"> <proxy> <busy> <sub ref="voicemail" /> </busy> <noanswer> <sub ref="voicemail" /> </noanswer> <failure> <sub ref="voicemail" /> </failure> </proxy> </location> </address> <otherwise> <sub ref="voicemail" /> </otherwise> </address-switch> </incoming> </cpl> May 2001
  • 108. hgs/SIP Tutorial 108 Textual representation • Represent scripts as XML documents • Incoming, outgoing scripts are separate top-level tags • Nodes and outputs are both tags • Parameters are tag attributes • Multiple outputs to one input represented by subactions May 2001
  • 109. hgs/SIP Tutorial 109 Switch nodes Switch nodes make decisions. Structure: <type-switch field=var> <type condition1="value1"> action1 </type> <type condition2="value2"> action2 </type> <not-present> action3 <otherwise> action4 </otherwise> </type-switch> May 2001
  • 110. hgs/SIP Tutorial 110 Address Switches: address Switch based on textual strings: is: (exact string match) contains: substring match: only for “display” subdomain-of: domain match: only for “host”, “tel” Fields are “origin,” “destination,” “original-destination”, with subfields “address-type,” “user,” “host,” “port,” “tel,” “display” May 2001
  • 111. hgs/SIP Tutorial 111 String Switches: string Switch based on textual strings, with conditions: is: exact string match contain: substring match Fields: subject, organization, user-agent May 2001
  • 112. hgs/SIP Tutorial 112 Time switches: time Switch based on the current time at the server. timezone: which timezone the matching should apply in Conditions: • year, month, date, day, timeofday • each condition is a list of ranges: a1 − b1 , a2 − b2 , . . . • must fall within a range of all specified conditions May 2001
  • 113. hgs/SIP Tutorial 113 Time switches: examples <time month="12" date="25" year="1999"> December 25th, 1999, all day <time month="5" date="4"> May 4th, every year, all day <time day="1-5" timeofday="0900-1700"> 9 AM – 5 PM, Monday through Friday, every week May 2001
  • 114. hgs/SIP Tutorial 114 Time switches: examples <time timeofday="1310-1425,1440-1555,1610-1725" day="2,4"> 1:10 – 2:25 PM, 2:40 – 3:55 PM, and 4:10 – 5:25 PM, Tuesdays and Thursdays, every week <time date="1-7" day="1"> The first Monday of every month, all day May 2001
  • 115. hgs/SIP Tutorial 115 Location nodes • A number of CPL actions (proxy, redirect) take locations • Location nodes let you specify them • These are full-featured nodes because we might want to make decisions based on outcomes of location lookups, or cascade locations • A CPL script has an implicit global list of locations • Location nodes can add to this list, or clear the list May 2001
  • 116. hgs/SIP Tutorial 116 Simple location nodes: location Specify a location explicitly. url: explicitly specified location clear: clear earlier location values Only one output; cannot fail. Don’t use an explicit output node in the URL. May 2001
  • 117. hgs/SIP Tutorial 117 Location lookup nodes: lookup Specify a location abstractly, by where it should be looked up. Parameters: source: URL (ldap, http (CGI), etc) or non-URL source (“registration”) to search for locations timeout: time to wait use/ignore: • use: caller-preferences parameters to use • ignore: caller-preferences parameters to disregard merge: Outputs: success, notfound, failure May 2001
  • 118. hgs/SIP Tutorial 118 Location removal nodes: remove-location Remove locations from the location set, based on caller preferences/callee capabilities. Has the same effect as a “Reject-Contact” header. param: caller preference parameters to apply value: values of parameters specified in “param” location: caller preference location to apply May 2001
  • 119. hgs/SIP Tutorial 119 Signalling Actions: proxy Proxy the call to the currently-specified set of locations, and automatically select one “best” final response. timeout: time before giving up on the proxy attempt recurse: recurse on redirect responses to the proxy attempt? ordering: try location in parallel, sequential, first-only • Outputs: busy, noanswer, failure • If the proxy attempt was successful, script terminates May 2001
  • 120. hgs/SIP Tutorial 120 Signalling Actions: redirect Redirect the call to the currently-specified set of locations. This has no specific parameters, and causes the script to terminate. May 2001
  • 121. hgs/SIP Tutorial 121 Signalling Actions: reject Reject the call attempt. This causes the script to terminate. status: “busy,” “notfound,” “reject,” or “error”, or a 4xx, 5xx, or 6xx code (for SIP). reason: string explaining the failure. May 2001
  • 122. hgs/SIP Tutorial 122 Non-signalling action: mail Notify a user of something through e-mail. url: the address to contact, including any header parameters. May 2001
  • 123. hgs/SIP Tutorial 123 Non-signalling action: log Store a record of the current call in a log. name: the name of the log this should be stored omment: a string explaining the log entry Outputs: success, failure May 2001
  • 124. hgs/SIP Tutorial 124 Subactions • XML syntax defines a tree; we want CPLs to be represented as directed acyclic graphs. • Subactions are defined at the top level of the script, outside other actions. • for acyclicity, top-level actions and subactions may only call subactions which were defined earlier in the script. • Anywhere a node is expected, you can instead have a sub tag, with a ref parameter which refers to a subaction’s id. May 2001
  • 125. hgs/SIP Tutorial 125 Example: Call Redirect Unconditional <cpl> <incoming> <location url="sip:smith@phone.example.com"> <redirect /> </location> </incoming> </cpl> May 2001
  • 126. hgs/SIP Tutorial 126 Example: Call Forward Busy/No Answer <cpl> <subaction id="voicemail"> <location url="sip:jones@voicemail.example.com" > <proxy /> </location> </subaction> <incoming> <location url="sip:jones@jonespc.example.com"> <proxy timeout="8s"> <busy> </busy> <noanswer> <sub ref="voicemail" /> </noanswer> </proxy> </location> </incoming> </cpl> May 2001
  • 127. hgs/SIP Tutorial 127 Example: Call Screening <cpl> <incoming> <address-switch field="origin" subfield="user"> <address is="anonymous"> <reject status="reject" reason="I don’t accept anonymous calls" /> </address> </address-switch> </incoming> </cpl> May 2001
  • 128. hgs/SIP Tutorial 128 Example: Time-of-day Routing <?xml version="1.0" ?> <!DOCTYPE call SYSTEM "cpl.dtd"> <cpl> <incoming> <time-switch timezone="US/Eastern"> <time day="1-5" timeofday="0900-1700"> <lookup source="registration"> <success> <proxy /> </success> </lookup> </time> <otherwise> <location url="sip:jones@voicemail.example.com"> <proxy /> </location> </otherwise> </time-switch> </incoming> </cpl> May 2001
  • 129. hgs/SIP Tutorial 129 Example: Non-call Actions <?xml version="1.0" ?> <!DOCTYPE call SYSTEM "cpl.dtd"> <cpl> <incoming> <lookup source="http://www.example.com/cgi-bin/locate.cgi?user=jones" timeout="8"> <success> <proxy /> </success> <failure> <mail url="mailto:jones@example.com&Subject=lookup%20failed" /> </failure> </lookup> </incoming> </cpl> May 2001
  • 130. hgs/SIP Tutorial 130 SIP for Third-Generation Wireless Networks May 2001
  • 131. hgs/SIP Tutorial 131 3G networks • successor to 2G mobile networks: GSM (TDMA) and IS-95 (CDMA) in 900/1800 MHz range • 2.5G: GSM −→ GPRS −→ EDGE • use different air interfaces in 2 GHz range: W-CDMA, CDMA 2000, TD-CDMA • 3GPP standardizes for W-CDMA (GSM follow-on), while 3GPP2 does CDMA 2000 • identified by releases (1999, R4, R5) May 2001
  • 132. hgs/SIP Tutorial 132 3G and VoIP • GPRS not suitable for VoIP: low bandwidth, high delay (500-600 ms RTT) • initially (R4), CS voice to base station, then ATM/IP packets • later (R5), in Internet multimedia (IM) subsystem « IP to UE (user equipment) • uses AMR audio codec, with variable rate of 4.75 to 12.2 kb/s, or GSM HR or EFR • UTRAN delays: see TR 25.932 May 2001
  • 133. hgs/SIP Tutorial 133 Signaling in 3GPP IM subsystem Uses SIP for session setup and defines new entities: Proxy CSCF: first point of contact in visited network; finds the user’s home network and provide some translation, security and authorization functions Serving CSCF: controls sessions, acts as registrar and triggers and executes services. Accesses the user’s profile; can be located in the home or visited network. Interrogating CSCF: first point of contact in home network. It assigns the serving CSCF, contacts the HSS and forwards SIP request. May 2001
  • 134. hgs/SIP Tutorial 134 3G SIP registration mobility management signaling serving interrogating interrogating CSCF proxy home IM domain registration signaling (SIP)_ visited IM domain May 2001
  • 135. hgs/SIP Tutorial 135 Differences to “standard” SIP • requires REGISTER before making call • INVITE uses authentication information provided by REGISTER « Path header • always visit I/P/S for “home” services • compression on link from UE to P-CSCF May 2001
  • 136. hgs/SIP Tutorial 136 RFCs draft-ietf-sip-rfc2543bis-03 base protocol spec RFC 3087 Control of Service Context using SIP Request-URI RFC 3050 Common Gateway Interface for SIP RFC 2916 E.164 number and DNS RFC 2833 RTP Payload for DTMF Digits, Telephony Tones and Telephony Signals RFC 2806 URLs for Telephone Calls RFC 2543 SIP: Session Initiation Protocol May 2001
  • 137. hgs/SIP Tutorial 137 For more information. . . SIP: http://www.cs.columbia.edu/sip SDP: http://www.cs.columbia.edu/˜hgs/internet/sdp.html RTP: http://www.cs.columbia.edu/˜hgs/rtp Papers: http://www.cs.columbia.edu/IRT May 2001