SIP Working Group                                           W. Marshall
Internet Draft                                          K. Ramakrishnan
Document: <draft-dcsgroup-sip-state-01.txt>                        AT&T
Category: Informational
                                                              E. Miller
                                                             G. Russell
                                                              CableLabs

                                                               B. Beser
                                                            M. Mannette
                                                        K. Steinbrenner
                                                                   3Com

                                                                D. Oran
                                                           F. Andreasen
                                                                  Cisco

                                                             J. Pickens
                                                                  Com21

                                                            P. Lalwaney
                                                             J. Fellows
                                                               Motorola

                                                               D. Evans
                                                 Secure Cable Solutions

                                                               K. Kelly
                                                               NetSpeak

                                                            March, 2000


          SIP Extensions for supporting Distributed Call State


Status of this Memo

   This document is an Internet-Draft and is NOT offered in accordance
   with Section 10 of RFC2026[1], and the author does not provide the
   IETF with any rights other than to publish as an Internet-Draft.

   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


DCS Group        Internet Draft - Expiration 09/30/00                1

              SIP Extensions for Distributed Call State    March 2000


   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   The distribution of this memo is unlimited.  It is filed as <draft-
   dcsgroup-sip-state-01.txt>, and expires September 30, 2000. Please
   send comments to the authors.



1. Abstract

   This document describes extensions to the Session Initiation
   Protocol (RFC2543) for supporting telephony services using the
   Distributed Call Signaling architecture described in [2]. This
   document discusses the State header that is used for supporting a
   call signaling architecture where call state is distributed to the
   clients during call setup and is stored there for the duration of
   the call while the proxy server remains stateless.

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 [3].


3. Introduction

   The Distributed call signaling (DCS) architecture provides signaling
   support for creating a session using a signaling scheme so that call
   state is distributed to the clients and network resources reserved
   prior to alerting the called party. The SIP proxy server in the DCS
   architecture is referred to as a DCS-Proxy. The SIP user agent is
   referred to as a client or endpoint.

   From a call signaling perspective, the DCS Proxies are involved in
   setting up a call. During a successful call setup, call state and
   the associated billing information is encrypted and signed by the
   proxies and sent to the clients using the proposed "State" header.
   This is sent in the initial INVITE to the "called" client and in the
   first 1xx (except 100) or a 200 response to the "calling"
   client/caller. The DCS-Proxy in effect, transfers call state to the
   clients and other network entities during the call-setup phase and
   then remains stateless for the duration of the call. The state may
   be encrypted and also contain an integrity check value.


   If the client wishes to change call characteristics that affect
   bearer path and/or require billing changes, it passes the saved
   proxy encrypted and signed state information in a SIP INVITE request
   to its proxy server, which may verify integrity of the state and
   decrypt it.



DCS Group        Internet Draft - Expiration 09/30/00                2

              SIP Extensions for Distributed Call State    March 2000


   In the DCS architecture, there are three kinds of state associated
   with a call - transaction state, connection state and call state.
   The DCS goal with managing state is to store state about the call at
   places where it is needed. Transaction state refers to billing and
   accounting information about a call and this is stored in record
   keeping servers. Connection state refers to the state associated
   with the media path. This includes the characteristics of the flow,
   admission control and policing parameters and is stored in devices
   in the network/media path where admission control and policing
   decisions are made. The Call state refers to endpoint
   identification, caller and callee preferences that affect active
   call characteristics, and network and transactions state hooks or
   identifiers in the active call that can be used by the proxy to
   modify the characteristics of the call. This state information is
   encrypted and signed by the proxy and distributed to the endpoints
   during call setup. The proxy associated with the endpoint can
   therefore remain stateless during the call. The proxy also
   distributes transaction state to the record keeping servers and
   connection state to network entities during call setup.
   The call state is returned to the proxy when the characteristics of
   the active call need to be changed. An example of this is a mid-call
   codec change that requires re-authorization from the network and a
   possible change to the connection and transaction states.

   The focus of this draft is on issues related to the call state that
   is transferred between the proxy and the endpoint and between
   proxies during the signaling phase of call setup.

   There are three candidate cases that DCS has identified where the
   proxy needs to be involved in the call after the initial call setup:
        1.  Mid-call changes that need proxy assistance, e.g. changes
             to higher-bandwidth codecs, or call transfers
        2.  Placing a new call to a previous destination, e.g. call-
             return or call-trace.
        3.  Identifying a party to be added to a call, using the Also:
             header.


   All the above require the client to send to its proxy the encrypted
   Remote-Party-ID header [5] (if privacy is requested for the call) so
   that the proxy can identify the other endpoint that is affected in
   the requested call change. In addition, the information in the State
   header (especially connection state and billing/transaction info)
   may be needed for case 1 and 3. Call return and call trace as
   currently defined in the PSTN are examples of services that are "new
   calls" that require remote party identification.

   The state information distribution described above between the proxy
   and the endpoint can be generalized to a network of proxies in the
   signaling path. The state information would benefit from the
   stackable properties of via's and record-routes in SIP. Proxies
   could encrypt information pertaining to the call in the state
   header. This information can be retrieved from the opaque state

