Internet DRAFT - draft-haerens-sip-3pcc

draft-haerens-sip-3pcc





SIP Working Group                                            F. Haerens
Internet Draft                                                  Alcatel
Document: <draft-haerens-sip-3pcc-00.txt>                 February 2001
Category: Informational



            Third Party Call Control for Resource Management


Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026 [1].

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that
   other groups may also distribute working documents as Internet-
   Drafts.  Internet-Drafts are draft documents valid for a maximum of
   six months and may be updated, replaced, or obsoleted by other
   documents at any time. It is inappropriate to use Internet- Drafts
   as reference material or to cite them other than as "work in
   progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt
   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

1. Abstract

   This document describes how to perform third party call control in
   SIP for both a basic single-media and multi-media call when SDP
   preconditions are used. This draft considers the Quality of Service
   and the resource management. There are no new SIP extensions needed
   to accomplish this. The mechanism outlined is illustrated with
   examples in order to help understand it.

2. Conventions used in this document

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in
   this document are to be interpreted as described in RFC-2119 [1].

   This document refers to ôcontrollerö as the entity in the third
   party call control which allows to set up and manage a
   communications relationship between two or more other parties [6].

3. Basic SingleûMedia Third party call control with SDP preconditions

   The section explains the basic single-media third party call control
   with SDP preconditions based on reference [3] W. Marshall et al,
   "Integration of Resource Management and SIP", draft-manyfolks-sip-
   resource-01.txt, IETF; June 2000. Work in progress.

Haerens    Category:Informational û Expiration:August 2001          1

   Third Party Call Control for Resource Management      February 2001



   The confirmation of the SDP preconditions follows the revised
   procedures given in section 6.

   Figure 1 presents a high-level overview of a basic Third Party Call
   Control flow.  This example is appropriate for a single-media
   session with a mandatory quality-of-service "sendrecv" precondition,
   where both the user A and User B can only perform a single-direction
   ("send") resource reservation.

   The controller prepares for User A an SDP message body for the
   INVITE describing the desired QoS and security preconditions for
   each media flow, and the desired direction "sendrecv. This SDP is
   included in the INVITE message sent to User A through the proxies,
   and includes an entry "a=qos:mandatory sendrecv." The User A on
   receipt of the INVITE , being willing to perform the requested
   precondition, returns a 183-Session-Progress provisional response
   containing SDP, along with the qos/security attribute for each
   stream having a precondition. This 183-Session-Progress provisional
   response is sent using the reliability mechanism of [2].  The
   controller sends the appropriate PRACK and the User A UAS responds
   with a 200-OK to the PRACK.

   Figure 1 (Proposal 1)

         User A                                         User B
           |                  Controller                   |
           |                       |                       |
           | (1) INVITE SDP held   |                       |
           |<----------------------|                       |
           |  (2)  183 w/SDP A     |                       |
           |---------------------->|                       |
           |                       | (5) INVITE w/SDP A    |
           |  (3)  PRACK           |---------------------->|
           |<----------------------|(6) 183 w/SDP B confirm:recv
           | (4) 200 OK (of PRACK) |<----------------------|
           |---------------------->| (7)   PRACK           |
           |                       |---------------------->|
           |                       | (8)200 OK (of PRACK)  |
           |                       |<----------------------|
           |(9) NOTIFY w/SDP B confirm:recv                |
           |<----------------------|                       |
           |(10) 200 OK (of NOTIFY)|                       |
           |---------------------->|                       |
           |                       |                       |
           |                       |                       |
           | Reservation                       Reservation |
            ===========>                       <===========
           |                                               |
           |  (20) COMET           |                       |
           |---------------------->|                       |
           |                       |  (21) COMET           |
           |                       |---------------------->|

Haerens                                                              2

   Third Party Call Control for Resource Management      February 2001


           |                       | (22) 200 OK (of COMET)|
           |                       |<----------------------|
           | (23) 200 OK (of COMET)|                       |
           |<----------------------|                       |
           |                                               |
           |
           |
           |                  Controller             User Alerted
           |                       |                       |
           | (25)  180 Ringing     |  (24) 180 Ringing     |
           |---------------------->|<----------------------|
           | (26)  PRACK           |  (27) PRACK           |
           |<----------------------|---------------------->|
           | (29) 200 OK (of PRACK)| (28) 200 OK (of PRACK)|
           |---------------------->|<----------------------|
           |                                               |
           |                                               |
           |                                        User Picks-Up
           |                  Controller             the phone
           |                       |                       |
           |  (31) 200 OK          |  (30) 200 OK          |
           |---------------------->|<----------------------|
           |                       |                       |
           |   (32)  ACK           |   (33)  ACK           |
           |<----------------------|---------------------->|
           |                                               |

        Figure 1(Proposal 1): Basic 3PCC Flow with SDP Preconditions



   Figure 1 (Proposal 2)

         User A                                         User B
           |                  Controller                   |
           |                       |                       |
           | (1) INVITE SDP held   |                       |
           |<----------------------|                       |
           |  (2)  200 SDP A       |                       |
           |---------------------->|                       |
           | (3) ACK               |                       |
           |<----------------------|                       |
           |                       | (5) INVITE w/SDP A    |
           |                       |---------------------->|
           |                       | (6)   183 w/SDP B     |
           |                       |<----------------------|
           |                       | (7)   PRACK           |
           |                       |---------------------->|
           |                       | (8)200 OK (of PRACK)  |
           | (9) INVITE w/SDP B    |<----------------------|
           |<----------------------|                       |
           |                       |                       |
           | Reservation                       Reservation |

