RFC 5359 BEST CURRENT PRACTICE SIP · TELEPHONY · CALL FLOWS

SIP Services: Session Initiation Protocol Service Examples

Worked call flows for 18 office phone services, showing the SIP messages that each one sends.

On rfc-editor.org ↗
PUBLISHED
October 2008
AUTHORS
A. Johnston, R. Sparks, C. Cunningham, S. Donovan, K. Summers
STREAM
IETF
SERVICES SHOWN
18 call flows
DOCUMENT TYPE
Best Current Practice (BCP 144)
BASE SPECIFICATION
SIP 2.0 (RFC 3261)
TRANSPORT IN THE EXAMPLES
TLS on each hop
EXTENSIONS USED
REFER, Replaces, Join, SUBSCRIBE, NOTIFY
MEDIA IN THE EXAMPLES
RTP audio
DOI
10.17487/RFC5359

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                   A. Johnston, Ed.
Request for Comments: 5359                                         Avaya
BCP: 144                                                       R. Sparks
Category: Best Current Practice                                  Tekelec
                                                           C. Cunningham
                                                              S. Donovan
                                                           Cisco Systems
                                                              K. Summers
                                                                   Sonus
                                                            October 2008


              Session Initiation Protocol Service Examples

Status of This Memo

   This document specifies an Internet Best Current Practices for the
   Internet Community, and requests discussion and suggestions for
   improvements.  Distribution of this memo is unlimited.

Abstract

   This document gives examples of Session Initiation Protocol (SIP)
   services.  This covers most features offered in so-called IP Centrex
   offerings from local exchange carriers and PBX (Private Branch
   Exchange) features.  Most of the services shown in this document are
   implemented in the SIP user agents, although some require the
   assistance of a SIP proxy.  Some require some extensions to SIP
   including the REFER, SUBSCRIBE, and NOTIFY methods and the Replaces
   and Join header fields.  These features are not intended to be an
   exhaustive set, but rather show implementations of common features
   likely to be implemented on SIP IP telephones in a business
   environment.

Table of Contents

   1. Overview ........................................................3
      1.1. Legend for Message Flows ...................................4
   2. Service Examples ................................................6
      2.1. Call Hold ..................................................6
      2.2. Consultation Hold .........................................19
      2.3. Music on Hold .............................................38
      2.4. Transfer - Unattended .....................................50
      2.5. Transfer - Attended .......................................58
      2.6. Transfer - Instant Messaging ..............................71
      2.7. Call Forwarding Unconditional .............................77
      2.8. Call Forwarding - Busy ....................................84
      2.9. Call Forwarding - No Answer ...............................92
      2.10. 3-Way Conference - Third Party Is Added .................101
      2.11. 3-Way Conference - Third Party Joins ....................107
      2.12. Find-Me .................................................113
      2.13. Call Management (Incoming Call Screening) ...............125
      2.14. Call Management (Outgoing Call Screening) ...............132
      2.15. Call Park ...............................................135
      2.16. Call Pickup .............................................147
      2.17. Automatic Redial ........................................154
      2.18. Click to Dial ...........................................163
   3. Security Considerations .......................................166
   4. Acknowledgements ..............................................166
   5. References ....................................................167
      5.1. Normative References .....................................167
      5.2. Informative References ...................................168

1.  Overview

   This document provides example call flows detailing a SIP
   implementation of the following traditional telephony services:

           Call Hold                        3-Way Conference
           Consultation Hold                Find-Me
           Music on Hold                    Incoming Call Screening
           Unattended Transfer              Outgoing Call Screening
           Attended Transfer                Call Park
           Instant Messaging Transfer       Call Pickup
           Unconditional Call Forwarding    Automatic Redial
           Call Forwarding on Busy          Click to Dial
           Call Forwarding on No Answer

   Note that the Single Line Extension call flow has been removed from
   this document and will be covered in a separate document.

   The call flows shown in this document were developed in the design of
   a SIP IP communications network.  They represent an example set of
   so-called IP Centrex services or PBX services.

   It is the hope of the authors that this document will be useful for
   SIP implementers, designers, and protocol researchers alike and will
   help further the goal of a standard implementation of RFC 3261
   [RFC3261] and some of its extensions.

   These flows represent carefully checked and working group reviewed
   scenarios of SIP service examples as a companion to the
   specifications.

   These call flows are based on the current version 2.0 of SIP in RFC
   3261 [RFC3261] with Session Description Protocol (SDP) usage
   described in RFC 3264 [RFC3264].  Other RFCs also form part of the
   SIP standard and are used and referenced in these call flows.

   The SIP specification and the other referenced documents are
   definitive as far as protocol issues are concerned.  Also, these
   flows do not represent the only way to implement these services --
   other approaches such as 3pcc (Third Party Call Control) [RFC3725] or
   Back-to-Back User Agents (B2BUAs) can be used.  This specification
   does not preclude these or other approaches for implementing such
   services.  The peer-to-peer design and principles of these service
   examples are described in the Multiparty Framework document
   [FRAMEWORK].

   These flows assume the functionality described in the SIP Call Flow
   Examples document [RFC3665], which explores basic SIP behavior.  Some
   of the scenarios described herein make use of the SIP method
   extension REFER [RFC3515], the SIP header extension Replaces
   [RFC3891], and the SIP header extension Join [RFC3911].  The SIP
   Events document [RFC3265] describes the use of SUBSCRIBE and NOTIFY,
   while the SIP Dialog Event Package document [RFC4235] describes the
   dialog event package.  Some examples make use of the GRUU (Globally
   Routable User Agent URI) extension [GRUU].

   These flows were prepared assuming a network of proxies, registrars,
   and other SIP servers.  The use of Secure SIP URIs (sips) is shown
   throughout this document, implying TLS transport on each hop with
   assumed certificate validation.  However, other security approaches
   can be used.  The use of Digest authentication is shown in some
   examples.

   The emphasis in these call flows is the SIP signaling exchange.  As a
   result, only very simple SDP offer/answer exchanges are shown with
   audio media.  These flows apply equally well for other media and
   multimedia sessions.  For more advanced examples of SDP offer/answer
   exchanges, refer to [RFC4317].

   Each call flow is presented with a textual description of the
   scenario, a message flow diagram showing the messages exchanged
   between separate network elements, and the detailed contents of each
   message shown in the diagram.

   For simplicity in reading and editing the document, there are a
   number of differences between some of the examples and actual SIP
   messages.  For example, the HTTP Digest responses are not actual MD5
   encodings.  Call-IDs are often repeated, and CSeq counts often begin
   at 1.  Header fields are usually shown in the same order.  Usually
   only the minimum required header field set is shown.  Also, message
   body content lengths are often not calculated, but instead shown as
   "..." where the actual octet count would be.

1.1.  Legend for Message Flows

   Dashed lines (---) represent control messages that are mandatory to
   the call scenario.  These control messages can be SIP signaling.

   Double dashed lines (===) represent media paths between network
   elements.

   Messages with parentheses around the name represent optional control
   messages.

   Messages are identified in the figures as F1, F2, etc.  This
   references the message details in the table that follows the figure.

   Lines longer than 72 characters are handled using the <allOneLine>
   convention defined in Section 2.1 of RFC 4475 [RFC4475].

   Comments in the message details are shown in the following form:

   /* Comments. */

2.  Service Examples

2.1.  Call Hold

            Alice           Proxy            Bob
             |    INVITE F1   |              |
             |--------------->|              |
             |                |   INVITE F2  |
             |(100 Trying) F3 |------------->|
             |<---------------|              |
             |                |180 Ringing F4|
             | 180 Ringing F5 |<-------------|
             |<---------------|              |
             |                |  200 OK F6   |
             |    200 OK F7   |<-------------|
             |<---------------|              |
             |     ACK F8     |              |
             |--------------->|    ACK F9    |
             |                |------------->|
             |    Both way RTP Established   |
             |<=============================>|
             |                |INVITE(hold) F10
             |INVITE(hold) F11|<-------------|
             |<---------------|              |
             |    200 OK F12  |              |
             |--------------->|   200 OK F13 |
             |                |------------->|
             |                |     ACK F14  |
             |     ACK F15    |<-------------|
             |<---------------|              |
             |           No RTP Sent!        |
             |                |  INVITE F16  |
             |   INVITE F17   |<-------------|
             |<---------------|              |
             |   200 OK F18   |              |
             |--------------->|  200 OK F19  |
             |                |------------->|
             |                |    ACK F20   |
             |     ACK F21    |<-------------|
             |<---------------|              |
             |    Both way RTP Established   |
             |<=============================>|
             |     BYE F22    |              |
             |--------------->|   BYE F23    |
             |                |------------->|
             |                |   200 OK F24 |
             |    200 OK F25  |<-------------|
             |<---------------|              |

   In this scenario, Alice calls Bob, then Bob places the call on hold.
   Bob then takes the call off hold, then Alice hangs up the call.  Note
   that hold is unidirectional in nature.  However, a UA that places the
   other party on hold will generally also stop sending media, resulting
   in no media exchange between the UAs.  Older UAs may set the
   connection address to 0.0.0.0 when initiating hold.  However, this
   behavior has been deprecated in favor or using the a=inactive SDP
   attribute if no media is sent, or the a=sendonly attribute if media
   is still sent.

   Also note the use of the rendering feature tag defined in RFC 4235
   [RFC4235] used in F10 and F11 to indicate that Bob's UA is no longer
   rendering media to Bob, i.e., that Bob has placed the call on hold.

   Message Details

      F1 INVITE Alice -> Proxy 1

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 INVITE Proxy 1 -> Bob

      INVITE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F3 (100 Trying) Proxy 1 -> Alice

      SIP/2.0 100 Trying
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F4 180 Ringing Bob -> Proxy 1

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content Length:0


      F5 180 Ringing Proxy 1 -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content Length: 0


      F6 200 OK Bob -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F7 200 OK Proxy 1 -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F8 ACK Alice -> Proxy 1

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf92
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F9 ACK Proxy 1 -> Bob

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837492.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf92
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      /* Bob places Alice on hold.  Note that the version is
         incremented in the o= field of the SDP. */

      F10 INVITE Bob -> Proxy 1

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no"
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=sendonly


      F11 INVITE Proxy 1 -> Alice

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no"
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=sendonly


      /* Alice replies to hold. */

      F12 200 OK Alice -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844527 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=recvonly


      F13 200 OK Proxy 1 -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844527 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=recvonly


      F14 ACK Bob -> Proxy 1

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds72
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F15 ACK Proxy 1 -> Alice

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds72
       ;received=192.0.2.105
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      /* Bob takes the call off hold. */

      F16 INVITE Bob -> Proxy 1

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds73
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844529 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F17 INVITE Proxy 1 -> Alice

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837493.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds73
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844529 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F18 200 OK Alice -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837493.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds73
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844528 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F19 200 OK Proxy 1 -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds73
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844528 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F20 ACK Bob -> Proxy 1

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds74
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F21 ACK Proxy 1 -> Alice

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837494.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds74
       ;received=192.0.2.105
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      /* RTP Media stream re-established.  Alice disconnects. */

      F22 BYE Alice -> Proxy 1

      BYE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf97
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F23 BYE Proxy 1 -> Bob

      BYE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837497.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf97
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F24 200 OK Bob -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837497.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf97
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F25 200 OK Proxy 1 -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf97
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0

2.2.  Consultation Hold

           Alice            Proxy           Bob                Carol
             |                |              |                   |
             |    INVITE F1   |              |                   |
             |--------------->|   INVITE F2  |                   |
             |                |------------->|                   |
             |(100 Trying) F3 |              |                   |
             |<---------------|180 Ringing F4|                   |
             |                |<-------------|                   |
             | 180 Ringing F5 |              |                   |
             |<---------------|  200 OK F6   |                   |
             |                |<-------------|                   |
             |    200 OK F7   |              |                   |
             |<---------------|              |                   |
             |     ACK F8     |              |                   |
             |--------------->|     ACK F9   |                   |
             |                |------------->|                   |
             |     Both way RTP Established  |                   |
             |<=============================>|                   |
             |                |INVITE(hold) F10                  |
             |INVITE(hold) F11|<-------------|                   |
             |<---------------|              |                   |
             |    200 OK F12  |              |                   |
             |--------------->|   200 OK F13 |                   |
             |                |------------->|                   |
             |                |     ACK F14  |                   |
             |                |<-------------|                   |
             |    ACK F15     |              |                   |
             |<---------------|              |                   |
             |         No RTP Sent!          |                   |
             |                |   INVITE F16 |                   |
             |                |<-------------|                   |
             |                |              |    INVITE F17     |
             |                |--------------------------------->|
             |                |(100 Trying) F18                  |
             |                |------------->|                   |
             |                |              | 180 Ringing F19   |
             |                |<---------------------------------|
             |                | 180 Ringing F20                  |
             |                |------------->|                   |
             |                |              |    200 OK F21     |
             |                |<---------------------------------|
             |                |   200 OK F22 |                   |
             |                |------------->|                   |
             |                |    ACK F23   |                   |
             |                |<-------------|                   |
             |                |              |      ACK F24      |
             |                |--------------------------------->|
             |                |         Both way RTP Established |
             |                |              |<=================>|
             |                |   BYE F25    |                   |
             |                |<-------------|                   |
             |                |              |       BYE F26     |
             |                |--------------------------------->|
             |                |              |    200 OK F27     |
             |                |<---------------------------------|
             |                |   200 OK F28 |                   |
             |                |------------->|                   |
             |                |   INVITE F29 |                   |
             |    INVITE F30  |<-------------|                   |
             |<---------------|              |                   |
             |    200 OK F31  |              |                   |
             |--------------->|   200 OK F32 |                   |
             |                |------------->|                   |
             |                |     ACK F33  |                   |
             |                |<-------------|                   |
             |    ACK F34     |              |                   |
             |<---------------|              |                   |
             |     Both way RTP Established  |                   |
             |<=============================>|                   |
             |    BYE F35     |              |                   |
             |--------------->|    BYE F36   |                   |
             |                |------------->|                   |
             |                |   200 OK F37 |                   |
             |                |<-------------|                   |
             |  200 OK F38    |              |                   |
             |<---------------|              |                   |
             |                |              |                   |

   In this scenario, Alice calls Bob.  Bob places call on hold.  Bob
   calls Carol.  Bob then disconnects with Carol, then takes the call
   with Alice off hold.  The call ends when Alice hangs up.

   Also note the use of the rendering feature tag defined in RFC 4235
   [RFC4235] used in F10 to indicate that Bob's UA is no longer
   rendering media to Bob, i.e., that Bob has placed the call on hold.

   Message Details

      F1 INVITE Alice -> Proxy 1

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 INVITE Proxy 1 -> Bob

      INVITE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F3 (100 Trying) Proxy 1 -> Alice

      SIP/2.0 100 Trying
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F4 180 Ringing Bob -> Proxy 1
      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content Length:0


      F5 180 Ringing Proxy 1 -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content Length: 0
      F6 200 OK Bob -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F7 200 OK Proxy 1 -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F8 ACK Alice -> Proxy 1

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf45
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F9 ACK Proxy 1 -> Bob

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837494.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf45
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0
      /* Bob places Alice on hold. */

      F10 INVITE Bob -> Proxy 1

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no"
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=sendonly


      F11 INVITE Proxy 1 -> Alice

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837497.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no"
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=sendonly


      F12 200 OK Alice -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837497.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844527 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=recvonly


      F13 200 OK Proxy 1 -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844527 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=recvonly


      F14 ACK Bob -> Proxy 1

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashdsg
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F15 ACK Proxy 1 -> Alice

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK8374.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashdsg
       ;received=192.0.2.105
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F16 INVITE Bob -> Proxy 1

      INVITE sips:carol@chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds22
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844834 2890844834 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 50170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F17 INVITE Proxy 1 -> Carol

      INVITE sips:carol@client.chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749a.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds22
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844834 2890844834 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 50170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F18 (100 Trying) Proxy 1 -> Bob

      SIP/2.0 100 Trying
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds22
       ;received=192.0.2.105
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F19 180 Ringing Carol -> Proxy 1
      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749a.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds22
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Content Length:0


      F20 180 Ringing Proxy 1 -> Bob

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds22
       ;received=client.chicago.example.com
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Content Length: 0


      F21 200 OK Carol -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749a.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds22
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890844922 2890844922 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F22 200 OK Proxy 1 -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds22
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890844922 2890844922 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F23 ACK Bob -> Proxy 1

      ACK sips:carol@client.chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds24
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F24 ACK Proxy 1 -> Carol

      ACK sips:carol@client.chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749b.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds24
       ;received=192.0.2.105
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F25 BYE Bob -> Proxy 1

      BYE sips:carol@client.chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7j
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F26 BYE Proxy 1 -> Carol

      BYE sips:carol@client.chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749k.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7j
       ;received=192.0.2.105
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F27 200 OK Carol -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749k.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7j
       ;received=192.0.2.105
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F28 200 OK Proxy 1 -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7j
       ;received=192.0.2.105
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=456654
      Call-ID: 9876543210@biloxi.example.com
      CSeq: 2 BYE
      Content-Length: 0


      /* Bob takes the call off hold. */

      F29 INVITE Bob -> Proxy 1

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7b
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844529 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F30 INVITE Proxy 1 -> Alice

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749q.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7b
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844529 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F31 200 OK Alice -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749q.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7b
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844528 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F32 200 OK Proxy 1 -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7b
       ;received=192.0.2.105
      Record-Route: <sips:ss1.example.com;lr>
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844528 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F33 ACK Bob -> Proxy 1

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7d7
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0

      F34 ACK Proxy 1 -> Alice

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK8374.1
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7d7
       ;received=192.0.2.105
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F35 BYE Alice -> Proxy 1

      BYE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf10
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F36 BYE Proxy 1 -> Bob

      BYE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK8379.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf10
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0
      F37 200 OK Bob -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK8379.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf10
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F38 200 OK Proxy 1 -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf10
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0