DCS Group        Internet Draft - Expiration 09/30/00                3

              SIP Extensions for Distributed Call State    March 2000


   information passed back to the proxy when the characteristics of a
   particular call need to be changed. This requires that there be a
   field in the state header that identifies the proxy that inserted
   the state information.

   Once the client has cached state information, the rules for
   determining when and how the state information is returned to the
   proxy are discussed in the section below.

4. SIP State Header Extension

   In this section, we propose a new SIP header called "State" to carry
   information about an active call.


4.1 State Header Syntax

   The State extension conveys state information usually between a
   proxy and a client and may be used between proxies. The state
   information will typically be encrypted and protected by an
   integrity check value, e.g. a digital signature or seal. This state
   information allows the proxy to reliably and securely store state
   information in the client that may be needed for subsequent feature
   invocation, allowing the proxy to remain stateless during the call.
   The following syntax includes the generalization where signaling
   proxies can transfer relevant state information related to the call
   being setup in the state header which can later be retrieved when a
   change in call characteristics is initiated by an endpoint.

   The following syntax specification uses the augmented Backus-Naur
   Form (BNF) as described in RFC-2234 [4].


        State           = "State" ":" 1#(host ";" state-token
                                *(";" state-token))
        state-token     =  token ["=" (*token | quoted-string)]

   The host field identifies the proxy that inserted the state
   information. State headers may be nested. In that case, each proxy
   in the signaling path that wishes to transfer state information
   takes the state header it received in the incoming signaling message
   (previous host; token form), adds its state information, optionally
   encrypts and signs the combined information, and adds its hostname.

   State-tokens may be encrypted and signed, and the last token in a
   sequence is likely to be an integrity check over the previous. It is
   an encoding of an encrypted structure containing multiple pieces of
   information needed by the proxy to perform various mid-call
   features.  The encrypted structure is returned from the client to
   the Proxy for call services that affect the current call. The State
   header information is not used to identify the other endpoint in the
   call. When an endpoint invokes services that require the proxy to