Haerens                                                              3

   Third Party Call Control for Resource Management      February 2001


            ===========>                       <===========
           |                                               |
           |  (20) COMET           |                       |
           |---------------------->|                       |
           |                       |  (21) COMET           |
           |                       |---------------------->|
           |                       | (22) 200 OK (of COMET)|
           |                       |<----------------------|
           | (23) 200 OK (of COMET)|                       |
           |<----------------------|                       |
           |                                               |
           |
           |
           |                  Controller             User Alerted
           |                       |                       |
           | (25)  180 Ringing     |  (24) 180 Ringing     |
           |---------------------->|<----------------------|
           | (26)  PRACK           |  (27) PRACK           |
           |<----------------------|---------------------->|
           | (29) 200 OK (of PRACK)| (28) 200 OK (of PRACK)|
           |---------------------->|<----------------------|
           |                                               |
           |                                               |
           |                                        User Picks-Up
           |                  Controller             the phone
           |                       |                       |
           |  (31) 200 OK          |  (30) 200 OK          |
           |---------------------->|<----------------------|
           |                       |                       |
           |   (32)  ACK           |   (33)  ACK           |
           |<----------------------|---------------------->|
           |                                               |

         Figure 1(Proposal 2): Basic 3PCC Flow with SDP Preconditions



   Figure 1 (Proposal 3)

         User A                                         User B
           |                  Controller                   |
           |                       |                       |
           | (1) INVITE SDP held   |                       |
           |<----------------------| (4) INVITE SDP held   |
           |  (2)  200 SDP A       |---------------------->|
           |---------------------->|  (5)  200 SDP B       |
           | (3) ACK               |<----------------------|
           |<----------------------| (6)     ACK           |
           |                       |---------------------->|
           |                       | (5) INVITE w/SDP A    |
           |                       |---------------------->|
           | (9) INVITE w/SDP B    |                       |
           |<----------------------|                       |

Haerens                                                              4

   Third Party Call Control for Resource Management      February 2001


           |                       |                       |
           | Reservation                       Reservation |
            ===========>                       <===========
           |                                               |
           |  (20) COMET           |                       |
           |---------------------->|                       |
           |                       |  (21) COMET           |
           |                       |---------------------->|
           |                       | (22) 200 OK (of COMET)|
           |                       |<----------------------|
           | (23) 200 OK (of COMET)|                       |
           |<----------------------|                       |
           |                                               |
           |
           |
           |                  Controller             User Alerted
           |                       |                       |
           | (25)  180 Ringing     |  (24) 180 Ringing     |
           |---------------------->|<----------------------|
           | (26)  PRACK           |  (27) PRACK           |
           |<----------------------|---------------------->|
           | (29) 200 OK (of PRACK)| (28) 200 OK (of PRACK)|
           |---------------------->|<----------------------|
           |                                               |
           |                                               |
           |                                        User Picks-Up
           |                  Controller             the phone
           |                       |                       |
           |  (31) 200 OK          |  (30) 200 OK          |
           |---------------------->|<----------------------|
           |                       |                       |
           |   (32)  ACK           |   (33)  ACK           |
           |<----------------------|---------------------->|
           |                                               |

         Figure 1(Proposal 3): Basic 3PCC Flow with SDP Preconditions


   Similarly the  controller also prepares for User B an SDP message
   body for the INVITE describing the desired QoS and security
   preconditions for each media flow as received from User A into the
   183-Session_Progress provisional response, and the desired direction
   "sendrecv. This SDP is included in the INVITE message sent to User B
   through the proxies, and includes an entry "a=qos:mandatory
   sendrecv." The User B on receipt of the INVITE , being willing to
   perform the requested precondition,, returns a 183-Session-Progress
   provisional response containing SDP, along with the qos/security
   attribute for each stream having a precondition.  Since the
   "sendrecv" direction tag required a cooperative effort of the User A
   and User B, the User B requests a confirmation when the
   preconditions are met, with the SDP entry "a=qos:mandatory sendrecv
   confirm recvö. The direction-tag indicates that the COMET will be
   sent by the party (here Controller) who received the confirmation-