2.3.  Music on Hold

           Alice             Bob       Music Server
             |                |              |
             |    INVITE F1   |              |
             |--------------->|              |
             | 180 Ringing F2 |              |
             |<---------------|              |
             |    200 OK F3   |              |
             |<---------------|              |
             |     ACK F4     |              |
             |--------------->|              |
             |       RTP      |              |
             |<==============>|              |
             |                |              |
             |   Bob places Alice on hold    |
             |                |              |
             | INVITE (hold) F5              |
             |<---------------|              |
             |    200 OK F6   |              |
             |--------------->|              |
             |     ACK F7     |              |
             |<---------------|              |
             |    no RTP      |              |
             |                |              |
             |  Bob initiates music on hold  |
             |                |              |
             |                |   REFER Refer-To: A F8
             |                |------------->|
             |                |    202 F9    |
             |                |<-------------|
             |                |   NOTIFY F10 |
             |                |<-------------|
             |                |    200 F11   |
             |                |------------->|
             |  INVITE F12 Replaces: B       |
             |<------------------------------|
             |          200 OK F13           |
             |------------------------------>|
             |           ACK F14             |
             |<------------------------------|
             |           RTP Music           |
             |<==============================|
             |     BYE F15    |              |
             |--------------->|  NOTIFY F17  |
             |  200 OK F16    |<-------------|
             |<---------------|  200 OK F18  |
             |                |------------->|
             |                |              |
             | The music on hold is complete |
             |                |              |
             |    Bob takes Alice off hold   |
             |                |              |
             |  INVITE Replaces: M F19       |
             |<---------------|              |
             |    200 OK F20  |              |
             |--------------->|              |
             |     ACK F21    |              |
             |<---------------|              |
             |       RTP      |              |
             |<==============>|              |
             |            BYE F22            |
             |------------------------------>|
             |          200 OK F23           |
             |<------------------------------|

   In this flow, Bob places Alice on hold with music.  This is performed
   by Bob sending a REFER to a Music Server that sends an INVITE with
   Replaces to Alice.  The Music Server then sends RTP music to Alice.
   Bob picks the call up from hold by sending an INVITE with Replaces to
   Alice.

   Note the use of the rendering feature tag defined in RFC 4235
   [RFC4235] used in F5 to indicate that Bob's UA is no longer rendering
   media to Bob, i.e., that Bob has placed the call on hold.  Feature
   tags are also used in F12 with the automaton (defined in RFC 3840
   [RFC3840]) and byeless feature tags (defined in RFC 4235 [RFC4235])
   to describe the capabilities of the Music Server.

   Should Alice not wish to receive music on hold, her UA could refuse
   F12 and she will remain on hold with Bob, but in silence.

   Message Details

     F1 INVITE Alice -> Bob

     INVITE sips:bob@biloxi.example.com SIP/2.0
     Via: SIP/2.0/TLS client.atlanta.example.com:5061
      ;branch=z9hG4bK74bf9
     Max-Forwards: 70
     From: Alice <sips:alice@atlanta.example.com>;tag=1234567
     To: Bob <sips:bob@biloxi.example.com>
     Call-ID: 12345600@atlanta.example.com
     CSeq: 1 INVITE
     Contact: <sips:a8342043f@atlanta.example.com;gr>
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
     Supported: replaces, gruu
     Content-Type: application/sdp
     Content-Length: ...

     v=0
     o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
     s=
     c=IN IP4 client.atlanta.example.com
     t=0 0
     m=audio 49170 RTP/AVP 0
     a=rtpmap:0 PCMU/8000


     F2 180 Ringing Bob -> Alice

     SIP/2.0 180 Ringing
     Via: SIP/2.0/TLS client.atlanta.example.com:5061
      ;branch=z9hG4bK74bf9
      ;received=192.0.2.103
     From: Alice <sips:alice@atlanta.example.com>;tag=1234567
     To: Bob <sips:bob@biloxi.example.com>;tag=23431
     Call-ID: 12345600@atlanta.example.com
     CSeq: 1 INVITE
     Contact: <sips:bob@client.biloxi.example.com>
     Content-Length: 0


     F3 200 OK Bob -> Alice

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS client.atlanta.example.com:5061
      ;branch=z9hG4bK74bf9
      ;received=192.0.2.103
     From: Alice <sips:alice@atlanta.example.com>;tag=1234567
     To: Bob <sips:bob@biloxi.example.com>;tag=23431
     Call-ID: 12345600@atlanta.example.com
     CSeq: 1 INVITE
     Contact: <sips:bob@client.biloxi.example.com>
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
     Supported: replaces
     Content-Type: application/sdp
     Content-Length: ...

     v=0
     o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
     s=
     c=IN IP4 client.biloxi.example.com
     t=0 0
     m=audio 3456 RTP/AVP 0
     a=rtpmap:0 PCMU/8000


     F4 ACK Alice -> Bob

     ACK sips:bob@client.biloxi.example.com SIP/2.0
     Via: SIP/2.0/TLS client.atlanta.example.com:5061
      ;branch=z9hG4bK74bfd
     Max-Forwards: 70
     From: Alice <sips:alice@atlanta.example.com>;tag=1234567
     To: Bob <sips:bob@biloxi.example.com>;tag=23431
     Call-ID: 12345600@atlanta.example.com
     CSeq: 1 ACK
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
     Supported: replaces
     Content-Length: 0


     /* Bob places Alice on hold. */

     F5 INVITE Bob -> Alice

     INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0
     Via: SIP/2.0/TLS client.biloxi.example.com:5061
      ;branch=z9hG4bK874bk
     To: Alice <sips:alice@atlanta.example.com>;tag=1234567
     From: Bob <sips:bob@biloxi.example.com>;tag=23431
     Call-ID: 12345600@atlanta.example.com
     CSeq: 712 INVITE
     Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no"
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
     Supported: replaces
     Content-Type: application/sdp
     Content-Length: ...

     v=0
     o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
     s=
     c=IN IP4 client.biloxi.example.com
     t=0 0
     m=audio 3456 RTP/AVP 0
     a=rtpmap:0 PCMU/8000
     a=sendonly
     F6 200 OK Alice -> Bob

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS client.biloxi.example.com:5061
      ;branch=z9hG4bK874bk
      ;received=192.0.2.105
     To: Alice <sips:alice@atlanta.example.com>;tag=1234567
     From: Bob <sips:bob@biloxi.example.com>;tag=23431
     Call-ID: 12345600@atlanta.example.com
     CSeq: 712 INVITE
     Contact: <sips:a8342043f@atlanta.example.com;gr>
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
     Supported: replaces, gruu
     Content-Type: application/sdp
     Content-Length: ...

     v=0
     o=alice 2890844526 2890844527 IN IP4 client.atlanta.example.com
     s=
     c=IN IP4 client.atlanta.example.com
     t=0 0
     m=audio 49170 RTP/AVP 0
     a=rtpmap:0 PCMU/8000
     a=recvonly


     F7 ACK Bob -> Alice

     ACK sips:a8342043f@atlanta.example.com;gr SIP/2.0
     Via: SIP/2.0/TLS client.biloxi.example.com:5061
      ;branch=z9hG4bKq874b
     To: Alice <sips:alice@atlanta.example.com>;tag=1234567
     From: Bob <sips:bob@biloxi.example.com>;tag=23431
     Call-ID: 12345600@atlanta.example.com
     CSeq: 712 ACK
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
     Supported: replaces
     Content-Length: 0


     /* Bob REFERs Music Server to establish session with Alice
        which replaces the established session between Alice and Bob. */

     F8 REFER Bob -> Music Server

     REFER sips:music@server.example.com SIP/2.0
     Via: SIP/2.0/TLS client.biloxi.example.com:5061
      ;branch=z9hG4bKnashds9
     Max-Forwards: 70
     From: Bob <sips:bob@biloxi.example.com>;tag=02134
     To: Music Server <sips:music@server.example.com>
     Call-ID: 4802029847@biloxi.example.com
     CSeq: 1 REFER
   <allOneLine>
     Refer-To: <sips:a8342043f@atlanta.example.com;gr?Replaces=
     12345600%40atlanta.example.com%3Bfrom-tag%3D23431
     %3Bto-tag%3D1234567&Require=replaces>
   </allOneLine>
     Referred-By: <sips:bob@biloxi.example.com>
     Contact: <sips:bob@client.biloxi.example.com>
     Content-Length: 0


     F9 202 Accepted Music Server -> Bob

     SIP/2.0 202 Accepted
     Via: SIP/2.0/TLS client.biloxi.example.com:5061
      ;branch=z9hG4bKnashds9
      ;received=192.0.2.105
     From: Bob <sips:bob@biloxi.example.com>;tag=02134
     To: Music Server <sips:music@server.example.com>;tag=56323
     Call-ID: 4802029847@biloxi.example.com
     Contact: <sips:music@server.example.com>
     CSeq: 1 REFER
     Content-Length: 0


     F10 NOTIFY Music Server -> Bob

     NOTIFY sips:bob@client.biloxi.example.com SIP/2.0
     Via: SIP/2.0/TLS server.example.com:5061
      ;branch=z9hG4bK74bT6
     To: Bob <sips:bob@biloxi.example.com>;tag=02134
     Max-Forwards: 70
     From: Music Server <sips:music@server.example.com>;tag=56323
     Call-ID: 4802029847@biloxi.example.com
     CSeq: 1 NOTIFY
     Event: refer
     Subscription-State: active;expires=60
     Contact: <sips:music@server.example.com>
     Content-Type: message/sipfrag
     Content-Length: ...

     SIP/2.0 100 Trying
     F11 200 OK Bob -> Music Server

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS server.example.com:5061
      ;branch=z9hG4bK74bT6
      ;received=192.0.2.103
     To: Bob <sips:bob@biloxi.example.com>;tag=02134
     From: Music Server <sips:music@server.example.com>;tag=56323
     Call-ID: 4802029847@biloxi.example.com
     CSeq: 1 NOTIFY
     Content-Length: 0


     /* Music Server places call to Alice to replace session
        between Alice and Bob. */

     F12 INVITE Music Server -> Alice

     INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0
     Via: SIP/2.0/TLS server.example.com:5061
      ;branch=z9hG4bK74rf
     Max-Forwards: 70
     From: <sips:music@server.example.com>;tag=0111
     To: <sips:a8342043f@atlanta.example.com;gr>
     Call-ID: a5-75-34-12-76@server.example.com
     CSeq: 1 INVITE
     Referred-By: <sips:bob@biloxi.example.com>
     Contact: <sips:music@server.example.com>;automaton
      ;+sip.byeless;+sip.rendering="no"
     Require: replaces
     Replaces: 12345600@atlanta.example.com
      ;from-tag=23431;to-tag=1234567
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
     Supported: replaces
     Content-Type: application/sdp
     Content-Length: ...

     v=0
     o=MusicServer 2890844576 2890844576 IN IP4 server.example.com
     s=
     c=IN IP4 server.example.com
     t=0 0
     m=audio 49170 RTP/AVP 0
     a=rtpmap:0 PCMU/8000
     a=sendonly
     F13 200 OK Alice -> Music Server

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS server.example.com:5061
      ;branch=z9hG4bK74rf
      ;received=192.0.2.103
     From: <sips:music@server.example.com>;tag=0111
     To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594
     Call-ID: a5-75-34-12-76@server.example.com
     CSeq: 1 INVITE
     Contact: <sips:a8342043f@atlanta.example.com;gr>
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
     Supported: replaces, gruu
     Content-Type: application/sdp
     Content-Length: ...

     v=0
     o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
     s=
     c=IN IP4 client.atlanta.example.com
     t=0 0
     m=audio 49170 RTP/AVP 0
     a=rtpmap:0 PCMU/8000
     a=recvonly


     F14 ACK Music Server -> Alice

     ACK sips:a8342043f@atlanta.example.com;gr SIP/2.0
     Via: SIP/2.0/TLS server.example.com:5061
      ;branch=z9hG4bK7rfF
     Max-Forwards: 70
     From: <sips:music@server.example.com>;tag=0111
     To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594
     Call-ID: a5-75-34-12-76@server.example.com
     CSeq: 1 ACK
     Content-Length: 0


     F15 BYE Alice -> Bob

     BYE sips:bob@client.biloxi.example.com SIP/2.0
     Via: SIP/2.0/TLS client.atlanta.example.com:5061
      ;branch=z9hG4bKnashds7
     Max-Forwards: 70
     From: Alice <sips:alice@atlanta.example.com>;tag=1234567
     To: Bob <sips:bob@biloxi.example.com>;tag=23431
     Call-ID: 12345600@atlanta.example.com
     CSeq: 2 BYE
     Content-Length: 0


     F16 200 OK Bob -> Alice

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS client.atlanta.example.com:5061
      ;branch=z9hG4bKnashds7
      ;received=192.0.2.105
     From: Alice <sips:alice@atlanta.example.com>;tag=1234567
     To: Bob <sips:bob@biloxi.example.com>;tag=23431
     Call-ID: 12345600@atlanta.example.com
     CSeq: 2 BYE
     Content-Length: 0


     /* Music Server reports success back to Bob by returning
        a 200 OK response.  Bob obtains the dialog identifiers
        from the headers included in the response. */

     F17 NOTIFY Music Server -> Bob

     NOTIFY sips:bob@client.biloxi.example.com SIP/2.0
     Via: SIP/2.0/TLS server.example.com:5061
      ;branch=z9hG4bK74bf9
     To: Bob <sips:bob@biloxi.example.com>;tag=02134
     Max-Forwards: 70
     From: Music Server <sips:music@server.example.com>;tag=56323
     Call-ID: 4802029847@biloxi.example.com
     CSeq: 2 NOTIFY
     Event: refer
     Subscription-State: terminated;reason=noresource
     Contact: <sips:music@server.example.com>
     Content-Type: message/sipfrag
     Content-Length: ...

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS server.example.com:5061
      ;branch=z9hG4bK74rf
      ;received=192.0.2.103
     From: <sips:music@server.example.com>;tag=0111
     To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594
     Call-ID: a5-75-34-12-76@server.example.com
     CSeq: 1 INVITE
     Contact: <sips:a8342043f@atlanta.example.com;gr>
     F18 200 OK Bob -> Music Server

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS server.example.com:5061
      ;branch=z9hG4bK74bf9
      ;received=192.0.2.103
     To: Bob <sips:bob@biloxi.example.com>;tag=02134
     From: Music Server <sips:music@server.example.com>;tag=56323
     Call-ID: 4802029847@biloxi.example.com
     CSeq: 2 NOTIFY
     Content-Length: 0


     /* Alice is now parked at the Music Server. */

     /* Bob picks up the call by sending an INVITE to Alice, who
        replaces the existing session with the Music Server. */

     F19 INVITE Bob -> Alice

     INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0
     Via: SIP/2.0/TLS client.biloxi.example.com:5061
      ;branch=z9hG4bK74bf9
     From: Bob <sips:bob@biloxi.example.com>;tag=4i323pr
     To: Alice <sips:a8342043f@atlanta.example.com;gr>
     Call-ID: uioewrjk2k2were
     CSeq: 42121 INVITE
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
      SUBSCRIBE, NOTIFY
     Replaces: a5-75-34-12-76@server.example.com
      ;to-tag=098594;from-tag=0111
     Contact: <sips:bob@client.biloxi.example.com>
     Supported: replaces
     Content-Type: application/sdp
     Content-Length: ...

     v=0
     o=bob 2890844631 2890844631 IN IP4 client.biloxi.example.com
     s=
     c=IN IP4 client.biloxi.example.com
     t=0 0
     m=audio 3458 RTP/AVP 0
     a=rtpmap:0 PCMU/8000
     a=sendrecv
     F20 200 OK Alice -> Bob

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS client.biloxi.example.com:5061
      ;branch=z9hG4bK74bf9
      ;received=192.0.2.105
     From: Bob <sips:bob@biloxi.example.com>;tag=4i323pr
     To: Alice <sips:a8342043f@atlanta.example.com;gr>;tag=6654323
     Call-ID: uioewrjk2k2were
     CSeq: 42121 INVITE
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
      SUBSCRIBE, NOTIFY
     Contact: <sips:alice@client.atlanta.example.com>
     Supported: replaces
     Content-Type: application/sdp
     Content-Length: ...

     v=0
     o=alice 2890844576 2890844576 IN IP4 client.atlanta.example.com
     s=
     c=IN IP4 client.atlanta.example.com
     t=0 0
     m=audio 49170 RTP/AVP 0
     a=rtpmap:0 PCMU/8000
     a=sendrecv


     F21 200 ACK Bob -> Alice

     ACK sips:alice@client.atlanta.example.com SIP/2.0
     Via: SIP/2.0/TLS client.biloxi.example.com:5061
      ;branch=z9hG4bKj974bf9
     From: Bob <sips:bob@biloxi.example.com>;tag=4i323pr
     To: Alice <sips:a8342043f@atlanta.example.com;gr>;tag=6654323
     Call-ID: uioewrjk2k2were
     CSeq: 42121 ACK
     Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
      SUBSCRIBE, NOTIFY
     Supported: replaces
     Content-Length: 0


     F22 BYE Alice -> Music Server

     BYE sips:music@server.example.com SIP/2.0
     Max-Forwards: 70
     Via: SIP/2.0/TLS client.atlanta.example.com:5061
      ;branch=z9hG4bK74rf
     To: <sips:music@server.example.com>;tag=0111
     From: <sips:a8342043f@atlanta.example.com;gr>;tag=098594
     Call-ID: a5-75-34-12-76@server.example.com
     CSeq: 15 BYE
     Content-Length: 0


     F23 200 OK Music Server -> Alice

     SIP/2.0 200 OK
     Via: SIP/2.0/TLS client.atlanta.example.com:5061
      ;branch=z9hG4bK74rf
      ;received=192.0.2.103
     To: <sips:music@server.example.com>;tag=0111
     From: <sips:a8342043f@atlanta.example.com;gr>;tag=098594
     Call-ID: a5-75-34-12-76@server.example.com
     CSeq: 15 BYE
     Content-Length: 0


     /* Normal media session between Alice and Bob is resumed. */

2.4.  Transfer - Unattended


          Alice                 Bob                 Carol
            |      INVITE F1     |                    |
            |<-------------------|                    |
            |   180 Ringing F2   |                    |
            |------------------->|                    |
            |      200 OK F3     |                    |
            |------------------->|                    |
            |        ACK F4      |                    |
            |<-------------------|                    |
            |        RTP         |                    |
            |<==================>|                    |
            |                    |                    |
            |  Alice performs unattended transfer     |
            |                    |                    |
            | REFER Refer-To:C F5|                    |
            |------------------->|                    |
            |  202 Accepted F6   |                    |
            |<-------------------|                    |
            |      NOTIFY F7     |                    |
            |<-------------------|                    |
            |      200 OK F8     |                    |
            |------------------->|                    |
            |       BYE F9       |                    |
            |------------------->|                    |
            |     200 OK F10     |                    |
            |<-------------------|                    |
            |   No RTP Session   | INVITE Referred-By: A F11
            |                    |------------------->|
            |                    |   180 Ringing F12  |
            |                    |<-------------------|
            |                    |     200 OK F13     |
            |                    |<-------------------|
            |                    |       ACK F14      |
            |                    |------------------->|
            |                    |        RTP         |
            |                    |<==================>|
            |      NOTIFY F15    |                    |
            |<-------------------|                    |
            |      200 OK F16    |                    |
            |------------------->|                    |
            |                    |                    |

   In this scenario, Bob calls Alice.  Alice then transfers Bob to
   Carol, then Alice disconnects with Bob.  Bob establishes the session
   to Carol then reports the success back to Alice in the NOTIFY in F15.
   If the transfer fails, Bob can send a new INVITE back to Alice to re-
   establish the session.

   Despite the BYE sent by Alice in F9, the dialog between Alice and Bob
   still exists until the subscription created by the REFER has
   terminated (either due to a NOTIFY containing a Subscription-State:
   terminated;reason=noresource header field, as in F15, or a 481
   response to a NOTIFY).

   For more about call transfer, see the transfer document [TRANSFER].

   Message Details

      F1 INVITE Bob -> Alice

      INVITE sips:alice@atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 180 Ringing Alice -> Bob

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Content-Length: 0


      F3 200 OK Alice -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F4 ACK Bob -> Alice

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds2
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      /* Session is established between Alice and Bob. */
      /* Alice performs unattended transfer of Bob to Carol. */


      F5 REFER Alice -> Bob

      REFER sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds8
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 101 REFER
      Refer-To: <sips:carol@chicago.example.com>
      Referred-By: <alice@atlanta.example.com>
      Contact: <sips:alice@client.atlanta.example.com>
      Content-Length: 0


      F6 202 Accepted Bob -> Alice

      SIP/2.0 202 Accepted
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds8
       ;received=192.0.2.105
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      Contact: <sips:bob@client.biloxi.example.com>
      CSeq: 101 REFER
      Content-Length: 0


      F7 NOTIFY Bob -> Alice

      NOTIFY sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds32
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 NOTIFY
      Event: refer
      Subscription-State: active;expires=60
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Type: message/sipfrag
      Content-Length: ...

      SIP/2.0 100 Trying


      F8 200 OK Alice -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds32
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 2 NOTIFY
      Content-Length: 0


      /* Alice now disconnects with Bob. */


      F9 BYE Alice -> Bob

      BYE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds43
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 102 BYE
      Content-Length: 0


      F10 200 OK Bob -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds43
       ;received=192.0.2.105
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345601@atlanta.example.com
      CSeq: 102 BYE
      Content-Length: 0

      /* Bob attempts the transfer to Carol. */
      F11 INVITE Bob -> Carol

      INVITE sips:carol@chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds1
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Referred-By: <alice@atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844539 2890844539 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3458 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F12 180 Ringing Carol -> Bob

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds1
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=928287
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Content-Length: 0


      F13 200 OK Carol -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds1
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=928287
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890944542 2890844542 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F14 ACK Bob -> Carol

      ACK sips:carol@client.chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds9
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=928287
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      /* Bob and Carol now have established a session.  Bob reports
         success to Alice, which Alice probably ignores. */


      F15 NOTIFY Bob -> Alice

      NOTIFY sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds67
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 3 NOTIFY
      Event: refer
      Subscription-State: terminated;reason=noresource
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Type: message/sipfrag
      Content-Length: ...

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds1
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=928287
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Content-Type: application/sdp
      Content-Length: ...


      F16 200 OK Alice -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds6
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=314159
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345601@atlanta.example.com
      CSeq: 3 NOTIFY
      Content-Length: 0