DCS Group        Internet Draft - Expiration 09/30/00                4

              SIP Extensions for Distributed Call State    March 2000


   determine the other endpoint in the call, the Remote-Party-ID header
   [5] is also included in the message.

   The following example illustrates the use of the distribution of
   state during call setup. Endpoint-o and Endpoint-t refer to the
   originating and terminating UAC/UAS for the call. P1 is the proxy
   associated with Endpoint-o and P2 is the proxy associated with
   Endpoint-t. eP1{*} refers to the state token encrypted by P1.

   Endpoint-o -> P1 -> P2 -> Endpoint-t

        Endpoint-o->P1:  invite, no state header

        P1->P2:          invite, State:P1;state=eP1{"cached translation
                                of Endpoint-t number"}

        P2->Endpoint-t:  invite, State:P2;state=eP2{"hunt group ID,
                                billing ID,P1;state=eP1{"cached
                                translation of Endpoint-t number"}"}

   Endpoint-t saves the above state header information received from
   its proxy P2 for the duration of the call.

        Endpoint-t->P2:   response, State:P2; state=eP2{"hunt group ID,
                                billing ID,P1;state=eP1{"cached
                                translation of Endpoint-t number"}"}

        P2->P1:           response, State:P2;state=eP2{"hunt group ID,
                                billing ID"},P1;state=eP1{"cached
                                translation of Endpoint-t number"}

        P1->Endpoint-o:   response, state:P1;state=eP1{"billing ID,
                                cached translation of Endpoint-t
                                number, P2;state=eP2{"hunt group ID,
                                billing ID"}"}

   Endpoint-o saves the above state info received from P1 for the
   duration of the call.


   When call begins, state at Endpoint-o is:
        State:P1;state=eP1{"billing ID, cached translation of Endpoint-
        t number", P2;state=eP2{"hunt group ID, billing ID"}"}

   State at endpoint-t is:
        State:P2;state=eP2{"hunt group ID, billing ID,P1;state=eP1{"
        cached translation of Endpoint-t number"}"}


4.2  Rules at Endpoints for determining inclusion of State Headers

   The rules at the endpoint for returning state information to its
   proxy are listed below:

DCS Group        Internet Draft - Expiration 09/30/00                5

              SIP Extensions for Distributed Call State    March 2000



   1.      Every received State header is saved for the duration of the call
     along with From, To, and Call-ID.

   2.      On a subsequent invite, a State header is included if the From, To
     (including ones with From/To reversed), Call-ID match those
     associated with the saved State, and Request-URI matches the
     hostname of the saved State header.  If Route header is present,
     also include State headers that have hostname matching a component
     (in case state was not "nested")

   3.      A State header is included in every response where a match on the
     From, To (including ones with From/To reversed), Call-ID is found,
     and the topmost Via header matching the hostname of the State
     header.

   4.      If the request includes a Also header that includes a Call-ID
     header and includes a Replaces header, append all State headers to
     the Also: that (1) match the Call-ID, (2) either the From or To
     value matches the Replaces header, and (3) the hostname in the
     State header appears either in the request-uri or in a route
     header.

   5.      When call ends, all saved State headers MAY be deleted.

4.3 Proxy rules for State header insertion and processing

   The rules at the proxy for processing State headers received from
   the clients (endpoints) or other proxies are listed below:

   1.      After extracting relevant State information, a proxy MAY discard
     the State headers with its hostname.

   2.      A State header addressed to another proxy MUST be passed on.

   3.      Any proxy MAY take the set of all State headers and concatenate
     them into a single State header; any proxy MAY take this
     concatenated State header and combine it into a single State
     header with local state (nesting).  This action is REQUIRED for
     any proxy that hides Via headers.

   4.      Any proxy can generate multiple State headers.


4.4 State Header and HTTP Cookie/Pcookie Comparison

   The State header field discussed in this section should not be
   confused with HTTP1.1 Cookies as described in [6]. The intended use
   of the two is very different. HTTP uses the Cookie for "state"
   management, or as a handle to pass session context change from
   server to client where the server is the other endpoint of the
   session. On the otherhand, the State header is sent by the SIP proxy
   to the client so that call state can be securely stored at the

DCS Group        Internet Draft - Expiration 09/30/00                6

              SIP Extensions for Distributed Call State    March 2000


   endpoint making the associated proxies "stateless" during the call.
   The state header can be considered to be a handle to request session
   change by the endpoint from its proxy. In addition, there are no
   attribute value pairs associated with the state header as in the
   Cookie that clients make use of.



5. Security Considerations

   The clients/endpoints are untrusted entities in the DCS
   architecture. DCS-Proxies are responsible for verifying the contents
   and consistency of the State header discussed in this document.


6. References

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

   2.      DCS Group, "Architectural Considerations for Providing Carrier
     Class Telephony Services Utilizing SIP-based Distributed Call
     Control Mechanisms", draft-dcsgroup-sip-arch-01.txt, March 2000.

   3.      Bradner, S., "Key words for use in RFCs to Indicate Requirement
     Levels", BCP 14, RFC 2119, March 1997

   4.      Crocker, D. and Overell, P.(Editors), "Augmented BNF for Syntax
     Specifications: ABNF", RFC 2234, Internet Mail Consortium and
     Demon Internet Ltd., November 1997

   5.      "SIP Extensions for Caller Identity, Privacy and Operator
     Services", Internet Draft: <draft-dcsgroup-sip-privacy-01.txt>,
     March 2000.

   6.      Kristol, D. and Montulli, L., "HTTP State Management Mechanism",
     RFC 2109, February 1997. See current working draft <draft-ietf-
     http-state-man-mec-12.txt> modified by the same authors based on
     field implementation feedback.





7.    Acknowledgments

   The Distributed Call Signaling work in the PacketCable project is
   the work of a large number of people, representing many different
   companies.  The authors would like to recognize and thank the
   following for their assistance: John Wheeler, Motorola; David
   Boardman, Daniel Paul, Arris Interactive; Bill Blum, Jon Fellows,
   Jay Strater, Jeff Ollis, Clive Holborow, Motorola; Doug Newlin,
   Guido Schuster, Ikhlaq Sidhu, 3Com; Jiri Matousek, Bay Networks;


DCS Group        Internet Draft - Expiration 09/30/00                7

              SIP Extensions for Distributed Call State    March 2000


   Farzi Khazai, Nortel; John Chapman, Bill Guckel, Michael Ramalho,
   Cisco; Chuck Kalmanek, Doug Nortz, John Lawser, James Cheng, Tung-
   Hai Hsiao, Partho Mishra, AT&T; Telcordia Technologies; and Lucent
   Cable Communications.


8. Author's Addresses

   Bill Marshall
   AT&T
   Florham Park, NJ  07932
   Email: wtm@research.att.com

   K. K. Ramakrishnan
   AT&T
   Florham Park, NJ  07932
   Email: kkrama@research.att.com

   Ed Miller
   CableLabs
   Louisville, CO  80027
   Email: E.Miller@Cablelabs.com

   Glenn Russell
   CableLabs
   Louisville, CO  80027
   Email: G.Russell@Cablelabs.com

   Burcak Beser
   3Com
   Rolling Meadows, IL  60008
   Email: Burcak_Beser@3com.com

   Mike Mannette
   3Com
   Rolling Meadows, IL  60008
   Email: Michael_Mannette@3com.com

   Kurt Steinbrenner
   3Com
   Rolling Meadows, IL  60008
   Email: Kurt_Steinbrenner@3com.com

   Dave Oran
   Cisco
   Acton, MA  01720
   Email: oran@cisco.com

   Flemming Andreasen
   Cisco
   Edison, NJ
   Email: fandreas@cisco.com


DCS Group        Internet Draft - Expiration 09/30/00                8

              SIP Extensions for Distributed Call State    March 2000


   John Pickens
   Com21
   San Jose, CA
   Email: jpickens@com21.com

   Poornima Lalwaney
   Motorola
   San Diego, CA  92121
   Email: plalwaney@gi.com

   Jon Fellows
   Motorola
   San Diego, CA  92121
   Email: jfellows@gi.com

   Doc Evans
   Secure Cable Solutions
   Westminster, CO  30120
   Email: drevans@securecable.com

   Keith Kelly
   NetSpeak
   Boca Raton, FL  33587
   Email: keith@netspeak.com






























DCS Group        Internet Draft - Expiration 09/30/00                9

              SIP Extensions for Distributed Call State    March 2000



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 implmentation 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 languages other than
   English.  The limited permissions granted above are perpetual and
   will not be revoked by the Internet Society or its successors or
   assigns.  This document and the information contained herein is
   provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE
   INTERNET ENGINEERING TASK FORCE DISCLAIMS 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."

   Expiration Date:  This memo is filed as <draft-dcsgroup-sip-state-
   01.txt>, and expires September 30, 2000.




























DCS Group        Internet Draft - Expiration 09/30/00               10