Haerens                                                              5

   Third Party Call Control for Resource Management      February 2001


   tag. This 183-Session-Progress provisional response is sent using
   the reliability mechanism of [2]. The controller sends the
   appropriate PRACK and the User B UAS responds with a 200-OK to the
   PRACK. The User B now attempts to reserve the qos resources and
   establish the security associations.

   The controller now waits until the receipt of the 200-OK to the
   PRACK from User B is obtained before sending the SDP B to User A.

   During the discussion at the 49th IETF San Diego meeting it was not
   recommended to sent the SDP B into the PRACK message due to time
   outs which may occur during the provisional response reliability
   procedures at both sides. It was recommended to consider a re-INVITE
   w/SDP B but this assumes that an 200 OK was returned for User A.
   Presently a re-INVITE cannot be sent before a 200 OK is received
   from the UAS.  Also the sending of the initial INVITE with ôSDP
   heldö may not cause an alerting to be sent to the User A (by
   assuming that the sending with SDP with ôSDP heldö may not trigger
   an alerting at the UserÆs A side or specifying a SDP attribute).
   This procedure is given in figure 1 (proposal 2). The proposal 3
   also describes the possibility that an INVITE with ôSDP heldö is
   sent to user B.

   In figure 1 of proposal 1 the SDP B is sent from the Controller to
   the User A in a NOTIFY mechanism defined in Event Notification in
   SIP [7] followed by a 200 OK message returned form Party A to the
   Controller. In particular the following should be noted:

   i)    The NOTIFY should reflect the To:, From:, and Call-ID headers
   from the INVITE as if they had arrived in a SUBSCRIBE.

   ii)   Analogous to the case for SUBSCRIBE described in [7], the
   agent that issued the INVITE MUST be prepared to receive a NOTIFY
   before the session completes.

   iii)  The presence of the ôAllow-Eventsö header in a message is
   sufficient to indicate support for NOTIFY.

   iv)   The presence an ôeventö header containing  e.g.Event:
   precondition is proposed

   As an alternative solution the INFO mechanism or the 18x-Session-
   Progess message using the reliability mechanism could be considered.
   The use of the 18x-Session-Progress message is not recommended
   because this assumes that call progress messages need to be sent
   from UAC to UAS, it should also be decided whether a new 18x-
   Session-Progress or the present 183-Session-Progress could be used.

   It is proposed that a decision is made on one of the above
   proposals.




Haerens                                                              6

   Third Party Call Control for Resource Management      February 2001


   The figures 1 above describe the various proposals for passing the
   SDP B on receipt in the controller of the 200-OK to the PRACK from
   User B.
   The SDP B will be sent to the User A with the SDP entry as received
   from User B with the qos attribute set to "a=qos:mandatory sendrecv
   confirm recvö. The direction-flag will indicate that the COMET
   message will be sent by the party (here User A) who received the
   confirmation-tag. The SDP B is received by the User A, and the User
   A requests the resources needed in its "send" direction, and
   establishes the security associations. Once the preconditions are
   met, the User A sends a COMET message as requested by the
   confirmation token.  This COMET message contains an entry
   "a=qos:success send". This COMET message is relayed by the
   controller via a COMET message to User B.

   At this point the User A is also alerted and a 180- Ringing
   provisional response is forwarded.  This provisional response is
   also sent using the reliability mechanism of [2], resulting in a
   PRACK message and 200-OK of the PRACK

   The User B successfully performs its resource reservation, in its
   "send" direction, and waits for the COMET message from the User A.

   On receipt of the COMET message, the User B combines the "send"
   confirmation in the SDP with its "send" success, and knows all
   preconditions have been met.  The User B then continues with session
   establishment.  At this point it alerts the user, and sends a 180-
   Ringing provisional response.  This provisional response is also
   sent using the reliability mechanism of [2], resulting in a PRACK
   message and 200-OK of the PRACK.

   When the User A or User B answers, the normal SIP 200-OK final
   response is sent through the proxies to the  Controller; and the
   controller responds with an ACK message.

   At this point, both users A and B are in a single point-to-point
   call and are under control of a third party (named controller)
   provided the controller has identified itself in the From field of
   the INVITE. It should be noted that the media is exchanged between
   users A and B rather than with the controller.

   Either user can terminate the call.  An endpoint that detects an
   "on-hook" (request to terminate the call) releases the QoS resources
   held for the connection, and sends a SIP BYE message to the
   controller which still has complete control over the call. This
   message will be acknowledged with a 200-OK.

4. Message example of a Basic SingleûMedia Third party call control
with SDP preconditions

   In this example the controller is part of a gateway which e.g. maps
   the Open Service Access interface method from the Application
   Servers to the SIP based Service Capability Servers.