2.5.  Transfer - Attended

           Alice             Bob          Carol
             |                |              |
             |    INVITE F1   |              |
             |--------------->|              |
             | 180 Ringing F2 |              |
             |<---------------|              |
             |    200 OK F3   |              |
             |<---------------|              |
             |     ACK F4     |              |
             |--------------->|              |
             |       RTP      |              |
             |<==============>|              |
             |INVITE (hold) F5|              |
             |<---------------|              |
             |    200 OK F6   |              |
             |--------------->|              |
             |     ACK F7     |              |
             |<---------------|              |
             |     No RTP     |              |
             |                |  INVITE F8   |
             |                |------------->|
             |                | 180 Ringing F9
             |                |<-------------|
             |                |  200 OK F10  |
             |                |<-------------|
             |                |    ACK F11   |
             |                |------------->|
             |                |     RTP      |
             |                |<============>|
             |                |INVITE (hold) F12
             |                |------------->|
             |                | 200 OK F13   |
             |                |<-------------|
             |                |    ACK F14   |
             |                |------------->|
             |                |     No RTP   |
             | REFER Refer-To: C F15         |
             |<---------------|              |
             |202 Accepted F16|              |
             |--------------->|              |
             |   NOTIFY F17   |              |
             |--------------->|              |
             |   200 OK F18   |              |
             |<---------------|              |
             |     INVITE Replaces: B F19    |
             |------------------------------>|
             |            200 OK F20         |
             |<------------------------------|
             |             ACK F21           |
             |------------------------------>|
             |               RTP             |
             |<=============================>|
             |                |    BYE F22   |
             |                |<-------------|
             |                |  200 OK F23  |
             |                |------------->|
             |   NOTIFY F24   |              |
             |--------------->|              |
             |   200 OK F25   |              |
             |<---------------|              |
             |    BYE F26     |              |
             |<---------------|              |
             |   200 OK F27   |              |
             |--------------->|              |


   In this scenario, Alice calls Bob.  Bob puts Alice on hold then calls
   Carol to announce transfer, then places Carol on hold.  Bob transfers
   Alice to Carol, which replaces the session between Bob and Carol.
   Carol then disconnects session with Bob.  Alice reports success of
   transfer to Bob, who then disconnects with Alice.  In this example,
   the Replaces header field [RFC3891] is inserted into the Refer-To URI
   by Bob.  Note that the Refer-To URI is the Contact URI returned by
   Carol in the 200 OK response F10.  This ensures that only the correct
   instance of Carol is reached.  The presence of the gr URI parameter
   in the Contact URI in message F10 indicates that the Contact URI is a
   GRUU [GRUU] and will be globally routable outside of the dialog.
   Without knowing the Contact URI is a gruu, Bob must be prepared, if
   the triggered INVITE had failed, to retry the REFER with a Refer-To
   URI of the URI used to reach Carol but with a Require: replaces
   header escaped in the Refer-To header field, as discussed in the
   transfer document [TRANSFER].

   Message Details

      F1 INVITE Alice -> Bob

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 180 Ringing Bob -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Length: 0


      F3 200 OK Bob -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F4 ACK Alice -> Bob

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      /* Alice and Bob have established a session.
         Bob puts Alice on hold. */


      F5 INVITE Bob -> Alice

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 INVITE
      Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no"
      Content-Type: application/sdp
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=sendonly


      F6 200 OK Alice -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844527 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=recvonly


      F7 ACK Bob -> Alice

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds3
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 ACK
      Content-Length: 0

      /* Bob calls Carol. */
      F8 INVITE Bob -> Carol

      INVITE sips:carol@chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 28908445834 2890844834 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3458 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F9 180 Ringing Carol -> Bob

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 INVITE
      Contact: <sips:39itp34klkd@chicago.example.com>
      Content-Length: 0


      F10 200 OK Carol -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 INVITE
      Contact: <sips:39itp34klkd@chicago.example.com;gr>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890844922 2890844922 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F11 ACK Bob -> Carol

      ACK sips:39itp34klkd@chicago.example.com;gr SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashd5
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 ACK
      Content-Length: 0

      /* Bob puts Carol on hold. */


      F12 INVITE Bob -> Carol

      INVITE sips:39itp34klkd@chicago.example.com;gr SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds0
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 43 INVITE
      Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no"
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 289084834 2890844835 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3458 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=sendonly


      F13 200 OK Carol -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds0
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 43 INVITE
      Contact: <sips:39itp34klkd@chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890844922 2890844923 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      a=recvonly


      F14 ACK Bob -> Carol

      ACK sips:39itp34klkd@chicago.example.com;gr SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash334
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 43 ACK
      Content-Length: 0

      /* Bob transfers Alice to Carol. */


      F15 REFER Bob -> Alice

      REFER sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds2g
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1025 REFER
    <allOneLine>
      Refer-To: <sips:39itp34klkd@chicago.example.com?Replaces=
      sdjfdjfskdf%40biloxi.example.com%3Bto-tag%3D5f35a3
      %3Bfrom-tag%3D8675309&Require=replaces>
    </allOneLine>
      Referred-By: <sips:bob@biloxi.example.com>
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Length: 0


      F16 202 Accepted Alice -> Bob

      SIP/2.0 202 Accepted
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds2g
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      Contact: <sips:alice@client.atlanta.example.com>
      CSeq: 1025 REFER
      Content-Length: 0


      F17 NOTIFY Alice -> Bob

      NOTIFY sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfK
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 NOTIFY
      Contact: <sips:alice@client.atlanta.example.com>
      Event: refer
      Subscription-State: active;expires=60
      Content-Type: message/sipfrag
      Content-Length: ...

      SIP/2.0 100 Trying


      F18 200 OK Bob -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfK
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 NOTIFY
      Content-Length: 0

      /* Alice establishes session with Carol, which replaces the
         session between Bob and Carol. */


      F19 INVITE Alice -> Carol

      INVITE sips:39itp34klkd@chicago.example.com;gr SIP/2.0
      Via: SIP/2.0/TLS chicago.example.com:5061
       ;branch=z9hG4bKadfe4ko
      To: Carol <sips:39itp34klkd@chicago.example.com>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=3461
      Call-ID: 9435674543@atlanta.example.com
      CSeq: 1 INVITE
      Require: replaces
      Referred-By: <sips:bob@biloxi.example.com>
      Replaces: sdjfdjfskdf@biloxi.example.com
       ;to-tag=5f35a3;from-tag=8675309
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844989 2890844989 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 3458 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F20 200 OK Carol -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS chicago.example.com:5061
       ;branch=z9hG4bKadfe4ko
       ;received=192.0.2.103
      To: Carol <sips:39itp34klkd@chicago.example.com>;tag=ff3a
      From: Alice <sips:alice@atlanta.example.com>;tag=3461
      Call-ID: 9435674543@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:39itp34klkd@chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890844221 2890844221 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 49172 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F21 ACK Alice -> Carol

      ACK sips:39itp34klkd@chicago.example.com;gr SIP/2.0
      Via: SIP/2.0/TLS chicago.example.com:5061
       ;branch=z9hG4bKadfe4kU3
      To: Carol <sips:39itp34klkd@chicago.example.com>;tag=ff3a
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=3461
      Call-ID: 9435674543@atlanta.example.com
      CSeq: 1 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0

      /* Carol then disconnects from Bob. */


      F22 BYE Carol -> Bob

      BYE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfE
      To: Bob <sips:bob@biloxi.example.com>;tag=8675309
      Max-Forwards: 70
      From: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 1 BYE
      Content-Length: 0


      F23 200 OK Bob -> Carol

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfE
       ;received=192.0.2.123
      To: Bob <sips:bob@biloxi.example.com>;tag=8675309
      From: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 1 BYE
      Content-Length: 0


      /* Alice tells Bob that the call has been
         successfully transferred. */

      F24 NOTIFY Alice -> Bob

      NOTIFY sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf2N
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 3 NOTIFY
      Event: refer
      Subscription-State: terminated;reason=noresource
      Contact: <sips:alice@client.atlanta.example.com>
      Content-Type: message/sipfrag
      Content-Length: ...

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS chicago.example.com:5061
       ;branch=z9hG4bKadfe4ko
       ;received=192.0.2.103
      To: Carol <sips:39itp34klkd@chicago.example.com>;tag=ff3a
      From: Alice <sips:alice@atlanta.example.com>;tag=3461
      Call-ID: 9435674543@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:39itp34klkd@chicago.example.com>


      F25 200 OK Bob -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 3 NOTIFY
      Content-Length: 0

      /* Bob disconnects with Alice. */


      F26 BYE Bob -> Alice

      BYE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7P
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1026 BYE
      Content-Length: 0


      F27 200 OK Alice -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7P
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1026 BYE
      Content-Length: 0

2.6.  Transfer - Instant Messaging


            Alice          Bob                Carol
             |              |                   |
             |   INVITE F1  |                   |
             |------------->|                   |
             | 180 Ringing F2                   |
             |<-------------|                   |
             |  200 OK F3   |                   |
             |<-------------|                   |
             |    ACK F4    |                   |
             |------------->|                   |
             |  Both way RTP Established        |
             |<============>|                   |
             |              |     MESSAGE F5    |
             |              |------------------>|
             |              |     200 OK F6     |
             |              |<------------------|
             |              |                   |
             |       INVITE Replaces:A-B F7     |
             |<---------------------------------|
             |            200 OK F8             |
             |--------------------------------->|
             |               ACK F9             |
             |<---------------------------------|
             |   Both way RTP Established       |
             |<================================>|
             |    BYE F10   |                   |
             |------------->|                   |
             |  200 OK F11  |                   |
             |<-------------|                   |
             |                                  |

   In this scenario, Alice and Bob establish a session between them.
   Bob wants Carol to take the call and so sends an Instant Message (IM)
   to Carol containing Alice's URI and an embedded Replaces header
   field.  If Carol clicks on the URI, Carol's SIP UA sends an INVITE to
   Alice, which replaces the session with Bob.

   This scenario shows the use of the SIP MESSAGE [RFC3428] method to
   pass the URI.  However, another IM protocol or other method could
   have been used to pass the URI from Bob to Carol.

   Message Details

      F1 INVITE Alice -> Bob
      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:a8342043f@atlanta.example.com;gr>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 180 Ringing Bob -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Length: 0
      F3 200 OK Bob -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      Contact: <sips:bob@client.biloxi.example.com>
      CSeq: 1 INVITE
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F4 ACK Alice -> Bob

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74r
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      CSeq: 1 ACK
      Content-Length: 0

      /* Bob IMs Carol. */


      F5 MESSAGE Bob -> Carol

      MESSAGE sips:carol@chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 MESSAGE
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE
      Supported: replaces
      Content-Type: text/html
      Content-Length: ...

      <HTML>Do you want to take this call from
    <allOneLine>
      <A HREF="sips:a8342043f@atlanta.example.com;gr?Replaces=
      12345600@atlanta.example.com%3Bto-tag%3D3145678
      %3Bfrom-tag%3D1234567&Require=replaces">
      Alice</A>?
    </allOneLine>
       </HTML>


      F6 200 OK Carol -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=5f35a3
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 MESSAGE
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE
      Supported: replaces
      Content-Length: 0

      /* Carol takes the call from Bob. */


      F7 INVITE  Carol -> Alice

      INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0
      Via: SIP/2.0/TLS pc.biloxi.example.com:5061
       ;branch=z9hG4bK74HH
      Max-Forwards: 70
      From: Carol <sips:carol@chicago.example.com>;tag=8675310
      To: Alice <sips:a8342043f@atlanta.example.com;gr>
      Call-ID: 563456212@b2.chicago.example.com
      CSeq: 1 INVITE
      Require: replaces
      Replaces: 12345600@atlanta.example.com
       ;to-tag=3145678;from-tag=1234567
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890843122 2890843122 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 5342 RTP/AVP 0
      a=rtpmap:0 PCMU/8000

      /* Alice matches the dialog information in the
         Replaces header and accepts the INVITE. */


      F8 200 OK Alice -> Carol

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS pc.biloxi.example.com:5061
       ;branch=z9hG4bK74HH
       ;received=192.0.2.114
      From: Carol <sips:carol@chicago.example.com>;tag=8675310
      To: Alice <sips:a8342043f@atlanta.example.com;gr>;tag=131256
      Call-ID: 563456212@b2.chicago.example.com
      CSeq: 1 INVITE
      Contact: <sips:a8342043f@atlanta.example.com;gr>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 289084543 289084543 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49172 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F9 ACK  Carol -> Alice

      ACK sips:a8342043f@atlanta.example.com;gr SIP/2.0
      Via: SIP/2.0/TLS b2.biloxi.example.com:5061
       ;branch=z9hG4bK7435
      Max-Forwards: 70
      From: Carol <sips:carol@chicago.example.com>;tag=8675310
      To: Alice <sips:a8342043f@atlanta.example.com;gr>;tag=131256
      Call-ID: 563456212@b2.chicago.example.com
      CSeq: 1 ACK
      Content-Length: 0


      /* RTP streams are established between Alice and Carol.
         Alice hangs up with Bob due to the Replaces header field. */


      F10 BYE Alice -> Bob

      BYE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F11 200 OK Bob -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      CSeq:  2 BYE
      Content-Length: 0

2.7.  Call Forwarding Unconditional


            Alice           Proxy          Gateway
             |                |              |
             |    INVITE F1   |              |
             |--------------->|              |
             |(100 Trying) F2 |              |
             |<---------------|              |
             | (181 Call Is Being Forwarded) F3
             |<---------------|   INVITE F4  |
             |                |------------->|
             |                |180 Ringing F5|
             | 180 Ringing F6 |<-------------|
             |<---------------|  200 OK F7   |
             |    200 OK F8   |<-------------|
             |<---------------|              |
             |     ACK F9     |              |
             |--------------->|    ACK F10   |
             |                |------------->|
             |    Both way RTP Established   |
             |<=============================>|
             |     BYE F11    |              |
             |--------------->|   BYE F12    |
             |                |------------->|
             |                |   200 OK F13 |
             |    200 OK F14  |<-------------|
             |<---------------|              |
             |                |              |

   Bob wants all calls forwarded to the Public Switched Telephone
   Network (PSTN) (which is just another URI to the proxy server).
   Alice calls Bob.  The proxy server rewrites the Request URI, and
   forwards the INVITE to a Gateway.  Details of messaging behind the
   Gateway are not shown.

   Note that the 181 Call is Being Forwarded response is shown as sent
   by the proxy.  Strictly speaking, the proxy is behaving as a user
   agent in this case as a proxy cannot generate non-100 provisional
   responses.

   Note also that forwarding could be accomplished using a redirect (302
   Moved Temporarily response).

   Message Details

      F1 INVITE Alice -> Proxy
      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 (100 Trying) Proxy -> Alice

      SIP/2.0 100 Trying
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F3 (181 Call is Being Forwarded) Proxy -> Alice

      SIP/2.0 181 Call is Being Forwarded
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=9214d
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0

      /* Proxy forwards call by rewriting Request-URI. */


      F4 INVITE Proxy -> Gateway

      INVITE sips:+19727293660@gw1.example.com;user=phone SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F5 180 Ringing Gateway -> Proxy

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:+19727293660@gw1.example.com;user=phone>
      Content Length:0


      F6 180 Ringing Proxy -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:+19727293660@gw1.example.com;user=phone>
      Content Length: 0


      F7 200 OK Gateway -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:+19727293660@gw1.example.com;user=phone>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=GATEWAY1 2890844527 2890844527 IN IP4 gatewayone.example.com
      s=
      c=IN IP4 gatewayone.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F8 200 OK Proxy -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:+19727293660@gw1.example.com;user=phone>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=GATEWAY1 2890844527 2890844527 IN IP4 gatewayone.example.com
      s=
      c=IN IP4 gatewayone.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F9 ACK Alice -> Proxy

      ACK sips:+19727293660@gw1.example.com;user=phone SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf31
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F10 ACK Proxy -> Gateway

      ACK sips:+19727293660@gw1.example.com;user=phone SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749ws.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf31
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F11 BYE Alice -> Proxy

      BYE sips:+19727293660@gw1.example.com;user=phone SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfJe
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F12 BYE Proxy -> Gateway

      BYE sips:+19727293660@gw1.example.com;user=phone SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749G1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfJe
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F13 200 OK Gateway -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749G1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfJe
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F14 200 OK Proxy -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfJe
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 12345600@atlanta.example.com
      CSeq:  2 BYE
      Content-Length: 0

2.8.  Call Forwarding - Busy


           Alice            Proxy          User B1             User B2
             |                |              |                   |
             |    INVITE F1   |              |                   |
             |--------------->|   INVITE F2  |                   |
             |                |------------->|                   |
             |(100 Trying) F3 |              |                   |
             |<---------------|  486 Busy F4 |                   |
             |                |<-------------|                   |
             |                |     ACK F5   |                   |
             |                |------------->|                   |
             |(181 Call is Being Forwarded) F6                   |
             |<---------------|              |    INVITE F7      |
             |                |--------------------------------->|
             |                |              | 180 Ringing F8    |
             |                |<---------------------------------|
             | 180 Ringing F9 |              |                   |
             |<---------------|              |      200 OK F10   |
             |                |<---------------------------------|
             |    200 OK F11  |              |                   |
             |<---------------|              |                   |
             |     ACK F12    |              |                   |
             |--------------->|              |     ACK F13       |
             |                |--------------------------------->|
             |               Both way RTP Established            |
             |<=================================================>|
             |    BYE F14     |              |                   |
             |--------------->|              |      BYE F15      |
             |                |--------------------------------->|
             |                |              |    200 OK F16     |
             |  200 OK F17    |<---------------------------------|
             |<---------------|              |                   |
             |                |              |                   |

   Bob wants calls to B1 forwarded to B2 if B1 is busy (this information
   is known to the proxy).  Alice calls B1, B1 is busy, the proxy server
   places call to B2.

   Message Details

      F1 INVITE Alice -> Proxy

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 INVITE Proxy -> B1

      INVITE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F3 (100 Trying) Proxy -> Alice

      SIP/2.0 100 Trying
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F4 486 Busy Here B1 -> Proxy

      SIP/2.0 486 Busy Here
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F5 ACK Proxy -> B1

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F6 (181 Call is Being Forwarded) Proxy -> Alice

      SIP/2.0 181 Call is Being Forwarded
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=9214d
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0

      /* The proxy now forwards the call to B2. */


      F7 INVITE Proxy -> B2

      INVITE sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F8 180 Ringing B2 -> Proxy

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client2.biloxi.example.com>
      Content-Length: 0


      F9 180 Ringing Proxy -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client2.biloxi.example.com>
      Content-Length: 0


      F10 200 OK B2 -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client2.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client2.biloxi.example.com
      s=
      c=IN IP4 client2.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F11 200 OK Proxy -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client2.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client2.biloxi.example.com
      s=
      c=IN IP4 client2.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F12 ACK Alice -> Proxy

      ACK sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfX
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F13 ACK Proxy -> B2

      ACK sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83731
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfX
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0

      /* RTP streams are established between Alice and B2. */

      /* Alice eventually hangs up with User B2. */


      F14 BYE Alice -> Proxy

      BYE sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bW4
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F15 BYE Proxy -> B2

      BYE sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837493
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bW4
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F16 200 OK B2 -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837493
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bW4
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F17 200 OK Proxy -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bW4
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq:  2 BYE
      Content-Length: 0