Haerens                                                              7

   Third Party Call Control for Resource Management      February 2001


   See also section 6 for more details on the use of the proposed third
   party call control flows for the OSA architecture.

     (1)
         INVITE sip:userA@provider1.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         Require: 100rel
         From: Controller <sip:Controller@gateway.provider3.com>
         To: UserA <sip:userA@provider1.com>
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 INVITE
         Contact: Controller<sip:controller@gateway.provider3.com>
         Content-Type: application/sdp
         Content-Length: 156

         v=0
         o=Controller 2891234526 2891234526 IN IP gateway.provider3.com
         s=Session SDP
         c=IN IP4 0.0.0.0
         t=0 0
         m=audio 0 RTP/AVP
         a=qos:mandatory sendrecv

      (2)
         SIP/2.0 183 Session Progress
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         Require: 100rel
         RSeq: 223344
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserA <sip:userA@provider1.com>;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 INVITE
         Contact: UserA <sip:userA@provider1.com>
         Content-Type: application/sdp
         Content-Length: 169

         v=0
         o=UserA 2891234526 2891234526 IN IP4 provider1.com
         s=Session SDP
         c=IN IP4 10.0.0.3
         t=0 0
         m=audio 30002 RTP/AVP 0 8
         a=qos:mandatory sendrecv

      (3)
         PRACK sip:userA@provider1.com SIP/2.0
         RAck: 223344 1 INVITE
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:Controller@gateway.provider3.com>
         To: UserA <sip:userA@provider1.com>;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 2 PRACK


Haerens                                                              8

   Third Party Call Control for Resource Management      February 2001


      (4)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserA <sip:userA@provider1.com>;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 2 PRACK

      (5)
         INVITE sip:UserB@provider2.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         Require: 100rel
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:UserB@provider2.com>
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 1 INVITE
         Contact: Controller <sip:controller@gateway.provider1.com>
         Content-Type: application/sdp
         Content-Length: 268

        v=0
        o=Controller 2891234526 2891234526 IN IP4 gateway.provider3.com
        s=Session SDP
        t=0 0
        m=audio 30002 RTP/AVP 0 8
        c=IN IP4 10.0.0.3
        a=qos:mandatory sendrecv


   The INVITE method to User B could also be sent using the same Call-
   ID (= 12345678)as the INVITE to User A and will create a second call
   leg. This INVITE message must contain a ôbranch=1ö field in order to
   distinguish the various/repeated responses received from the
   different call legs involved.

         INVITE sip:UserB@provider2.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060; branch=1
         Require: 100rel
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:UserB@provider2.com>
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 INVITE
         Contact: Controller <sip:controller@gateway.provider1.com>
         Content-Type: application/sdp
         Content-Length: 268

        v=0
        o=Controller 2891234526 2891234526 IN IP4 gateway.provider3.com
        s=Session SDP
        t=0 0
        m=audio 30002 RTP/AVP 0 8
        c=IN IP4 10.0.0.3
        a=qos:mandatory sendrecv

Haerens                                                              9

   Third Party Call Control for Resource Management      February 2001




      (6)
         SIP/2.0 183 Session Progress
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         Require: 100rel
         RSeq: 334455
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:userB@provider2.com> ;tag=112233
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 1 INVITE
         Contact: UserB <sip:userB@provider2.com>
         Content-Type: application/sdp
         Content-Length: 246

         v=0
         o=UserB 2891234526 2891234526 IN IP4 provider2.com
         s=Session SDP
         c=IN IP4 10.0.0.2
         t=0 0
         m=audio 40002 RTP/AVP 8
         a=qos:mandatory sendrecv confirm recv.


      (7)

         PRACK sip:UserB@provider2.com SIP/2.0
         RAck: 334455 1 INVITE
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:UserB@provider2.com> ;tag=112233
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 2 PRACK

      (8)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:UserB@provider2.com> ;tag=112233
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 2 PRACK

      (9)
         SIP/2.0 NOTIFY
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         Require: 100rel
         RSeq: 445566
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserA <sip:userA@provider1.com>;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 INVITE
         Contact: UserA <sip:userA@provider1.com>
         Content-Type: application/sdp

Haerens                                                             10

   Third Party Call Control for Resource Management      February 2001


         Content-Length: 169

         v=0
         o=UserB 2891234526 2891234526 IN IP4 provider2.com
         s=Session SDP
         c=IN IP4 10.0.0.2
         t=0 0
         m=audio 40002 RTP/AVP 8
         a=qos:mandatory sendrecv confirm recv

      (10)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserA <sip:userA@provider1.com>;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 3 PRACK


      (20)
         COMET sip:UserA@provider1.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         To: UserA <sip:UserA@provider1.com>
         From: Controller <sip:controller@gateway.provider3.com>
        ;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 COMET
         Content-Type: application/sdp
         Content-Length: 159

         v=0
         o=UserA 2891234526 2891234526 IN IP4 userA.provider1.com
         s=Session SDP
         c=IN IP4 10.0.0.3
         t=0 0
         m=audio 30002 RTP/AVP 0 8
         a=qos:success sendrecv

      (21)
         COMET sip:UserB@provider2.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         ;tag=112233
         To: UserB <sip:UserB@provider2.com>
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 3 COMET
         Content-Type: application/sdp
         Content-Length: 248

         v=0
         o=UserA 2891234526 2891234526 IN IP4 userA.provider1.com
         s=Session SDP
         t=0 0