2.9.  Call Forwarding - No Answer


           Alice            Proxy         User B1             User B2
             |                |              |                   |
             |    INVITE F1   |              |                   |
             |--------------->|   INVITE F2  |                   |
             |(100 Trying) F3 |------------->|                   |
             |<---------------|180 Ringing F4|                   |
             | 180 Ringing F5 |<-------------|                   |
             |<---------------|              |                   |
             |                 Request Timeout                   |
             |                |              |                   |
             |                |   CANCEL F6  |                   |
             |                |------------->|                   |
             |                |   200 OK F7  |                   |
             |                |<-------------|                   |
             |                |     487 F8   |                   |
             |                |<-------------|                   |
             |                |     ACK F9   |                   |
             |                |------------->|                   |
             |(181 Call is Being Forwarded) F10                  |
             |<---------------|              |    INVITE F11     |
             |                |--------------------------------->|
             |                |              | 180 Ringing F12   |
             | 180 Ringing F13|<---------------------------------|
             |<---------------|              |      200 OK F14   |
             |                |<---------------------------------|
             |   200 OK F15   |              |                   |
             |<---------------|              |                   |
             |     ACK F16    |              |                   |
             |--------------->|              |     ACK F17       |
             |                |--------------------------------->|
             |               Both way RTP Established            |
             |<=================================================>|
             |    BYE F18     |              |                   |
             |--------------->|              |      BYE F19      |
             |                |--------------------------------->|
             |                |              |    200 OK F20     |
             |  200 OK F21    |<---------------------------------|
             |<---------------|              |                   |
             |                |              |                   |

   Bob wants calls to B1 forwarded to B2 if B1 is not answered
   (information is known to the proxy server).  Alice calls B1 and no
   one answers.  The proxy server then places the call to B2.

   Message Details

      F1 INVITE Alice -> Proxy

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 INVITE Proxy -> B1

      INVITE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F3 (100 Trying) Proxy -> Alice

      SIP/2.0 100 Trying
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F4 180 Ringing B1 -> Proxy

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Length: 0


      F5 180 Ringing Proxy -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Length: 0

      /* B1 rings until a configurable timer expires in the proxy.  The
         proxy sends Cancel and proceeds down the list of routes. */


      F6 CANCEL Proxy -> B1

      CANCEL sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 CANCEL
      Content-Length: 0


      F7 200 OK B1 -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=329d823
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 CANCEL
      Content-Length: 0


      F8 487 Request Terminated B1 -> Proxy

      SIP/2.0 487 Request Terminated
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0
      F9 ACK Proxy -> B1

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=3145678
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F10 (181 Call is Being Forwarded) Proxy -> Alice

      SIP/2.0 181 Call is Being Forwarded
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=9214d
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F11 INVITE Proxy -> B2

      INVITE sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F12 180 Ringing B2 -> Proxy

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client2.biloxi.example.com>
      Content-Length: 0


      F13 180 Proxy -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client2.biloxi.example.com>
      Content-Length: 0


      F14 200 OK B2 -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client2.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client2.biloxi.example.com
      s=
      c=IN IP4 client2.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F15 200 OK Proxy -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client2.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client2.biloxi.example.com
      s=
      c=IN IP4 client2.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F16 ACK Alice -> Proxy

      ACK sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf3
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F17 ACK Proxy -> B2

      ACK sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK8374.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf3
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0

      /* RTP streams are established between Alice and B2.
         Alice hangs up with User B2. */


      F18 BYE Alice -> Proxy

      BYE sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74b3f
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F19 BYE Proxy -> B2

      BYE sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74b3f
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F20 200 OK B2 -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK837.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74b3f
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 BYE
      Content-Length: 0


      F21 200 OK Proxy -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74b3f
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq:  2 BYE
      Content-Length: 0

2.10.  3-Way Conference - Third Party Is Added


            Alice           Bob            Carol
             |    INVITE F1   |              |
             |--------------->|              |
             | 180 Ringing F2 |              |
             |<---------------|              |
             |    200 OK F3   |              |
             |<---------------|              |
             |     ACK F4     |              |
             |--------------->|              |
             |       RTP      |              |
             |<==============>|              |
             |   INVITE F5    |              |
             |<---------------|              |
             |    200 OK F6   |              |
             |--------------->|              |
             |     ACK F7     |              |
             |<---------------|  INVITE F8   |
             |                |------------->|
             |                |    180 F9    |
             |                |<-------------|
             |                |  200 OK F10  |
             |                |<-------------|
             |                |  ACK F11     |
             |                |------------->|
             |                |       RTP    |
             |                |<============>|

   In this scenario, Alice and Bob are in a 2-party call (session) when
   Bob wishes to add Carol into the conversation.  Bob is capable of
   media mixing in a 3-party call.  Bob first sends a re-INVITE to
   Alice, changing Contact URIs to one that indicates Bob's mixer and
   acts like a focus.  As a result, Bob includes the "isfocus" feature
   tag [RFC3840] as described in [RFC4579].  Bob then INVITEs Carol
   using the same Contact URI.  Note that Bob could wait to re-INVITE
   Alice until after Carol has answered.  Bob could also put Alice on
   hold before calling Carol.

   Message Details

      F1 INVITE Alice -> Bob

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 180 Ringing Bob -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:b54gh42f5@biloxi.example.com>
      Content-Length: 0


      F3 200 OK Bob -> Alice

      SIP/2.0 200 OK

      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:b54gh42f5@biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F4 ACK Alice -> Bob

      ACK sips:b54gh42f5@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfL
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0

      /* Alice and Bob have established a session.
         Bob re-INVITEs, changing Contact URIs. */


      F5 INVITE Bob -> Alice

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 INVITE
      Contact: <sips:bob-Mixer@client.biloxi.example.com>;isfocus
      Content-Type: application/sdp
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, gruu
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 49172 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F6 200 OK Alice -> Bob

      SIP/2.0 200 OK

      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F7 ACK Bob -> Alice

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash3G
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 ACK
      Content-Length: 0

      /* Bob calls Carol. */
      F8 INVITE Bob -> Carol

      INVITE sips:carol@chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashJfd
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 INVITE
      Contact: <sips:bob-Mixer@client.biloxi.example.com>;isfocus
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 28908445834 2890844834 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 48174 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F9 180 Ringing Carol -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashJfd
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=341313
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F10 200 OK Carol -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashJfd
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=341313
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890844922 2890844922 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F11 ACK Bob -> Carol

      ACK sips:carol@client.chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash431
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=341313
      Call-ID: sdjfdjfskdf@biloxi.example.com
      CSeq: 42 ACK
      Content-Length: 0


      /* Bob's mixer now mixes media from both Alice and Carol
         to create the 3-way conference. */

2.11.  3-Way Conference - Third Party Joins


            Alice           Bob            Carol
             |    INVITE F1   |              |
             |--------------->|              |
             | 180 Ringing F2 |              |
             |<---------------|              |
             |    200 OK F3   |              |
             |<---------------|              |
             |     ACK F4     |              |
             |--------------->|              |
             |       RTP      |              |
             |<==============>|  INVITE Join:A-B F5
             |                |<-------------|
             |                |    180 F6    |
             |                |------------->|
             |   INVITE F7    |              |
             |<---------------|              |
             |    200 OK F8   |              |
             |--------------->|              |
             |     ACK F9     |              |
             |<---------------|              |
             |                |  200 OK F10  |
             |                |------------->|
             |                |  ACK F11     |
             |                |<-------------|
             |                |       RTP    |
             |                |<============>|


   In this scenario, Alice and Bob are in a 2-party call and Carol
   wishes to join, resulting in a 3-party call.  Carol could have
   learned Bob's dialog identifier using some non-SIP means, or possibly
   from a NOTIFY with the dialog package sent by Bob.  Carol sends an
   INVITE to Bob containing a Join header identifying the dialog between
   Alice and Bob.  Bob re-INVITEs Alice to switch to focus mode and
   includes the "isfocus" feature tag [RFC3840] as described in
   [RFC4579].  Bob then accepts the INVITE from Carol, resulting in the
   3-way call.

   Message Details

      F1 INVITE Alice -> Bob

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 180 Ringing Bob -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:b54gh42f5@biloxi.example.com>
      Content-Length: 0


      F3 200 OK Bob -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:b54gh42f5@biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, join, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F4 ACK Alice -> Bob

      ACK sips:b54gh42f5@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf6
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=23431
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0

      /* Alice and Bob have established a session.
         Carol requests to join the session. */


      F5 INVITE Carol -> Bob

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS chicago.example.com:5061
       ;branch=z9hG4bKnashds7
      Max-Forwards: 70
      From: Carol <sips:carol@chicago.example.com>;tag=8675309
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 452k499sk@chicago.example.com
      CSeq: 99 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, join
      Join: 12345600@atlanta.example.com;from-tag=1234567;to-tag=23431
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890844922 2890844922 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F6 180 Ringing Bob -> Carol

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS chicago.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=120.
      From: Carol <sips:carol@chicago.example.com>;tag=8675309
      To: Bob <sips:bob@biloxi.example.com>;tag=0982
      Call-ID: 452k499sk@chicago.example.com
      CSeq: 99 INVITE
      Contact: <sips:bob-Mixer@client.biloxi.example.com>;isfocus
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Length: 0


      F7 INVITE Bob -> Alice

      INVITE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashdyKL
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 INVITE
      Contact: <sips:bob-Mixer@client.biloxi.example.com>;isfocus
      Content-Type: application/sdp
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, join, gruu
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 49172 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F8 200 OK Alice -> Bob
      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashdyKL
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F9 ACK Bob -> Alice

      ACK sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnash3g
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=23431
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1024 ACK
      Content-Length: 0


      F10 200 OK Bob -> Carol

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS chicago.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=120.
      From: Carol <sips:carol@chicago.example.com>;tag=8675309
      To: Bob <sips:bob@biloxi.example.com>;tag=0982
      Call-ID: 452k499sk@chicago.example.com
      CSeq: 99 INVITE
      Contact: <sips:bob-Mixer@client.biloxi.example.com>;isfocus
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, join, gruu
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 28908445834 2890844834 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 48174 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F11 ACK OK Carol -> Bob

      ACK sips:bob-Mixer@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS chicago.example.com:5061
       ;branch=z9hG4bKnash4Gf
      Max-Forwards: 70
      From: Carol <sips:carol@chicago.example.com>;tag=8675309
      To: Bob <sips:bob@biloxi.example.com>;tag=0982
      Call-ID: 452k499sk@chicago.example.com
      CSeq: 99 ACK
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces, join
      Content-Length:0

2.12.  Find-Me


             Alice           Proxy           User   User   User   User
                                              B1     B2     B3     B4
             |                |              |      |      |      |
             |    INVITE F1   |              |      |      |      |
             |--------------->|   INVITE F2  |      |      |      |
             |                |------------->|      |      |      |
             |(100 Trying) F3 |              |      |      |      |
             |<---------------|180 Ringing F4|      |      |      |
             |                |<-------------|      |      |      |
             | 180 Ringing F5 |              |      |      |      |
             |<---------------|              |      |      |      |
             |                |    Timeout   |      |      |      |
             |                |              |      |      |      |
             |                |   CANCEL F6  |      |      |      |
             |                |------------->|      |      |      |
             |                |   200 OK F7  |      |      |      |
             |                |<-------------|      |      |      |
             |                |     487 F8   |      |      |      |
             |                |<-------------|      |      |      |
             |                |     ACK F9   |      |      |      |
             |                |------------->|      |      |      |
             |                |     INVITE F10      |      |      |
             |                |-------------------->|      |      |
             |                |480 Not Logged In F11|      |      |
             |                |<--------------------|      |      |
             |                |              ACK F12|      |      |
             |                |-------------------->|      |      |
             |                |          INVITE F13        |      |
             |                |--------------------------->|      |
             |                |      486 Busy Here F14     |      |
             |                |<---------------------------|      |
             |                |            ACK F15         |      |
             |                |--------------------------->|      |
             |                |              INVITE F16           |
             |                |---------------------------------->|
             |                |            180 Ringing F17        |
             |     180 F18    |<----------------------------------|
             |<---------------|               200 OK F19          |
             |   200 OK F20   |<----------------------------------|
             |<---------------|                                   |
             |     ACK F21    |                                   |
             |--------------->|                 ACK F22           |
             |                |---------------------------------->|
             |               Both way RTP Established             |
             |<==================================================>|
             |                |                  BYE F23          |
             |     BYE F24    |<----------------------------------|
             |<---------------|                                   |
             |    200 OK F25  |                                   |
             |--------------->|                 200 OK F26        |
             |                |---------------------------------->|
             |                |                                   |

   Alice's call to Bob will result in an attempt to locate Bob by
   calling locations from a list of contacts.  The location to answer
   the call becomes the active set; no other sets may join the call.

   While this flow shows a sequential search, the search could be
   accomplished using parallel forking.

   Message Details

      F1 INVITE Alice -> Proxy

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t= 0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F2 INVITE Proxy -> B1

      INVITE sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t= 0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F3 (100 Trying) Proxy -> Alice

      SIP/2.0 100 Trying
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F4 180 Ringing B1 -> Proxy

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Length: 0
      F5 180 Ringing Proxy -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Content-Length: 0

      /* B1 rings until a configurable timer in the proxy
         expires.  The proxy then sends Cancel and proceeds down
         the list of routes. */


      F6 CANCEL Proxy -> B1

      CANCEL sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 CANCEL
      Content-Length: 0


      F7 200 OK B1 -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 CANCEL
      Content-Length: 0


      F8 487 Request Terminated B1 -> Proxy

      SIP/2.0 487 Request Terminated
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F9 ACK Proxy -> B1

      ACK sips:bob@client.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.1
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=765432
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F10 INVITE Proxy -> B2

      INVITE sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F11 480 Not Logged In B2 -> Proxy

      SIP/2.0 480 Not Logged In
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314756
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F12 ACK Proxy -> B2

      ACK sips:bob@client2.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.2
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314756
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F13 INVITE Proxy -> B3

      INVITE sips:bob@client3.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.3
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F14 486 Busy Here B3 -> Proxy

      SIP/2.0 486 Busy Here
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.3
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Content-Length: 0


      F15 ACK Proxy -> B3

      ACK sips:bob@client3.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.3
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7654321
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F16 INVITE Proxy -> B4

      INVITE sips:bob@client4.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.4
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F17 180 Ringing B4 -> Proxy

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.4
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7137136
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client4.biloxi.example.com>
      Content-Length: 0


      F18 180 Ringing Proxy -> Alice

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7137136
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client4.biloxi.example.com>
      Content-Length: 0


      F19 200 OK B4 -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83749.4
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7137136
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client4.biloxi.example.com>
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client4.biloxi.example.com
      s=
      c=IN IP4 client4.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F20 200 OK Proxy -> Alice

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      Record-Route: <sips:ss1.example.com;lr>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7137136
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client4.biloxi.example.com>
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844527 2890844527 IN IP4 client4.biloxi.example.com
      s=
      c=IN IP4 client4.biloxi.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F21 ACK Alice -> Proxy

      ACK sips:bob@client4.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7137136
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0


      F22 ACK Proxy -> B4

      ACK sips:bob@client4.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK8374
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf
       ;received=192.0.2.103
      Max-Forwards: 69
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7137136
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0

      /* RTP streams are established between Alice and B4. */

      /* User B4 hangs up with Alice. */


      F23 BYE B4 -> Proxy

      BYE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS client4.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
      Route: <sips:ss1.example.com;lr>
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=7137136
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 BYE
      Content-Length: 0


      F24 BYE Proxy -> Alice

      BYE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83754
      Via: SIP/2.0/TLS client4.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      Max-Forwards: 69
      From: Bob <sips:bob@biloxi.example.com>;tag=7137136
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 BYE
      Content-Length: 0


      F25 200 OK Alice -> Proxy

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS ss1.example.com:5061
       ;branch=z9hG4bK83754
       ;received=192.0.2.54
      Via: SIP/2.0/TLS client4.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      From: Bob <sips:bob@biloxi.example.com>;tag=7137136
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 BYE
      Content-Length: 0


      F26 200 OK Proxy -> B4

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client4.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.105
      From: Bob <sips:bob@biloxi.example.com>;tag=7137136
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 BYE
      Content-Length: 0

2.13.  Call Management (Incoming Call Screening)

                                                      Announcement
           Alice           Proxy            Bob           Server

             |                |              |              |
             |    INVITE F1   |              |              |
             |------------------------------>|              |
             | 305 Use Proxy F2              |              |
             |<------------------------------|              |
             |     ACK F3     |              |              |
             |------------------------------>|              |
             |    INVITE F4   |              |              |
             |--------------->|              |              |
             | 407 Proxy Authentication F5   |              |
             |<---------------|              |              |
             |     ACK F6     |              |              |
             |--------------->|              |              |
             |    INVITE F7   |              |              |
             |--------------->|              |              |
             | 403 Screening Failure (Terminating) Error-Info: URI F8
             |<---------------|              |              |
             |     ACK F9     |              |              |
             |--------------->|              |              |
             |    INVITE F10  |              |              |
             |--------------------------------------------->|
             |    200 OK F11  |              |              |
             |--------------------------------------------->|
             |     ACK F12    |                             |
             |--------------------------------------------->|
             |          Announcement Played to Caller       |
             |<=============================================|
             |                                    BYE F13   |
             |<---------------------------------------------|
             |     200 OK F14                               |
             |--------------------------------------------->|
             |                                              |
             |                                              |
             |                                              |

   Bob has an incoming call screening list; Alice is included on the
   list of addresses from which Bob will not accept calls.  Alice
   attempts to call Bob.  Messages F1, F2, and F3 are included to show
   that Bob does not accept INVITEs that have not been screened by the
   proxy.

   Note that call screening cannot be done using the From header --
   instead some form of authentication credentials must be used.

   The screening proxy inserts an announcement URI in an Error-Info
   header field, which Alice accesses by sending an INVITE to listen to
   the Announcement.  The Announcement Server uses the automaton and
   rendering feature tags in F12 and F13 to indicate that it is a media
   server only capable of playing announcements.

   Message Details

      F1 INVITE Alice -> Bob

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      /* Bob only accepts INVITEs that have been screened
         by the proxy. */

      F2 305 Use Proxy Bob -> Alice

      SIP/2.0 305 Use Proxy
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=342123
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:ss1.example.com>
      Content-Length: 0
      F3 ACK Alice -> Bob

      ACK sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=342123
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0

      /* A retries the call through the proxy. */


      F4 INVITE Alice -> Proxy 1

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf0
      Max-Forwards: 70
      Route: <sips:ss1.example.com>
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000

      /* Proxy 1 challenges Alice for authentication. */


      F5 407 Proxy Authentication Required Proxy 1 -> Alice

      SIP/2.0 407 Proxy Authentication Required
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf0
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7886765
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 INVITE
      Proxy-Authenticate: Digest realm="example.com",
         nonce="ea9c8e88df84f1cec4341ae6cbe5a359",
         qop="auth", nc=00000001, cnonce="0a4f113b",
         opaque="", stale=FALSE, algorithm=MD5
      Content-Length: 0


      F6 ACK Alice -> Proxy 1

      ACK sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf0
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=7886765
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 ACK
      Content-Length: 0

      /* Alice responds by sending an INVITE with authentication
         credentials in it. */


      F7 INVITE Alice -> Proxy 1

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf2
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 3 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Proxy-Authorization: Digest username="alice",
         realm="example.com", qop=auth,
         nc=00000001, cnonce="4gr84543ft2",
         nonce="ae9137be1c87d175c2dd63302a0d6e0a",
         opaque="", uri="sips:bob@biloxi.example.com",
         response="bbaec39f943bdcb3620d90afc548a45c"
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F8 403 Screening Failure (Terminating) Proxy 1 -> Alice

      SIP/2.0 403 Screening Failure (Terminating)
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf2
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=ffe254
      Call-ID: 12345600@atlanta.example.com
      CSeq: 3 INVITE
      Error-Info: <sips:screen-fail-term-ann@ms.biloxi.example.com>
      Content-Length: 0


      F9 ACK Alice -> Proxy 1

      ACK sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf2
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=ffe254
      Call-ID: 12345600@atlanta.example.com
      Proxy-Authorization: Digest username="alice",
       realm="example.com", nonce="ae9137be1c87d175c2dd63302a0d6e0a",
       opaque="", uri="sips:bob@biloxi.example.com",
       response="bbaec39f943bdcb3620d90afc548a45c"
      CSeq: 3 ACK
      Content-Length: 0

      /* To hear the recording, Alice connects to the Error-Info URI. */


      F10 INVITE Alice -> Proxy 1

      INVITE sips:screen-fail-term-ann@ms.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfj
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 4 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


   F11 200 OK Announcement Server -> Proxy 1

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bfj
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=234934
      Call-ID: 12345600@atlanta.example.com
      CSeq: 4 INVITE
      Contact: <sips:ms.biloxi.example.com>
       ;automaton;+sip.rendering="no"
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=annc 2890844543 2890844543 IN IP4 announce.biloxi.example.com
      s=
      c=IN IP4 announce.biloxi.example.com
      t=0 0
      m=audio 49174 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


   F12 ACK Alice -> Announcement Server

      ACK sips:ms.biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74b32
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=234934
      Call-ID: 12345600@atlanta.example.com
      CSeq: 4 ACK
      Content-Length: 0

      /* Announcement Server plays announcement then disconnects. */


      F13 BYE Announcement Server -> Alice

      BYE sips:alice@client.atlanta.example.com SIP/2.0
      Via: SIP/2.0/TLS announcement.example.com:5061
       ;branch=z9hG4bK74bKS
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=234934
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2334 BYE
      Content-Length: 0


      F14 200 OK Alice -> Announcement Server

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS announcement.example.com:5061
       ;branch=z9hG4bK74bKS
       ;received=192.0.2.103
      From: Bob <sips:bob@biloxi.example.com>;tag=234934
      To: Alice <sips:alice@atlanta.example.com>;tag=1234567
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2334 BYE
      Content-Length: 0

2.14.  Call Management (Outgoing Call Screening)


           Alice            Proxy           Bob
             |                |              |
             |    INVITE F1   |              |
             |--------------->|              |
             | 407 Proxy Authentication F2   |
             |<---------------|              |
             |     ACK F3     |              |
             |--------------->|              |
             |    INVITE F4   |              |
             |--------------->|              |
             | 403 Screening Failure (Originating) F5
             |<---------------|              |
             |     ACK F6     |              |
             |--------------->|              |
             |                |              |

   Alice has an outgoing call screening list; Bob is included on the
   list of addresses to which Alice will not be able to place a call.
   Alice attempts to call Bob.

   Alice could establish a session to listen to the announcement in the
   Error-Info header field.

   Message Details

      F1 INVITE Alice -> Proxy 1

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000

      /* Proxy 1 challenges Alice for authentication. */


      F2 407 Proxy Authentication Required Proxy 1 -> Alice

      SIP/2.0 407 Proxy Authentication Required
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=90210
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 INVITE
      Proxy-Authenticate: Digest realm="example.com",
       nonce="ea9c8e88df84f1cec4341ae6cbe5a359",
       qop="auth", nc=00000001, cnonce="0a4f113b",
       opaque="", stale=FALSE, algorithm=MD5
      Content-Length: 0


      F3 ACK Alice -> Proxy 1

      ACK sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74bf9
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=90210
      Call-ID: 12345600@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0

      /* Alice responds be sending an INVITE with authentication
         credentials in it. */


      F4 INVITE Alice -> Proxy 1

      INVITE sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74b4
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 INVITE
      Contact: <sips:alice@client.atlanta.example.com>
      Proxy-Authorization: Digest username="alice", realm="example.com",
       nonce="cb360afc54bbaec39f943bd820d9a45c", opaque="",
       uri="sips:bob@biloxi.example.com",
       response="b9d2e5bcdec9f69ab2a9b44f270285a6"
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
      s=
      c=IN IP4 client.atlanta.example.com
      t=0 0
      m=audio 49170 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F5 403 Screening Failure (Originating) Proxy 1 -> Alice

      SIP/2.0 403 Screening Failure (Originating)
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74b4
       ;received=192.0.2.103
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=18017
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 INVITE
      Error-Info: <sips:screen-fail-orig-ann@announcement.example.com>
      Content-Length: 0


      F6 ACK Alice -> Proxy 1

      ACK sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS client.atlanta.example.com:5061
       ;branch=z9hG4bK74b4
      Max-Forwards: 70
      From: Alice <sips:alice@atlanta.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=18017
      Call-ID: 12345600@atlanta.example.com
      CSeq: 2 ACK
      Proxy-Authorization: Digest username="alice", realm="example.com",
       nonce="cb360afc54bbaec39f943bd820d9a45c", opaque="",
       uri="sips:bob@biloxi.example.com",
       response="b9d2e5bcdec9f69ab2a9b44f270285a6"
      Content-Length: 0

2.15.  Call Park

           Alice           Bob        Park Server       Carol
             |              |              |              |
             |   INVITE F1  |              |              |
             |------------->|              |              |
             |180 Ringing F2|              |              |
             |<-------------|              |              |
             |  200 OK F3   |              |              |
             |<-------------|              |              |
             |    ACK F4    |              |              |
             |------------->|              |              |
             |  RTP Media   |              |              |
             |<============>|              |              |
             |      Bob Parks Call         |              |
             |              |   REFER Refer-To: A F5      |
             |              |------------->|              |
             |              |    202 F6    |              |
             |              |<-------------|              |
             |              |   NOTIFY F7  |              |
             |              |<-------------|              |
             |              |    200 F8    |              |
             |              |------------->|              |
             |  INVITE F9 Replaces: B      |              |
             |<----------------------------|              |
             |          200 OK F10         |              |
             |---------------------------->|              |
             |           ACK F11           |              |
             |<----------------------------|              |
             |           RTP Music         |              |
             |<===========================>|              |
             |     BYE F12  |              |              |
             |------------->|  NOTIFY F14  |              |
             |  200 OK F13  |<-------------|              |
             |<-------------|  200 OK F15  |              |
             |              |------------->|              |
             |              |   Carol picks up the call   |
             |              |              |              |
             |              |              | SUBSCRIBE F16|
             |              |              |<-------------|
             |              |              |  200 OK F17  |
             |              |              |------------->|
             |              |              |  NOTIFY F18  |
             |              |              |------------->|
             |              |              |  200 OK F19  |
             |              |              |<-------------|
             |           INVITE Replaces: Park Server F20 |
             |<-------------------------------------------|
             |              |              |   200 F21    |
             |------------------------------------------->|
             |              |              |    ACK F22   |
             |<-------------------------------------------|
             |                  RTP Media                 |
             |<==========================================>|
             |           BYE F23           |              |
             |---------------------------->|              |
             |          200 OK F24         |              |
             |<----------------------------|              |
             |       No more RTP Music     |              |

   In this example, Alice calls Bob.  Bob then parks the call at the
   Park Server by sending a REFER to the Park Server.  The server sends
   an INVITE to Alice, which replaces the session between Alice and Bob.
   The Park Server utilizes the automaton, rendering, and byeless
   feature tags in F9 to indicate its capabilities to Alice.  The call
   is accepted by Alice and causes Alice to send a BYE to Bob.  Bob
   receives notification of the successful park, and also receives the
   dialog identifiers in the application/sip body of the NOTIFY
   response.

   Carol wishes to retrieve the call, so she sends an INVITE containing
   the dialog identifiers to Alice, which replaces the session with the
   Park Server.  Alice accepts the call and sends a BYE to the Park
   Server.  Carol obtains the dialog identifiers from a NOTIFY from the
   Park Server.

   Note that this call flow is a special case of call transfer.

   Note also that this flow could also be used for Music on Hold.

   Message Details

   F1 INVITE Alice -> Bob

   INVITE sips:bob@biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.alice.example.com:5061
    ;branch=z9hG4bKnashds7
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>
   Call-ID: 12345601@atlanta.example.com
   CSeq: 1 INVITE
   Contact: <sips:a8342043f@atlanta.example.com;gr>
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces, gruu
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
   s=
   c=IN IP4 client.atlanta.example.com
   t=0 0
   m=audio 49170 RTP/AVP 0
   a=rtpmap:0 PCMU/8000


   F2 180 Ringing Bob -> Alice

   SIP/2.0 180 Ringing
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bKnashds7
    ;received=192.0.2.105
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>;tag=314159
   Call-ID: 12345601@atlanta.example.com
   CSeq: 1 INVITE
   Contact: <sips:bob@client.biloxi.example.com>
   Content-Length: 0


   F3 200 OK Bob -> Alice

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bKnashds7
    ;received=192.0.2.105
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>;tag=314159
   Call-ID: 12345601@atlanta.example.com
   CSeq: 1 INVITE
   Contact: <sips:bob@client.biloxi.example.com>
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=bob 2890844527 2890844527 IN IP4 client.biloxi.example.com
   s=
   c=IN IP4 client.biloxi.example.com
   t=0 0
   m=audio 3456 RTP/AVP 0
   a=rtpmap:0 PCMU/8000
   F4 ACK Alice -> Bob

   ACK sips:bob@client.biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bKnashds7
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>;tag=314159
   Call-ID: 12345601@atlanta.example.com
   CSeq: 1 ACK
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces
   Content-Length: 0

   /* Bob REFERs Park Server to establish session with Alice,
      which replaces the established session between Alice and Bob.
      Note that there is no session established between Bob
      and the Park Server. */


   F5 REFER Bob -> Park Server

   REFER sips:park@server.example.com SIP/2.0
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bKnashds9
   Max-Forwards: 70
   From: Bob <sips:bob@biloxi.example.com>;tag=02134
   To: Park Server <sips:park@server.example.com>
   Call-ID: 4802029847@biloxi.example.com
   CSeq: 1 REFER
 <allOneLine>
   Refer-To: <sips:a8342043f@atlanta.example.com;gr?Replaces=
   12345601%40atlanta.example.com%3Bfrom-tag%3D314159
   %3Bto-tag%3D1234567&Require=replaces>
 </allOneLine>
   Referred-By: <sips:bob@biloxi.example.com>
   Contact: <sips:bob@client.biloxi.example.com>
   Content-Length: 0


   F6 202 Accepted Park Server -> Bob

   SIP/2.0 202 Accepted
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bKnashds9
    ;received=192.0.2.105
   From: Bob <sips:bob@biloxi.example.com>;tag=02134
   To: Park Server <sips:park@server.example.com>;tag=56323
   Call-ID: 4802029847@biloxi.example.com
   Contact: <sips:park@server.example.com>
   CSeq: 1 REFER
   Content-Length: 0


   F7 NOTIFY Park Server -> Bob

   NOTIFY sips:bob@client.biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74bT6
   To: Bob <sips:bob@biloxi.example.com>;tag=02134
   Max-Forwards: 70
   From: Park Server <sips:park@server.example.com>;tag=56323
   Call-ID: 4802029847@biloxi.example.com
   CSeq: 1 NOTIFY
   Event: refer
   Contact: <sips:park@server.example.com>
   Subscription-State: active;expires=60
   Content-Type: message/sipfrag
   Content-Length: ...

   SIP/2.0 100 Trying


   F8 200 OK Bob -> Park Server

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74bT6
    ;received=192.0.2.103
   To: Bob <sips:bob@biloxi.example.com>;tag=02134
   From: Park Server <sips:park@server.example.com>;tag=56323
   Call-ID: 4802029847@biloxi.example.com
   CSeq: 1 NOTIFY
   Content-Length: 0

   /* Park Server places call to Alice to replace session
      between Alice and Bob. */


   F9 INVITE Park Server -> Alice

   INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74rf
   Max-Forwards: 70
   From: <sips:park@server.example.com>;tag=0111
   To: <sips:a8342043f@atlanta.example.com;gr>
   Call-ID: a5-75-34-12-76@server.example.com
   CSeq: 1 INVITE
   Referred-By: <sips:bob@biloxi.example.com>
   Contact: <sips:park@server.example.com>;automaton
       ;+sip.byeless;+sip.rendering="no"
   Require: replaces
   Replaces: 12345601@atlanta.example.com
    ;from-tag=314159;to-tag=1234567
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=ParkServer 2890844576 2890844576 IN IP4 Park.server.example.com
   s=
   c=IN IP4 server.example.com
   t=0 0
   m=audio 49170 RTP/AVP 0
   a=rtpmap:0 PCMU/8000


   F10 200 OK Alice -> Park Server

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74rf
    ;received=192.0.2.103
   From: <sips:park@server.example.com>;tag=0111
   To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594
   Call-ID: a5-75-34-12-76@server.example.com
   CSeq: 1 INVITE
   Contact: <sips:a8342043f@atlanta.example.com;gr>
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces, gruu
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
   s=
   c=IN IP4 client.atlanta.example.com
   t=0 0
   m=audio 49170 RTP/AVP 0
   a=rtpmap:0 PCMU/8000
   a=recvonly
   F11 ACK Park Server -> Alice

   ACK sips:a8342043f@atlanta.example.com;gr SIP/2.0
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK7rfF
   Max-Forwards: 70
   From: <sips:park@server.example.com>;tag=0111
   To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594
   Call-ID: a5-75-34-12-76@server.example.com
   CSeq: 1 ACK
   Content-Length: 0


   F12 BYE Alice -> Bob

   BYE sips:bob@client.biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bKnashds7
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>;tag=314159
   Call-ID: 12345601@atlanta.example.com
   CSeq: 2 BYE
   Content-Length: 0


   F13 200 OK Bob -> Alice

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bKnashds7
    ;received=192.0.2.105
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>;tag=314159
   Call-ID: 12345601@atlanta.example.com
   CSeq: 2 BYE
   Content-Length: 0

   /* Park Server reports success back to Bob by returning
      a 200 OK response.  Bob obtains the dialog identifiers
      from the headers included in the response. */


   F14 NOTIFY Park Server -> Bob

   NOTIFY sips:bob@client.biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74bf9
   To: Bob <sips:bob@biloxi.example.com>;tag=02134
   Max-Forwards: 70
   From: Park Server <sips:park@server.example.com>;tag=56323
   Call-ID: 4802029847@biloxi.example.com
   CSeq: 2 NOTIFY
   Event: refer
   Subscription-State: terminated;reason=noresource
   Contact: <sips:park@server.example.com>;automaton
       ;+sip.byeless;+sip.rendering="no"
   Content-Type: message/sipfrag
   Content-Length: ...

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74rf
    ;received=192.0.2.103
   From: <sips:park@server.example.com>;tag=0111
   To: <sips:a8342043f@atlanta.example.com;gr>;tag=098594
   Call-ID: a5-75-34-12-76@server.example.com
   CSeq: 1 INVITE
   Contact: <sips:a8342043f@atlanta.example.com;gr>


   F15 200 OK Bob -> Park Server

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74bf9
    ;received=192.0.2.103
   To: Bob <sips:bob@biloxi.example.com>;tag=02134
   From: Park Server <sips:park@server.example.com>;tag=56323
   Call-ID: 4802029847@biloxi.example.com
   CSeq: 2 NOTIFY
   Content-Length: 0

   /* Alice is now parked at the Park Server. */

   /* Carol picks up the call by sending an INVITE to A, which
      replaces the existing session with the Park Server.
      Carol needs to know the dialog information to construct
      the Replaces header. */


   F16 SUBSCRIBE  Carol -> Park Server

   SUBSCRIBE sips:bob@biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.chicago.example.com:5061
    ;branch=z9hG4bK74b232
   Max-Forwards: 70
   From: Carol <sips:carol@chicago.example.com>;tag=158x93461
   To: <sips:park@server.example.com>
   Call-ID: 2d6485356dfaj34dsf
   CSeq: 1 SUBSCRIBE
   Contact: <sips:carol@client.chicago.example.com>
   Event: dialog
   Expires: 0
   Accept: application/dialog-info+xml
   Content-Length: 0


   F17 200 OK Park Server -> Carol

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.chicago.example.com:5061
    ;branch=z9hG4bK74b232
    ;received=192.0.2.105
   From: Carol <sips:carol@chicago.example.com>;tag=158x93461
   To: <sips:park@server.example.com>;tag=3213j
   Call-ID: 2d6485356dfaj34dsf
   CSeq: 1 SUBSCRIBE
   Contact: <sips:park@server.example.com>;automaton
       ;+sip.byeless;+sip.rendering="no"
   Content-Length: 0


   F18 NOTIFY  Park Server -> Carol

   NOTIFY sips:carol@client.example.com SIP/2.0
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74b8skd
   Max-Forwards: 70
   To: Carol <sips:carol@chicago.example.com>;tag=158x93461
   From: <sips:park@server.example.com>;tag=3213j
   Call-ID: 2d6485356dfaj34dsf
   CSeq: 1 NOTIFY
   Contact: <sips:park@server.example.com>;automaton
       ;+sip.byeless;+sip.rendering="no"
   Event: dialog
   Subscription-State: terminated;reason=timeout
   Content-Type: application/dialog-info+xml
   Content-Length: ...
   <?xml version="1.0"?>
   <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
         version="0" state="full" entity="sips:park@server.example.com">
      <dialog id="439920143524"
         call-id="a5-75-34-12-76@server.example.com"
         local-tag="0111" remote-tag="098594" direction="initiator">
        <duration>1</duration>
        <local>
           <target>sips:park@server.example.com</target>
        </local>
        <remote>
          <target>sips:a8342043f@atlanta.example.com;gr</target>
        </remote>
        <state>confirmed</state>
      </dialog>
    </dialog-info>


   F19 200 OK Carol -> Park Server

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS server.example.com:5061
    ;branch=z9hG4bK74b8skd
    ;received=192.0.2.103
   To: Carol <sips:carol@chicago.example.com>;tag=158x93461
   From: <sips:park@server.example.com>;tag=3213j
   Call-ID: 2d6485356dfaj34dsf
   CSeq: 1 NOTIFY
   Contact: <sips:carol@client.chicago.example.com>
   Content-Length: 0


   F20 INVITE Carol -> Alice

   INVITE sips:alice@atlanta.example.com SIP/2.0
   Via: SIP/2.0/TLS client.chicago.example.com:5061
    ;branch=z9hG4bK74bQ2
   Max-Forwards: 70
   From: Carol <sips:carol@chicago.example.com>;tag=5893461
   To: Alice <sips:alice@atlanta.example.com>
   Call-ID: 6485356@chicago.example.com
   CSeq: 1 INVITE
   Contact: <sips:carol@client.chicago.example.com>
   Require: replaces
   Replaces: a5-75-34-12-76@server.example.com
    ;to-tag=098594;from-tag=0111
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
    SUBSCRIBE, NOTIFY
   Supported: replaces
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=carol 2890844922 2890844922 IN IP4 client.chicago.example.com
   s=
   c=IN IP4 client.chicago.example.com
   t=0 0
   m=audio 3456 RTP/AVP 0
   a=rtpmap:0 PCMU/8000


   F21 200 OK Alice -> Carol

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.chicago.example.com:5061
    ;branch=z9hG4bK74bQ2
    ;received=192.0.2.105
   From: Carol <sips:carol@chicago.example.com>;tag=5893461
   To: Alice <sips:alice@atlanta.example.com>;tag=222
   Call-ID: 6485356@chicago.example.com
   CSeq: 1 INVITE
   Contact: <sips:a8342043f@atlanta.example.com;gr>
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces, gruu
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=alice 2890844527 2890844527 IN IP4 client.atlanta.example.com
   s=
   c=IN IP4 client.atlanta.example.com
   t=0 0
   m=audio 49170 RTP/AVP 0
   a=rtpmap:0 PCMU/8000


   F22 ACK Carol -> Alice

   ACK sips:a8342043f@atlanta.example.com;gr SIP/2.0
   Via: SIP/2.0/TLS client.chicago.example.com:5061
    ;branch=z9hG4bK74bJ0
   Max-Forwards: 70
   From: Carol <sips:carol@chicago.example.com>;tag=5893461
   To: Alice <sips:alice@atlanta.example.com>;tag=222
   Call-ID: 6485356@chicago.example.com
   CSeq: 1 ACK
   Content-Length: 0

   /* A replaces the session to the Park Server with the new
      session with C and generates a BYE to disconnect the
      Park Server. */
   F23 BYE Alice -> Park Server

   BYE sips:park@server.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74b4N
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=098594
   To: <sips:park@server.example.com>;tag=0111
   Call-ID: a5-75-34-12-76@server.example.com
   CSeq: 1 BYE
   Content-Length: 0


   F24 200 OK Park Server -> Alice

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74b4N
    ;received=192.0.2.103
   From: Alice <sips:alice@atlanta.example.com>;tag=098594
   To: <sips:park@server.example.com>;tag=0111
   Call-ID: a5-75-34-12-76@server.example.com
   CSeq: 1 BYE
   Content-Length: 0