Haerens                                                             11

   Third Party Call Control for Resource Management      February 2001


         m=audio 30002 RTP/AVP 0 8
         c=IN IP4 10.0.0.3
         a=qos:success sendrecv

      (22)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         ;tag=112233
         To: UserB <sip:UserB@provider2.com>
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 3 COMET

      (23)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         To: UserA <sip:UserA@provider1.com>
         From: Controller <sip:controller@gateway.provider3.com>
         ;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 COMET


      (24)
         SIP/2.0 180 Ringing
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:UserB@provider2.com> ;tag=112233
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 1 INVITE


      (25)
         SIP/2.0 180 Ringing
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserA <sip:UserA@provider1.com> ;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 INVITE


      (26)
         PRACK sip:userA@provider1.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:Controller@gateway.provider3.com>
         To: UserA <sip:userA@provider1.com>;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 2 PRACK
         RAck: 223344 1 INVITE


      (27)


Haerens                                                             12

   Third Party Call Control for Resource Management      February 2001


         PRACK sip:UserB@provider2.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:UserB@provider2.com> ;tag=112233
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 2 PRACK
         RAck: 334455 1 INVITE

      (28)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:UserB@provider2.com> ;tag=112233
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 2 PRACK


      (29)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserA <sip:userA@provider1.com>;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 2 PRACK


      (30)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:UserB@provider2.com> ;tag=112233
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 1 INVITE
         Contact: UserB <sip:userB@provider2.com>
         Content-Type: application/sdp
         Content-Length: 178

         v=0
         o=UserB 2891234526 2891234526 IN IP4 userB.provider2.com
         s=Session SDP
         c=IN IP4 10.0.0.2
         t=0 0
         m=audio 40002 RTP/AVP 8

      (31)
         SIP/2.0 200 OK
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserA <sip:UserA@provider1.com> ;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 INVITE
         Contact: UserB <sip:userB@provider2.com>
         Content-Type: application/sdp

Haerens                                                             13

   Third Party Call Control for Resource Management      February 2001


         Content-Length: 178

         v=0
         o=UserB 2891234526 2891234526 IN IP4 userB.provider2.com
         s=Session SDP
         c=IN IP4 10.0.0.2
         t=0 0
         m=audio 40002 RTP/AVP 8


      (32)
         ACK sip:userA@provider1.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserA <sip:UserA@provider1.com> ;tag=123456
         Call-ID: 12345678@gateway.provider3.com
         CSeq: 1 ACK

      (33)
         ACK sip:userB@provider2.com SIP/2.0
         Via: SIP/2.0/UDP gateway.provider3.com:5060
         From: Controller <sip:controller@gateway.provider3.com>
         To: UserB <sip:userB@provider2.com> ;tag=112233
         Call-ID: 11223344@gateway.provider3.com
         CSeq: 1 ACK


5. Multi-Media Third party call control with SDP preconditions

   The section explains the multi-media third party call control with
   SDP preconditions based on reference [3] W. Marshall et al,
   "Integration of Resource Management and SIP", draft-manyfolks-sip-
   resource-01.txt, IETF; June 2000. Work in progress.

   Figure 2 presents a high-level overview of an advanced end-point to
   end-point (User A-User B) third party call flow.  This example is
   appropriate for a multiple-media session with some combination of
   mandatory and optional quality-of-service precondition.  For
   example, the User A may suggest five media streams, and be willing
   to establish the session if any three of them are satisfied.

   The use of reliable provisional responses is assumed.

   The controller prepares for UserA an SDP message body for the INVITE
   describing the desired QoS and security preconditions for each media
   flow, and the desired direction "sendrecvö. This SDP is  included in
   the INVITE message sent to UserA through the proxies, and includes
   an entry "a=qos:mandatory sendrecv.or an entry "a=qos:optional
   sendrecv.ö as appropriate " The UserA on receipt of the INVITE ,
   being willing to perform the requested precondition, returns a 183-
   Session-Progress provisional response containing SDP, along with the
   qos/security attribute for each stream having a precondition and the
   desired direction.. The User A also requests confirmation of the