2.16.  Call Pickup


            Alice          Bob                Bill
             |              |                   |
             |   INVITE F1  |                   |
             |------------->|                   |
             |180 Ringing F2|                   |
             |<-------------|                   |
             |              |   SUBSCRIBE F3    |
             |              |<------------------|
             |              |     200 OK F4     |
             |              |------------------>|
             |              |     NOTIFY F5     |
             |              |------------------>|
             |              |     200 OK F6     |
             |              |<------------------|
             |          INVITE Replaces:Bob  F7 |
             |<---------------------------------|
             |              |     200 OK F8     |
             |--------------------------------->|
             |   CANCEL F9  |                   |
             |------------->|                   |
             |  200 OK F10  |                   |
             |<-------------|                   |
             |    487 F11   |                   |
             |<-------------|                   |
             |    ACK F12   |                   |
             |------------->|                   |
             |                    ACK F13       |
             |<---------------------------------|
             |                                  |
             |    Two-Way RTP Established       |
             |<================================>|
             |                     BYE F14      |
             |--------------------------------->|
             |                   200 OK F15     |
             |<---------------------------------|
             |                                  |

   Bob and Bill are part of a work group at example.com that can pick up
   each other's calls.  Alice calls Bob, who does not answer.  Bill
   wishes to pick up the call and sends a SUBSCRIBE to Bob to retrieve
   the dialog information.  Bill then generates an INVITE with a
   Replaces to Alice.  Alice answers the INVITE and sends a CANCEL to
   stop Bob's phone ringing.  Note that the relative order of the
   487/ACK sequence (F11/F12) and the 200 OK to the CANCEL (F10) is not
   deterministic.

   This call flow shows the use of the "early-only" parameter [RFC3891]
   in the Replaces header field of F7.  This parameter prevents Alice
   from accepting the INVITE if Bob has already accepted the INVITE.  If
   Bill had wished to "take" the call from Bob regardless of whether he
   had answered, the parameter would not have been present in F7.

   Also note that the subscription between Bob and Carol could have been
   established prior to Alice's call.

   Message Details

  F1 INVITE Alice -> Bob

  INVITE sips:bob@biloxi.example.com SIP/2.0
  Via: SIP/2.0/TLS client.atlanta.example.com:5061
   ;branch=z9hG4bK74bf9
  Max-Forwards: 70
  From: Alice <sips:alice@atlanta.example.com>;tag=1234567
  To: Bob <sips:bob@biloxi.example.com>
  Call-ID: 12345600@atlanta.example.com
  CSeq: 1 INVITE
  Contact: <sips:a8342043f@atlanta.example.com;gr>
  Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
  Supported: replaces, gruu
  Content-Type: application/sdp
  Content-Length: ...

  v=0
  o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
  s=
  c=IN IP4 client.atlanta.example.com
  t=0 0
  m=audio 49170 RTP/AVP 0
  a=rtpmap:0 PCMU/8000


  F2 180 Ringing Bob -> Alice

  SIP/2.0 180 Ringing
  Via: SIP/2.0/TLS client.atlanta.example.com:5061
   ;branch=z9hG4bK74bf9
   ;received=192.0.2.103
  From: Alice <sips:alice@atlanta.example.com>;tag=1234567
  To: Bob <sips:bob@biloxi.example.com>;tag=3145678
  Call-ID: 12345600@atlanta.example.com
  CSeq: 1 INVITE
  Contact: <sips:bob@client.biloxi.example.com>
  Content-Length: 0

  /* Bill decides to pick up the call. */


  F3 SUBSCRIBE  Bill -> Bob

  SUBSCRIBE sips:bob@biloxi.example.com SIP/2.0
  Via: SIP/2.0/TLS pc.biloxi.example.com:5061
   ;branch=z9hG4bK74bf
  Max-Forwards: 70
  From: Bill <sips:bill@biloxi.example.com>;tag=8675309
  To: Bob <sips:bob@biloxi.example.com>
  Call-ID: rt4353gs2egg@pc.biloxi.example.com
  CSeq: 1 SUBSCRIBE
  Contact: <sips:bill@pc.biloxi.example.com>
  Event: dialog
  Expires: 0
  Accept: application/dialog-info+xml
  Content-Length: 0


  F4 200 OK Bob -> Bill

  SIP/2.0 200 OK
  Via: SIP/2.0/TLS pc.biloxi.example.com:5061
   ;branch=z9hG4bK74bf
   ;received=192.0.2.114
  Max-Forwards: 70
  From: Bill <sips:bill@biloxi.example.com>;tag=8675309
  To: Bob <sips:bob@biloxi.example.com>;tag=31451098
  Call-ID: rt4353gs2egg@pc.biloxi.example.com
  CSeq: 1 SUBSCRIBE
  Content-Length: 0


  F5 NOTIFY  Bob -> Bill

  NOTIFY sips:bill@pc.biloxi.example.com SIP/2.0
  Via: SIP/2.0/TLS client.biloxi.example.com:5061
   ;branch=z9hG4bK74br
  Max-Forwards: 70
  From: Bob <sips:bob@biloxi.example.com>;tag=31451098
  To: Bill <sips:bill@biloxi.example.com>;tag=8675309
  Call-ID: rt4353gs2egg@pc.biloxi.example.com
  CSeq: 1 NOTIFY
  Contact: <sips:bob@client.biloxi.example.com>
  Event: dialog
  Subscription-State: terminated;reason=timeout
  Content-Type: application/dialog-info+xml
  Content-Length: ...

  <?xml version="1.0"?>
  <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
         version="0" state="full" entity="sips:bob@biloxi.example.com">
     <dialog id="94992014524" call-id="12345600@atlanta.example.com"
         local-tag="3145678" remote-tag="1234567" direction="recipient">
       <duration>1</duration>
       <local>
         <identity display="Bob">sips:bob@biloxi.example.com</identity>
         <target>sips:bob@client.biloxi.example.com</target>
       </local>
       <remote>
         <identity display="Alice">sips:alice@atlanta.example.com
                                                         </identity>
         <target>sips:a8342043@atlanta.example.com;gr</target>
       </remote>
       <state>early</state>
     </dialog>
   </dialog-info>


  F6 200 OK  Bill -> Bob

  SIP/2.0 200 OK
  Via: SIP/2.0/TLS client.biloxi.example.com:5061
   ;branch=z9hG4bK74br
   ;received=192.0.2.105
  From: Bob <sips:bob@biloxi.example.com>;tag=31451098
  To: Bill <sips:bill@biloxi.example.com>;tag=8675309
  Call-ID: rt4353gs2egg@pc.biloxi.example.com
  CSeq: 1 NOTIFY
  Contact: <sips:bill@pc.biloxi.example.com>
  Content-Length: 0


  F7 INVITE  Bill -> Alice

  INVITE sips:a8342043f@atlanta.example.com;gr SIP/2.0
  Via: SIP/2.0/TLS pc.biloxi.example.com:5061
   ;branch=z9hG4bK74HH
  Max-Forwards: 70
  From: Bill <sips:bill@biloxi.example.com>;tag=8675310
  To: Alice <sips:alice@atlanta.example.com>
  Call-ID: 563456212@b2.biloxi.example.com
  CSeq: 1 INVITE
  Require: replaces
  Replaces: 12345600@atlanta.example.com
   ;from-tag=314578;to-tag=1234567;early-only
  Contact: <sips:bill@pc.biloxi.example.com>
  Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
  Supported: replaces
  Content-Type: application/sdp
  Content-Length: ...

  v=0
  o=bill 2890843122 2890843122 IN IP4 pc.biloxi.example.com
  s=
  c=IN IP4 pc.biloxi.example.com
  t=0 0
  m=audio 5342 RTP/AVP 0
  a=rtpmap:0 PCMU/8000

  /* Alice matches the dialog information in the Replaces header
     and accepts the INVITE. */


  F8 200 OK  Alice -> Bill

  SIP/2.0 200 OK
  Via: SIP/2.0/TLS pc.biloxi.example.com:5061
   ;branch=z9hG4bK74HH
   ;received=192.0.2.114
  From: Bill <sips:bill@biloxi.example.com>;tag=8675310
  To: Alice <sips:alice@atlanta.example.com>;tag=131256
  Call-ID: 563456212@b2.biloxi.example.com
  CSeq: 1 INVITE
  Contact: <sips:a8342043f@atlanta.example.com;gr>
  Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
  Supported: replaces, gruu
  Content-Type: application/sdp
  Content-Length: ...

  v=0
  o=alice 289084543 289084543 IN IP4 client.atlanta.example.com
  s=
  c=IN IP4 client.atlanta.example.com
  t=0 0
  m=audio 49172 RTP/AVP 0
  a=rtpmap:0 PCMU/8000

  /* Alice stops Bob's phone from ringing by sending a CANCEL. */
  F9 CANCEL Alice -> Bob

  CANCEL sips:bob@biloxi.example.com SIP/2.0
  Via: SIP/2.0/TLS client.atlanta.example.com:5061
   ;branch=z9hG4bK74bf9
  Max-Forwards: 70
  From: Alice <sips:alice@atlanta.example.com>;tag=1234567
  To: Bob <sips:bob@biloxi.example.com>
  Call-ID: 12345600@atlanta.example.com
  CSeq: 1 CANCEL
  Content-Length: 0


  F10 200 OK Bob -> Alice

  SIP/2.0 200 OK
  Via: SIP/2.0/TLS client.atlanta.example.com:5061
   ;branch=z9hG4bK74bf9
   ;received=192.0.2.103
  From: Alice <sips:alice@atlanta.example.com>;tag=1234567
  To: Bob <sips:bob@biloxi.example.com>;tag=3145678
  Call-ID: 12345600@atlanta.example.com
  CSeq: 1 CANCEL
  Content-Length: 0


  F11 487 Request Terminated Bob -> Alice

  SIP/2.0 487 Request Terminated
  Via: SIP/2.0/TLS client.atlanta.example.com:5061
   ;branch=z9hG4bK74bf9
   ;received=192.0.2.103
  From: Alice <sips:alice@atlanta.example.com>;tag=1234567
  To: Bob <sips:bob@biloxi.example.com>;tag=3145678
  Call-ID: 12345600@atlanta.example.com
  CSeq: 1 INVITE
  Content-Length: 0


  F12 ACK Alice -> Bob

  ACK sips:bob@client.biloxi.example.com SIP/2.0
  Via: SIP/2.0/TLS client.atlanta.example.com:5061
   ;branch=z9hG4bK83749.1
  Max-Forwards: 70
  From: Alice <sips:alice@atlanta.example.com>;tag=1234567
  To: Bob <sips:bob@biloxi.example.com>;tag=3145678
  Call-ID: 12345600@atlanta.example.com
  CSeq: 1 ACK
  Content-Length: 0


  F13 ACK  Bill -> Alice

  ACK sips:a8342043f@atlanta.example.com;gr SIP/2.0
  Via: SIP/2.0/TLS pc.biloxi.example.com:5061
   ;branch=z9hG4bK7435
  Max-Forwards: 70
  From: Bill <sips:bill@biloxi.example.com>;tag=8675310
  To: Alice <sips:alice@atlanta.example.com>;tag=131256
  Call-ID: 563456212@b2.biloxi.example.com
  CSeq: 1 ACK
  Content-Length: 0

  /* RTP streams are established between Alice and Bill.
     Later, Alice hangs up with Bill. */


  F14 BYE Alice -> Bill

  BYE sips:bill@pc.biloxi.example.com SIP/2.0
  Via: SIP/2.0/TLS client.atlanta.example.com:5061
   ;branch=z9hG4bK74bf2
  Max-Forwards: 70
  To: Bill <sips:bill@biloxi.example.com>;tag=8675310
  From: Alice <sips:alice@atlanta.example.com>;tag=131256
  Call-ID: 563456212@b2.biloxi.example.com
  CSeq: 1 BYE
  Content-Length: 0


  F15 200 OK Bill -> Alice

  SIP/2.0 200 OK
  Via: SIP/2.0/TLS client.atlanta.example.com:5061
   ;branch=z9hG4bK74bf2
   ;received=192.0.2.105
  To: Bill <sips:bill@biloxi.example.com>;tag=8675310
  From: Alice <sips:alice@atlanta.example.com>;tag=131256
  Call-ID: 563456212@b2.biloxi.example.com
  CSeq:  1 BYE
  Content-Length: 0