Haerens                                                             14

   Third Party Call Control for Resource Management      February 2001


   preconditions with the relevant direction-tag. This 183-Session-
   Progress provisional response is sent using the reliability
   mechanism of [2].  The controller sends the appropriate PRACK and
   the UserA UAS responds with a 200-OK to the PRACK.

   Similarly the controller also prepares for UserB an SDP message body
   for the INVITE describing the desired QoS and security preconditions
   for each media flow as received from UserA into the 183-
   Session_Progress provisional response, and the desired direction
   "sendrecvö. This SDP is  included in the INVITE message sent to
   UserB through the proxies, and includes an entry "a=qos:mandatory
   sendrecv." or an entry "a=qos:optional sendrecv.ö as appropriate
   together with the relevant confirmation of the preconditions and
   direction tags.

   The UserB on receipt of the INVITE , prepares an SDP message body
   for the INVITE describing the desired QoS and security preconditions
   for  each media flow, and the desired directions  being willing to
   perform the requested precondition, returns a 183-Session-Progress
   provisional response containing SDP.  Since the "sendrecv" direction
   tag required a cooperative effort of the UserA and UserB, the UserB
   requests a confirmation when the preconditions are met, with the SDP
   entry "a=qos:mandatory sendrecv or an entry "a=qos:optional
   sendrecv.ö as appropriate together with the required confirmation of
   the preconditions and direction tags.

   This 183-Session-Progress provisional response is sent using the
   reliability mechanism of [2]. The controller sends the appropriate
   PRACK and the UserB UAS responds with a 200-OK to the PRACK. The
   UserB now attempts to reserve the qos resources and establish the
   security associations.

   The controller now waits until the receipt of the 200-OK to the
   PRACK from User B is obtained before sending the SDP B to User A.

   When the 200-OK is received in the controller the SDP B is sent to
   the User A in a NOTIFY mechanism defined in Event Notification in
   SIP [7] followed by a 200 OK message returned form Party A to the
   Controller.

   When the User B has completed the resource reservations and security
   session establishment, it sends a confirmation to the User A relayed
   by the  Controller in the form of a COMET message, with each
   precondition marked in the SDP as either success or failure.  Note
   that if User B was not satisfied with the combination of successful
   preconditions, it could instead have responded with 580-
   Precondition-Failure, and ended the INVITE transaction.

   If the User A has satisfied its preconditions, and is satisfied with
   the preconditions achieved by the User B, it responds with the COMET
   message.  The COMET message is relayed via the  Controller and
   contains the SDP with the success/failure results of each
   precondition attempted by User A.  If User A is not satisfied with

Haerens                                                             15

   Third Party Call Control for Resource Management      February 2001


   the combination of successful preconditions, it could instead have
   sent a CANCEL message..  Otherwise, the session proceeds as in the
   previous example.

   On receipt of the COMET message which is relayed via the
   controller, the User B examines the combination of satisfied
   preconditions reported by User A, and makes a final decision whether
   to proceed with the session.  If sufficient preconditions are not
   satisfied, the User B responds with 580-Precondition-Failure.
   Otherwise, the session proceeds as in the previous example.


         User A                                         User B
           |                  Controller                   |
           |                       |                       |
           | (1) INVITE SDP held   |                       |
           |<----------------------|                       |
           |  (2)  183 w/SDP A     |                       |
           |---------------------->|                       |
           |                       | (5) INVITE w/SDP A    |
           |  (3)  PRACK           |---------------------->|
           |<----------------------| (6)   183 w/SDP B     |
           | (4) 200 OK (of PRACK) |<----------------------|
           |---------------------->| (7)   PRACK           |
           |                       |---------------------->|
           |                       | (8)200 OK (of PRACK)  |
           | (9) NOTIFY            |<----------------------|
           |<----------------------|                       |
           |(10) 200 OK (of NOTIFY)|                       |
           |---------------------->|                       |
           |                       |                       |
           | Reservation                       Reservation |
            ===========>                       <===========
           |                                               |
           |                       |  (20) COMET           |
           |  (21) COMET           |<----------------------|
           |<----------------------|                       |
           | (22) 200 OK (of COMET)|                       |
           |---------------------->| (23) 200 OK (of COMET)|
           |                       |---------------------->|
           |                                               |
           |  (24) COMET           |                       |
           |---------------------->|  (25) COMET           |
           |                       |---------------------->|
           |                       | (26) 200 OK (of COMET)|
           |(27) 200 OK (of COMET) |<----------------------|
           |<----------------------|                       |
           |                                               |
           |
           |                  Controller             User Alerted
           |                       |                       |
           | (29)  180 Ringing     |  (28) 180 Ringing     |
           |---------------------->|<----------------------|

Haerens                                                             16

   Third Party Call Control for Resource Management      February 2001


           | (30)  PRACK           |  (31) PRACK           |
           |<----------------------|---------------------->|
           | (33) 200 OK (of PRACK)| (32) 200 OK (of PRACK)|
           |---------------------->|<----------------------|
           |                                               |
           |                                               |
           |                                        User Picks-Up
           |                  Controller             the phone
           |                       |                       |
           |  (35) 200 OK          |  (34) 200 OK          |
           |---------------------->|<----------------------|
           |                       |                       |
           |   (36)  ACK           |   (37)  ACK           |
           |<----------------------|---------------------->|
           |                                               |

     Figure 2: 3PCC Flow with negotiation of optional preconditions

6. Enhancements required to the COMET Method

6.1     Justification for extensions to the COMET Method

   In the Third Party call establishment the behavior of the Originator
   (UCA) and the Destination (UAS) for handling the requested
   confirmation of a precondition has to be extended as discussed at
   the San Diego  49th IETF meeting (see Ref. {5]).

   With regard to the examples given in sections 3, 4 and 5 the
   following should be noted:

   i)If in the Basic single-media third party call control example the
   mandatory precondition is to be confirmed from User A to the
   controller then this has to be requested via an INVITE method with
   the ôconfirmö attribute present.  This is presently specified in
   reference [2].If subsequently this mandatory precondition is to be
   indicated (confirmed) from the Controller to the User B then this
   has to be requested by the controller via a ôconfirmö attribute
   present in a method forwarded from controller to User B.(from the
   calling party to the called party). The COMET from the calling party
   (controller) to the called party B can only be indicated
   (triggered)if e.g. a ôconfirmö attribute is included in the INVITE.
   This is presently not supported in reference [2].

   ii)A similar reasoning can be done  for the multi-media third party
   call control in order to request the sending of COMETÆs for the
   directions Controller to User A triggered by the controller.

   The conclusion is that the COMET method procedures specifying the
   behavior have to be extended for the sending of COMETs from the
   calling party to the called party triggered by the calling party at
   the Originating side and for the sending of COMETs from the called
   party to the calling party triggered by the called party at the
   Destination side.

Haerens                                                             17

   Third Party Call Control for Resource Management      February 2001



   It was proposed at the San Diego meeting to define the qos-attribute
   as follows:

   qos-attribute    = "a=qos:" strength-tag SP direction-tag
                                      [SP confirmation-tag]
            strength-tag     = ("mandatory" | "optional" | "success" |
                                      "failure")
            direction-tag    = ("send" | "recv" | "sendrecv")
            confirmation-tag = "confirm" SP direction-tag

   The direction-tag of the confirmation-tag indicates which party
   sends the COMET message.

   i)   If a direction-tag  ôsendö is included in the confirmation-tag
   then the send party will confirm the COMET message.
   ii)  If a direction-tag ôrecvö is included then the party who
   received the confirmation-tag will confirm the COMET message.
   iii) If a direction-tag ôsendrecvö is included then the send and
   receive party of the confirmation-tag will confirm the COMET
   message.

   The definition of the allowed values for the direction attribute in
   the response are as follows:

   The following table illustrates the allowed values for the direction
   attribute in the response. Each row represents a value of the
   direction in the SIP INVITE, and each column the value in the
   response. An entry of N/A means that this combination is not
   allowed. A value of A->B (B->A) implies that the COMET will be sent
   from A to B (B to A). A value of A<->B means that the will be two
   COMETs, one in each direction. The value in the response is the one.
   used by both parties.

                                      B: response
                 A: request     send       recv  sendrecv   none
                 send           N/A        A->B    A<->B    N/A
                 recv           B->A       N/A     A<->B    N/A
                 sendrecv       N/A        N/A     A<->B    N/A
                 none           B->A       A->B    A<->B  No COMETs

6.2 Revised SIP Usage Rules for the COMET method procedures

   This section is provided as a place holder and will contain the
   revised SIP Usage Rules of section 8 in reference {3} for the
   enhancements explained under section 6.1 based on the agreements of
   the 50th IETF Minneapolis Meeting. Both the procedures for Basic and
   Third Party call control will be described.

   6.2.1. Overview

   The session originator (UAC) prepares an SDP message body for the
   INVITE describing the desired QoS and security preconditions for

Haerens                                                             18

   Third Party Call Control for Resource Management      February 2001


   each media flow, and the desired directions. The token value "send"
   means the direction of media from originator (whichever entity
   created the SDP) to recipient (whichever entity received the SDP in
   a SIP message), and "recv" is from recipient to originator. In an
   INVITE, the UAC is the originator, and the UAS is the recipient. The
   roles are reversed in the response.

   Note: This description is given as an initial proposal for further
   refinement.

   For Third Party Call control the following figure 3 gives an example
   of how the confirm direction flags could be applied.


         User A                                         User B
           |                  Controller                   |
           |                       |                       |
           | (1) INVITE SDP held a:qos.mandatory.sendrecv  |
           |<----------------------|                       |
           |                       |                       |
           | Receive          Send |                       |
           O<======================O                       |
           | Send          Receive |                       |
           O======================>O                       |
           |                                               |
           |                                               |
           |  (2)  183 w/SDP A conf:send                   |
           |---------------------->|                       |
           |                       |(5) INVITE w/SDP A conf:send
           |                       |---------------------->|
           |                       | Send          Receive |
           |                       |======================>O
           |                       | Receive          Send |
           |                       O<======================O
           |  (3)  PRACK           |                       |
           |<----------------------|(6)183 w/SDP B conf:send
           | (4) 200 OK (of PRACK) |<----------------------|
           |---------------------->| (7)   PRACK           |
           |                       |---------------------->|
           |                       | (8)200 OK (of PRACK)  |
           |                       |<----------------------|
           |                       |                       |
           |(9) NOTIFY w/SDP B conf:send                   |
           |<----------------------|                       |
           |(10) 200 OK (of NOTIFY)|                       |
           |---------------------->|                       |
           |                       |                       |
           | Reservation                       Reservation |
            ===========>                       <===========
           |                       |(20) COMET success:Sendrecv
           |                       |<----------------------|
           |(21) COMET success:Sendrecv                    |
           |<----------------------|                       |