2.17.  Automatic Redial
           Alice             Bob
             |                |
             |    INVITE F1   |
             |--------------->|
             |486 Busy Here F2|
             |<---------------|    Bob is busy
             |     ACK F3     |
             |--------------->|
             |  SUBSCRIBE F4  |
             |--------------->|
             |   200 OK F5    |
             |<---------------|
             |    NOTIFY F6   |
             |<---------------|
             |   200 OK F7    |
             |--------------->|
             |                |
             |    NOTIFY F8   |    Bob is now available
             |<---------------|
             |   200 OK F9    |
             |--------------->|
             |                |
             |   INVITE F10   |
             |--------------->|    Session setup successful
             | 180 Ringing F11|
             |<---------------|
             |   200 OK F12   |
             |<---------------|
             |     ACK F13    |
             |--------------->|
             |  Media Session |
             |<==============>|
             |                |
             |   NOTIFY F14   |
             |<---------------|
             |   200 OK F15   |
             |--------------->|
             |                |
             |  SUBSCRIBE F16 | Alice terminates subscription
             |--------------->|
             |   200 OK F17   |
             |<---------------|
             |   NOTIFY F18   |
             |<---------------|
             |   200 OK F19   |
             |--------------->|
             |                |

   Bob is initially busy when Alice calls.  Alice subscribes to Bob's
   call state using a SUBSCRIBE F4.  Bob sends a NOTIFY F8 when Bob is
   available.  Alice is alerted, then Alice sends an INVITE to Bob to
   establish the session.  The subscription is terminated using
   SUBSCRIBE F16.

   Message Details

   F1 INVITE Alice -> Bob

   INVITE sips:bob@biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74bf9
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>
   Call-ID: 12345600@atlanta.example.com
   CSeq: 1 INVITE
   Contact: <sips:alice@client.atlanta.example.com>
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=alice 2890844526 2890844526 IN IP4 client.atlanta.example.com
   s=
   c=IN IP4 client.atlanta.example.com
   t=0 0
   m=audio 49170 RTP/AVP 0
   a=rtpmap:0 PCMU/8000


   F2 486 Busy Here

   SIP/2.0 486 Busy Here
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74bf9
    ;received=192.0.2.103
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>;tag=982039i4
   Call-ID: 12345600@atlanta.example.com
   CSeq: 1 INVITE
   Content-Length: 0
   F3 ACK Alice -> Bob

   ACK sips:bob@biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74bf9
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=1234567
   To: Bob <sips:bob@biloxi.example.com>;tag=982039i4
   Call-ID: 12345600@atlanta.example.com
   CSeq: 1 ACK
   Content-Length: 0


   F4 SUBSCRIBE Alice -> Bob

   SUBSCRIBE sips:bob@biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74b8G
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=837348234
   To: Bob <sips:bob@biloxi.example.com>
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 1 SUBSCRIBE
   Contact: sips:alice@client.atlanta.example.com
   Event: dialog
   Accept: application/dialog-info+xml
   Content-Length: 0


   F5 200 OK Bob -> Alice

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74b8G
    ;received=192.0.2.103
   From: Alice <sips:alice@atlanta.example.com>;tag=837348234
   To: Bob <sips:bob@biloxi.example.com>;tag=341123
   Call-ID: 4524526232@atlanta.example.com
   Expires: 60
   CSeq: 1 SUBSCRIBE
   Contact: sips:bob@client.biloxi.example.com
   Content-Length: 0
   F6 NOTIFY Bob -> Alice

   NOTIFY sips:alice@client.atlanta.example.com SIP/2.0
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bK74bn2
   Max-Forwards: 70
   From: Bob <sips:bob@biloxi.example.com>;tag=341123
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 1 NOTIFY
   Contact: <sips:bob@client.biloxi.example.com>
   Event: dialog
   Subscription-State: active;expires=59
   Content-Type: application/dialog-info+xml
   Content-Length: ...

   <?xml version="1.0"?>
   <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
          version="0" state="full" entity="sips:bob@biloxi.example.com">
      <dialog id="562623442g3">
         <duration>1</duration>
        <state>confirmed</state>
      </dialog>
    </dialog-info>


   F7 200 OK Alice -> Bob

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bK74bn2
    ;received=192.0.2.105
   From: Bob <sips:bob@biloxi.example.com>;tag=341123
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 1 NOTIFY
   Content-Length: 0

   /* Bob is now available. */


   F8 NOTIFY Bob -> Alice

   NOTIFY sips:alice@atlanta.example.com SIP/2.0
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bK74bVi
   Max-Forwards: 70
   From: Bob <sips:bob@biloxi.example.com>;tag=341123
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 2 NOTIFY
   Event: dialog
   Subscription-State: active;expires=27
   Contact: <sips:bob@client.biloxi.example.com>
   Content-Type: application/dialog-info+xml
   Content-Length: ...

   <?xml version="1.0"?>
   <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
          version="0" state="full" entity="sips:bob@biloxi.example.com">
      <dialog id="562623442g3">
        <state>terminated</state>
      </dialog>
   </dialog-info>


   F9 200 OK Alice -> Bob

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bK74bVi
    ;received=192.0.2.105
   From: Bob <sips:bob@biloxi.example.com>;tag=341123
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 2 NOTIFY
   Content-Length: 0


   F10 INVITE Alice -> Bob

   INVITE sips:bob@biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74bfq
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=f23fkg14k
   To: Bob <sips:bob@biloxi.example.com>
   Call-ID: aoij4i9okitr@atlanta.example.com
   CSeq: 1 INVITE
   Contact: <sips:alice@client.atlanta.example.com>
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=alice 2890844826 2890844826 IN IP4 client.atlanta.example.com
   s=
   c=IN IP4 client.atlanta.example.com
   t=0 0
   m=audio 49170 RTP/AVP 0
   a=rtpmap:0 PCMU/8000


   F11 180 Ringing Bob -> Alice

   SIP/2.0 180 Ringing
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74bfq
    ;received=192.0.2.103
   From: Alice <sips:alice@atlanta.example.com>;tag=f23fkg14k
   To: Bob <sips:bob@biloxi.example.com>;tag=23431
   Call-ID: aoij4i9okitr@atlanta.example.com
   CSeq: 1 INVITE
   Contact: <sips:bob@client.biloxi.example.com>
   Content-Length: 0


   F12 200 OK Bob -> Alice

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74bfq
    ;received=192.0.2.103
   From: Alice <sips:alice@atlanta.example.com>;tag=f23fkg14k
   To: Bob <sips:bob@biloxi.example.com>;tag=23431
   Call-ID: aoij4i9okitr@atlanta.example.com
   CSeq: 1 INVITE
   Contact: <sips:bob@client.biloxi.example.com>
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
   Supported: replaces
   Content-Type: application/sdp
   Content-Length: ...

   v=0
   o=bob 2890854527 2890854527 IN IP4 client.biloxi.example.com
   s=
   c=IN IP4 client.biloxi.example.com
   t=0 0
   m=audio 3456 RTP/AVP 0
   a=rtpmap:0 PCMU/8000
   F13 ACK Alice -> Bob

   ACK sips:bob@client.biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK74bLBJ
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=f23fkg14k
   To: Bob <sips:bob@biloxi.example.com>;tag=23431
   Call-ID: aoij4i9okitr@atlanta.example.com
   CSeq: 1 ACK
   Content-Length: 0


   F14 NOTIFY Bob -> Alice

   NOTIFY sips:alice@client.atlanta.example.com SIP/2.0
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bK4bnd2
   Max-Forwards: 70
   From: Bob <sips:bob@biloxi.example.com>;tag=341123
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 3 NOTIFY
   Contact: <sips:bob@client.biloxi.example.com>
   Event: dialog
   Subscription-State: active;expires=15
   Content-Type: application/dialog-info+xml
   Content-Length: ...

   <?xml version="1.0"?>
   <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
          version="0" state="full" entity="sips:bob@biloxi.example.com">
      <dialog id="62d2623442g3">
         <duration>1</duration>
        <state>confirmed</state>
      </dialog>
    </dialog-info>


   F15 200 OK Alice -> Bob

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bK4bnd2
    ;received=192.0.2.105
   From: Bob <sips:bob@biloxi.example.com>;tag=341123
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 3 NOTIFY
   Content-Length: 0

   /* Alice terminates the subscription. */


   F16 SUBSCRIBE Alice -> Bob

   SUBSCRIBE sips:bob@client.biloxi.example.com SIP/2.0
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK474b8
   Max-Forwards: 70
   From: Alice <sips:alice@atlanta.example.com>;tag=837348234
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 2 SUBSCRIBE
   Contact: sips:alice@client.atlanta.example.com
   Event: dialog
   Expires: 0
   Accept: application/dialog-info+xml
   Content-Length: 0


   F17 200 OK Bob -> Alice

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.atlanta.example.com:5061
    ;branch=z9hG4bK474b8
    ;received=192.0.2.103
   From: Alice <sips:alice@atlanta.example.com>;tag=837348234
   To: Bob <sips:bob@biloxi.example.com>;tag=341123
   Call-ID: 4524526232@atlanta.example.com
   Expires: 0
   CSeq: 2 SUBSCRIBE
   Contact: sips:bob@client.biloxi.example.com
   Content-Length: 0


   F18 NOTIFY Bob -> Alice

   NOTIFY sips:alice@client.atlanta.example.com SIP/2.0
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bKb5n2j
   Max-Forwards: 70
   From: Bob <sips:bob@biloxi.example.com>;tag=341123
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 4 NOTIFY
   Contact: <sips:bob@client.biloxi.example.com>
   Event: dialog
   Subscription-State: terminated;reason=noresource
   Content-Type: application/dialog-info+xml
   Content-Length: ...

   <?xml version="1.0"?>
   <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
          version="0" state="full" entity="sips:bob@biloxi.example.com">
      <dialog id="62d2623442g3">
         <duration>3</duration>
        <state>confirmed</state>
      </dialog>
    </dialog-info>


   F19 200 OK Alice -> Bob

   SIP/2.0 200 OK
   Via: SIP/2.0/TLS client.biloxi.example.com:5061
    ;branch=z9hG4bKb5n2j
    ;received=192.0.2.105
   From: Bob <sips:bob@biloxi.example.com>;tag=341123
   To: Alice <sips:alice@atlanta.example.com>;tag=837348234
   Call-ID: 4524526232@atlanta.example.com
   CSeq: 4 NOTIFY
   Content-Length: 0

2.18.  Click to Dial

        Bob's PC                Bob                Carol
            | REFER Refer-To:Carol F1                 |
            |------------------->|                    |
            |  202 Accepted F2   |                    |
            |<-------------------|                    |
            |                    |     INVITE F3      |
            |                    |------------------->|
            |                    |   180 Ringing F4   |
            |                    |<-------------------|
            |                    |     200 OK F5      |
            |                    |<-------------------|
            |                    |       ACK F6       |
            |                    |------------------->|
            |                    |         RTP        |
            |                    |<==================>|
            |                    |                    |

   In this example, while browsing the web on his PC, Bob clicks on
   Carol's SIP URI, intending to establish a session with Carol.  Bob's
   web browser passes the SIP URI to the SIP client on Bob's PC.  The PC
   client is configured with the URI of Bob's SIP phone.  A REFER is
   sent to the SIP phone, which results in the establishment of the
   session between Bob and Carol.

   Note that Bob's PC requests that no REFER dialog be established by
   the use of the Refer-Sub: false header field [RFC4488].

   This flow is preferable to the 3pcc flow because the end-to-end SIP
   signaling is not interrupted by the 3pcc controller, and because
   Bob's experience of the call will not be marred by the lack of
   ringback tone or possible clipping.  Suitable authorization of the
   REFER and explicit authorization of the triggered INVITE by Bob are
   necessary.

   Message Details

   /* Bob's PC SIP client sends a REFER to Bob's SIP phone. */

      F1 REFER PC -> Bob

      REFER sips:bob@biloxi.example.com SIP/2.0
      Via: SIP/2.0/TLS pc.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
      Max-Forwards: 70
      From: <sips:pc.biloxi.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>
      Call-ID: 1234560183434
      CSeq: 1 REFER
      Refer-To: <sips:carol@chicago.example.com>
      Refer-Sub: false
      Contact: <sips:pc.biloxi.example.com>
      Content-Length: 0


      F2 202 Accepted Bob -> PC

      SIP/2.0 202 Accepted
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashds7
       ;received=192.0.2.103
      From: <sips:pc.biloxi.example.com>;tag=1234567
      To: Bob <sips:bob@biloxi.example.com>;tag=314159
      Call-ID: 1234560183434
      Contact: <sips:bob@client.biloxi.example.com>
      CSeq: 1 REFER
      Refer-Sub: false
      Content-Length: 0


      F3 INVITE Bob -> Carol

      INVITE sips:carol@chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashdK9
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:bob@client.biloxi.example.com>
      Referred-By: <sips:pc.biloxi.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=bob 2890844539 2890844539 IN IP4 client.biloxi.example.com
      s=
      c=IN IP4 client.biloxi.example.com
      t=0 0
      m=audio 3458 RTP/AVP 0
      a=rtpmap:0 PCMU/8000
      F4 180 Ringing Carol -> Bob

      SIP/2.0 180 Ringing
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashdK9
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=928287
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Content-Length: 0


      F5 200 OK Carol -> Bob

      SIP/2.0 200 OK
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashdK9
       ;received=192.0.2.113
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=928287
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 INVITE
      Contact: <sips:carol@client.chicago.example.com>
      Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
      Supported: replaces
      Content-Type: application/sdp
      Content-Length: ...

      v=0
      o=carol 2890844527 2890844527 IN IP4 client.chicago.example.com
      s=
      c=IN IP4 client.chicago.example.com
      t=0 0
      m=audio 3456 RTP/AVP 0
      a=rtpmap:0 PCMU/8000


      F6 ACK Bob -> Carol

      ACK sips:carol@client.chicago.example.com SIP/2.0
      Via: SIP/2.0/TLS client.biloxi.example.com:5061
       ;branch=z9hG4bKnashd43
      Max-Forwards: 70
      From: Bob <sips:bob@biloxi.example.com>;tag=8675309
      To: Carol <sips:carol@chicago.example.com>;tag=928287
      Call-ID: 7436222@atlanta.example.com
      CSeq: 1 ACK
      Content-Length: 0

      /* Bob and Carol now have established a session. */

3.  Security Considerations

   Since many of the examples in this document involve SIP call control,
   either peer-to-peer or 3pcc, the security considerations in the
   Multiparty Framework document [FRAMEWORK] apply.

   Many of the services shown in this document rely on a particular user
   agent being part of a group.  Members of a group could be, for
   example, employees within a particular department, a set of home
   phone extensions, members of a call center, etc.  As such, user
   agents that are part of the group permit other group members special
   privileges and features.  For example, while a user agent may not in
   general allow another user agent to learn detailed dialog
   information, this information might be shared with another group
   member in order to facilitate a service such as call pickup.  Group
   members must be authenticated using normal SIP means such as
   certificates or shared secrets.

   The service examples in this document make extensive use of the SIP
   call control primitives REFER, Replaces, Join, and the dialog
   package.  The security considerations associated with each of these
   extensions [RFC3515], [RFC3891], [RFC3911], [RFC4235] apply to the
   scenarios in this document.

4.  Acknowledgements

   The authors would like to thank the following reviewers of the
   document for their detailed comments and corrections: Vijay Gurbani,
   John Elwell, Joel Repiquet, Nagesh Kumar, Chandra Ravipati, Eric
   Burger, Jeroen Bemmel, Miguel Garcia, and Dale Worley.

   The Transfer - Instant Messaging call flow is based on the "IM-a-
   call" call flow by Jonathan Rosenberg and Henning Schulzrinne.  The
   Automatic Redial call flow is based on a call flow by Adam Roach.
   The authors wish to thank the following individuals for their
   assistance and review of this call flows document: Joel Repiquet, Aki
   Neimi, Rohan Mahy, Jonathan Rosenberg, Hemant Agrawal, Henry
   Sinnreich, Dean Willis, David Devanatham, Joe Pizzimenti, Matt
   Cannon, John Hearty, the whole MCI WorldCom IPOP Design team, Scott
   Orton, Greg Osterhout, Pat Sollee, Doug Weisenberg, Danny Mistry,
   Steve McKinnon, and Denise Ingram, Denise Caballero, Tom Redman, Ilya
   Slain, Pat Sollee, John Truetken, and others from MCI WorldCom, 3Com,
   Cisco, Lucent, and Nortel.

5.  References

5.1.  Normative References

   [RFC3261]    Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
                A., Peterson, J., Sparks, R., Handley, M., and E.
                Schooler, "SIP: Session Initiation Protocol", RFC 3261,
                June 2002.

   [RFC3264]    Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
                with Session Description Protocol (SDP)", RFC 3264,
                June 2002.

   [RFC3265]    Roach, A., "Session Initiation Protocol (SIP)-Specific
                Event Notification", RFC 3265, June 2002.

   [RFC3428]    Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema,
                C., and D. Gurle, "Session Initiation Protocol (SIP)
                Extension for Instant Messaging", RFC 3428,
                December 2002.

   [RFC3515]    Sparks, R., "The Session Initiation Protocol (SIP) Refer
                Method", RFC 3515, April 2003.

   [RFC3840]    Rosenberg, J., Schulzrinne, H., and P. Kyzivat,
                "Indicating User Agent Capabilities in the Session
                Initiation Protocol (SIP)", RFC 3840, August 2004.

   [RFC3891]    Mahy, R., Biggs, B., and R. Dean, "The Session
                Initiation Protocol (SIP) "Replaces" Header", RFC 3891,
                September 2004.

   [RFC3911]    Mahy, R. and D. Petrie, "The Session Initiation Protocol
                (SIP) "Join" Header", RFC 3911, October 2004.

   [RFC4235]    Rosenberg, J., Schulzrinne, H., and R. Mahy, "An INVITE-
                Initiated Dialog Event Package for the Session
                Initiation Protocol (SIP)", RFC 4235, November 2005.

   [RFC4488]    Levin, O., "Suppression of Session Initiation Protocol
                (SIP) REFER Method Implicit Subscription", RFC 4488,
                May 2006.

   [RFC4579]    Johnston, A. and O. Levin, "Session Initiation Protocol
                (SIP) Call Control - Conferencing for User Agents",
                BCP 119, RFC 4579, August 2006.

5.2.  Informative References

   [FRAMEWORK]  Mahy, R., Sparks, R., Rosenberg, J., Petrie, D., and A.
                Johnston, "A Call Control and Multi-party usage
                framework for the Session Initiation Protocol (SIP)",
                Work in Progress, April 2008.

   [GRUU]       Rosenberg, J., "Obtaining and Using Globally Routable
                User Agent (UA) URIs (GRUU) in the Session Initiation
                Protocol (SIP)", Work in Progress, October 2007.

   [RFC3665]    Johnston, A., Donovan, S., Sparks, R., Cunningham, C.,
                and K. Summers, "Session Initiation Protocol (SIP) Basic
                Call Flow Examples", BCP 75, RFC 3665, December 2003.

   [RFC3725]    Rosenberg, J., Peterson, J., Schulzrinne, H., and G.
                Camarillo, "Best Current Practices for Third Party Call
                Control (3pcc) in the Session Initiation Protocol
                (SIP)", BCP 85, RFC 3725, April 2004.

   [RFC4317]    Johnston, A. and R. Sparks, "Session Description
                Protocol (SDP) Offer/Answer Examples", RFC 4317,
                December 2005.

   [RFC4475]    Sparks, R., Hawrylyshen, A., Johnston, A., Rosenberg,
                J., and H. Schulzrinne, "Session Initiation Protocol
                (SIP) Torture Test Messages", RFC 4475, May 2006.

   [TRANSFER]   Sparks, R. and A. Johnston, "Session Initiation Protocol
                Call Control - Transfer", Work in Progress,
                September 2008.

Authors' Addresses

   Alan Johnston (editor)
   Avaya
   St. Louis, MO  63124

   EMail: alan@sipstation.com


   Robert J. Sparks
   Tekelec

   EMail: RjS@nostrum.com


   Chris Cunningham
   Cisco Systems

   EMail: chrcunni@cisco.com


   Steve Donovan
   Cisco Systems

   EMail: srd@cisco.com


   Kevin Summers
   Sonus
   Plano, TX  75093

   EMail: ksummers@sonusnet.com

Full Copyright Statement

   Copyright (C) The IETF Trust (2008).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

ISO Plain Language

On this page
PROBLEMBusinesses expect IP phones to offer the features of a PBX or an IP Centrex service, such as hold, transfer, forwarding and call pickup, but SIP itself defines only the building blocks.
MECHANISMThe RFC walks through 18 services message by message, naming the SIP methods, header fields and extensions each one uses, among them REFER, Replaces, Join, SUBSCRIBE and NOTIFY.
WHY IT MATTERSIt is a companion to the SIP specifications, not a protocol of its own: it shows one working way to build each service and says other approaches, such as 3pcc or back-to-back user agents, are not excluded.

§1What the Document Covers

RFC 5359 gives worked examples of 18 SIP services, the kind of features an office phone system offers. The list includes call hold, consultation hold, music on hold, three kinds of transfer, three kinds of call forwarding, two kinds of three-way conference, find-me, incoming and outgoing call screening, call park, call pickup, automatic redial and click to dial. The single line extension flow was removed from the document and is covered separately.

The flows were developed while a SIP network was being designed, and they stand as an example set of IP Centrex services, where a carrier supplies the phone system, or of PBX (private branch exchange) services inside one organisation. The authors hope the document will be useful to implementers, designers and protocol researchers alike, and will help further the goal of a standard implementation of RFC 3261 and some of its extensions. The flows are described as carefully checked and working group reviewed scenarios, presented as a companion to the specifications.

The SIP specification and the other referenced documents are definitive as far as protocol issues are concerned. These flows are not the only way to implement the services: other approaches, such as 3pcc (Third Party Call Control) in RFC 3725 or back-to-back user agents, can be used, and this specification does not preclude them. The peer-to-peer design and principles behind these examples are described in the Multiparty Framework document.

This document shows how 18 office phone features, such as hold, transfer and forwarding, are built from SIP messages. For each feature it lists the messages the phones send, in order, and the extra header fields some of them carry. It is a companion to the SIP specifications, not a new protocol.

THE 18 SERVICES, GROUPED BY KIND
  • HoldPut a call on hold and take it off hold again, with the session kept open.
  • TransferHand the call to a third person with a REFER request.
  • ForwardingLet the proxy send the call on: always, when busy, or when unanswered.
  • ConferencingBring a third person into a call, by invitation or by request.
  • ScreeningBlock calls in one direction using a list of addresses.
  • Park and pickupLeave a call at a server for a colleague, or answer for a colleague.
  • Redial and click to dialWait until a busy person frees up, or start a call from a web page.

§1.1How the Flows Are Drawn and Written

Every example in the document has the same three parts: a textual description of the scenario, a message flow diagram showing the messages exchanged between separate network elements, and the detailed contents of each message shown in the diagram. Messages are identified in the figures as F1, F2 and so on, and each identifier points to the matching entry in the message details that follows.

In the diagrams, dashed lines represent control messages that are mandatory for the call scenario, and double dashed lines represent media paths between network elements. A message name in parentheses marks an optional control message. The document also explains its own shorthand: lines longer than 72 characters are handled using the <allOneLine> convention defined in RFC 4475, and comments inside the message details are written between /* and */.

The examples are simplified so that the document can be read and edited. The HTTP Digest responses are not actual MD5 encodings, Call-IDs are often repeated, CSeq counts often begin at 1, header fields are usually shown in the same order, only the minimum required header field set is shown, and message body content lengths are often written as ... where the real octet count would be.

Each example gives a short story, a diagram of the messages, and the full text of every message. In the diagrams, double lines show where the audio travels, and a message name in parentheses marks an optional message. The message text is deliberately simplified, so the values in it are not the ones a real phone would send.

§2.1Call Hold, Consultation Hold and Music on Hold

In the call hold example, Alice calls Bob, Bob puts the call on hold, takes it off hold, and Alice then hangs up. Hold is unidirectional in nature, so the user agent that places the other party on hold will generally also stop sending media, which results in no media exchange between the two user agents. Older user agents may set the connection address to 0.0.0.0 when initiating hold, but the document notes that this behaviour has been deprecated in favour of the a=inactive SDP attribute if no media is sent, or the a=sendonly attribute if media is still sent.

Bob starts the hold by sending an INVITE inside the dialog that already exists, with the same Call-ID as the original invitation. That request carries the rendering feature tag defined in RFC 4235 as a parameter on the Contact header field, to indicate that Bob's user agent is no longer rendering media to Bob. The SDP body of the request sets the media direction to a=sendonly. The dialog is not torn down, so the same two user agents stay connected for the whole call.

Consultation hold adds a third party. Bob holds Alice, calls Carol, disconnects from Carol, and then takes Alice off hold. The hold and off-hold steps use the same re-INVITE pattern as plain hold.

For music on hold, Bob sends a REFER to a music server. The music server sends its own INVITE to Alice with a Replaces header field, so the session with Alice moves from Bob to the music server, and the server then sends RTP audio to Alice. Bob takes Alice back by sending an INVITE with Replaces to Alice. The music server advertises the automaton feature tag from RFC 3840 and the byeless feature tag from RFC 4235 to describe its capabilities. If Alice does not wish to receive music on hold, her user agent can refuse that INVITE, and she remains on hold with Bob, but in silence.

Holding a call does not end it. Bob's phone sends a new INVITE in the conversation that is already running, marks itself as no longer playing sound, and the two phones stop exchanging audio. To play music instead, Bob asks a music server to take the call over with a REFER, and the server's own call to Alice replaces Bob's.

CALL HOLD (RFC 5359, SECTION 2.1; PROXY HOPS OMITTED)
AliceBob
  1. INVITE F1Alice calls Bob.
  2. 180 Ringing F2
  3. 200 OK F3
  4. ACK F4RTP audio flows in both directions.
  5. INVITE (hold) F10Re-INVITE in the same dialog, with the rendering feature tag and a=sendonly.
  6. 200 OK F12
  7. ACK F15No RTP is sent.
  8. INVITE F16Bob takes the call off hold.
  9. 200 OK F18
  10. ACK F21RTP audio flows again.
  11. BYE F22Alice ends the call.
  12. 200 OK F24
THE REQUEST THAT PUTS THE CALL ON HOLD, MESSAGE F10 (RFC 5359, SECTION 2.1)
Hold re-INVITE
INVITE sips:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061
 ;branch=z9hG4bKnashds7
Route: <sips:ss1.example.com;lr>
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=314159
To: Alice <sips:alice@atlanta.example.com>;tag=1234567
Call-ID: 12345601@atlanta.example.com
CSeq: 1 INVITE
Contact: <sips:bob@client.biloxi.example.com>;+sip.rendering="no"
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...

v=0
o=bob 2890844527 2890844528 IN IP4 client.biloxi.example.com
s=
c=IN IP4 client.biloxi.example.com
t=0 0
m=audio 3456 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=sendonly

§2.4Transferring a Call to Someone Else

Three transfer examples cover the common cases, and all of them use the REFER method from RFC 3515. The person transferring the call sends a REFER whose Refer-To header field names the other party, and the user agent on the other end then makes the new call itself.

In the unattended transfer, Alice calls Bob and then transfers him to Carol. Alice sends the REFER, Bob answers with 202 Accepted, and Bob sends a NOTIFY to report the progress of the transfer. Alice then sends a BYE, which ends the media but not the dialog: the dialog between Alice and Bob still exists until the subscription created by the REFER has terminated, either because of a NOTIFY containing a Subscription-State: terminated;reason=noresource header field, as in the final NOTIFY, or because of a 481 response to a NOTIFY. Bob sets up the session with Carol and reports the success of the transfer back to Alice. If the transfer fails, Bob can send a new INVITE back to Alice to re-establish the session.

In the attended transfer, Bob holds Alice, calls Carol to announce the transfer, places Carol on hold, and then transfers Alice to Carol. The new session replaces the session between Bob and Carol. The Refer-To URI that Bob sends is the Contact URI that Carol returned in her 200 OK, with the Replaces header field from RFC 3891 inserted into it, so that only the correct instance of Carol is reached. The gr URI parameter on that Contact URI indicates that it is a GRUU, an address that stays globally routable outside the dialog. Without knowing that the Contact URI is a GRUU, Bob must be prepared to retry the REFER with a Refer-To URI of the URI used to reach Carol, but with a Require: replaces header escaped into the Refer-To header field.

The third example transfers the call with an instant message. Bob sends Carol a SIP MESSAGE, the extension for instant messaging defined in RFC 3428, that contains Alice's URI and an embedded Replaces header field. If Carol clicks on the URI, her SIP user agent sends an INVITE to Alice that replaces the session with Bob. The document notes that another instant messaging protocol, or another method, could have been used to pass the URI from Bob to Carol.

A transfer hands the call to a third person with a REFER message. The phone on the other end then makes the new call and reports what happened back to the person who transferred it. The attended version checks with the third person first, and the instant message version sends the address in a message instead of a call.

UNATTENDED TRANSFER (RFC 5359, SECTION 2.4)
AliceBobCarol
  1. INVITE F1Bob calls Alice.
  2. 200 OK F3
  3. ACK F4RTP audio flows in both directions.
  4. REFER Refer-To: C F5Alice asks Bob to transfer the call to Carol.
  5. 202 Accepted F6
  6. NOTIFY F7Bob reports the progress of the transfer.
  7. BYE F9Alice leaves; the dialog stays up until the REFER subscription ends.
  8. INVITE Referred-By: A F11Bob calls Carol; the Replaces header sits in the Refer-To URI.
  9. 200 OK F13
  10. NOTIFY F15Bob reports that the transfer succeeded.
THE ATTENDED TRANSFER REFER, MESSAGE F15 (RFC 5359, SECTION 2.5; LONG HEADER ON ONE LINE)
REFER with Replaces
REFER sips:alice@client.atlanta.example.com SIP/2.0
Via: SIP/2.0/TLS client.biloxi.example.com:5061
 ;branch=z9hG4bKnashds2g
Max-Forwards: 70
From: Bob <sips:bob@biloxi.example.com>;tag=23431
To: Alice <sips:alice@atlanta.example.com>;tag=1234567
Call-ID: 12345600@atlanta.example.com
CSeq: 1025 REFER
Refer-To: <sips:39itp34klkd@chicago.example.com?Replaces=sdjfdjfskdf%40biloxi.example.com%3Bto-tag%3D5f35a3%3Bfrom-tag%3D8675309&Require=replaces>
Referred-By: <sips:bob@biloxi.example.com>
Contact: <sips:bob@client.biloxi.example.com>
Content-Length: 0

§2.7Forwarding a Call and Finding a User

Three forwarding examples show what a proxy does when a call should go somewhere else. In the unconditional example, Bob wants all calls forwarded to the Public Switched Telephone Network (PSTN), which is just another URI to the proxy server. Alice calls Bob, and the proxy server rewrites the Request URI and forwards the INVITE to a gateway. The 181 Call Is Being Forwarded response is shown as sent by the proxy, and the document notes that strictly speaking the proxy is behaving as a user agent in this case, as a proxy cannot generate non-100 provisional responses. Forwarding could also be accomplished using a redirect, a 302 Moved Temporarily response.

In the forwarding on busy example, calls to B1 are to be forwarded to B2 if B1 is busy, and the proxy knows B1 is busy because B1 answers the INVITE with 486 Busy Here. The proxy server then places the call to B2. In the forwarding on no answer example, the proxy sends the INVITE to B1, waits, gives up when the request times out, cancels the pending request with a CANCEL, and receives 487. It then forwards the call to B2.

The find-me example in section 2.12 locates a person rather than a single number. A call to Bob results in an attempt to locate Bob by calling locations from a list of contacts. In the diagram the proxy tries B1 first and the request times out, then tries B2, which answers 480 Not Logged In, then tries B3, which answers 486 Busy Here, and finally reaches B4, which rings and answers. The location that answers the call becomes the active set, and no other sets may join the call. The document notes that the flow shows a sequential search, and that the search could be accomplished using parallel forking.

When a call should go elsewhere, the proxy changes the address on the invitation and sends it on. It can do that for every call, only when the person is busy, or only when nobody answers. The find-me example goes further and tries a list of places, one after another, until someone picks up.

UNCONDITIONAL CALL FORWARDING (RFC 5359, SECTION 2.7)
AliceProxyGateway
  1. INVITE F1
  2. 181 Call Is Being Forwarded F3The proxy rewrites the Request URI and forwards the call.
  3. INVITE F4
  4. 180 Ringing F5
  5. 180 Ringing F6
  6. 200 OK F7
  7. 200 OK F8
  8. ACK F9
  9. ACK F10

§2.10Three-Way Conference Calls

Two examples show how three people end up in one call. In the first, Alice and Bob are in a two-party call and Bob wants to add Carol. Bob is capable of media mixing in a three-party call, so he first sends Alice a re-INVITE that changes his Contact URIs to one that indicates Bob's mixer and acts like a focus. As a result, Bob includes the isfocus feature tag from RFC 3840, as described in RFC 4579. Bob then INVITEs Carol using the same Contact URI. The document notes that Bob could wait to re-INVITE Alice until after Carol has answered, and that he could also put Alice on hold before calling Carol.

In the second example, Carol wants to join a call she is not yet part of. She may have learned Bob's dialog identifier using some non-SIP means, or possibly from a NOTIFY with the dialog package sent by Bob. Carol sends Bob an INVITE containing a Join header field, defined in RFC 3911, that identifies the dialog between Alice and Bob. The header field names that dialog by Call-ID and by the From and To tags, in the form Join: 12345600@atlanta.example.com;from-tag=1234567;to-tag=23431. Bob re-INVITEs Alice to switch to focus mode and includes the isfocus feature tag, then accepts the INVITE from Carol, resulting in the three-way call.

A conference call needs one phone to mix the voices and act as the focus. In one example the person already in the call invites a third person in. In the other, the third person asks to join by naming the existing call, and the phone in the call accepts and switches to focus mode.

THIRD PARTY JOINS A CONFERENCE (RFC 5359, SECTION 2.11)
AliceBobCarol
  1. INVITE F1
  2. 200 OK F3
  3. ACK F4
  4. INVITE Join: A-B F5Carol names the dialog she wants to join.
  5. INVITE F7Bob re-invites Alice to switch to focus mode, with the isfocus feature tag.
  6. 200 OK F8
  7. 200 OK F10
  8. ACK F11RTP audio flows in the three-way call.

§2.13Screening Incoming and Outgoing Calls

Incoming call screening works from a list of addresses a person does not want to hear from. Bob has such a list and Alice is included on it. Alice attempts to call Bob, and the first three messages show that Bob does not accept INVITEs that have not been screened by the proxy: Bob answers Alice's INVITE with 305 Use Proxy, and Alice's user agent then sends the INVITE to the proxy instead. The proxy challenges Alice with 407 Proxy Authentication Required and, once she is authenticated, refuses the call with 403 Screening Failure (Terminating). The document is explicit that call screening cannot be done using the From header field, so some form of authentication credentials must be used.

The refusal carries an announcement URI in an Error-Info header field, which Alice accesses by sending an INVITE to listen to the announcement. The announcement server uses the automaton and rendering feature tags to indicate that it is a media server only capable of playing announcements.

Outgoing call screening is the mirror image. Alice has a list of addresses to which she will not be able to place a call, and Bob is included on it. The proxy challenges her with 407 Proxy Authentication Required and then refuses with 403 Screening Failure (Originating). Alice can establish a session to listen to the announcement in the Error-Info header field, in the same way as in the incoming case.

A screening list blocks calls in one direction. For incoming calls, the phone only accepts calls the proxy has checked, and the proxy refuses the call when the caller is on the list. For outgoing calls, the proxy refuses the call when the number is on the list. Either way the caller is given the address of a recorded announcement that they can listen to.

§2.15Parking a Call and Picking It Up

Call park is a special case of transfer. Alice calls Bob, and Bob parks the call at a park server by sending the server a REFER. The park server sends an INVITE to Alice with a Replaces header field, which replaces the session between Alice and Bob, and it uses the automaton, rendering and byeless feature tags to indicate its capabilities to Alice. The call is accepted by Alice, so Alice sends a BYE to Bob. Bob receives notification of the successful park, and he also receives the dialog identifiers in the application/sip body of the NOTIFY response. The document notes that this call flow could also be used for music on hold.

To retrieve the call, Carol needs those dialog identifiers, and she obtains them from a NOTIFY from the park server. In the diagram she first sends a SUBSCRIBE to the park server, receives the NOTIFY, and then sends an INVITE containing the dialog identifiers to Alice. That INVITE replaces the session with the park server. Alice accepts the call and sends a BYE to the park server, and the media from the server stops.

Call pickup answers a call for someone else. Bob and Bill are part of a work group at example.com that can pick up each other's calls. Alice calls Bob, who does not answer, and Bill wishes to pick up the call. Bill sends a SUBSCRIBE to Bob to retrieve the dialog information, and then generates an INVITE with a Replaces to Alice. Alice answers the INVITE and sends a CANCEL to Bob, which stops Bob's phone from ringing. The document notes that the relative order of the 487 response, its ACK and the 200 OK to the CANCEL is not deterministic. The Replaces header field in this example carries the early-only parameter, which prevents Alice from accepting the INVITE if Bob has already accepted the INVITE; if Bill had wished to take the call from Bob regardless of whether he had answered, the parameter would not have been present. The subscription between the two colleagues could also have been established prior to Alice's call.

Parking leaves a call at a server so that someone else can collect it later. The phone that parked it receives the details of the parked call, and the colleague who collects it puts those details into a new invitation that takes the call over. Pickup is simpler: a colleague answers a call that is already ringing for someone else.

PARKING A CALL AND COLLECTING IT (RFC 5359, SECTION 2.15)
AliceBobPark ServerCarol
  1. INVITE F1
  2. REFER Refer-To: A F5Bob parks the call at the server.
  3. 202 Accepted F6
  4. INVITE Replaces: B F9The server takes over the session with Alice.
  5. BYE F12Bob receives the notification that the park worked.
  6. SUBSCRIBE F16
  7. NOTIFY F18The server sends Carol the dialog identifiers.
  8. INVITE Replaces: Park Server F20Carol takes the call over from the server.
  9. 200 OK F21

§2.17Automatic Redial and Click to Dial

Automatic redial covers the case where the person called is busy. Bob is initially busy when Alice calls, and Alice receives 486 Busy Here. Alice subscribes to Bob's call state with a SUBSCRIBE request, and Bob sends a NOTIFY when he is available. Alice is alerted, and she then sends an INVITE to Bob to establish the session. The subscription is terminated with a further SUBSCRIBE once the call is over.

Click to dial starts a call from somewhere other than a phone. While browsing the web on his PC, Bob clicks on Carol's SIP URI, intending to establish a session with Carol. Bob's web browser passes the SIP URI to the SIP client on Bob's PC, and the PC client is configured with the URI of Bob's SIP phone. A REFER is sent to that phone, which results in the establishment of the session between Bob and Carol. Bob's PC requests that no REFER dialog be established by the use of the Refer-Sub: false header field, defined in RFC 4488. The document prefers this flow to the 3pcc flow because the end-to-end SIP signaling is not interrupted by the 3pcc controller, and because Bob's experience of the call will not be marred by the lack of ringback tone or possible clipping. Suitable authorization of the REFER and explicit authorization of the triggered INVITE by Bob are necessary.

Automatic redial waits for the busy person to become free and then calls again. Click to dial does the opposite: it starts a call from a link on a web page. The program on the computer asks the phone to make the call, so the call runs from the phone to the other person as usual.

§3Security Considerations

Since many of the examples in this document involve SIP call control, either peer-to-peer or 3pcc, the security considerations in the Multiparty Framework document apply.

Many of the services shown also rely on a particular user agent being part of a group. Members of a group could be, for example, employees within a particular department, a set of home phone extensions, or members of a call centre. User agents that are part of the group permit other group members special privileges and features. A user agent may not in general allow another user agent to learn detailed dialog information, but this information might be shared with another group member in order to facilitate a service such as call pickup. Group members must be authenticated using normal SIP means such as certificates or shared secrets.

The service examples make extensive use of the SIP call control primitives REFER, Replaces, Join and the dialog package, so the security considerations associated with each of those extensions, in RFC 3515, RFC 3891, RFC 3911 and RFC 4235, apply to the scenarios in this document.

Some of these features only work between phones that belong to the same group, such as the people in one department. A phone in the group may share call details with another member of the group, which it would refuse to do with anyone else. So each member has to prove who it is, with a certificate or a shared secret.

§11References

[RFC3261]RFC 3261Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.July 2002[RFC3264]RFC 3264Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002.July 2002[RFC3265]RFC 3265Roach, A., "Session Initiation Protocol (SIP)-Specific Event Notification", RFC 3265, June 2002.July 2002[RFC3428]RFC 3428Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C., and D. Gurle, "Session Initiation Protocol (SIP) Extension for Instant Messaging", RFC 3428, December 2002.December 2002[RFC3515]RFC 3515Sparks, R., "The Session Initiation Protocol (SIP) Refer Method", RFC 3515, April 2003.April 2003[RFC3840]RFC 3840Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating User Agent Capabilities in the Session Initiation Protocol (SIP)", RFC 3840, August 2004.August 2004[RFC3891]RFC 3891Mahy, R., Biggs, B., and R. Dean, "The Session Initiation Protocol (SIP) "Replaces" Header", RFC 3891, September 2004.September 2004[RFC3911]RFC 3911Mahy, R. and D. Petrie, "The Session Initiation Protocol (SIP) "Join" Header", RFC 3911, October 2004.October 2004[RFC4235]RFC 4235Rosenberg, J., Schulzrinne, H., and R. Mahy, "An INVITE-Initiated Dialog Event Package for the Session Initiation Protocol (SIP)", RFC 4235, November 2005.November 2005[RFC4488]RFC 4488Levin, O., "Suppression of Session Initiation Protocol (SIP) REFER Method Implicit Subscription", RFC 4488, May 2006.May 2006[RFC4579]RFC 4579Johnston, A. and O. Levin, "Session Initiation Protocol (SIP) Call Control - Conferencing for User Agents", BCP 119, RFC 4579, August 2006.August 2006[RFC3665]RFC 3665Johnston, A., Donovan, S., Sparks, R., Cunningham, C., and K. Summers, "Session Initiation Protocol (SIP) Basic Call Flow Examples", BCP 75, RFC 3665, December 2003.January 2004[RFC3725]RFC 3725Rosenberg, J., Peterson, J., Schulzrinne, H., and G. Camarillo, "Best Current Practices for Third Party Call Control (3pcc) in the Session Initiation Protocol (SIP)", BCP 85, RFC 3725, April 2004.April 2004[RFC4317]RFC 4317Johnston, A. and R. Sparks, "Session Description Protocol (SDP) Offer/Answer Examples", RFC 4317, December 2005.December 2005[RFC4475]RFC 4475Sparks, R., Hawrylyshen, A., Johnston, A., Rosenberg, J., and H. Schulzrinne, "Session Initiation Protocol (SIP) Torture Test Messages", RFC 4475, May 2006.May 2006
[FRAMEWORK]Mahy, R., Sparks, R., Rosenberg, J., Petrie, D., and A. Johnston, "A Call Control and Multi-party usage framework for the Session Initiation Protocol (SIP)", Work in Progress, April 2008.
[GRUU]Rosenberg, J., "Obtaining and Using Globally Routable User Agent (UA) URIs (GRUU) in the Session Initiation Protocol (SIP)", Work in Progress, October 2007.
[TRANSFER]Sparks, R. and A. Johnston, "Session Initiation Protocol Call Control - Transfer", Work in Progress, September 2008.