Haerens                                                             19

   Third Party Call Control for Resource Management      February 2001


           | (22) 200 OK (of COMET)|                       |
           |---------------------->| (23) 200 OK (of COMET)|
           |                       |---------------------->|
           |                                               |
           |(24) COMET success:Sendrecv                    |
           |---------------------->|(25) COMET success:Sendrecv
           |                       |---------------------->|
           |                       | (26) 200 OK (of COMET)|
           |(27) 200 OK (of COMET) |<----------------------|
           |<----------------------|                       |
           |                                               |


   The recipient of the INVITE (UAS) returns a 18x provisional response
   containing a Content-Disposition of "precondition," and SDP with the
   qos/security attribute for each stream having a precondition.  The
   UAS would typically include a confirmation with a direction value
   (either send or recv or sendrecv) requesting whether the sender
   should confirm both directions (sendrecv) or only one direction
   (either send or recv). The SDP is a subset of the preconditions
   indicated in the INVITE.  Unlike normal SIP processing, the UAS MUST
   NOT alert the called user at this point.  The UAS now attempts to
   reserve the qos resources and establish the security associations.

   The 18x provisional response is received by the UAC. If the 18x
   contained SDP with mandatory qos/security parameters, the UAC does
   not let the session proceed until the mandatory preconditions are
   met.  The UAC attempts to reserve the needed resources and establish
   the security associations.

   If either party requests a confirmation, a COMET message is sent to
   that party.  The COMET message contains the success/failure
   indication for each precondition. For a precondition with a
   direction value of "sendrecv," the COMET indicates whether the
   sender is able to confirm both directions or only one direction.
   Upon receipt of the COMET message, the UAC/UAS continues normal SIP
   call handling, by (for a UAS) alerting the user and sending e.g. a
   180-Ringing or 200-OK response.  The UAC SIP transaction completes
   normally.


7. Applicability of the Third Party call control procedures.

7.1     Use in the Open Service Access Architecture

   <Text to be provided for this section>


7.2     QoS enabled and assured control establishment.

   <Text to be provided for this section>



Haerens                                                             20

   Third Party Call Control for Resource Management      February 2001


8. Security Considerations

   If the contents of the SDP contained in the 183-Session-Progress are
   private then end-to-end encryption of the message body can be used
   to prevent unauthorized access to the content.

   The security considerations given in the SIP specification apply to
   the COMET method.  No additional security considerations specific to
   the COMET method are necessary.

9. References

   [1] Bradner, S., "The Internet Standards Process -- Revision 3", BCP
   9, RFC 2026, October 1996.

   [2] J. Rosenberg and H. Schulzrinne, "Reliability of provisional
   responses in SIP," Internet Draft, Internet Engineering Task Force,
   July 2000.  Work in progress.

   [3] W. Marshall et al, "Integration of Resource Management and SIP",
   draft-manyfolks-sip-resource-01.txt, IETF; June 2000. Work in
   progress.

   [4] M. Handley/H. Schulzrinne/E. Schooler/J. Rosenberg, "SIP:
   Session Initiation Protocol", RFC 2543, IETF; Mach 1999.

   [5] G. Camarillo, "Third party call control with SDP preconditions",
   draft-camarillo-3pcc-qos-00.txt, IETF; July 2000. Work in progress.

   [6] J. Rosenberg/J. Peterson/H. Schulzrinne/Camarillo, "Third Party
   Call Control in SIP", draft-rosenberg-sip-3pcc-01.txt, IETF; May
   2001. Work in progress.

   [7] Roach, A., ôEvent Notification in SIPö draft-roach-sip-
   subscribe-notify-02, November 2000.

10.  Acknowledgments

   The author would like to recognize the comments received from Tom
   Batsele and Johan Dries from Alcatel Bell.


11. Author's Addresses

   Frans Haerens
   Alcatel Bell
   Francis Welles Plein, 1
   B-2080 Antwerp
   Belgium
   Phone: +32 3 240 9034
   Email: frans.haerens@alcatel.be



Haerens                                                             21

   Third Party Call Control for Resource Management      February 2001


Full Copyright Statement

   "Copyright (C) The Internet Society (date). All Rights Reserved.
   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph
   are included on all such copies and derivative works. However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into







































Haerens                                                             22